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

Diff for /mandoc/mansearch.c between version 1.49 and 1.50

version 1.49, 2014/11/11 19:04:55 version 1.50, 2014/11/18 01:15:21
Line 79  struct expr {
Line 79  struct expr {
   
 struct  match {  struct  match {
         uint64_t         pageid; /* identifier in database */          uint64_t         pageid; /* identifier in database */
           uint64_t         bits; /* name type mask */
         char            *desc; /* manual page description */          char            *desc; /* manual page description */
         int              form; /* bit field: formatted, zipped? */          int              form; /* bit field: formatted, zipped? */
 };  };
Line 301  mansearch(const struct mansearch *search,
Line 302  mansearch(const struct mansearch *search,
                         mp = mandoc_calloc(1, sizeof(struct match));                          mp = mandoc_calloc(1, sizeof(struct match));
                         mp->pageid = pageid;                          mp->pageid = pageid;
                         mp->form = sqlite3_column_int(s, 1);                          mp->form = sqlite3_column_int(s, 1);
                           mp->bits = sqlite3_column_int64(s, 3);
                         if (TYPE_Nd == outbit)                          if (TYPE_Nd == outbit)
                                 mp->desc = mandoc_strdup((const char *)                                  mp->desc = mandoc_strdup((const char *)
                                     sqlite3_column_text(s, 0));                                      sqlite3_column_text(s, 0));
Line 336  mansearch(const struct mansearch *search,
Line 338  mansearch(const struct mansearch *search,
                         }                          }
                         mpage = *res + cur;                          mpage = *res + cur;
                         mpage->ipath = i;                          mpage->ipath = i;
                           mpage->bits = mp->bits;
                         mpage->sec = 10;                          mpage->sec = 10;
                         mpage->form = mp->form;                          mpage->form = mp->form;
                         buildnames(mpage, db, s, mp->pageid,                          buildnames(mpage, db, s, mp->pageid,
Line 396  manpage_compare(const void *vp1, const void *vp2)
Line 399  manpage_compare(const void *vp1, const void *vp2)
   
         mp1 = vp1;          mp1 = vp1;
         mp2 = vp2;          mp2 = vp2;
         diff = mp1->sec - mp2->sec;          return( (diff = mp2->bits - mp1->bits) ? diff :
         return(diff ? diff : strcasecmp(mp1->names, mp2->names));                  (diff = mp1->sec - mp2->sec) ? diff :
                   strcasecmp(mp1->names, mp2->names));
 }  }
   
 static void  static void
Line 592  sql_statement(const struct expr *e)
Line 596  sql_statement(const struct expr *e)
         size_t           sz;          size_t           sz;
         int              needop;          int              needop;
   
         sql = mandoc_strdup(          sql = mandoc_strdup(e->equal ?
             "SELECT desc, form, pageid FROM mpages WHERE ");              "SELECT desc, form, pageid, bits "
                   "FROM mpages NATURAL JOIN names WHERE " :
               "SELECT desc, form, pageid, 0 FROM mpages WHERE ");
         sz = strlen(sql);          sz = strlen(sql);
   
         for (needop = 0; NULL != e; e = e->next) {          for (needop = 0; NULL != e; e = e->next) {
Line 613  sql_statement(const struct expr *e)
Line 619  sql_statement(const struct expr *e)
                         ? "pageid IN (SELECT pageid FROM names "                          ? "pageid IN (SELECT pageid FROM names "
                           "WHERE name REGEXP ?)"                            "WHERE name REGEXP ?)"
                         : e->equal                          : e->equal
                         ? "pageid IN (SELECT pageid FROM names "                          ? "name = ? "
                           "WHERE name = ?)"  
                         : "pageid IN (SELECT pageid FROM names "                          : "pageid IN (SELECT pageid FROM names "
                           "WHERE name MATCH ?)")                            "WHERE name MATCH ?)")
                     : (NULL == e->substr                      : (NULL == e->substr

Legend:
Removed from v.1.49  
changed lines
  Added in v.1.50

CVSweb