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

Diff for /mandoc/mandocdb.c between version 1.255 and 1.258

version 1.255, 2017/08/26 15:55:46 version 1.258, 2018/02/23 18:25:57
Line 139  static void  parse_mdoc(struct mpage *, const struct r
Line 139  static void  parse_mdoc(struct mpage *, const struct r
                         const struct roff_node *);                          const struct roff_node *);
 static  int      parse_mdoc_head(struct mpage *, const struct roff_meta *,  static  int      parse_mdoc_head(struct mpage *, const struct roff_meta *,
                         const struct roff_node *);                          const struct roff_node *);
   static  int      parse_mdoc_Fa(struct mpage *, const struct roff_meta *,
                           const struct roff_node *);
 static  int      parse_mdoc_Fd(struct mpage *, const struct roff_meta *,  static  int      parse_mdoc_Fd(struct mpage *, const struct roff_meta *,
                         const struct roff_node *);                          const struct roff_node *);
 static  void     parse_mdoc_fname(struct mpage *, const struct roff_node *);  static  void     parse_mdoc_fname(struct mpage *, const struct roff_node *);
Line 207  static const struct mdoc_handler __mdocs[MDOC_MAX - MD
Line 209  static const struct mdoc_handler __mdocs[MDOC_MAX - MD
         { NULL, TYPE_Er, 0 },  /* Er */          { NULL, TYPE_Er, 0 },  /* Er */
         { NULL, TYPE_Ev, 0 },  /* Ev */          { NULL, TYPE_Ev, 0 },  /* Ev */
         { NULL, 0, 0 },  /* Ex */          { NULL, 0, 0 },  /* Ex */
         { NULL, TYPE_Fa, 0 },  /* Fa */          { parse_mdoc_Fa, 0, 0 },  /* Fa */
         { parse_mdoc_Fd, 0, 0 },  /* Fd */          { parse_mdoc_Fd, 0, 0 },  /* Fd */
         { NULL, TYPE_Fl, 0 },  /* Fl */          { NULL, TYPE_Fl, 0 },  /* Fl */
         { parse_mdoc_Fn, 0, 0 },  /* Fn */          { parse_mdoc_Fn, 0, 0 },  /* Fn */
         { NULL, TYPE_Ft, 0 },  /* Ft */          { NULL, TYPE_Ft | TYPE_Vt, 0 },  /* Ft */
         { NULL, TYPE_Ic, 0 },  /* Ic */          { NULL, TYPE_Ic, 0 },  /* Ic */
         { NULL, TYPE_In, 0 },  /* In */          { NULL, TYPE_In, 0 },  /* In */
         { NULL, TYPE_Li, 0 },  /* Li */          { NULL, TYPE_Li, 0 },  /* Li */
Line 1373  parse_cat(struct mpage *mpage, int fd)
Line 1375  parse_cat(struct mpage *mpage, int fd)
                 plen -= 2;                  plen -= 2;
         }          }
   
         mpage->desc = mandoc_strdup(p);          /*
            * Cut off excessive one-line descriptions.
            * Bad pages are not worth better heuristics.
            */
   
           mpage->desc = mandoc_strndup(p, 150);
         fclose(stream);          fclose(stream);
         free(title);          free(title);
 }  }
Line 1517  parse_man(struct mpage *mpage, const struct roff_meta 
Line 1524  parse_man(struct mpage *mpage, const struct roff_meta 
                         while (' ' == *start)                          while (' ' == *start)
                                 start++;                                  start++;
   
                         mpage->desc = mandoc_strdup(start);                          /*
                            * Cut off excessive one-line descriptions.
                            * Bad pages are not worth better heuristics.
                            */
   
                           mpage->desc = mandoc_strndup(start, 150);
                         free(title);                          free(title);
                         return;                          return;
                 }                  }
Line 1563  parse_mdoc(struct mpage *mpage, const struct roff_meta
Line 1575  parse_mdoc(struct mpage *mpage, const struct roff_meta
 }  }
   
 static int  static int
   parse_mdoc_Fa(struct mpage *mpage, const struct roff_meta *meta,
           const struct roff_node *n)
   {
           uint64_t mask;
   
           mask = TYPE_Fa;
           if (n->sec == SEC_SYNOPSIS)
                   mask |= TYPE_Vt;
   
           putmdockey(mpage, n->child, mask, 0);
           return 0;
   }
   
   static int
 parse_mdoc_Fd(struct mpage *mpage, const struct roff_meta *meta,  parse_mdoc_Fd(struct mpage *mpage, const struct roff_meta *meta,
         const struct roff_node *n)          const struct roff_node *n)
 {  {
Line 1631  static int
Line 1657  static int
 parse_mdoc_Fn(struct mpage *mpage, const struct roff_meta *meta,  parse_mdoc_Fn(struct mpage *mpage, const struct roff_meta *meta,
         const struct roff_node *n)          const struct roff_node *n)
 {  {
           uint64_t mask;
   
         if (n->child == NULL)          if (n->child == NULL)
                 return 0;                  return 0;
   
         parse_mdoc_fname(mpage, n->child);          parse_mdoc_fname(mpage, n->child);
   
         for (n = n->child->next; n != NULL; n = n->next)          n = n->child->next;
                 if (n->type == ROFFT_TEXT)          if (n != NULL && n->type == ROFFT_TEXT) {
                         putkey(mpage, n->string, TYPE_Fa);                  mask = TYPE_Fa;
                   if (n->sec == SEC_SYNOPSIS)
                           mask |= TYPE_Vt;
                   putmdockey(mpage, n, mask, 0);
           }
   
         return 0;          return 0;
 }  }
Line 2152  dbwrite(struct dba *dba)
Line 2183  dbwrite(struct dba *dba)
                 say("", "&%s", tfn);                  say("", "&%s", tfn);
                 return;                  return;
         }          }
         cp1 = cp2 = NULL;          cp1 = cp2 = MAP_FAILED;
         fd1 = fd2 = -1;          fd1 = fd2 = -1;
         (void)strlcat(tfn, "/" MANDOC_DB, sizeof(tfn));          (void)strlcat(tfn, "/" MANDOC_DB, sizeof(tfn));
         if (dba_write(tfn, dba) == -1) {          if (dba_write(tfn, dba) == -1) {
Line 2178  dbwrite(struct dba *dba)
Line 2209  dbwrite(struct dba *dba)
         if (sb1.st_size != sb2.st_size)          if (sb1.st_size != sb2.st_size)
                 goto err;                  goto err;
         if ((cp1 = mmap(NULL, sb1.st_size, PROT_READ, MAP_PRIVATE,          if ((cp1 = mmap(NULL, sb1.st_size, PROT_READ, MAP_PRIVATE,
             fd1, 0)) == NULL) {              fd1, 0)) == MAP_FAILED) {
                 say(MANDOC_DB, "&mmap");                  say(MANDOC_DB, "&mmap");
                 goto err;                  goto err;
         }          }
         if ((cp2 = mmap(NULL, sb2.st_size, PROT_READ, MAP_PRIVATE,          if ((cp2 = mmap(NULL, sb2.st_size, PROT_READ, MAP_PRIVATE,
             fd2, 0)) == NULL) {              fd2, 0)) == MAP_FAILED) {
                 say(tfn, "&mmap");                  say(tfn, "&mmap");
                 goto err;                  goto err;
         }          }
Line 2197  err:
Line 2228  err:
         say(MANDOC_DB, "Data changed, but cannot replace database");          say(MANDOC_DB, "Data changed, but cannot replace database");
   
 out:  out:
         if (cp1 != NULL)          if (cp1 != MAP_FAILED)
                 munmap(cp1, sb1.st_size);                  munmap(cp1, sb1.st_size);
         if (cp2 != NULL)          if (cp2 != MAP_FAILED)
                 munmap(cp2, sb2.st_size);                  munmap(cp2, sb2.st_size);
         if (fd1 != -1)          if (fd1 != -1)
                 close(fd1);                  close(fd1);

Legend:
Removed from v.1.255  
changed lines
  Added in v.1.258

CVSweb