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

Diff for /mandoc/mandocdb.c between version 1.172 and 1.174

version 1.172, 2014/12/04 17:36:00 version 1.174, 2014/12/04 20:13:25
Line 104  struct mpage {
Line 104  struct mpage {
         char            *desc;    /* description from file content */          char            *desc;    /* description from file content */
         struct mlink    *mlinks;  /* singly linked list */          struct mlink    *mlinks;  /* singly linked list */
         int              form;    /* format from file content */          int              form;    /* format from file content */
           int              name_head_done;
 };  };
   
 struct  mlink {  struct  mlink {
Line 154  static void  mpages_free(void);
Line 155  static void  mpages_free(void);
 static  void     mpages_merge(struct mchars *, struct mparse *);  static  void     mpages_merge(struct mchars *, struct mparse *);
 static  void     names_check(void);  static  void     names_check(void);
 static  void     parse_cat(struct mpage *, int);  static  void     parse_cat(struct mpage *, int);
 static  void     parse_man(struct mpage *, const struct man_node *);  static  void     parse_man(struct mpage *, const struct man_meta *,
                           const struct man_node *);
 static  void     parse_mdoc(struct mpage *, const struct mdoc_meta *,  static  void     parse_mdoc(struct mpage *, const struct mdoc_meta *,
                         const struct mdoc_node *);                          const struct mdoc_node *);
 static  int      parse_mdoc_body(struct mpage *, const struct mdoc_meta *,  static  int      parse_mdoc_body(struct mpage *, const struct mdoc_meta *,
Line 165  static int  parse_mdoc_Fd(struct mpage *, const struct
Line 167  static int  parse_mdoc_Fd(struct mpage *, const struct
                         const struct mdoc_node *);                          const struct mdoc_node *);
 static  int      parse_mdoc_Fn(struct mpage *, const struct mdoc_meta *,  static  int      parse_mdoc_Fn(struct mpage *, const struct mdoc_meta *,
                         const struct mdoc_node *);                          const struct mdoc_node *);
   static  int      parse_mdoc_Fo(struct mpage *, const struct mdoc_meta *,
                           const struct mdoc_node *);
 static  int      parse_mdoc_Nd(struct mpage *, const struct mdoc_meta *,  static  int      parse_mdoc_Nd(struct mpage *, const struct mdoc_meta *,
                         const struct mdoc_node *);                          const struct mdoc_node *);
 static  int      parse_mdoc_Nm(struct mpage *, const struct mdoc_meta *,  static  int      parse_mdoc_Nm(struct mpage *, const struct mdoc_meta *,
Line 300  static const struct mdoc_handler mdocs[MDOC_MAX] = {
Line 304  static const struct mdoc_handler mdocs[MDOC_MAX] = {
         { NULL, 0 },  /* Ux */          { NULL, 0 },  /* Ux */
         { NULL, 0 },  /* Xc */          { NULL, 0 },  /* Xc */
         { NULL, 0 },  /* Xo */          { NULL, 0 },  /* Xo */
         { parse_mdoc_head, 0 },  /* Fo */          { parse_mdoc_Fo, 0 },  /* Fo */
         { NULL, 0 },  /* Fc */          { NULL, 0 },  /* Fc */
         { NULL, 0 },  /* Oo */          { NULL, 0 },  /* Oo */
         { NULL, 0 },  /* Oc */          { NULL, 0 },  /* Oc */
Line 1223  mpages_merge(struct mchars *mc, struct mparse *mp)
Line 1227  mpages_merge(struct mchars *mc, struct mparse *mp)
                         putkey(mpage, mlink->name, NAME_FILE);                          putkey(mpage, mlink->name, NAME_FILE);
                 }                  }
   
                 assert(NULL == mpage->desc);                  assert(mpage->desc == NULL);
                 if (NULL != mdoc) {                  if (mdoc != NULL)
                         if (NULL != (cp = mdoc_meta(mdoc)->name))  
                                 putkey(mpage, cp, NAME_HEAD);  
                         parse_mdoc(mpage, mdoc_meta(mdoc), mdoc_node(mdoc));                          parse_mdoc(mpage, mdoc_meta(mdoc), mdoc_node(mdoc));
                 } else if (NULL != man)                  else if (man != NULL)
                         parse_man(mpage, man_node(man));                          parse_man(mpage, man_meta(man), man_node(man));
                 else                  else
                         parse_cat(mpage, fd);                          parse_cat(mpage, fd);
                 if (NULL == mpage->desc)                  if (mpage->desc == NULL)
                         mpage->desc = mandoc_strdup(mpage->mlinks->name);                          mpage->desc = mandoc_strdup(mpage->mlinks->name);
   
                 if (warnings && !use_all)                  if (warnings && !use_all)
Line 1437  putmdockey(const struct mpage *mpage,
Line 1439  putmdockey(const struct mpage *mpage,
 }  }
   
 static void  static void
 parse_man(struct mpage *mpage, const struct man_node *n)  parse_man(struct mpage *mpage, const struct man_meta *meta,
           const struct man_node *n)
 {  {
         const struct man_node *head, *body;          const struct man_node *head, *body;
         char            *start, *title;          char            *start, *title;
Line 1503  parse_man(struct mpage *mpage, const struct man_node *
Line 1506  parse_man(struct mpage *mpage, const struct man_node *
                                         break;                                          break;
   
                                 putkey(mpage, start, NAME_TITLE);                                  putkey(mpage, start, NAME_TITLE);
                                   if ( ! (mpage->name_head_done ||
                                       strcasecmp(start, meta->title))) {
                                           putkey(mpage, start, NAME_HEAD);
                                           mpage->name_head_done = 1;
                                   }
   
                                 if (' ' == byte) {                                  if (' ' == byte) {
                                         start += sz + 1;                                          start += sz + 1;
Line 1517  parse_man(struct mpage *mpage, const struct man_node *
Line 1525  parse_man(struct mpage *mpage, const struct man_node *
   
                         if (start == title) {                          if (start == title) {
                                 putkey(mpage, start, NAME_TITLE);                                  putkey(mpage, start, NAME_TITLE);
                                   if ( ! (mpage->name_head_done ||
                                       strcasecmp(start, meta->title))) {
                                           putkey(mpage, start, NAME_HEAD);
                                           mpage->name_head_done = 1;
                                   }
                                 free(title);                                  free(title);
                                 return;                                  return;
                         }                          }
Line 1547  parse_man(struct mpage *mpage, const struct man_node *
Line 1560  parse_man(struct mpage *mpage, const struct man_node *
         for (n = n->child; n; n = n->next) {          for (n = n->child; n; n = n->next) {
                 if (NULL != mpage->desc)                  if (NULL != mpage->desc)
                         break;                          break;
                 parse_man(mpage, n);                  parse_man(mpage, meta, n);
         }          }
 }  }
   
Line 1651  parse_mdoc_Fn(struct mpage *mpage, const struct mdoc_m
Line 1664  parse_mdoc_Fn(struct mpage *mpage, const struct mdoc_m
                 cp++;                  cp++;
   
         putkey(mpage, cp, TYPE_Fn);          putkey(mpage, cp, TYPE_Fn);
           if (n->sec == SEC_SYNOPSIS)
                   putkey(mpage, cp, NAME_SYN);
   
         if (n->string < cp)          if (n->string < cp)
                 putkeys(mpage, n->string, cp - n->string, TYPE_Ft);                  putkeys(mpage, n->string, cp - n->string, TYPE_Ft);
Line 1663  parse_mdoc_Fn(struct mpage *mpage, const struct mdoc_m
Line 1678  parse_mdoc_Fn(struct mpage *mpage, const struct mdoc_m
 }  }
   
 static int  static int
   parse_mdoc_Fo(struct mpage *mpage, const struct mdoc_meta *meta,
           const struct mdoc_node *n)
   {
   
           putmdockey(mpage, n->child, TYPE_Fn);
           if (n->sec == SEC_SYNOPSIS)
                   putmdockey(mpage, n->child, NAME_SYN);
           return(0);
   }
   
   static int
 parse_mdoc_Xr(struct mpage *mpage, const struct mdoc_meta *meta,  parse_mdoc_Xr(struct mpage *mpage, const struct mdoc_meta *meta,
         const struct mdoc_node *n)          const struct mdoc_node *n)
 {  {
Line 1704  parse_mdoc_Nm(struct mpage *mpage, const struct mdoc_m
Line 1730  parse_mdoc_Nm(struct mpage *mpage, const struct mdoc_m
                         putkey(mpage, meta->name, NAME_SYN);                          putkey(mpage, meta->name, NAME_SYN);
                 else                  else
                         putmdockey(mpage, n->child, NAME_SYN);                          putmdockey(mpage, n->child, NAME_SYN);
           }
           if ( ! (mpage->name_head_done ||
               n->child == NULL || n->child->string == NULL ||
               strcasecmp(n->child->string, meta->title))) {
                   putkey(mpage, n->child->string, NAME_HEAD);
                   mpage->name_head_done = 1;
         }          }
         return(0);          return(0);
 }  }

Legend:
Removed from v.1.172  
changed lines
  Added in v.1.174

CVSweb