/[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 388 by ph10, Wed Mar 11 17:03:17 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 943  while (argc > 1 && argv[op][0] == '-') Line 947  while (argc > 1 && argv[op][0] == '-')
947      printf("  Internal link size = %d\n", rc);      printf("  Internal link size = %d\n", rc);
948      (void)pcre_config(PCRE_CONFIG_POSIX_MALLOC_THRESHOLD, &rc);      (void)pcre_config(PCRE_CONFIG_POSIX_MALLOC_THRESHOLD, &rc);
949      printf("  POSIX malloc threshold = %d\n", rc);      printf("  POSIX malloc threshold = %d\n", rc);
950      (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT, &rc);      (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT, &lrc);
951      printf("  Default match limit = %d\n", rc);      printf("  Default match limit = %ld\n", lrc);
952      (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT_RECURSION, &rc);      (void)pcre_config(PCRE_CONFIG_MATCH_LIMIT_RECURSION, &lrc);
953      printf("  Default recursion depth limit = %d\n", rc);      printf("  Default recursion depth limit = %ld\n", lrc);
954      (void)pcre_config(PCRE_CONFIG_STACKRECURSE, &rc);      (void)pcre_config(PCRE_CONFIG_STACKRECURSE, &rc);
955      printf("  Match recursion uses %s\n", rc? "stack" : "heap");      printf("  Match recursion uses %s\n", rc? "stack" : "heap");
956      goto EXIT;      goto EXIT;
# Line 1708  while (!done) Line 1712  while (!done)
1712      int callout_data_set = 0;      int callout_data_set = 0;
1713      int count, c;      int count, c;
1714      int copystrings = 0;      int copystrings = 0;
1715      int find_match_limit = 0;      int find_match_limit = default_find_match_limit;
1716      int getstrings = 0;      int getstrings = 0;
1717      int getlist = 0;      int getlist = 0;
1718      int gmatched = 0;      int gmatched = 0;
# Line 1806  while (!done) Line 1810  while (!done)
1810              {              {
1811              unsigned char buff8[8];              unsigned char buff8[8];
1812              int ii, utn;              int ii, utn;
1813              utn = ord2utf8(c, buff8);              if (use_utf8)
1814              for (ii = 0; ii < utn - 1; ii++) *q++ = buff8[ii];                {
1815              c = buff8[ii];   /* Last byte */                utn = ord2utf8(c, buff8);
1816                  for (ii = 0; ii < utn - 1; ii++) *q++ = buff8[ii];
1817                  c = buff8[ii];   /* Last byte */
1818                  }
1819                else
1820                 {
1821                 if (c > 255)
1822                   fprintf(outfile, "** Character \\x{%x} is greater than 255 and "
1823                     "UTF-8 mode is not enabled.\n"
1824                     "** Truncation will probably give the wrong result.\n", c);
1825                 }
1826              p = pt + 1;              p = pt + 1;
1827              break;              break;
1828              }              }
# Line 2018  while (!done) Line 2032  while (!done)
2032      *q = 0;      *q = 0;
2033      len = q - dbuffer;      len = q - dbuffer;
2034    
2035        /* Move the data to the end of the buffer so that a read over the end of
2036        the buffer will be seen by valgrind, even if it doesn't cause a crash. If
2037        we are using the POSIX interface, we must include the terminating zero. */
2038    
2039    #if !defined NOPOSIX
2040        if (posix || do_posix)
2041          {
2042          memmove(bptr + buffer_size - len - 1, bptr, len + 1);
2043          bptr += buffer_size - len - 1;
2044          }
2045        else
2046    #endif
2047          {
2048          memmove(bptr + buffer_size - len, bptr, len);
2049          bptr += buffer_size - len;
2050          }
2051    
2052      if ((all_use_dfa || use_dfa) && find_match_limit)      if ((all_use_dfa || use_dfa) && find_match_limit)
2053        {        {
2054        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 2068  while (!done)
2068          pmatch = (regmatch_t *)malloc(sizeof(regmatch_t) * use_size_offsets);          pmatch = (regmatch_t *)malloc(sizeof(regmatch_t) * use_size_offsets);
2069        if ((options & PCRE_NOTBOL) != 0) eflags |= REG_NOTBOL;        if ((options & PCRE_NOTBOL) != 0) eflags |= REG_NOTBOL;
2070        if ((options & PCRE_NOTEOL) != 0) eflags |= REG_NOTEOL;        if ((options & PCRE_NOTEOL) != 0) eflags |= REG_NOTEOL;
2071          if ((options & PCRE_NOTEMPTY) != 0) eflags |= REG_NOTEMPTY;
2072    
2073        rc = regexec(&preg, (const char *)bptr, use_size_offsets, pmatch, eflags);        rc = regexec(&preg, (const char *)bptr, use_size_offsets, pmatch, eflags);
2074    

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

  ViewVC Help
Powered by ViewVC 1.1.5