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

Diff of /code/trunk/pcretest.c

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

revision 149 by ph10, Mon Apr 16 15:28:08 2007 UTC revision 211 by ph10, Thu Aug 9 09:52:43 2007 UTC
# Line 36  POSSIBILITY OF SUCH DAMAGE. Line 36  POSSIBILITY OF SUCH DAMAGE.
36  */  */
37    
38    
39    #ifdef HAVE_CONFIG_H
40    #include <config.h>
41    #endif
42    
43  #include <ctype.h>  #include <ctype.h>
44  #include <stdio.h>  #include <stdio.h>
45  #include <string.h>  #include <string.h>
# Line 152  static int callout_count; Line 156  static int callout_count;
156  static int callout_extra;  static int callout_extra;
157  static int callout_fail_count;  static int callout_fail_count;
158  static int callout_fail_id;  static int callout_fail_id;
159    static int debug_lengths;
160  static int first_callout;  static int first_callout;
161  static int locale_set = 0;  static int locale_set = 0;
162  static int show_malloc;  static int show_malloc;
# Line 852  while (argc > 1 && argv[op][0] == '-') Line 857  while (argc > 1 && argv[op][0] == '-')
857      (void)pcre_config(PCRE_CONFIG_NEWLINE, &rc);      (void)pcre_config(PCRE_CONFIG_NEWLINE, &rc);
858      printf("  Newline sequence is %s\n", (rc == '\r')? "CR" :      printf("  Newline sequence is %s\n", (rc == '\r')? "CR" :
859        (rc == '\n')? "LF" : (rc == ('\r'<<8 | '\n'))? "CRLF" :        (rc == '\n')? "LF" : (rc == ('\r'<<8 | '\n'))? "CRLF" :
860        (rc == -2)? "ANYCRLF" :        (rc == -2)? "ANYCRLF" :
861        (rc == -1)? "ANY" : "???");        (rc == -1)? "ANY" : "???");
862      (void)pcre_config(PCRE_CONFIG_LINK_SIZE, &rc);      (void)pcre_config(PCRE_CONFIG_LINK_SIZE, &rc);
863      printf("  Internal link size = %d\n", rc);      printf("  Internal link size = %d\n", rc);
# Line 890  offsets = (int *)malloc(size_offsets_max Line 895  offsets = (int *)malloc(size_offsets_max
895  if (offsets == NULL)  if (offsets == NULL)
896    {    {
897    printf("** Failed to get %d bytes of memory for offsets vector\n",    printf("** Failed to get %d bytes of memory for offsets vector\n",
898      size_offsets_max * sizeof(int));      (int)(size_offsets_max * sizeof(int)));
899    yield = 1;    yield = 1;
900    goto EXIT;    goto EXIT;
901    }    }
# Line 950  while (!done) Line 955  while (!done)
955    size_t size, regex_gotten_store;    size_t size, regex_gotten_store;
956    int do_study = 0;    int do_study = 0;
957    int do_debug = debug;    int do_debug = debug;
   int debug_lengths = 1;  
958    int do_G = 0;    int do_G = 0;
959    int do_g = 0;    int do_g = 0;
960    int do_showinfo = showinfo;    int do_showinfo = showinfo;
# Line 959  while (!done) Line 963  while (!done)
963    int erroroffset, len, delimiter, poffset;    int erroroffset, len, delimiter, poffset;
964    
965    use_utf8 = 0;    use_utf8 = 0;
966      debug_lengths = 1;
967    
968    if (infile == stdin) printf("  re> ");    if (infile == stdin) printf("  re> ");
969    if (extend_inputline(infile, buffer) == NULL) break;    if (extend_inputline(infile, buffer) == NULL) break;
# Line 1352  while (!done) Line 1357  while (!done)
1357  #if !defined NOINFOCHECK  #if !defined NOINFOCHECK
1358        int old_first_char, old_options, old_count;        int old_first_char, old_options, old_count;
1359  #endif  #endif
1360        int count, backrefmax, first_char, need_char;        int count, backrefmax, first_char, need_char, okpartial, jchanged;
1361        int nameentrysize, namecount;        int nameentrysize, namecount;
1362        const uschar *nametable;        const uschar *nametable;
1363    
# Line 1365  while (!done) Line 1370  while (!done)
1370        new_info(re, NULL, PCRE_INFO_NAMEENTRYSIZE, &nameentrysize);        new_info(re, NULL, PCRE_INFO_NAMEENTRYSIZE, &nameentrysize);
1371        new_info(re, NULL, PCRE_INFO_NAMECOUNT, &namecount);        new_info(re, NULL, PCRE_INFO_NAMECOUNT, &namecount);
1372        new_info(re, NULL, PCRE_INFO_NAMETABLE, (void *)&nametable);        new_info(re, NULL, PCRE_INFO_NAMETABLE, (void *)&nametable);
1373          new_info(re, NULL, PCRE_INFO_OKPARTIAL, &okpartial);
1374          new_info(re, NULL, PCRE_INFO_JCHANGED, &jchanged);
1375    
1376  #if !defined NOINFOCHECK  #if !defined NOINFOCHECK
1377        old_count = pcre_info(re, &old_options, &old_first_char);        old_count = pcre_info(re, &old_options, &old_first_char);
# Line 1406  while (!done) Line 1413  while (!done)
1413            }            }
1414          }          }
1415    
1416        /* The NOPARTIAL bit is a private bit in the options, so we have        if (!okpartial) fprintf(outfile, "Partial matching not supported\n");
       to fish it out via out back door */  
1417    
1418        all_options = ((real_pcre *)re)->options;        all_options = ((real_pcre *)re)->options;
1419        if (do_flip)        if (do_flip) all_options = byteflip(all_options, sizeof(all_options));
         {  
         all_options = byteflip(all_options, sizeof(all_options));  
          }  
   
       if ((all_options & PCRE_NOPARTIAL) != 0)  
         fprintf(outfile, "Partial matching not supported\n");  
1420    
1421        if (get_options == 0) fprintf(outfile, "No options\n");        if (get_options == 0) fprintf(outfile, "No options\n");
1422          else fprintf(outfile, "Options:%s%s%s%s%s%s%s%s%s%s%s%s%s\n",          else fprintf(outfile, "Options:%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
# Line 1434  while (!done) Line 1434  while (!done)
1434            ((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "",            ((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "",
1435            ((get_options & PCRE_DUPNAMES) != 0)? " dupnames" : "");            ((get_options & PCRE_DUPNAMES) != 0)? " dupnames" : "");
1436    
1437          if (jchanged) fprintf(outfile, "Duplicate name status changes\n");
1438    
1439        switch (get_options & PCRE_NEWLINE_BITS)        switch (get_options & PCRE_NEWLINE_BITS)
1440          {          {
1441          case PCRE_NEWLINE_CR:          case PCRE_NEWLINE_CR:
# Line 1852  while (!done) Line 1854  while (!done)
1854            if (offsets == NULL)            if (offsets == NULL)
1855              {              {
1856              printf("** Failed to get %d bytes of memory for offsets vector\n",              printf("** Failed to get %d bytes of memory for offsets vector\n",
1857                size_offsets_max * sizeof(int));                (int)(size_offsets_max * sizeof(int)));
1858              yield = 1;              yield = 1;
1859              goto EXIT;              goto EXIT;
1860              }              }
# Line 2225  while (!done) Line 2227  while (!done)
2227        to advance the start offset, and continue. We won't be at the end of the        to advance the start offset, and continue. We won't be at the end of the
2228        string - that was checked before setting g_notempty.        string - that was checked before setting g_notempty.
2229    
2230        Complication arises in the case when the newline option is "any" or        Complication arises in the case when the newline option is "any" or
2231        "anycrlf". If the previous match was at the end of a line terminated by        "anycrlf". If the previous match was at the end of a line terminated by
2232        CRLF, an advance of one character just passes the \r, whereas we should        CRLF, an advance of one character just passes the \r, whereas we should
2233        prefer the longer newline sequence, as does the code in pcre_exec().        prefer the longer newline sequence, as does the code in pcre_exec().
# Line 2248  while (!done) Line 2250  while (!done)
2250              obits = (d == '\r')? PCRE_NEWLINE_CR :              obits = (d == '\r')? PCRE_NEWLINE_CR :
2251                      (d == '\n')? PCRE_NEWLINE_LF :                      (d == '\n')? PCRE_NEWLINE_LF :
2252                      (d == ('\r'<<8 | '\n'))? PCRE_NEWLINE_CRLF :                      (d == ('\r'<<8 | '\n'))? PCRE_NEWLINE_CRLF :
2253                      (d == -2)? PCRE_NEWLINE_ANYCRLF :                      (d == -2)? PCRE_NEWLINE_ANYCRLF :
2254                      (d == -1)? PCRE_NEWLINE_ANY : 0;                      (d == -1)? PCRE_NEWLINE_ANY : 0;
2255              }              }
2256            if (((obits & PCRE_NEWLINE_BITS) == PCRE_NEWLINE_ANY ||            if (((obits & PCRE_NEWLINE_BITS) == PCRE_NEWLINE_ANY ||
2257                 (obits & PCRE_NEWLINE_BITS) == PCRE_NEWLINE_ANYCRLF)                 (obits & PCRE_NEWLINE_BITS) == PCRE_NEWLINE_ANYCRLF)
2258                &&                &&
2259                start_offset < len - 1 &&                start_offset < len - 1 &&
2260                bptr[start_offset] == '\r' &&                bptr[start_offset] == '\r' &&

Legend:
Removed from v.149  
changed lines
  Added in v.211

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12