/[pcre]/code/trunk/pcre_exec.c
ViewVC logotype

Diff of /code/trunk/pcre_exec.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1033 by ph10, Mon Sep 10 11:02:48 2012 UTC revision 1041 by ph10, Sun Sep 16 10:16:27 2012 UTC
# Line 2429  for (;;) Line 2429  for (;;)
2429        case CHAR_VT:        case CHAR_VT:
2430        case CHAR_FF:        case CHAR_FF:
2431        case CHAR_NEL:        case CHAR_NEL:
2432  #ifndef EBCDIC  #ifndef EBCDIC
2433        case 0x2028:        case 0x2028:
2434        case 0x2029:        case 0x2029:
2435  #endif  /* Not EBCDIC */  #endif  /* Not EBCDIC */
2436        if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);        if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);
2437        break;        break;
2438        }        }
# Line 2448  for (;;) Line 2448  for (;;)
2448      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
2449      switch(c)      switch(c)
2450        {        {
2451          HSPACE_CASES: RRETURN(MATCH_NOMATCH);  /* Byte and multibyte cases */
2452        default: break;        default: break;
       case CHAR_HT:  
       case CHAR_SPACE:  
 #ifndef EBCDIC  
       case 0xa0:      /* NBSP */  
       case 0x1680:    /* OGHAM SPACE MARK */  
       case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
       case 0x2000:    /* EN QUAD */  
       case 0x2001:    /* EM QUAD */  
       case 0x2002:    /* EN SPACE */  
       case 0x2003:    /* EM SPACE */  
       case 0x2004:    /* THREE-PER-EM SPACE */  
       case 0x2005:    /* FOUR-PER-EM SPACE */  
       case 0x2006:    /* SIX-PER-EM SPACE */  
       case 0x2007:    /* FIGURE SPACE */  
       case 0x2008:    /* PUNCTUATION SPACE */  
       case 0x2009:    /* THIN SPACE */  
       case 0x200A:    /* HAIR SPACE */  
       case 0x202f:    /* NARROW NO-BREAK SPACE */  
       case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
       case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* Not EBCDIC */  
       RRETURN(MATCH_NOMATCH);  
2453        }        }
2454      ecode++;      ecode++;
2455      break;      break;
# Line 2484  for (;;) Line 2463  for (;;)
2463      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
2464      switch(c)      switch(c)
2465        {        {
2466          HSPACE_CASES: break;  /* Byte and multibyte cases */
2467        default: RRETURN(MATCH_NOMATCH);        default: RRETURN(MATCH_NOMATCH);
       case CHAR_HT:  
       case CHAR_SPACE:  
 #ifndef EBCDIC  
       case 0xa0:      /* NBSP */  
       case 0x1680:    /* OGHAM SPACE MARK */  
       case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
       case 0x2000:    /* EN QUAD */  
       case 0x2001:    /* EM QUAD */  
       case 0x2002:    /* EN SPACE */  
       case 0x2003:    /* EM SPACE */  
       case 0x2004:    /* THREE-PER-EM SPACE */  
       case 0x2005:    /* FOUR-PER-EM SPACE */  
       case 0x2006:    /* SIX-PER-EM SPACE */  
       case 0x2007:    /* FIGURE SPACE */  
       case 0x2008:    /* PUNCTUATION SPACE */  
       case 0x2009:    /* THIN SPACE */  
       case 0x200A:    /* HAIR SPACE */  
       case 0x202f:    /* NARROW NO-BREAK SPACE */  
       case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
       case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* Not EBCDIC */  
       break;  
2468        }        }
2469      ecode++;      ecode++;
2470      break;      break;
# Line 2520  for (;;) Line 2478  for (;;)
2478      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
2479      switch(c)      switch(c)
2480        {        {
2481          VSPACE_CASES: RRETURN(MATCH_NOMATCH);
2482        default: break;        default: break;
       case CHAR_LF:  
       case CHAR_VT:  
       case CHAR_FF:  
       case CHAR_CR:  
       case CHAR_NEL:  
 #ifndef EBCDIC  
       case 0x2028:    /* LINE SEPARATOR */  
       case 0x2029:    /* PARAGRAPH SEPARATOR */  
 #endif  /* Not EBCDIC */  
       RRETURN(MATCH_NOMATCH);  
2483        }        }
2484      ecode++;      ecode++;
2485      break;      break;
# Line 2544  for (;;) Line 2493  for (;;)
2493      GETCHARINCTEST(c, eptr);      GETCHARINCTEST(c, eptr);
2494      switch(c)      switch(c)
2495        {        {
2496          VSPACE_CASES: break;
2497        default: RRETURN(MATCH_NOMATCH);        default: RRETURN(MATCH_NOMATCH);
       case CHAR_LF:  
       case CHAR_VT:  
       case CHAR_FF:  
       case CHAR_CR:  
       case CHAR_NEL:  
 #ifndef EBCDIC  
       case 0x2028:    /* LINE SEPARATOR */  
       case 0x2029:    /* PARAGRAPH SEPARATOR */  
 #endif  /* Not EBCDIC */  
       break;  
2498        }        }
2499      ecode++;      ecode++;
2500      break;      break;
# Line 2652  for (;;) Line 2592  for (;;)
2592        RRETURN(MATCH_NOMATCH);        RRETURN(MATCH_NOMATCH);
2593        }        }
2594      else      else
2595        {        {
2596        int lgb, rgb;        int lgb, rgb;
2597        GETCHARINCTEST(c, eptr);        GETCHARINCTEST(c, eptr);
2598        lgb = UCD_GRAPHBREAK(c);        lgb = UCD_GRAPHBREAK(c);
2599        while (eptr < md->end_subject)        while (eptr < md->end_subject)
2600          {          {
2601          int len = 1;          int len = 1;
2602          if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }          if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }
2603          rgb = UCD_GRAPHBREAK(c);          rgb = UCD_GRAPHBREAK(c);
2604          if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;          if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;
2605          lgb = rgb;          lgb = rgb;
2606          eptr += len;          eptr += len;
2607          }          }
2608        }        }
2609      CHECK_PARTIAL();      CHECK_PARTIAL();
2610      ecode++;      ecode++;
# Line 4243  for (;;) Line 4183  for (;;)
4183              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
4184              }              }
4185            else            else
4186              {              {
4187              int lgb, rgb;              int lgb, rgb;
4188              GETCHARINCTEST(c, eptr);              GETCHARINCTEST(c, eptr);
4189              lgb = UCD_GRAPHBREAK(c);              lgb = UCD_GRAPHBREAK(c);
4190             while (eptr < md->end_subject)             while (eptr < md->end_subject)
4191                {                {
4192                int len = 1;                int len = 1;
4193                if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }                if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }
4194                rgb = UCD_GRAPHBREAK(c);                rgb = UCD_GRAPHBREAK(c);
4195                if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;                if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;
4196                lgb = rgb;                lgb = rgb;
4197                eptr += len;                eptr += len;
4198                }                }
4199              }              }
4200            CHECK_PARTIAL();            CHECK_PARTIAL();
4201            }            }
# Line 4333  for (;;) Line 4273  for (;;)
4273              case CHAR_VT:              case CHAR_VT:
4274              case CHAR_FF:              case CHAR_FF:
4275              case CHAR_NEL:              case CHAR_NEL:
4276  #ifndef EBCDIC  #ifndef EBCDIC
4277              case 0x2028:              case 0x2028:
4278              case 0x2029:              case 0x2029:
4279  #endif  /* Not EBCDIC */  #endif  /* Not EBCDIC */
4280              if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);              if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);
4281              break;              break;
4282              }              }
# Line 4354  for (;;) Line 4294  for (;;)
4294            GETCHARINC(c, eptr);            GETCHARINC(c, eptr);
4295            switch(c)            switch(c)
4296              {              {
4297                HSPACE_CASES: RRETURN(MATCH_NOMATCH);  /* Byte and multibyte cases */
4298              default: break;              default: break;
             case CHAR_HT:  
             case CHAR_SPACE:  
 #ifndef EBCDIC  
             case 0xa0:      /* NBSP */  
             case 0x1680:    /* OGHAM SPACE MARK */  
             case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
             case 0x2000:    /* EN QUAD */  
             case 0x2001:    /* EM QUAD */  
             case 0x2002:    /* EN SPACE */  
             case 0x2003:    /* EM SPACE */  
             case 0x2004:    /* THREE-PER-EM SPACE */  
             case 0x2005:    /* FOUR-PER-EM SPACE */  
             case 0x2006:    /* SIX-PER-EM SPACE */  
             case 0x2007:    /* FIGURE SPACE */  
             case 0x2008:    /* PUNCTUATION SPACE */  
             case 0x2009:    /* THIN SPACE */  
             case 0x200A:    /* HAIR SPACE */  
             case 0x202f:    /* NARROW NO-BREAK SPACE */  
             case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
             case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* Not EBCDIC */  
             RRETURN(MATCH_NOMATCH);  
4299              }              }
4300            }            }
4301          break;          break;
# Line 4392  for (;;) Line 4311  for (;;)
4311            GETCHARINC(c, eptr);            GETCHARINC(c, eptr);
4312            switch(c)            switch(c)
4313              {              {
4314                HSPACE_CASES: break;  /* Byte and multibyte cases */
4315              default: RRETURN(MATCH_NOMATCH);              default: RRETURN(MATCH_NOMATCH);
             case CHAR_HT:  
             case CHAR_SPACE:  
 #ifndef EBCDIC  
             case 0xa0:      /* NBSP */  
             case 0x1680:    /* OGHAM SPACE MARK */  
             case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
             case 0x2000:    /* EN QUAD */  
             case 0x2001:    /* EM QUAD */  
             case 0x2002:    /* EN SPACE */  
             case 0x2003:    /* EM SPACE */  
             case 0x2004:    /* THREE-PER-EM SPACE */  
             case 0x2005:    /* FOUR-PER-EM SPACE */  
             case 0x2006:    /* SIX-PER-EM SPACE */  
             case 0x2007:    /* FIGURE SPACE */  
             case 0x2008:    /* PUNCTUATION SPACE */  
             case 0x2009:    /* THIN SPACE */  
             case 0x200A:    /* HAIR SPACE */  
             case 0x202f:    /* NARROW NO-BREAK SPACE */  
             case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
             case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  
             break;  
4316              }              }
4317            }            }
4318          break;          break;
# Line 4430  for (;;) Line 4328  for (;;)
4328            GETCHARINC(c, eptr);            GETCHARINC(c, eptr);
4329            switch(c)            switch(c)
4330              {              {
4331                VSPACE_CASES: RRETURN(MATCH_NOMATCH);
4332              default: break;              default: break;
             case CHAR_LF:  
             case CHAR_VT:  
             case CHAR_FF:  
             case CHAR_CR:  
             case CHAR_NEL:  
 #ifndef EBCDIC  
             case 0x2028:    /* LINE SEPARATOR */  
             case 0x2029:    /* PARAGRAPH SEPARATOR */  
 #endif  
             RRETURN(MATCH_NOMATCH);  
4333              }              }
4334            }            }
4335          break;          break;
# Line 4456  for (;;) Line 4345  for (;;)
4345            GETCHARINC(c, eptr);            GETCHARINC(c, eptr);
4346            switch(c)            switch(c)
4347              {              {
4348                VSPACE_CASES: break;
4349              default: RRETURN(MATCH_NOMATCH);              default: RRETURN(MATCH_NOMATCH);
             case CHAR_LF:  
             case CHAR_VT:  
             case CHAR_FF:  
             case CHAR_CR:  
             case CHAR_NEL:  
 #ifndef EBCDIC  
             case 0x2028:    /* LINE SEPARATOR */  
             case 0x2029:    /* PARAGRAPH SEPARATOR */  
 #endif  
             break;  
4350              }              }
4351            }            }
4352          break;          break;
# Line 4655  for (;;) Line 4535  for (;;)
4535            switch(*eptr++)            switch(*eptr++)
4536              {              {
4537              default: break;              default: break;
4538              case CHAR_HT:              HSPACE_BYTE_CASES:
             case CHAR_SPACE:  
 #ifndef EBCDIC  
             case 0xa0:      /* NBSP */  
4539  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
4540              case 0x1680:    /* OGHAM SPACE MARK */              HSPACE_MULTIBYTE_CASES:
4541              case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  #endif
             case 0x2000:    /* EN QUAD */  
             case 0x2001:    /* EM QUAD */  
             case 0x2002:    /* EN SPACE */  
             case 0x2003:    /* EM SPACE */  
             case 0x2004:    /* THREE-PER-EM SPACE */  
             case 0x2005:    /* FOUR-PER-EM SPACE */  
             case 0x2006:    /* SIX-PER-EM SPACE */  
             case 0x2007:    /* FIGURE SPACE */  
             case 0x2008:    /* PUNCTUATION SPACE */  
             case 0x2009:    /* THIN SPACE */  
             case 0x200A:    /* HAIR SPACE */  
             case 0x202f:    /* NARROW NO-BREAK SPACE */  
             case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
             case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* COMPILE_PCRE16 */  
 #endif  /* Not EBCDIC */  
4542              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
4543              }              }
4544            }            }
# Line 4694  for (;;) Line 4555  for (;;)
4555            switch(*eptr++)            switch(*eptr++)
4556              {              {
4557              default: RRETURN(MATCH_NOMATCH);              default: RRETURN(MATCH_NOMATCH);
4558              case CHAR_HT:              HSPACE_BYTE_CASES:
             case CHAR_SPACE:  
 #ifndef EBCDIC  
             case 0xa0:      /* NBSP */  
4559  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
4560              case 0x1680:    /* OGHAM SPACE MARK */              HSPACE_MULTIBYTE_CASES:
4561              case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  #endif
             case 0x2000:    /* EN QUAD */  
             case 0x2001:    /* EM QUAD */  
             case 0x2002:    /* EN SPACE */  
             case 0x2003:    /* EM SPACE */  
             case 0x2004:    /* THREE-PER-EM SPACE */  
             case 0x2005:    /* FOUR-PER-EM SPACE */  
             case 0x2006:    /* SIX-PER-EM SPACE */  
             case 0x2007:    /* FIGURE SPACE */  
             case 0x2008:    /* PUNCTUATION SPACE */  
             case 0x2009:    /* THIN SPACE */  
             case 0x200A:    /* HAIR SPACE */  
             case 0x202f:    /* NARROW NO-BREAK SPACE */  
             case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
             case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* COMPILE_PCRE16 */  
 #endif  /* Not EBCDIC */  
4562              break;              break;
4563              }              }
4564            }            }
# Line 4732  for (;;) Line 4574  for (;;)
4574              }              }
4575            switch(*eptr++)            switch(*eptr++)
4576              {              {
4577              default: break;              VSPACE_BYTE_CASES:
             case CHAR_LF:  
             case CHAR_VT:  
             case CHAR_FF:  
             case CHAR_CR:  
             case CHAR_NEL:  
4578  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
4579              case 0x2028:    /* LINE SEPARATOR */              VSPACE_MULTIBYTE_CASES:
             case 0x2029:    /* PARAGRAPH SEPARATOR */  
4580  #endif  #endif
4581              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
4582                default: break;
4583              }              }
4584            }            }
4585          break;          break;
# Line 4758  for (;;) Line 4595  for (;;)
4595            switch(*eptr++)            switch(*eptr++)
4596              {              {
4597              default: RRETURN(MATCH_NOMATCH);              default: RRETURN(MATCH_NOMATCH);
4598              case CHAR_LF:              VSPACE_BYTE_CASES:
             case CHAR_VT:  
             case CHAR_FF:  
             case CHAR_CR:  
             case CHAR_NEL:  
4599  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
4600              case 0x2028:    /* LINE SEPARATOR */              VSPACE_MULTIBYTE_CASES:
             case 0x2029:    /* PARAGRAPH SEPARATOR */  
4601  #endif  #endif
4602              break;              break;
4603              }              }
# Line 5066  for (;;) Line 4898  for (;;)
4898              RRETURN(MATCH_NOMATCH);              RRETURN(MATCH_NOMATCH);
4899              }              }
4900            else            else
4901              {              {
4902              int lgb, rgb;              int lgb, rgb;
4903              GETCHARINCTEST(c, eptr);              GETCHARINCTEST(c, eptr);
4904              lgb = UCD_GRAPHBREAK(c);              lgb = UCD_GRAPHBREAK(c);
4905              while (eptr < md->end_subject)              while (eptr < md->end_subject)
4906                {                {
4907                int len = 1;                int len = 1;
4908                if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }                if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }
4909                rgb = UCD_GRAPHBREAK(c);                rgb = UCD_GRAPHBREAK(c);
4910                if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;                if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;
4911                lgb = rgb;                lgb = rgb;
4912                eptr += len;                eptr += len;
4913                }                }
4914              }              }
4915            CHECK_PARTIAL();            CHECK_PARTIAL();
4916            }            }
# Line 5127  for (;;) Line 4959  for (;;)
4959                case CHAR_CR:                case CHAR_CR:
4960                if (eptr < md->end_subject && *eptr == CHAR_LF) eptr++;                if (eptr < md->end_subject && *eptr == CHAR_LF) eptr++;
4961                break;                break;
4962    
4963                case CHAR_LF:                case CHAR_LF:
4964                break;                break;
4965    
4966                case CHAR_VT:                case CHAR_VT:
4967                case CHAR_FF:                case CHAR_FF:
4968                case CHAR_NEL:                case CHAR_NEL:
4969  #ifndef EBCDIC  #ifndef EBCDIC
4970                case 0x2028:                case 0x2028:
4971                case 0x2029:                case 0x2029:
4972  #endif  /* Not EBCDIC */  #endif  /* Not EBCDIC */
4973                if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);                if (md->bsr_anycrlf) RRETURN(MATCH_NOMATCH);
4974                break;                break;
4975                }                }
# Line 5146  for (;;) Line 4978  for (;;)
4978              case OP_NOT_HSPACE:              case OP_NOT_HSPACE:
4979              switch(c)              switch(c)
4980                {                {
4981                  HSPACE_CASES: RRETURN(MATCH_NOMATCH);
4982                default: break;                default: break;
               case CHAR_HT:  
               case CHAR_SPACE:  
 #ifndef EBCDIC  
               case 0xa0:      /* NBSP */  
               case 0x1680:    /* OGHAM SPACE MARK */  
               case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
               case 0x2000:    /* EN QUAD */  
               case 0x2001:    /* EM QUAD */  
               case 0x2002:    /* EN SPACE */  
               case 0x2003:    /* EM SPACE */  
               case 0x2004:    /* THREE-PER-EM SPACE */  
               case 0x2005:    /* FOUR-PER-EM SPACE */  
               case 0x2006:    /* SIX-PER-EM SPACE */  
               case 0x2007:    /* FIGURE SPACE */  
               case 0x2008:    /* PUNCTUATION SPACE */  
               case 0x2009:    /* THIN SPACE */  
               case 0x200A:    /* HAIR SPACE */  
               case 0x202f:    /* NARROW NO-BREAK SPACE */  
               case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
               case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* Not EBCDIC */  
               RRETURN(MATCH_NOMATCH);  
4983                }                }
4984              break;              break;
4985    
4986              case OP_HSPACE:              case OP_HSPACE:
4987              switch(c)              switch(c)
4988                {                {
4989                  HSPACE_CASES: break;
4990                default: RRETURN(MATCH_NOMATCH);                default: RRETURN(MATCH_NOMATCH);
               case CHAR_HT:  
               case CHAR_SPACE:  
 #ifndef EBCDIC  
               case 0xa0:      /* NBSP */  
               case 0x1680:    /* OGHAM SPACE MARK */  
               case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
               case 0x2000:    /* EN QUAD */  
               case 0x2001:    /* EM QUAD */  
               case 0x2002:    /* EN SPACE */  
               case 0x2003:    /* EM SPACE */  
               case 0x2004:    /* THREE-PER-EM SPACE */  
               case 0x2005:    /* FOUR-PER-EM SPACE */  
               case 0x2006:    /* SIX-PER-EM SPACE */  
               case 0x2007:    /* FIGURE SPACE */  
               case 0x2008:    /* PUNCTUATION SPACE */  
               case 0x2009:    /* THIN SPACE */  
               case 0x200A:    /* HAIR SPACE */  
               case 0x202f:    /* NARROW NO-BREAK SPACE */  
               case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
               case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* Not EBCDIC */  
               break;  
4991                }                }
4992              break;              break;
4993    
4994              case OP_NOT_VSPACE:              case OP_NOT_VSPACE:
4995              switch(c)              switch(c)
4996                {                {
4997                  VSPACE_CASES: RRETURN(MATCH_NOMATCH);
4998                default: break;                default: break;
               case CHAR_LF:  
               case CHAR_VT:  
               case CHAR_FF:  
               case CHAR_CR:  
               case CHAR_NEL:  
 #ifndef EBCDIC  
               case 0x2028:    /* LINE SEPARATOR */  
               case 0x2029:    /* PARAGRAPH SEPARATOR */  
 #endif  /* Not EBCDIC */  
               RRETURN(MATCH_NOMATCH);  
4999                }                }
5000              break;              break;
5001    
5002              case OP_VSPACE:              case OP_VSPACE:
5003              switch(c)              switch(c)
5004                {                {
5005                  VSPACE_CASES: break;
5006                default: RRETURN(MATCH_NOMATCH);                default: RRETURN(MATCH_NOMATCH);
               case CHAR_LF:  
               case CHAR_VT:  
               case CHAR_FF:  
               case CHAR_CR:  
               case CHAR_NEL:  
 #ifndef EBCDIC  
               case 0x2028:    /* LINE SEPARATOR */  
               case 0x2029:    /* PARAGRAPH SEPARATOR */  
 #endif  /* Not EBCDIC */  
               break;  
5007                }                }
5008              break;              break;
5009    
# Line 5332  for (;;) Line 5104  for (;;)
5104              switch(c)              switch(c)
5105                {                {
5106                default: break;                default: break;
5107                case CHAR_HT:                HSPACE_BYTE_CASES:
               case CHAR_SPACE:  
 #ifndef EBCDIC  
               case 0xa0:      /* NBSP */  
5108  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
5109                case 0x1680:    /* OGHAM SPACE MARK */                HSPACE_MULTIBYTE_CASES:
5110                case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  #endif
               case 0x2000:    /* EN QUAD */  
               case 0x2001:    /* EM QUAD */  
               case 0x2002:    /* EN SPACE */  
               case 0x2003:    /* EM SPACE */  
               case 0x2004:    /* THREE-PER-EM SPACE */  
               case 0x2005:    /* FOUR-PER-EM SPACE */  
               case 0x2006:    /* SIX-PER-EM SPACE */  
               case 0x2007:    /* FIGURE SPACE */  
               case 0x2008:    /* PUNCTUATION SPACE */  
               case 0x2009:    /* THIN SPACE */  
               case 0x200A:    /* HAIR SPACE */  
               case 0x202f:    /* NARROW NO-BREAK SPACE */  
               case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
               case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* COMPILE_PCRE16 */  
 #endif  /* Not EBCDIC */  
5111                RRETURN(MATCH_NOMATCH);                RRETURN(MATCH_NOMATCH);
5112                }                }
5113              break;              break;
# Line 5363  for (;;) Line 5116  for (;;)
5116              switch(c)              switch(c)
5117                {                {
5118                default: RRETURN(MATCH_NOMATCH);                default: RRETURN(MATCH_NOMATCH);
5119                case CHAR_HT:                HSPACE_BYTE_CASES:
               case CHAR_SPACE:  
 #ifndef EBCDIC  
               case 0xa0:      /* NBSP */  
5120  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
5121                case 0x1680:    /* OGHAM SPACE MARK */                HSPACE_MULTIBYTE_CASES:
5122                case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  #endif
               case 0x2000:    /* EN QUAD */  
               case 0x2001:    /* EM QUAD */  
               case 0x2002:    /* EN SPACE */  
               case 0x2003:    /* EM SPACE */  
               case 0x2004:    /* THREE-PER-EM SPACE */  
               case 0x2005:    /* FOUR-PER-EM SPACE */  
               case 0x2006:    /* SIX-PER-EM SPACE */  
               case 0x2007:    /* FIGURE SPACE */  
               case 0x2008:    /* PUNCTUATION SPACE */  
               case 0x2009:    /* THIN SPACE */  
               case 0x200A:    /* HAIR SPACE */  
               case 0x202f:    /* NARROW NO-BREAK SPACE */  
               case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
               case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* COMPILE_PCRE16 */  
 #endif  /* Not EBCDIC */  
5123                break;                break;
5124                }                }
5125              break;              break;
# Line 5394  for (;;) Line 5128  for (;;)
5128              switch(c)              switch(c)
5129                {                {
5130                default: break;                default: break;
5131                case CHAR_LF:                VSPACE_BYTE_CASES:
               case CHAR_VT:  
               case CHAR_FF:  
               case CHAR_CR:  
               case CHAR_NEL:  
5132  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
5133                case 0x2028:    /* LINE SEPARATOR */                VSPACE_MULTIBYTE_CASES:
               case 0x2029:    /* PARAGRAPH SEPARATOR */  
5134  #endif  #endif
5135                RRETURN(MATCH_NOMATCH);                RRETURN(MATCH_NOMATCH);
5136                }                }
# Line 5411  for (;;) Line 5140  for (;;)
5140              switch(c)              switch(c)
5141                {                {
5142                default: RRETURN(MATCH_NOMATCH);                default: RRETURN(MATCH_NOMATCH);
5143                case CHAR_LF:                VSPACE_BYTE_CASES:
               case CHAR_VT:  
               case CHAR_FF:  
               case CHAR_CR:  
               case CHAR_NEL:  
5144  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
5145                case 0x2028:    /* LINE SEPARATOR */                VSPACE_MULTIBYTE_CASES:
               case 0x2029:    /* PARAGRAPH SEPARATOR */  
5146  #endif  #endif
5147                break;                break;
5148                }                }
# Line 5651  for (;;) Line 5375  for (;;)
5375              break;              break;
5376              }              }
5377            else            else
5378              {              {
5379              int lgb, rgb;              int lgb, rgb;
5380              GETCHARINCTEST(c, eptr);              GETCHARINCTEST(c, eptr);
5381              lgb = UCD_GRAPHBREAK(c);              lgb = UCD_GRAPHBREAK(c);
5382              while (eptr < md->end_subject)              while (eptr < md->end_subject)
5383                {                {
5384                int len = 1;                int len = 1;
5385                if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }                if (!utf) c = *eptr; else { GETCHARLEN(c, eptr, len); }
5386                rgb = UCD_GRAPHBREAK(c);                rgb = UCD_GRAPHBREAK(c);
5387                if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;                if ((PRIV(ucp_gbtable)[lgb] & (1 << rgb)) == 0) break;
5388                lgb = rgb;                lgb = rgb;
5389                eptr += len;                eptr += len;
5390                }                }
5391              }              }
5392            CHECK_PARTIAL();            CHECK_PARTIAL();
5393            }            }
# Line 5802  for (;;) Line 5526  for (;;)
5526                {                {
5527                if (c != CHAR_LF &&                if (c != CHAR_LF &&
5528                    (md->bsr_anycrlf ||                    (md->bsr_anycrlf ||
5529                     (c != CHAR_VT && c != CHAR_FF && c != CHAR_NEL                     (c != CHAR_VT && c != CHAR_FF && c != CHAR_NEL
5530  #ifndef EBCDIC  #ifndef EBCDIC
5531                      && c != 0x2028 && c != 0x2029                      && c != 0x2028 && c != 0x2029
5532  #endif  /* Not EBCDIC */  #endif  /* Not EBCDIC */
5533                      )))                      )))
5534                  break;                  break;
5535                eptr += len;                eptr += len;
# Line 5827  for (;;) Line 5551  for (;;)
5551              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
5552              switch(c)              switch(c)
5553                {                {
5554                  HSPACE_CASES: gotspace = TRUE; break;
5555                default: gotspace = FALSE; break;                default: gotspace = FALSE; break;
               case CHAR_HT:  
               case CHAR_SPACE:  
 #ifndef EBCDIC  
               case 0xa0:      /* NBSP */  
               case 0x1680:    /* OGHAM SPACE MARK */  
               case 0x180e:    /* MONGOLIAN VOWEL SEPARATOR */  
               case 0x2000:    /* EN QUAD */  
               case 0x2001:    /* EM QUAD */  
               case 0x2002:    /* EN SPACE */  
               case 0x2003:    /* EM SPACE */  
               case 0x2004:    /* THREE-PER-EM SPACE */  
               case 0x2005:    /* FOUR-PER-EM SPACE */  
               case 0x2006:    /* SIX-PER-EM SPACE */  
               case 0x2007:    /* FIGURE SPACE */  
               case 0x2008:    /* PUNCTUATION SPACE */  
               case 0x2009:    /* THIN SPACE */  
               case 0x200A:    /* HAIR SPACE */  
               case 0x202f:    /* NARROW NO-BREAK SPACE */  
               case 0x205f:    /* MEDIUM MATHEMATICAL SPACE */  
               case 0x3000:    /* IDEOGRAPHIC SPACE */  
 #endif  /* Not EBCDIC */  
               gotspace = TRUE;  
               break;  
5556                }                }
5557              if (gotspace == (ctype == OP_NOT_HSPACE)) break;              if (gotspace == (ctype == OP_NOT_HSPACE)) break;
5558              eptr += len;              eptr += len;
# Line 5871  for (;;) Line 5573  for (;;)
5573              GETCHARLEN(c, eptr, len);              GETCHARLEN(c, eptr, len);
5574              switch(c)              switch(c)
5575                {                {
5576                  VSPACE_CASES: gotspace = TRUE; break;
5577                default: gotspace = FALSE; break;                default: gotspace = FALSE; break;
               case CHAR_LF:  
               case CHAR_VT:  
               case CHAR_FF:  
               case CHAR_CR:  
               case CHAR_NEL:  
 #ifndef EBCDIC  
               case 0x2028:    /* LINE SEPARATOR */  
               case 0x2029:    /* PARAGRAPH SEPARATOR */  
 #endif  /* Not EBCDIC */  
               gotspace = TRUE;  
               break;  
5578                }                }
5579              if (gotspace == (ctype == OP_NOT_VSPACE)) break;              if (gotspace == (ctype == OP_NOT_VSPACE)) break;
5580              eptr += len;              eptr += len;
# Line 6074  for (;;) Line 5766  for (;;)
5766                SCHECK_PARTIAL();                SCHECK_PARTIAL();
5767                break;                break;
5768                }                }
5769              c = *eptr;              switch(*eptr)
5770              if (c == CHAR_HT || c == CHAR_SPACE                {
5771  #ifndef EBCDIC                default: eptr++; break;
5772                || c == 0xa0                HSPACE_BYTE_CASES:
5773  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
5774                || c == 0x1680 || c == 0x180e || (c >= 0x2000 && c <= 0x200A)                HSPACE_MULTIBYTE_CASES:
5775                || c == 0x202f || c == 0x205f || c == 0x3000  #endif
5776  #endif  /* COMPILE_PCRE16 */                goto ENDLOOP00;
5777  #endif  /* Not EBCDIC */                }
               ) break;  
             eptr++;  
5778              }              }
5779              ENDLOOP00:
5780            break;            break;
5781    
5782            case OP_HSPACE:            case OP_HSPACE:
# Line 6096  for (;;) Line 5787  for (;;)
5787                SCHECK_PARTIAL();                SCHECK_PARTIAL();
5788                break;                break;
5789                }                }
5790              c = *eptr;              switch(*eptr)
5791              if (c != CHAR_HT && c != CHAR_SPACE                {
5792  #ifndef EBCDIC                default: goto ENDLOOP01;
5793                && c != 0xa0                HSPACE_BYTE_CASES:
5794  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
5795                && c != 0x1680 && c != 0x180e && (c < 0x2000 || c > 0x200A)                HSPACE_MULTIBYTE_CASES:
5796                && c != 0x202f && c != 0x205f && c != 0x3000  #endif
5797  #endif  /* COMPILE_PCRE16 */                eptr++; break;
5798  #endif  /* Not EBCDIC */                }
               ) break;  
             eptr++;  
5799              }              }
5800              ENDLOOP01:
5801            break;            break;
5802    
5803            case OP_NOT_VSPACE:            case OP_NOT_VSPACE:
# Line 6118  for (;;) Line 5808  for (;;)
5808                SCHECK_PARTIAL();                SCHECK_PARTIAL();
5809                break;                break;
5810                }                }
5811              c = *eptr;              switch(*eptr)
5812              if (c == CHAR_LF || c == CHAR_VT || c == CHAR_FF ||                {
5813                  c == CHAR_CR || c == CHAR_NEL                default: eptr++; break;
5814                  VSPACE_BYTE_CASES:
5815  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
5816                || c == 0x2028 || c == 0x2029                VSPACE_MULTIBYTE_CASES:
5817  #endif  #endif
5818                ) break;                goto ENDLOOP02;
5819              eptr++;                }
5820              }              }
5821              ENDLOOP02:
5822            break;            break;
5823    
5824            case OP_VSPACE:            case OP_VSPACE:
# Line 6137  for (;;) Line 5829  for (;;)
5829                SCHECK_PARTIAL();                SCHECK_PARTIAL();
5830                break;                break;
5831                }                }
5832              c = *eptr;              switch(*eptr)
5833              if (c != CHAR_LF && c != CHAR_VT && c != CHAR_FF &&                {
5834                  c != CHAR_CR && c != CHAR_NEL                default: goto ENDLOOP03;
5835                  VSPACE_BYTE_CASES:
5836  #ifdef COMPILE_PCRE16  #ifdef COMPILE_PCRE16
5837                && c != 0x2028 && c != 0x2029                VSPACE_MULTIBYTE_CASES:
5838  #endif  #endif
5839                ) break;                eptr++; break;
5840              eptr++;                }
5841              }              }
5842              ENDLOOP03:
5843            break;            break;
5844    
5845            case OP_NOT_DIGIT:            case OP_NOT_DIGIT:

Legend:
Removed from v.1033  
changed lines
  Added in v.1041

  ViewVC Help
Powered by ViewVC 1.1.5