[BACK]Return to db.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/Attic/db.c between version 1.2 and 1.3

version 1.2, 2011/11/09 22:05:56 version 1.3, 2011/11/09 23:31:36
Line 462  exprcomp(int cs, char *argv[], int argc)
Line 462  exprcomp(int cs, char *argv[], int argc)
 {  {
         struct expr     *p;          struct expr     *p;
         struct expr      e;          struct expr      e;
         int              i, ch;          int              i, pos, ch;
   
         if (3 != argc)          pos = 0;
   
           if (pos > argc)
                 return(NULL);                  return(NULL);
   
         if (0 == strcmp("-eq", argv[0]))          for (i = 0; 0 != types[i].mask; i++)
                   if (0 == strcmp(types[i].name, argv[pos]))
                           break;
   
           if (0 == (e.mask = types[i].mask))
                   return(NULL);
   
           if (++pos > argc--)
                   return(NULL);
   
           if ('-' != *argv[pos])
                 e.match = cs ? MATCH_STRCASE : MATCH_STR;                  e.match = cs ? MATCH_STRCASE : MATCH_STR;
         else if (0 == strcmp("-ieq", argv[0]))          else if (0 == strcmp("-eq", argv[pos]))
                   e.match = cs ? MATCH_STRCASE : MATCH_STR;
           else if (0 == strcmp("-ieq", argv[pos]))
                 e.match = MATCH_STRCASE;                  e.match = MATCH_STRCASE;
         else if (0 == strcmp("-re", argv[0]))          else if (0 == strcmp("-re", argv[pos]))
                 e.match = cs ? MATCH_REGEXCASE : MATCH_REGEX;                  e.match = cs ? MATCH_REGEXCASE : MATCH_REGEX;
         else if (0 == strcmp("-ire", argv[0]))          else if (0 == strcmp("-ire", argv[pos]))
                 e.match = MATCH_REGEXCASE;                  e.match = MATCH_REGEXCASE;
         else          else
                 return(NULL);                  return(NULL);
   
         for (i = 0; 0 != types[i].mask; i++)          if ('-' == *argv[pos])
                 if (0 == strcmp(types[i].name, argv[1]))                  pos++;
                         break;  
   
         if (0 == (e.mask = types[i].mask))          if (pos > argc--)
                 return(NULL);                  return(NULL);
   
         e.v = mandoc_strdup(argv[2]);          e.v = mandoc_strdup(argv[pos]);
   
         if (MATCH_REGEX == e.match || MATCH_REGEXCASE == e.match) {          if (MATCH_REGEX == e.match || MATCH_REGEXCASE == e.match) {
                 ch = REG_EXTENDED | REG_NOSUB;                  ch = REG_EXTENDED | REG_NOSUB;

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

CVSweb