/[pcre]/code/tags/pcre-5.0/maketables.c
ViewVC logotype

Diff of /code/tags/pcre-5.0/maketables.c

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

revision 43 by nigel, Sat Feb 24 21:39:21 2007 UTC revision 73 by nigel, Sat Feb 24 21:40:30 2007 UTC
# Line 8  and semantics are as close as possible t Line 8  and semantics are as close as possible t
8    
9  Written by: Philip Hazel <ph10@cam.ac.uk>  Written by: Philip Hazel <ph10@cam.ac.uk>
10    
11             Copyright (c) 1997-2000 University of Cambridge             Copyright (c) 1997-2003 University of Cambridge
12    
13  -----------------------------------------------------------------------------  -----------------------------------------------------------------------------
14  Permission is granted to anyone to use this software for any purpose on any  Permission is granted to anyone to use this software for any purpose on any
# Line 58  Arguments:   none Line 58  Arguments:   none
58  Returns:     pointer to the contiguous block of data  Returns:     pointer to the contiguous block of data
59  */  */
60    
61  unsigned const char *  const unsigned char *
62  pcre_maketables(void)  pcre_maketables(void)
63  {  {
64  unsigned char *yield, *p;  unsigned char *yield, *p;
# Line 82  for (i = 0; i < 256; i++) *p++ = tolower Line 82  for (i = 0; i < 256; i++) *p++ = tolower
82  for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i);  for (i = 0; i < 256; i++) *p++ = islower(i)? toupper(i) : tolower(i);
83    
84  /* Then the character class tables. Don't try to be clever and save effort  /* Then the character class tables. Don't try to be clever and save effort
85  on exclusive ones - in some locales things may be different. */  on exclusive ones - in some locales things may be different. Note that the
86    table for "space" includes everything "isspace" gives, including VT in the
87    default locale. This makes it work for the POSIX class [:space:]. */
88    
89  memset(p, 0, cbit_length);  memset(p, 0, cbit_length);
90  for (i = 0; i < 256; i++)  for (i = 0; i < 256; i++)
# Line 112  for (i = 0; i < 256; i++) Line 114  for (i = 0; i < 256; i++)
114    }    }
115  p += cbit_length;  p += cbit_length;
116    
117  /* Finally, the character type table */  /* Finally, the character type table. In this, we exclude VT from the white
118    space chars, because Perl doesn't recognize it as such for \s and for comments
119    within regexes. */
120    
121  for (i = 0; i < 256; i++)  for (i = 0; i < 256; i++)
122    {    {
123    int x = 0;    int x = 0;
124    if (isspace(i)) x += ctype_space;    if (i != 0x0b && isspace(i)) x += ctype_space;
125    if (isalpha(i)) x += ctype_letter;    if (isalpha(i)) x += ctype_letter;
126    if (isdigit(i)) x += ctype_digit;    if (isdigit(i)) x += ctype_digit;
127    if (isxdigit(i)) x += ctype_xdigit;    if (isxdigit(i)) x += ctype_xdigit;
128    if (isalnum(i) || i == '_') x += ctype_word;    if (isalnum(i) || i == '_') x += ctype_word;
129    if (strchr("*+?{^.$|()[", i) != 0) x += ctype_meta;  
130    *p++ = x;    /* Note: strchr includes the terminating zero in the characters it considers.
131    }    In this instance, that is ok because we want binary zero to be flagged as a
132      meta-character, which in this sense is any character that terminates a run
133      of data characters. */
134    
135      if (strchr("*+?{^.$|()[", i) != 0) x += ctype_meta; *p++ = x; }
136    
137  return yield;  return yield;
138  }  }

Legend:
Removed from v.43  
changed lines
  Added in v.73

  ViewVC Help
Powered by ViewVC 1.1.5