/[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 427 by ph10, Fri Aug 28 09:55:54 2009 UTC revision 461 by ph10, Mon Oct 5 10:59:35 2009 UTC
# Line 1305  while (!done) Line 1305  while (!done)
1305      if ((options & PCRE_DOTALL) != 0) cflags |= REG_DOTALL;      if ((options & PCRE_DOTALL) != 0) cflags |= REG_DOTALL;
1306      if ((options & PCRE_NO_AUTO_CAPTURE) != 0) cflags |= REG_NOSUB;      if ((options & PCRE_NO_AUTO_CAPTURE) != 0) cflags |= REG_NOSUB;
1307      if ((options & PCRE_UTF8) != 0) cflags |= REG_UTF8;      if ((options & PCRE_UTF8) != 0) cflags |= REG_UTF8;
1308        if ((options & PCRE_UNGREEDY) != 0) cflags |= REG_UNGREEDY;
1309    
1310      rc = regcomp(&preg, (char *)p, cflags);      rc = regcomp(&preg, (char *)p, cflags);
1311    
# Line 1450  while (!done) Line 1451  while (!done)
1451          {          {
1452          pcre_study_data *rsd = (pcre_study_data *)(extra->study_data);          pcre_study_data *rsd = (pcre_study_data *)(extra->study_data);
1453          rsd->size = byteflip(rsd->size, sizeof(rsd->size));          rsd->size = byteflip(rsd->size, sizeof(rsd->size));
1454          rsd->options = byteflip(rsd->options, sizeof(rsd->options));          rsd->flags = byteflip(rsd->flags, sizeof(rsd->flags));
1455            rsd->minlength = byteflip(rsd->minlength, sizeof(rsd->minlength));
1456          }          }
1457        }        }
1458    
# Line 1627  while (!done) Line 1629  while (!done)
1629          else          else
1630            {            {
1631            uschar *start_bits = NULL;            uschar *start_bits = NULL;
1632            new_info(re, extra, PCRE_INFO_FIRSTTABLE, &start_bits);            int minlength;
1633    
1634              new_info(re, extra, PCRE_INFO_MINLENGTH, &minlength);
1635              fprintf(outfile, "Subject length lower bound = %d\n", minlength);
1636    
1637              new_info(re, extra, PCRE_INFO_FIRSTTABLE, &start_bits);
1638            if (start_bits == NULL)            if (start_bits == NULL)
1639              fprintf(outfile, "No starting byte set\n");              fprintf(outfile, "No set of starting bytes\n");
1640            else            else
1641              {              {
1642              int i;              int i;
# Line 1969  while (!done) Line 1975  while (!done)
1975          continue;          continue;
1976    
1977          case 'N':          case 'N':
1978          options |= PCRE_NOTEMPTY;          if ((options & PCRE_NOTEMPTY) != 0)
1979              options = (options & ~PCRE_NOTEMPTY) | PCRE_NOTEMPTY_ATSTART;
1980            else
1981              options |= PCRE_NOTEMPTY;
1982          continue;          continue;
1983    
1984          case 'O':          case 'O':
# Line 1992  while (!done) Line 2001  while (!done)
2001          continue;          continue;
2002    
2003          case 'P':          case 'P':
2004          options |= ((options & PCRE_PARTIAL_SOFT) == 0)?          options |= ((options & PCRE_PARTIAL_SOFT) == 0)?
2005            PCRE_PARTIAL_SOFT : PCRE_PARTIAL_HARD;            PCRE_PARTIAL_SOFT : PCRE_PARTIAL_HARD;
2006          continue;          continue;
2007    
# Line 2146  while (!done) Line 2155  while (!done)
2155            {            {
2156            int workspace[1000];            int workspace[1000];
2157            for (i = 0; i < timeitm; i++)            for (i = 0; i < timeitm; i++)
2158              count = pcre_dfa_exec(re, NULL, (char *)bptr, len, start_offset,              count = pcre_dfa_exec(re, extra, (char *)bptr, len, start_offset,
2159                options | g_notempty, use_offsets, use_size_offsets, workspace,                options | g_notempty, use_offsets, use_size_offsets, workspace,
2160                sizeof(workspace)/sizeof(int));                sizeof(workspace)/sizeof(int));
2161            }            }
# Line 2209  while (!done) Line 2218  while (!done)
2218        else if (all_use_dfa || use_dfa)        else if (all_use_dfa || use_dfa)
2219          {          {
2220          int workspace[1000];          int workspace[1000];
2221          count = pcre_dfa_exec(re, NULL, (char *)bptr, len, start_offset,          count = pcre_dfa_exec(re, extra, (char *)bptr, len, start_offset,
2222            options | g_notempty, use_offsets, use_size_offsets, workspace,            options | g_notempty, use_offsets, use_size_offsets, workspace,
2223            sizeof(workspace)/sizeof(int));            sizeof(workspace)/sizeof(int));
2224          if (count == 0)          if (count == 0)
# Line 2368  while (!done) Line 2377  while (!done)
2377            {            {
2378            fprintf(outfile, ": ");            fprintf(outfile, ": ");
2379            pchars(bptr + use_offsets[0], use_offsets[1] - use_offsets[0],            pchars(bptr + use_offsets[0], use_offsets[1] - use_offsets[0],
2380              outfile);              outfile);
2381            }            }
2382          fprintf(outfile, "\n");          fprintf(outfile, "\n");
2383          break;  /* Out of the /g loop */          break;  /* Out of the /g loop */
2384          }          }
# Line 2442  while (!done) Line 2451  while (!done)
2451        if (!do_g && !do_G) break;        if (!do_g && !do_G) break;
2452    
2453        /* If we have matched an empty string, first check to see if we are at        /* If we have matched an empty string, first check to see if we are at
2454        the end of the subject. If so, the /g loop is over. Otherwise, mimic        the end of the subject. If so, the /g loop is over. Otherwise, mimic what
2455        what Perl's /g options does. This turns out to be rather cunning. First        Perl's /g options does. This turns out to be rather cunning. First we set
2456        we set PCRE_NOTEMPTY and PCRE_ANCHORED and try the match again at the        PCRE_NOTEMPTY_ATSTART and PCRE_ANCHORED and try the match again at the
2457        same point. If this fails (picked up above) we advance to the next        same point. If this fails (picked up above) we advance to the next
2458        character. */        character. */
2459    
# Line 2453  while (!done) Line 2462  while (!done)
2462        if (use_offsets[0] == use_offsets[1])        if (use_offsets[0] == use_offsets[1])
2463          {          {
2464          if (use_offsets[0] == len) break;          if (use_offsets[0] == len) break;
2465          g_notempty = PCRE_NOTEMPTY | PCRE_ANCHORED;          g_notempty = PCRE_NOTEMPTY_ATSTART | PCRE_ANCHORED;
2466          }          }
2467    
2468        /* For /g, update the start offset, leaving the rest alone */        /* For /g, update the start offset, leaving the rest alone */

Legend:
Removed from v.427  
changed lines
  Added in v.461

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12