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

Diff for /mandoc/mandocdb.c between version 1.212 and 1.220

version 1.212, 2016/01/08 02:13:39 version 1.220, 2016/07/19 13:36:13
Line 33 
Line 33 
 #else  #else
 #include "compat_fts.h"  #include "compat_fts.h"
 #endif  #endif
 #include <getopt.h>  
 #include <limits.h>  #include <limits.h>
   #if HAVE_SANDBOX_INIT
   #include <sandbox.h>
   #endif
 #include <stddef.h>  #include <stddef.h>
 #include <stdio.h>  #include <stdio.h>
 #include <stdint.h>  #include <stdint.h>
Line 137  struct mdoc_handler {
Line 139  struct mdoc_handler {
         uint64_t         mask;  /* set unless handler returns 0 */          uint64_t         mask;  /* set unless handler returns 0 */
 };  };
   
   
   int              mandocdb(int, char *[]);
   
 static  void     dbclose(int);  static  void     dbclose(int);
 static  void     dbadd(struct mpage *);  static  void     dbadd(struct mpage *);
 static  void     dbadd_mlink(const struct mlink *mlink);  static  void     dbadd_mlink(const struct mlink *mlink);
Line 180  static void  putkeys(const struct mpage *, char *, siz
Line 185  static void  putkeys(const struct mpage *, char *, siz
 static  void     putmdockey(const struct mpage *,  static  void     putmdockey(const struct mpage *,
                         const struct roff_node *, uint64_t);                          const struct roff_node *, uint64_t);
 static  int      render_string(char **, size_t *);  static  int      render_string(char **, size_t *);
 static  void     say(const char *, const char *, ...);  static  void     say(const char *, const char *, ...)
                           __attribute__((__format__ (printf, 2, 3)));
 static  int      set_basedir(const char *, int);  static  int      set_basedir(const char *, int);
 static  int      treescan(void);  static  int      treescan(void);
 static  size_t   utf8(unsigned int, char [7]);  static  size_t   utf8(unsigned int, char [7]);
Line 341  mandocdb(int argc, char *argv[])
Line 347  mandocdb(int argc, char *argv[])
   
 #if HAVE_PLEDGE  #if HAVE_PLEDGE
         if (pledge("stdio rpath wpath cpath fattr flock proc exec", NULL) == -1) {          if (pledge("stdio rpath wpath cpath fattr flock proc exec", NULL) == -1) {
                 perror("pledge");                  warn("pledge");
                 return (int)MANDOCLEVEL_SYSERR;                  return (int)MANDOCLEVEL_SYSERR;
         }          }
 #endif  #endif
   
   #if HAVE_SANDBOX_INIT
           if (sandbox_init(kSBXProfileNoInternet, SANDBOX_NAMED, NULL) == -1) {
                   warnx("sandbox_init");
                   return (int)MANDOCLEVEL_SYSERR;
           }
   #endif
   
         memset(&conf, 0, sizeof(conf));          memset(&conf, 0, sizeof(conf));
         memset(stmts, 0, STMT__MAX * sizeof(sqlite3_stmt *));          memset(stmts, 0, STMT__MAX * sizeof(sqlite3_stmt *));
   
Line 422  mandocdb(int argc, char *argv[])
Line 435  mandocdb(int argc, char *argv[])
 #if HAVE_PLEDGE  #if HAVE_PLEDGE
         if (nodb) {          if (nodb) {
                 if (pledge("stdio rpath", NULL) == -1) {                  if (pledge("stdio rpath", NULL) == -1) {
                         perror("pledge");                          warn("pledge");
                         return (int)MANDOCLEVEL_SYSERR;                          return (int)MANDOCLEVEL_SYSERR;
                 }                  }
         }          }
Line 456  mandocdb(int argc, char *argv[])
Line 469  mandocdb(int argc, char *argv[])
 #if HAVE_PLEDGE  #if HAVE_PLEDGE
                         if (!nodb) {                          if (!nodb) {
                                 if (pledge("stdio rpath wpath cpath fattr flock", NULL) == -1) {                                  if (pledge("stdio rpath wpath cpath fattr flock", NULL) == -1) {
                                         perror("pledge");                                          warn("pledge");
                                         exitcode = (int)MANDOCLEVEL_SYSERR;                                          exitcode = (int)MANDOCLEVEL_SYSERR;
                                         goto out;                                          goto out;
                                 }                                  }
Line 574  usage:
Line 587  usage:
  *   or   *   or
  *   [./]cat<section>[/<arch>]/<name>.0   *   [./]cat<section>[/<arch>]/<name>.0
  *   *
  * TODO: accomodate for multi-language directories.   * TODO: accommodate for multi-language directories.
  */   */
 static int  static int
 treescan(void)  treescan(void)
Line 1134  mpages_merge(struct mparse *mp)
Line 1147  mpages_merge(struct mparse *mp)
                 man = NULL;                  man = NULL;
                 sodest = NULL;                  sodest = NULL;
   
                 mparse_open(mp, &fd, mlink->file);                  if ((fd = mparse_open(mp, mlink->file)) == -1) {
                 if (fd == -1) {  
                         say(mlink->file, "&open");                          say(mlink->file, "&open");
                         goto nextpage;                          goto nextpage;
                 }                  }
Line 1447  parse_man(struct mpage *mpage, const struct roff_meta 
Line 1459  parse_man(struct mpage *mpage, const struct roff_meta 
         char             byte;          char             byte;
         size_t           sz;          size_t           sz;
   
         if (NULL == n)          if (n == NULL)
                 return;                  return;
   
         /*          /*
Line 1459  parse_man(struct mpage *mpage, const struct roff_meta 
Line 1471  parse_man(struct mpage *mpage, const struct roff_meta 
   
         if (n->type == ROFFT_BODY && n->tok == MAN_SH) {          if (n->type == ROFFT_BODY && n->tok == MAN_SH) {
                 body = n;                  body = n;
                 assert(body->parent);                  if ((head = body->parent->head) != NULL &&
                 if (NULL != (head = body->parent->head) &&                      (head = head->child) != NULL &&
                     1 == head->nchild &&                      head->next == NULL &&
                     NULL != (head = (head->child)) &&  
                     head->type == ROFFT_TEXT &&                      head->type == ROFFT_TEXT &&
                     0 == strcmp(head->string, "NAME") &&                      strcmp(head->string, "NAME") == 0 &&
                     NULL != body->child) {                      body->child != NULL) {
   
                         /*                          /*
                          * Suck the entire NAME section into memory.                           * Suck the entire NAME section into memory.
Line 1698  parse_mdoc_Va(struct mpage *mpage, const struct roff_m
Line 1709  parse_mdoc_Va(struct mpage *mpage, const struct roff_m
         if (n->type != ROFFT_ELEM && n->type != ROFFT_BODY)          if (n->type != ROFFT_ELEM && n->type != ROFFT_BODY)
                 return 0;                  return 0;
   
         if (n->nchild == 1 && n->child->type == ROFFT_TEXT)          if (n->child != NULL &&
               n->child->next == NULL &&
               n->child->type == ROFFT_TEXT)
                 return 1;                  return 1;
   
         cp = NULL;          cp = NULL;
Line 1806  putkeys(const struct mpage *mpage, char *cp, size_t sz
Line 1819  putkeys(const struct mpage *mpage, char *cp, size_t sz
                         name_mask &= ~NAME_FIRST;                          name_mask &= ~NAME_FIRST;
                 if (debug > 1)                  if (debug > 1)
                         say(mpage->mlinks->file,                          say(mpage->mlinks->file,
                             "Adding name %*s, bits=%d", sz, cp, v);                              "Adding name %*s, bits=0x%llu", (int)sz, cp, v);
         } else {          } else {
                 htab = &strings;                  htab = &strings;
                 if (debug > 1)                  if (debug > 1)
Line 1814  putkeys(const struct mpage *mpage, char *cp, size_t sz
Line 1827  putkeys(const struct mpage *mpage, char *cp, size_t sz
                         if ((uint64_t)1 << i & v)                          if ((uint64_t)1 << i & v)
                             say(mpage->mlinks->file,                              say(mpage->mlinks->file,
                                 "Adding key %s=%*s",                                  "Adding key %s=%*s",
                                 mansearch_keynames[i], sz, cp);                                  mansearch_keynames[i], (int)sz, cp);
         }          }
   
         end = cp + sz;          end = cp + sz;

Legend:
Removed from v.1.212  
changed lines
  Added in v.1.220

CVSweb