/[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 510 by ph10, Sat Mar 27 17:45:29 2010 UTC revision 537 by ph10, Tue Jun 8 15:28:26 2010 UTC
# Line 221  uschar *here = start; Line 221  uschar *here = start;
221    
222  for (;;)  for (;;)
223    {    {
224    int rlen = buffer_size - (here - buffer);    int rlen = (int)(buffer_size - (here - buffer));
225    
226    if (rlen > 1000)    if (rlen > 1000)
227      {      {
# Line 251  for (;;) Line 251  for (;;)
251      /* Read the next line by normal means, prompting if the file is stdin. */      /* Read the next line by normal means, prompting if the file is stdin. */
252    
253        {        {
254        if (f == stdin) printf(prompt);        if (f == stdin) printf("%s", prompt);
255        if (fgets((char *)here, rlen,  f) == NULL)        if (fgets((char *)here, rlen,  f) == NULL)
256          return (here == start)? NULL : start;          return (here == start)? NULL : start;
257        }        }
# Line 741  return 0; Line 741  return 0;
741  *         Check newline indicator                *  *         Check newline indicator                *
742  *************************************************/  *************************************************/
743    
744  /* This is used both at compile and run-time to check for <xxx> escapes, where  /* This is used both at compile and run-time to check for <xxx> escapes. Print
745  xxx is LF, CR, CRLF, ANYCRLF, or ANY. Print a message and return 0 if there is  a message and return 0 if there is no match.
 no match.  
746    
747  Arguments:  Arguments:
748    p           points after the leading '<'    p           points after the leading '<'
# Line 1040  while (!done) Line 1039  while (!done)
1039  #endif  #endif
1040    
1041    const char *error;    const char *error;
1042    unsigned char *markptr;    unsigned char *markptr;
1043    unsigned char *p, *pp, *ppp;    unsigned char *p, *pp, *ppp;
1044    unsigned char *to_file = NULL;    unsigned char *to_file = NULL;
1045    const unsigned char *tables = NULL;    const unsigned char *tables = NULL;
1046    unsigned long int true_size, true_study_size = 0;    unsigned long int true_size, true_study_size = 0;
1047    size_t size, regex_gotten_store;    size_t size, regex_gotten_store;
1048    int do_mark = 0;    int do_mark = 0;
1049    int do_study = 0;    int do_study = 0;
1050    int do_debug = debug;    int do_debug = debug;
1051    int do_G = 0;    int do_G = 0;
# Line 1164  while (!done) Line 1163  while (!done)
1163      }      }
1164    
1165    pp = p;    pp = p;
1166    poffset = p - buffer;    poffset = (int)(p - buffer);
1167    
1168    for(;;)    for(;;)
1169      {      {
# Line 1228  while (!done) Line 1227  while (!done)
1227        case 'G': do_G = 1; break;        case 'G': do_G = 1; break;
1228        case 'I': do_showinfo = 1; break;        case 'I': do_showinfo = 1; break;
1229        case 'J': options |= PCRE_DUPNAMES; break;        case 'J': options |= PCRE_DUPNAMES; break;
1230        case 'K': do_mark = 1; break;        case 'K': do_mark = 1; break;
1231        case 'M': log_store = 1; break;        case 'M': log_store = 1; break;
1232        case 'N': options |= PCRE_NO_AUTO_CAPTURE; break;        case 'N': options |= PCRE_NO_AUTO_CAPTURE; break;
1233    
# Line 1238  while (!done) Line 1237  while (!done)
1237    
1238        case 'S': do_study = 1; break;        case 'S': do_study = 1; break;
1239        case 'U': options |= PCRE_UNGREEDY; break;        case 'U': options |= PCRE_UNGREEDY; break;
1240          case 'W': options |= PCRE_UCP; break;
1241        case 'X': options |= PCRE_EXTRA; break;        case 'X': options |= PCRE_EXTRA; break;
1242        case 'Z': debug_lengths = 0; break;        case 'Z': debug_lengths = 0; break;
1243        case '8': options |= PCRE_UTF8; use_utf8 = 1; break;        case '8': options |= PCRE_UTF8; use_utf8 = 1; break;
# Line 1268  while (!done) Line 1268  while (!done)
1268    
1269        case '<':        case '<':
1270          {          {
1271          if (strncmp((char *)pp, "JS>", 3) == 0)          if (strncmpic(pp, (uschar *)"JS>", 3) == 0)
1272            {            {
1273            options |= PCRE_JAVASCRIPT_COMPAT;            options |= PCRE_JAVASCRIPT_COMPAT;
1274            pp += 3;            pp += 3;
# Line 1309  while (!done) Line 1309  while (!done)
1309      if ((options & PCRE_DOTALL) != 0) cflags |= REG_DOTALL;      if ((options & PCRE_DOTALL) != 0) cflags |= REG_DOTALL;
1310      if ((options & PCRE_NO_AUTO_CAPTURE) != 0) cflags |= REG_NOSUB;      if ((options & PCRE_NO_AUTO_CAPTURE) != 0) cflags |= REG_NOSUB;
1311      if ((options & PCRE_UTF8) != 0) cflags |= REG_UTF8;      if ((options & PCRE_UTF8) != 0) cflags |= REG_UTF8;
1312        if ((options & PCRE_UCP) != 0) cflags |= REG_UCP;
1313      if ((options & PCRE_UNGREEDY) != 0) cflags |= REG_UNGREEDY;      if ((options & PCRE_UNGREEDY) != 0) cflags |= REG_UNGREEDY;
1314    
1315      rc = regcomp(&preg, (char *)p, cflags);      rc = regcomp(&preg, (char *)p, cflags);
# Line 1422  while (!done) Line 1423  while (!done)
1423        else if (extra != NULL)        else if (extra != NULL)
1424          true_study_size = ((pcre_study_data *)(extra->study_data))->size;          true_study_size = ((pcre_study_data *)(extra->study_data))->size;
1425        }        }
1426    
1427      /* If /K was present, we set up for handling MARK data. */      /* If /K was present, we set up for handling MARK data. */
1428    
1429      if (do_mark)      if (do_mark)
1430        {        {
1431        if (extra == NULL)        if (extra == NULL)
# Line 1432  while (!done) Line 1433  while (!done)
1433          extra = (pcre_extra *)malloc(sizeof(pcre_extra));          extra = (pcre_extra *)malloc(sizeof(pcre_extra));
1434          extra->flags = 0;          extra->flags = 0;
1435          }          }
1436        extra->mark = &markptr;        extra->mark = &markptr;
1437        extra->flags |= PCRE_EXTRA_MARK;        extra->flags |= PCRE_EXTRA_MARK;
1438        }        }
1439    
1440      /* If the 'F' option was present, we flip the bytes of all the integer      /* If the 'F' option was present, we flip the bytes of all the integer
1441      fields in the regex data block and the study block. This is to make it      fields in the regex data block and the study block. This is to make it
# Line 1555  while (!done) Line 1556  while (!done)
1556        if (do_flip) all_options = byteflip(all_options, sizeof(all_options));        if (do_flip) all_options = byteflip(all_options, sizeof(all_options));
1557    
1558        if (get_options == 0) fprintf(outfile, "No options\n");        if (get_options == 0) fprintf(outfile, "No options\n");
1559          else fprintf(outfile, "Options:%s%s%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%s%s%s\n",
1560            ((get_options & PCRE_ANCHORED) != 0)? " anchored" : "",            ((get_options & PCRE_ANCHORED) != 0)? " anchored" : "",
1561            ((get_options & PCRE_CASELESS) != 0)? " caseless" : "",            ((get_options & PCRE_CASELESS) != 0)? " caseless" : "",
1562            ((get_options & PCRE_EXTENDED) != 0)? " extended" : "",            ((get_options & PCRE_EXTENDED) != 0)? " extended" : "",
# Line 1569  while (!done) Line 1570  while (!done)
1570            ((get_options & PCRE_UNGREEDY) != 0)? " ungreedy" : "",            ((get_options & PCRE_UNGREEDY) != 0)? " ungreedy" : "",
1571            ((get_options & PCRE_NO_AUTO_CAPTURE) != 0)? " no_auto_capture" : "",            ((get_options & PCRE_NO_AUTO_CAPTURE) != 0)? " no_auto_capture" : "",
1572            ((get_options & PCRE_UTF8) != 0)? " utf8" : "",            ((get_options & PCRE_UTF8) != 0)? " utf8" : "",
1573              ((get_options & PCRE_UCP) != 0)? " ucp" : "",
1574            ((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "",            ((get_options & PCRE_NO_UTF8_CHECK) != 0)? " no_utf8_check" : "",
1575            ((get_options & PCRE_DUPNAMES) != 0)? " dupnames" : "");            ((get_options & PCRE_DUPNAMES) != 0)? " dupnames" : "");
1576    
# Line 1784  while (!done) Line 1786  while (!done)
1786        {        {
1787        if (extend_inputline(infile, buffer + len, "data> ") == NULL)        if (extend_inputline(infile, buffer + len, "data> ") == NULL)
1788          {          {
1789          if (len > 0) break;          if (len > 0)    /* Reached EOF without hitting a newline */
1790              {
1791              fprintf(outfile, "\n");
1792              break;
1793              }
1794          done = 1;          done = 1;
1795          goto CONTINUE;          goto CONTINUE;
1796          }          }
# Line 2078  while (!done) Line 2084  while (!done)
2084        *q++ = c;        *q++ = c;
2085        }        }
2086      *q = 0;      *q = 0;
2087      len = q - dbuffer;      len = (int)(q - dbuffer);
2088    
2089      /* Move the data to the end of the buffer so that a read over the end of      /* Move the data to the end of the buffer so that a read over the end of
2090      the buffer will be seen by valgrind, even if it doesn't cause a crash. If      the buffer will be seen by valgrind, even if it doesn't cause a crash. If
2091      we are using the POSIX interface, we must include the terminating zero. */      we are using the POSIX interface, we must include the terminating zero. */
# Line 2161  while (!done) Line 2167  while (!done)
2167    
2168      for (;; gmatched++)    /* Loop for /g or /G */      for (;; gmatched++)    /* Loop for /g or /G */
2169        {        {
2170        markptr = NULL;        markptr = NULL;
2171    
2172        if (timeitm > 0)        if (timeitm > 0)
2173          {          {
2174          register int i;          register int i;
# Line 2307  while (!done) Line 2313  while (!done)
2313                }                }
2314              }              }
2315            }            }
2316    
2317          if (markptr != NULL) fprintf(outfile, "MK: %s\n", markptr);          if (markptr != NULL) fprintf(outfile, "MK: %s\n", markptr);
2318    
2319          for (i = 0; i < 32; i++)          for (i = 0; i < 32; i++)
# Line 2461  while (!done) Line 2467  while (!done)
2467            {            {
2468            if (count == PCRE_ERROR_NOMATCH)            if (count == PCRE_ERROR_NOMATCH)
2469              {              {
2470              if (gmatched == 0)              if (gmatched == 0)
2471                {                {
2472                if (markptr == NULL) fprintf(outfile, "No match\n");                if (markptr == NULL) fprintf(outfile, "No match\n");
2473                  else fprintf(outfile, "No match, mark = %s\n", markptr);                  else fprintf(outfile, "No match, mark = %s\n", markptr);
2474                }                }
2475              }              }
2476            else fprintf(outfile, "Error %d\n", count);            else fprintf(outfile, "Error %d\n", count);
2477            break;  /* Out of the /g loop */            break;  /* Out of the /g loop */

Legend:
Removed from v.510  
changed lines
  Added in v.537

  ViewVC Help
Powered by ViewVC 1.1.5