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

Diff of /code/trunk/pcre_compile.c

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

revision 994 by ph10, Tue Jul 10 14:29:26 2012 UTC revision 1033 by ph10, Mon Sep 10 11:02:48 2012 UTC
# Line 789  else if ((i = escapes[c - CHAR_0]) != 0) Line 789  else if ((i = escapes[c - CHAR_0]) != 0)
789    
790  #else           /* EBCDIC coding */  #else           /* EBCDIC coding */
791  /* Not alphanumeric */  /* Not alphanumeric */
792  else if (c < 'a' || (!MAX_255(c) || (ebcdic_chartab[c] & 0x0E) == 0)) {}  else if (c < CHAR_a || (!MAX_255(c) || (ebcdic_chartab[c] & 0x0E) == 0)) {}
793  else if ((i = escapes[c - 0x48]) != 0)  c = i;  else if ((i = escapes[c - 0x48]) != 0)  c = i;
794  #endif  #endif
795    
# Line 3168  if (next >= 0) switch(op_code) Line 3168  if (next >= 0) switch(op_code)
3168    case OP_NOT_HSPACE:    case OP_NOT_HSPACE:
3169    switch(next)    switch(next)
3170      {      {
3171      case 0x09:      case CHAR_HT:
3172      case 0x20:      case CHAR_SPACE:
3173    #ifndef EBCDIC
3174      case 0xa0:      case 0xa0:
3175      case 0x1680:      case 0x1680:
3176      case 0x180e:      case 0x180e:
# Line 3187  if (next >= 0) switch(op_code) Line 3188  if (next >= 0) switch(op_code)
3188      case 0x202f:      case 0x202f:
3189      case 0x205f:      case 0x205f:
3190      case 0x3000:      case 0x3000:
3191    #endif  /* Not EBCDIC */
3192      return op_code == OP_NOT_HSPACE;      return op_code == OP_NOT_HSPACE;
3193      default:      default:
3194      return op_code != OP_NOT_HSPACE;      return op_code != OP_NOT_HSPACE;
# Line 3197  if (next >= 0) switch(op_code) Line 3199  if (next >= 0) switch(op_code)
3199    case OP_NOT_VSPACE:    case OP_NOT_VSPACE:
3200    switch(next)    switch(next)
3201      {      {
3202      case 0x0a:      case CHAR_LF:
3203      case 0x0b:      case CHAR_VT:
3204      case 0x0c:      case CHAR_FF:
3205      case 0x0d:      case CHAR_CR:
3206      case 0x85:      case CHAR_NEL:
3207    #ifndef EBCDIC
3208      case 0x2028:      case 0x2028:
3209      case 0x2029:      case 0x2029:
3210    #endif
3211      return op_code == OP_NOT_VSPACE;      return op_code == OP_NOT_VSPACE;
3212      default:      default:
3213      return op_code != OP_NOT_VSPACE;      return op_code != OP_NOT_VSPACE;
# Line 3261  switch(op_code) Line 3265  switch(op_code)
3265      case ESC_H:      case ESC_H:
3266      switch(c)      switch(c)
3267        {        {
3268        case 0x09:        case CHAR_HT:
3269        case 0x20:        case CHAR_SPACE:
3270    #ifndef EBCDIC
3271        case 0xa0:        case 0xa0:
3272        case 0x1680:        case 0x1680:
3273        case 0x180e:        case 0x180e:
# Line 3280  switch(op_code) Line 3285  switch(op_code)
3285        case 0x202f:        case 0x202f:
3286        case 0x205f:        case 0x205f:
3287        case 0x3000:        case 0x3000:
3288    #endif  /* Not EBCDIC */
3289        return -next != ESC_h;        return -next != ESC_h;
3290        default:        default:
3291        return -next == ESC_h;        return -next == ESC_h;
# Line 3289  switch(op_code) Line 3295  switch(op_code)
3295      case ESC_V:      case ESC_V:
3296      switch(c)      switch(c)
3297        {        {
3298        case 0x0a:        case CHAR_LF:
3299        case 0x0b:        case CHAR_VT:
3300        case 0x0c:        case CHAR_FF:
3301        case 0x0d:        case CHAR_CR:
3302        case 0x85:        case CHAR_NEL:
3303    #ifndef EBCDIC
3304        case 0x2028:        case 0x2028:
3305        case 0x2029:        case 0x2029:
3306    #endif  /* Not EBCDIC */
3307        return -next != ESC_v;        return -next != ESC_v;
3308        default:        default:
3309        return -next == ESC_v;        return -next == ESC_v;
# Line 4057  for (;; ptr++) Line 4065  for (;; ptr++)
4065    
4066              /* Perl 5.004 onwards omits VT from \s, but we must preserve it              /* Perl 5.004 onwards omits VT from \s, but we must preserve it
4067              if it was previously set by something earlier in the character              if it was previously set by something earlier in the character
4068              class. */              class. Luckily, the value of CHAR_VT is 0x0b in both ASCII and
4069                EBCDIC, so we lazily just adjust the appropriate bit. */
4070    
4071              case ESC_s:              case ESC_s:
4072              classbits[0] |= cbits[cbit_space];              classbits[0] |= cbits[cbit_space];
# Line 4072  for (;; ptr++) Line 4081  for (;; ptr++)
4081              continue;              continue;
4082    
4083              case ESC_h:              case ESC_h:
4084              SETBIT(classbits, 0x09); /* VT */              SETBIT(classbits, CHAR_HT);
4085              SETBIT(classbits, 0x20); /* SPACE */              SETBIT(classbits, CHAR_SPACE);
4086    #ifndef EBCDIC
4087              SETBIT(classbits, 0xa0); /* NSBP */              SETBIT(classbits, 0xa0); /* NSBP */
4088  #ifndef COMPILE_PCRE8  #ifndef COMPILE_PCRE8
4089              xclass = TRUE;              xclass = TRUE;
# Line 4109  for (;; ptr++) Line 4119  for (;; ptr++)
4119                class_uchardata += PRIV(ord2utf)(0x3000, class_uchardata);                class_uchardata += PRIV(ord2utf)(0x3000, class_uchardata);
4120                }                }
4121  #endif  #endif
4122    #endif  /* Not EBCDIC */
4123              continue;              continue;
4124    
4125              case ESC_H:              case ESC_H:
# Line 4117  for (;; ptr++) Line 4128  for (;; ptr++)
4128                int x = 0xff;                int x = 0xff;
4129                switch (c)                switch (c)
4130                  {                  {
4131                  case 0x09/8: x ^= 1 << (0x09%8); break;                  case CHAR_HT/8:    x ^= 1 << (CHAR_HT%8); break;
4132                  case 0x20/8: x ^= 1 << (0x20%8); break;                  case CHAR_SPACE/8: x ^= 1 << (CHAR_SPACE%8); break;
4133                  case 0xa0/8: x ^= 1 << (0xa0%8); break;  #ifndef EBCDIC
4134                    case 0xa0/8: x ^= 1 << (0xa0%8); break;  /* NSBSP */
4135    #endif
4136                  default: break;                  default: break;
4137                  }                  }
4138                classbits[c] |= x;                classbits[c] |= x;
4139                }                }
4140    #ifndef EBCDIC
4141  #ifndef COMPILE_PCRE8  #ifndef COMPILE_PCRE8
4142              xclass = TRUE;              xclass = TRUE;
4143              *class_uchardata++ = XCL_RANGE;              *class_uchardata++ = XCL_RANGE;
# Line 4150  for (;; ptr++) Line 4164  for (;; ptr++)
4164              if (utf)              if (utf)
4165                class_uchardata += PRIV(ord2utf)(0x10ffff, class_uchardata);                class_uchardata += PRIV(ord2utf)(0x10ffff, class_uchardata);
4166              else              else
4167  #endif  #endif   /* SUPPORT_UTF */
4168                *class_uchardata++ = 0xffff;                *class_uchardata++ = 0xffff;
4169  #elif defined SUPPORT_UTF  #elif defined SUPPORT_UTF
4170              if (utf)              if (utf)
# Line 4179  for (;; ptr++) Line 4193  for (;; ptr++)
4193                class_uchardata += PRIV(ord2utf)(0x10ffff, class_uchardata);                class_uchardata += PRIV(ord2utf)(0x10ffff, class_uchardata);
4194                }                }
4195  #endif  #endif
4196    #endif  /* Not EBCDIC */
4197              continue;              continue;
4198    
4199              case ESC_v:              case ESC_v:
4200              SETBIT(classbits, 0x0a); /* LF */              SETBIT(classbits, CHAR_LF);
4201              SETBIT(classbits, 0x0b); /* VT */              SETBIT(classbits, CHAR_VT);
4202              SETBIT(classbits, 0x0c); /* FF */              SETBIT(classbits, CHAR_FF);
4203              SETBIT(classbits, 0x0d); /* CR */              SETBIT(classbits, CHAR_CR);
4204              SETBIT(classbits, 0x85); /* NEL */              SETBIT(classbits, CHAR_NEL);
4205    #ifndef EBCDIC
4206  #ifndef COMPILE_PCRE8  #ifndef COMPILE_PCRE8
4207              xclass = TRUE;              xclass = TRUE;
4208              *class_uchardata++ = XCL_RANGE;              *class_uchardata++ = XCL_RANGE;
# Line 4201  for (;; ptr++) Line 4217  for (;; ptr++)
4217                class_uchardata += PRIV(ord2utf)(0x2029, class_uchardata);                class_uchardata += PRIV(ord2utf)(0x2029, class_uchardata);
4218                }                }
4219  #endif  #endif
4220    #endif  /* Not EBCDIC */
4221              continue;              continue;
4222    
4223              case ESC_V:              case ESC_V:
# Line 4209  for (;; ptr++) Line 4226  for (;; ptr++)
4226                int x = 0xff;                int x = 0xff;
4227                switch (c)                switch (c)
4228                  {                  {
4229                  case 0x0a/8: x ^= 1 << (0x0a%8);                  case CHAR_LF/8: x ^= 1 << (CHAR_LF%8);
4230                               x ^= 1 << (0x0b%8);                                  x ^= 1 << (CHAR_VT%8);
4231                               x ^= 1 << (0x0c%8);                                  x ^= 1 << (CHAR_FF%8);
4232                               x ^= 1 << (0x0d%8);                                  x ^= 1 << (CHAR_CR%8);
4233                               break;                                  break;
4234                  case 0x85/8: x ^= 1 << (0x85%8); break;                  case CHAR_NEL/8: x ^= 1 << (CHAR_NEL%8); break;
4235                  default: break;                  default: break;
4236                  }                  }
4237                classbits[c] |= x;                classbits[c] |= x;
4238                }                }
4239    
4240    #ifndef EBCDIC
4241  #ifndef COMPILE_PCRE8  #ifndef COMPILE_PCRE8
4242              xclass = TRUE;              xclass = TRUE;
4243              *class_uchardata++ = XCL_RANGE;              *class_uchardata++ = XCL_RANGE;
# Line 4245  for (;; ptr++) Line 4263  for (;; ptr++)
4263                class_uchardata += PRIV(ord2utf)(0x10ffff, class_uchardata);                class_uchardata += PRIV(ord2utf)(0x10ffff, class_uchardata);
4264                }                }
4265  #endif  #endif
4266    #endif  /* Not EBCDIC */
4267              continue;              continue;
4268    
4269  #ifdef SUPPORT_UCP  #ifdef SUPPORT_UCP

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

  ViewVC Help
Powered by ViewVC 1.1.5