/[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 199 by ph10, Tue Jul 31 14:39:09 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 852  while (argc > 1 && argv[op][0] == '-') Line 856  while (argc > 1 && argv[op][0] == '-')
856      (void)pcre_config(PCRE_CONFIG_NEWLINE, &rc);      (void)pcre_config(PCRE_CONFIG_NEWLINE, &rc);
857      printf("  Newline sequence is %s\n", (rc == '\r')? "CR" :      printf("  Newline sequence is %s\n", (rc == '\r')? "CR" :
858        (rc == '\n')? "LF" : (rc == ('\r'<<8 | '\n'))? "CRLF" :        (rc == '\n')? "LF" : (rc == ('\r'<<8 | '\n'))? "CRLF" :
859        (rc == -2)? "ANYCRLF" :        (rc == -2)? "ANYCRLF" :
860        (rc == -1)? "ANY" : "???");        (rc == -1)? "ANY" : "???");
861      (void)pcre_config(PCRE_CONFIG_LINK_SIZE, &rc);      (void)pcre_config(PCRE_CONFIG_LINK_SIZE, &rc);
862      printf("  Internal link size = %d\n", rc);      printf("  Internal link size = %d\n", rc);
# Line 890  offsets = (int *)malloc(size_offsets_max Line 894  offsets = (int *)malloc(size_offsets_max
894  if (offsets == NULL)  if (offsets == NULL)
895    {    {
896    printf("** Failed to get %d bytes of memory for offsets vector\n",    printf("** Failed to get %d bytes of memory for offsets vector\n",
897      size_offsets_max * sizeof(int));      (int)(size_offsets_max * sizeof(int)));
898    yield = 1;    yield = 1;
899    goto EXIT;    goto EXIT;
900    }    }
# Line 1352  while (!done) Line 1356  while (!done)
1356  #if !defined NOINFOCHECK  #if !defined NOINFOCHECK
1357        int old_first_char, old_options, old_count;        int old_first_char, old_options, old_count;
1358  #endif  #endif
1359        int count, backrefmax, first_char, need_char;        int count, backrefmax, first_char, need_char, okpartial, jchanged;
1360        int nameentrysize, namecount;        int nameentrysize, namecount;
1361        const uschar *nametable;        const uschar *nametable;
1362    
# Line 1365  while (!done) Line 1369  while (!done)
1369        new_info(re, NULL, PCRE_INFO_NAMEENTRYSIZE, &nameentrysize);        new_info(re, NULL, PCRE_INFO_NAMEENTRYSIZE, &nameentrysize);
1370        new_info(re, NULL, PCRE_INFO_NAMECOUNT, &namecount);        new_info(re, NULL, PCRE_INFO_NAMECOUNT, &namecount);
1371        new_info(re, NULL, PCRE_INFO_NAMETABLE, (void *)&nametable);        new_info(re, NULL, PCRE_INFO_NAMETABLE, (void *)&nametable);
1372          new_info(re, NULL, PCRE_INFO_OKPARTIAL, &okpartial);
1373          new_info(re, NULL, PCRE_INFO_JCHANGED, &jchanged);
1374    
1375  #if !defined NOINFOCHECK  #if !defined NOINFOCHECK
1376        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 1412  while (!done)
1412            }            }
1413          }          }
1414    
1415        /* 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 */  
1416    
1417        all_options = ((real_pcre *)re)->options;        all_options = ((real_pcre *)re)->options;
1418        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");  
1419    
1420        if (get_options == 0) fprintf(outfile, "No options\n");        if (get_options == 0) fprintf(outfile, "No options\n");
1421          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 1433  while (!done)
1433            ((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "",            ((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "",
1434            ((get_options & PCRE_DUPNAMES) != 0)? " dupnames" : "");            ((get_options & PCRE_DUPNAMES) != 0)? " dupnames" : "");
1435    
1436          if (jchanged) fprintf(outfile, "Duplicate name status changes\n");
1437    
1438        switch (get_options & PCRE_NEWLINE_BITS)        switch (get_options & PCRE_NEWLINE_BITS)
1439          {          {
1440          case PCRE_NEWLINE_CR:          case PCRE_NEWLINE_CR:
# Line 1852  while (!done) Line 1853  while (!done)
1853            if (offsets == NULL)            if (offsets == NULL)
1854              {              {
1855              printf("** Failed to get %d bytes of memory for offsets vector\n",              printf("** Failed to get %d bytes of memory for offsets vector\n",
1856                size_offsets_max * sizeof(int));                (int)(size_offsets_max * sizeof(int)));
1857              yield = 1;              yield = 1;
1858              goto EXIT;              goto EXIT;
1859              }              }
# Line 2225  while (!done) Line 2226  while (!done)
2226        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
2227        string - that was checked before setting g_notempty.        string - that was checked before setting g_notempty.
2228    
2229        Complication arises in the case when the newline option is "any" or        Complication arises in the case when the newline option is "any" or
2230        "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
2231        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
2232        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 2249  while (!done)
2249              obits = (d == '\r')? PCRE_NEWLINE_CR :              obits = (d == '\r')? PCRE_NEWLINE_CR :
2250                      (d == '\n')? PCRE_NEWLINE_LF :                      (d == '\n')? PCRE_NEWLINE_LF :
2251                      (d == ('\r'<<8 | '\n'))? PCRE_NEWLINE_CRLF :                      (d == ('\r'<<8 | '\n'))? PCRE_NEWLINE_CRLF :
2252                      (d == -2)? PCRE_NEWLINE_ANYCRLF :                      (d == -2)? PCRE_NEWLINE_ANYCRLF :
2253                      (d == -1)? PCRE_NEWLINE_ANY : 0;                      (d == -1)? PCRE_NEWLINE_ANY : 0;
2254              }              }
2255            if (((obits & PCRE_NEWLINE_BITS) == PCRE_NEWLINE_ANY ||            if (((obits & PCRE_NEWLINE_BITS) == PCRE_NEWLINE_ANY ||
2256                 (obits & PCRE_NEWLINE_BITS) == PCRE_NEWLINE_ANYCRLF)                 (obits & PCRE_NEWLINE_BITS) == PCRE_NEWLINE_ANYCRLF)
2257                &&                &&
2258                start_offset < len - 1 &&                start_offset < len - 1 &&
2259                bptr[start_offset] == '\r' &&                bptr[start_offset] == '\r' &&

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

  ViewVC Help
Powered by ViewVC 1.1.5