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

Diff for /mandoc/Attic/apropos_db.c between version 1.12 and 1.13

version 1.12, 2011/11/26 22:38:11 version 1.13, 2011/11/27 18:54:01
Line 579  recfree(struct rec *rec)
Line 579  recfree(struct rec *rec)
         free(rec->matches);          free(rec->matches);
 }  }
   
   /*
    * Compile a list of straight-up terms.
    * The arguments are re-written into ~[[:<:]]term[[:>:]], or "term"
    * surrounded by word boundaries, then pumped through exprterm().
    * Terms are case-insensitive.
    * This emulates whatis(1) behaviour.
    */
 struct expr *  struct expr *
   termcomp(int argc, char *argv[], size_t *tt)
   {
           char            *buf;
           int              pos;
           struct expr     *e, *next;
           size_t           sz;
   
           buf = NULL;
           e = NULL;
           *tt = 0;
   
           for (pos = 0; pos < argc; pos++) {
                   sz = strlen(argv[pos]) + 16;
                   buf = mandoc_realloc(buf, sz);
                   strlcpy(buf, "~[[:<:]]", sz);
                   strlcat(buf, argv[pos], sz);
                   strlcat(buf, "[[:>:]]", sz);
                   if (NULL == (next = exprterm(buf, 0))) {
                           free(buf);
                           exprfree(e);
                           return(NULL);
                   }
                   if (NULL != e)
                           e->next = next;
                   e = next;
                   (*tt)++;
           }
   
           free(buf);
           return(e);
   }
   
   /*
    * Compile a sequence of logical expressions.
    * See apropos.1 for a grammar of this sequence.
    */
   struct expr *
 exprcomp(int argc, char *argv[], size_t *tt)  exprcomp(int argc, char *argv[], size_t *tt)
 {  {
         int              pos, lvl;          int              pos, lvl;
Line 729  exprterm(char *buf, int cs)
Line 773  exprterm(char *buf, int cs)
                 e.mask = TYPE_Nm | TYPE_Nd;                  e.mask = TYPE_Nm | TYPE_Nd;
   
         if (e.regex) {          if (e.regex) {
                 i = REG_EXTENDED | REG_NOSUB | cs ? 0 : REG_ICASE;                  i = REG_EXTENDED | REG_NOSUB | (cs ? 0 : REG_ICASE);
                 if (regcomp(&e.re, e.v, i))                  if (regcomp(&e.re, e.v, i))
                         return(NULL);                          return(NULL);
         }          }

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

CVSweb