/[pcre]/code/branches/pcre16/pcretest.c
ViewVC logotype

Diff of /code/branches/pcre16/pcretest.c

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

revision 411 by ph10, Fri Apr 10 15:40:21 2009 UTC revision 442 by ph10, Fri Sep 11 10:21:02 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 1325  while (!done) Line 1326  while (!done)
1326  #endif  /* !defined NOPOSIX */  #endif  /* !defined NOPOSIX */
1327    
1328      {      {
1329        unsigned long int get_options;
1330    
1331      if (timeit > 0)      if (timeit > 0)
1332        {        {
1333        register int i;        register int i;
# Line 1368  while (!done) Line 1371  while (!done)
1371        goto CONTINUE;        goto CONTINUE;
1372        }        }
1373    
1374      /* Compilation succeeded; print data if required. There are now two      /* Compilation succeeded. It is now possible to set the UTF-8 option from
1375      info-returning functions. The old one has a limited interface and      within the regex; check for this so that we know how to process the data
1376      returns only limited data. Check that it agrees with the newer one. */      lines. */
1377    
1378        new_info(re, NULL, PCRE_INFO_OPTIONS, &get_options);
1379        if ((get_options & PCRE_UTF8) != 0) use_utf8 = 1;
1380    
1381        /* Print information if required. There are now two info-returning
1382        functions. The old one has a limited interface and returns only limited
1383        data. Check that it agrees with the newer one. */
1384    
1385      if (log_store)      if (log_store)
1386        fprintf(outfile, "Memory allocation (code space): %d\n",        fprintf(outfile, "Memory allocation (code space): %d\n",
# Line 1455  while (!done) Line 1465  while (!done)
1465        pcre_printint(re, outfile, debug_lengths);        pcre_printint(re, outfile, debug_lengths);
1466        }        }
1467    
1468        /* We already have the options in get_options (see above) */
1469    
1470      if (do_showinfo)      if (do_showinfo)
1471        {        {
1472        unsigned long int get_options, all_options;        unsigned long int all_options;
1473  #if !defined NOINFOCHECK  #if !defined NOINFOCHECK
1474        int old_first_char, old_options, old_count;        int old_first_char, old_options, old_count;
1475  #endif  #endif
# Line 1466  while (!done) Line 1478  while (!done)
1478        int nameentrysize, namecount;        int nameentrysize, namecount;
1479        const uschar *nametable;        const uschar *nametable;
1480    
       new_info(re, NULL, PCRE_INFO_OPTIONS, &get_options);  
1481        new_info(re, NULL, PCRE_INFO_SIZE, &size);        new_info(re, NULL, PCRE_INFO_SIZE, &size);
1482        new_info(re, NULL, PCRE_INFO_CAPTURECOUNT, &count);        new_info(re, NULL, PCRE_INFO_CAPTURECOUNT, &count);
1483        new_info(re, NULL, PCRE_INFO_BACKREFMAX, &backrefmax);        new_info(re, NULL, PCRE_INFO_BACKREFMAX, &backrefmax);
# Line 1959  while (!done) Line 1970  while (!done)
1970          continue;          continue;
1971    
1972          case 'N':          case 'N':
1973          options |= PCRE_NOTEMPTY;          if ((options & PCRE_NOTEMPTY) != 0)
1974              options = (options & ~PCRE_NOTEMPTY) | PCRE_NOTEMPTY_ATSTART;
1975            else
1976              options |= PCRE_NOTEMPTY;
1977          continue;          continue;
1978    
1979          case 'O':          case 'O':
# Line 1982  while (!done) Line 1996  while (!done)
1996          continue;          continue;
1997    
1998          case 'P':          case 'P':
1999          options |= PCRE_PARTIAL;          options |= ((options & PCRE_PARTIAL_SOFT) == 0)?
2000              PCRE_PARTIAL_SOFT : PCRE_PARTIAL_HARD;
2001          continue;          continue;
2002    
2003          case 'Q':          case 'Q':
# Line 2353  while (!done) Line 2368  while (!done)
2368        else if (count == PCRE_ERROR_PARTIAL)        else if (count == PCRE_ERROR_PARTIAL)
2369          {          {
2370          fprintf(outfile, "Partial match");          fprintf(outfile, "Partial match");
2371  #if !defined NODFA          if (use_size_offsets > 1)
2372          if ((all_use_dfa || use_dfa) && use_size_offsets > 2)            {
2373            fprintf(outfile, ": %.*s", use_offsets[1] - use_offsets[0],            fprintf(outfile, ": ");
2374              bptr + use_offsets[0]);            pchars(bptr + use_offsets[0], use_offsets[1] - use_offsets[0],
2375  #endif              outfile);
2376              }
2377          fprintf(outfile, "\n");          fprintf(outfile, "\n");
2378          break;  /* Out of the /g loop */          break;  /* Out of the /g loop */
2379          }          }
# Line 2430  while (!done) Line 2446  while (!done)
2446        if (!do_g && !do_G) break;        if (!do_g && !do_G) break;
2447    
2448        /* 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
2449        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
2450        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
2451        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
2452        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
2453        character. */        character. */
2454    
# Line 2441  while (!done) Line 2457  while (!done)
2457        if (use_offsets[0] == use_offsets[1])        if (use_offsets[0] == use_offsets[1])
2458          {          {
2459          if (use_offsets[0] == len) break;          if (use_offsets[0] == len) break;
2460          g_notempty = PCRE_NOTEMPTY | PCRE_ANCHORED;          g_notempty = PCRE_NOTEMPTY_ATSTART | PCRE_ANCHORED;
2461          }          }
2462    
2463        /* For /g, update the start offset, leaving the rest alone */        /* For /g, update the start offset, leaving the rest alone */

Legend:
Removed from v.411  
changed lines
  Added in v.442

  ViewVC Help
Powered by ViewVC 1.1.5