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

Diff of /code/trunk/pcre_newline.c

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

revision 836 by ph10, Wed Dec 28 17:16:11 2011 UTC revision 1033 by ph10, Mon Sep 10 11:02:48 2012 UTC
# Line 60  http://unicode.org/unicode/reports/tr18/ Line 60  http://unicode.org/unicode/reports/tr18/
60  *************************************************/  *************************************************/
61    
62  /* It is guaranteed that the initial value of ptr is less than the end of the  /* It is guaranteed that the initial value of ptr is less than the end of the
63  string that is being processed.  string that is being processed.
64    
65  Arguments:  Arguments:
66    ptr          pointer to possible newline    ptr          pointer to possible newline
# Line 86  if (utf) Line 86  if (utf)
86  else  else
87  #endif  /* SUPPORT_UTF */  #endif  /* SUPPORT_UTF */
88    c = *ptr;    c = *ptr;
89    
90    /* Note that this function is called only for ANY or ANYCRLF. */
91    
92  if (type == NLTYPE_ANYCRLF) switch(c)  if (type == NLTYPE_ANYCRLF) switch(c)
93    {    {
94    case 0x000a: *lenptr = 1; return TRUE;             /* LF */    case CHAR_LF: *lenptr = 1; return TRUE;
95    case 0x000d: *lenptr = (ptr < endptr - 1 && ptr[1] == 0x0a)? 2 : 1;    case CHAR_CR: *lenptr = (ptr < endptr - 1 && ptr[1] == CHAR_LF)? 2 : 1;
96                 return TRUE;                          /* CR */                 return TRUE;
97    default: return FALSE;    default: return FALSE;
98    }    }
99    
# Line 99  if (type == NLTYPE_ANYCRLF) switch(c) Line 101  if (type == NLTYPE_ANYCRLF) switch(c)
101    
102  else switch(c)  else switch(c)
103    {    {
104    case 0x000a:                                       /* LF */  #ifdef EBCDIC
105    case 0x000b:                                       /* VT */    case CHAR_NEL:
106    case 0x000c: *lenptr = 1; return TRUE;             /* FF */  #endif
107    case 0x000d: *lenptr = (ptr < endptr - 1 && ptr[1] == 0x0a)? 2 : 1;    case CHAR_LF:
108                 return TRUE;                          /* CR */    case CHAR_VT:
109      case CHAR_FF: *lenptr = 1; return TRUE;
110    
111      case CHAR_CR:
112      *lenptr = (ptr < endptr - 1 && ptr[1] == CHAR_LF)? 2 : 1;
113      return TRUE;
114    
115    #ifndef EBCDIC
116  #ifdef COMPILE_PCRE8  #ifdef COMPILE_PCRE8
117    case 0x0085: *lenptr = utf? 2 : 1; return TRUE;    /* NEL */    case CHAR_NEL: *lenptr = utf? 2 : 1; return TRUE;
118    case 0x2028:                                       /* LS */    case 0x2028:                                       /* LS */
119    case 0x2029: *lenptr = 3; return TRUE;             /* PS */    case 0x2029: *lenptr = 3; return TRUE;             /* PS */
120  #else  #else   /* 16-bit (can't be EBCDIC) */
121    case 0x0085:                                       /* NEL */    case CHAR_NEL:
122    case 0x2028:                                       /* LS */    case 0x2028:                                       /* LS */
123    case 0x2029: *lenptr = 1; return TRUE;             /* PS */    case 0x2029: *lenptr = 1; return TRUE;             /* PS */
124  #endif /* COMPILE_PCRE8 */  #endif  /* COMPILE_PCRE8 */
125    #endif  /* Not EBCDIC */
126    
127    default: return FALSE;    default: return FALSE;
128    }    }
129  }  }
# Line 153  else Line 164  else
164  #endif  /* SUPPORT_UTF */  #endif  /* SUPPORT_UTF */
165    c = *ptr;    c = *ptr;
166    
167    /* Note that this function is called only for ANY or ANYCRLF. */
168    
169  if (type == NLTYPE_ANYCRLF) switch(c)  if (type == NLTYPE_ANYCRLF) switch(c)
170    {    {
171    case 0x000a: *lenptr = (ptr > startptr && ptr[-1] == 0x0d)? 2 : 1;    case CHAR_LF:
172                 return TRUE;                         /* LF */    *lenptr = (ptr > startptr && ptr[-1] == CHAR_CR)? 2 : 1;
173    case 0x000d: *lenptr = 1; return TRUE;            /* CR */    return TRUE;
174    
175      case CHAR_CR: *lenptr = 1; return TRUE;
176    default: return FALSE;    default: return FALSE;
177    }    }
178    
179    /* NLTYPE_ANY */
180    
181  else switch(c)  else switch(c)
182    {    {
183    case 0x000a: *lenptr = (ptr > startptr && ptr[-1] == 0x0d)? 2 : 1;    case CHAR_LF:
184                 return TRUE;                         /* LF */    *lenptr = (ptr > startptr && ptr[-1] == CHAR_CR)? 2 : 1;
185    case 0x000b:                                      /* VT */    return TRUE;
186    case 0x000c:                                      /* FF */  
187    case 0x000d: *lenptr = 1; return TRUE;            /* CR */  #ifdef EBCDIC
188      case CHAR_NEL:
189    #endif
190      case CHAR_VT:
191      case CHAR_FF:
192      case CHAR_CR: *lenptr = 1; return TRUE;
193    
194    #ifndef EBCDIC
195  #ifdef COMPILE_PCRE8  #ifdef COMPILE_PCRE8
196    case 0x0085: *lenptr = utf? 2 : 1; return TRUE;   /* NEL */    case CHAR_NEL: *lenptr = utf? 2 : 1; return TRUE;
197    case 0x2028:                                      /* LS */    case 0x2028:                                       /* LS */
198    case 0x2029: *lenptr = 3; return TRUE;            /* PS */    case 0x2029: *lenptr = 3; return TRUE;             /* PS */
199  #else  #else
200    case 0x0085:                                       /* NEL */    case CHAR_NEL:
201    case 0x2028:                                       /* LS */    case 0x2028:                                       /* LS */
202    case 0x2029: *lenptr = 1; return TRUE;             /* PS */    case 0x2029: *lenptr = 1; return TRUE;             /* PS */
203  #endif /* COMPILE_PCRE8 */  #endif  /* COMPILE_PCRE8 */
204    #endif  /* NotEBCDIC */
205    
206    default: return FALSE;    default: return FALSE;
207    }    }
208  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.5