/[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 351 by ph10, Fri Jul 4 18:27:16 2008 UTC revision 391 by ph10, Tue Mar 17 21:16:01 2009 UTC
# Line 785  printf("  -dfa     force DFA matching fo Line 785  printf("  -dfa     force DFA matching fo
785  #endif  #endif
786  printf("  -help    show usage information\n");  printf("  -help    show usage information\n");
787  printf("  -i       show information about compiled patterns\n"  printf("  -i       show information about compiled patterns\n"
788           "  -M       find MATCH_LIMIT minimum for each subject\n"
789         "  -m       output memory used information\n"         "  -m       output memory used information\n"
790         "  -o <n>   set size of offsets vector to <n>\n");         "  -o <n>   set size of offsets vector to <n>\n");
791  #if !defined NOPOSIX  #if !defined NOPOSIX
# Line 814  int main(int argc, char **argv) Line 815  int main(int argc, char **argv)
815  FILE *infile = stdin;  FILE *infile = stdin;
816  int options = 0;  int options = 0;
817  int study_options = 0;  int study_options = 0;
818    int default_find_match_limit = FALSE;
819  int op = 1;  int op = 1;
820  int timeit = 0;  int timeit = 0;
821  int timeitm = 0;  int timeitm = 0;
# Line 873  while (argc > 1 && argv[op][0] == '-') Line 875  while (argc > 1 && argv[op][0] == '-')
875    else if (strcmp(argv[op], "-b") == 0) debug = 1;    else if (strcmp(argv[op], "-b") == 0) debug = 1;
876    else if (strcmp(argv[op], "-i") == 0) showinfo = 1;    else if (strcmp(argv[op], "-i") == 0) showinfo = 1;
877    else if (strcmp(argv[op], "-d") == 0) showinfo = debug = 1;    else if (strcmp(argv[op], "-d") == 0) showinfo = debug = 1;
878      else if (strcmp(argv[op], "-M") == 0) default_find_match_limit = TRUE;
879  #if !defined NODFA  #if !defined NODFA
880    else if (strcmp(argv[op], "-dfa") == 0) all_use_dfa = 1;    else if (strcmp(argv[op], "-dfa") == 0) all_use_dfa = 1;
881  #endif  #endif
# Line 925  while (argc > 1 && argv[op][0] == '-') Line 928  while (argc > 1 && argv[op][0] == '-')
928    else if (strcmp(argv[op], "-C") == 0)    else if (strcmp(argv[op], "-C") == 0)
929      {      {
930      int rc;      int rc;
931        unsigned long int lrc;
932      printf("PCRE version %s\n", pcre_version());      printf("PCRE version %s\n", pcre_version());
933      printf("Compiled with\n");      printf("Compiled with\n");
934      (void)pcre_config(PCRE_CONFIG_UTF8, &rc);      (void)pcre_config(PCRE_CONFIG_UTF8, &rc);
# Line 932  while (argc > 1 && argv[op][0] == '-') Line 936  while (argc > 1 && argv[op][0] == '-')
936      (void)pcre_config(PCRE_CONFIG_UNICODE_PROPERTIES, &rc);      (void)pcre_config(PCRE_CONFIG_UNICODE_PROPERTIES, &rc);
937      printf("  %sUnicode properties support\n", rc? "" : "No ");      printf("  %sUnicode properties support\n", rc? "" : "No ");
938      (void)pcre_config(PCRE_CONFIG_NEWLINE, &rc);      (void)pcre_config(PCRE_CONFIG_NEWLINE, &rc);
939      printf("  Newline sequence is %s\n", (rc == '\r')? "CR" :      /* Note that these values are always the ASCII values, even
940        (rc == '\n')? "LF" : (rc == ('\r'<<8 | '\n'))? "CRLF" :      in EBCDIC environments. CR is 13 and NL is 10. */
941        printf("  Newline sequence is %s\n", (rc == 13)? "CR" :
942          (rc == 10)? "LF" : (rc == (13<<8 | 10))? "CRLF" :
943        (rc == -2)? "ANYCRLF" :        (rc == -2)? "ANYCRLF" :
944        (rc == -1)? "ANY" : "???");        (rc == -1)? "ANY" : "???");
945      (void)pcre_config(PCRE_CONFIG_BSR, &rc);      (void)pcre_config(PCRE_CONFIG_BSR, &rc);
# Line 943  while (argc > 1 && argv[op][0] == '-') Line 949  while (argc > 1 && argv[op][0] == '-')
949      printf("  Internal link size = %d\n", rc);      printf("  Internal link size = %d\n", rc);
950      (void)pcre_config(PCRE_CONFIG_POSIX_MALLOC_THRESHOLD, &rc);      (void)pcre_config(PCRE_CONFIG_POSIX_MALLOC_THRESHOLD, &rc);
951      printf("  POSIX malloc threshold = %d\n", rc);      printf("  POSIX malloc threshold = %d\n", rc);
952      (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT, &rc);      (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT, &lrc);
953      printf("  Default match limit = %d\n", rc);      printf("  Default match limit = %ld\n", lrc);
954      (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT_RECURSION, &rc);      (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT_RECURSION, &lrc);
955      printf("  Default recursion depth limit = %d\n", rc);      printf("  Default recursion depth limit = %ld\n", lrc);
956      (void)pcre_config(PCRE_CONFIG_STACKRECURSE, &rc);      (void)pcre_config(PCRE_CONFIG_STACKRECURSE, &rc);
957      printf("  Match recursion uses %s\n", rc? "stack" : "heap");      printf("  Match recursion uses %s\n", rc? "stack" : "heap");
958      goto EXIT;      goto EXIT;
# Line 1708  while (!done) Line 1714  while (!done)
1714      int callout_data_set = 0;      int callout_data_set = 0;
1715      int count, c;      int count, c;
1716      int copystrings = 0;      int copystrings = 0;
1717      int find_match_limit = 0;      int find_match_limit = default_find_match_limit;
1718      int getstrings = 0;      int getstrings = 0;
1719      int getlist = 0;      int getlist = 0;
1720      int gmatched = 0;      int gmatched = 0;
# Line 1806  while (!done) Line 1812  while (!done)
1812              {              {
1813              unsigned char buff8[8];              unsigned char buff8[8];
1814              int ii, utn;              int ii, utn;
1815              utn = ord2utf8(c, buff8);              if (use_utf8)
1816              for (ii = 0; ii < utn - 1; ii++) *q++ = buff8[ii];                {
1817              c = buff8[ii];   /* Last byte */                utn = ord2utf8(c, buff8);
1818                  for (ii = 0; ii < utn - 1; ii++) *q++ = buff8[ii];
1819                  c = buff8[ii];   /* Last byte */
1820                  }
1821                else
1822                 {
1823                 if (c > 255)
1824                   fprintf(outfile, "** Character \\x{%x} is greater than 255 and "
1825                     "UTF-8 mode is not enabled.\n"
1826                     "** Truncation will probably give the wrong result.\n", c);
1827                 }
1828              p = pt + 1;              p = pt + 1;
1829              break;              break;
1830              }              }
# Line 1995  while (!done) Line 2011  while (!done)
2011          case 'S':          case 'S':
2012          show_malloc = 1;          show_malloc = 1;
2013          continue;          continue;
2014    
2015            case 'Y':
2016            options |= PCRE_NO_START_OPTIMIZE;
2017            continue;
2018    
2019          case 'Z':          case 'Z':
2020          options |= PCRE_NOTEOL;          options |= PCRE_NOTEOL;
# Line 2018  while (!done) Line 2038  while (!done)
2038      *q = 0;      *q = 0;
2039      len = q - dbuffer;      len = q - dbuffer;
2040    
2041        /* Move the data to the end of the buffer so that a read over the end of
2042        the buffer will be seen by valgrind, even if it doesn't cause a crash. If
2043        we are using the POSIX interface, we must include the terminating zero. */
2044    
2045    #if !defined NOPOSIX
2046        if (posix || do_posix)
2047          {
2048          memmove(bptr + buffer_size - len - 1, bptr, len + 1);
2049          bptr += buffer_size - len - 1;
2050          }
2051        else
2052    #endif
2053          {
2054          memmove(bptr + buffer_size - len, bptr, len);
2055          bptr += buffer_size - len;
2056          }
2057    
2058      if ((all_use_dfa || use_dfa) && find_match_limit)      if ((all_use_dfa || use_dfa) && find_match_limit)
2059        {        {
2060        printf("**Match limit not relevant for DFA matching: ignored\n");        printf("**Match limit not relevant for DFA matching: ignored\n");
# Line 2037  while (!done) Line 2074  while (!done)
2074          pmatch = (regmatch_t *)malloc(sizeof(regmatch_t) * use_size_offsets);          pmatch = (regmatch_t *)malloc(sizeof(regmatch_t) * use_size_offsets);
2075        if ((options & PCRE_NOTBOL) != 0) eflags |= REG_NOTBOL;        if ((options & PCRE_NOTBOL) != 0) eflags |= REG_NOTBOL;
2076        if ((options & PCRE_NOTEOL) != 0) eflags |= REG_NOTEOL;        if ((options & PCRE_NOTEOL) != 0) eflags |= REG_NOTEOL;
2077          if ((options & PCRE_NOTEMPTY) != 0) eflags |= REG_NOTEMPTY;
2078    
2079        rc = regexec(&preg, (const char *)bptr, use_size_offsets, pmatch, eflags);        rc = regexec(&preg, (const char *)bptr, use_size_offsets, pmatch, eflags);
2080    
# Line 2344  while (!done) Line 2382  while (!done)
2382              {              {
2383              int d;              int d;
2384              (void)pcre_config(PCRE_CONFIG_NEWLINE, &d);              (void)pcre_config(PCRE_CONFIG_NEWLINE, &d);
2385              obits = (d == '\r')? PCRE_NEWLINE_CR :              /* Note that these values are always the ASCII ones, even in
2386                      (d == '\n')? PCRE_NEWLINE_LF :              EBCDIC environments. CR = 13, NL = 10. */
2387                      (d == ('\r'<<8 | '\n'))? PCRE_NEWLINE_CRLF :              obits = (d == 13)? PCRE_NEWLINE_CR :
2388                        (d == 10)? PCRE_NEWLINE_LF :
2389                        (d == (13<<8 | 10))? PCRE_NEWLINE_CRLF :
2390                      (d == -2)? PCRE_NEWLINE_ANYCRLF :                      (d == -2)? PCRE_NEWLINE_ANYCRLF :
2391                      (d == -1)? PCRE_NEWLINE_ANY : 0;                      (d == -1)? PCRE_NEWLINE_ANY : 0;
2392              }              }

Legend:
Removed from v.351  
changed lines
  Added in v.391

  ViewVC Help
Powered by ViewVC 1.1.5