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

Diff for /mandoc/mandocdb.c between version 1.157 and 1.161

version 1.157, 2014/08/11 01:39:00 version 1.161, 2014/09/03 18:09:14
Line 1 
Line 1 
 /*      $Id$ */  /*      $OpenBSD$ */
 /*  /*
  * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
Line 25 
Line 25 
 #include <ctype.h>  #include <ctype.h>
 #include <errno.h>  #include <errno.h>
 #include <fcntl.h>  #include <fcntl.h>
 #ifdef HAVE_FTS  #if HAVE_FTS
 #include <fts.h>  #include <fts.h>
 #else  #else
 #include "compat_fts.h"  #include "compat_fts.h"
Line 39 
Line 39 
 #include <string.h>  #include <string.h>
 #include <unistd.h>  #include <unistd.h>
   
 #ifdef HAVE_OHASH  #if HAVE_OHASH
 #include <ohash.h>  #include <ohash.h>
 #else  #else
 #include "compat_ohash.h"  #include "compat_ohash.h"
Line 83  enum op {
Line 83  enum op {
         OP_TEST /* change no databases, report potential problems */          OP_TEST /* change no databases, report potential problems */
 };  };
   
 enum    form {  
         FORM_NONE,  /* format is unknown */  
         FORM_SRC,   /* format is -man or -mdoc */  
         FORM_CAT    /* format is cat */  
 };  
   
 struct  str {  struct  str {
         char            *rendered; /* key in UTF-8 or ASCII form */          char            *rendered; /* key in UTF-8 or ASCII form */
         const struct mpage *mpage; /* if set, the owning parse */          const struct mpage *mpage; /* if set, the owning parse */
Line 104  struct inodev {
Line 98  struct inodev {
 struct  mpage {  struct  mpage {
         struct inodev    inodev;  /* used for hashing routine */          struct inodev    inodev;  /* used for hashing routine */
         int64_t          pageid;  /* pageid in mpages SQL table */          int64_t          pageid;  /* pageid in mpages SQL table */
         enum form        form;    /* format from file content */  
         char            *sec;     /* section from file content */          char            *sec;     /* section from file content */
         char            *arch;    /* architecture from file content */          char            *arch;    /* architecture from file content */
         char            *title;   /* title from file content */          char            *title;   /* title from file content */
         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 */
 };  };
   
 struct  mlink {  struct  mlink {
         char             file[PATH_MAX]; /* filename rel. to manpath */          char             file[PATH_MAX]; /* filename rel. to manpath */
         enum form        dform;   /* format from directory */  
         enum form        fform;   /* format from file name suffix */  
         char            *dsec;    /* section from directory */          char            *dsec;    /* section from directory */
         char            *arch;    /* architecture from directory */          char            *arch;    /* architecture from directory */
         char            *name;    /* name from file name (not empty) */          char            *name;    /* name from file name (not empty) */
         char            *fsec;    /* section from file name suffix */          char            *fsec;    /* section from file name suffix */
         struct mlink    *next;    /* singly linked list */          struct mlink    *next;    /* singly linked list */
         struct mpage    *mpage;   /* parent */          struct mpage    *mpage;   /* parent */
           int              dform;   /* format from directory */
           int              fform;   /* format from file name suffix */
         int              gzip;    /* filename has a .gz suffix */          int              gzip;    /* filename has a .gz suffix */
 };  };
   
Line 838  filescan(const char *file)
Line 832  filescan(const char *file)
         }          }
   
         mlink = mandoc_calloc(1, sizeof(struct mlink));          mlink = mandoc_calloc(1, sizeof(struct mlink));
           mlink->dform = FORM_NONE;
         if (strlcpy(mlink->file, start, sizeof(mlink->file)) >=          if (strlcpy(mlink->file, start, sizeof(mlink->file)) >=
             sizeof(mlink->file)) {              sizeof(mlink->file)) {
                 say(start, "Filename too long");                  say(start, "Filename too long");
Line 1226  mpages_merge(struct mchars *mc, struct mparse *mp)
Line 1221  mpages_merge(struct mchars *mc, struct mparse *mp)
                         mpage->title =                          mpage->title =
                             mandoc_strdup(mpage->mlinks->name);                              mandoc_strdup(mpage->mlinks->name);
                 }                  }
                   if (mpage->mlinks->gzip)
                           mpage->form |= FORM_GZ;
                 putkey(mpage, mpage->sec, TYPE_sec);                  putkey(mpage, mpage->sec, TYPE_sec);
                 putkey(mpage, '\0' == *mpage->arch ?                  putkey(mpage, '\0' == *mpage->arch ?
                     any : mpage->arch, TYPE_arch);                      any : mpage->arch, TYPE_arch);
Line 1332  parse_cat(struct mpage *mpage, int fd)
Line 1329  parse_cat(struct mpage *mpage, int fd)
             fopen(mpage->mlinks->file, "r") :              fopen(mpage->mlinks->file, "r") :
             fdopen(fd, "r");              fdopen(fd, "r");
         if (NULL == stream) {          if (NULL == stream) {
                   if (-1 != fd)
                           close(fd);
                 if (warnings)                  if (warnings)
                         say(mpage->mlinks->file, "&fopen");                          say(mpage->mlinks->file, "&fopen");
                 return;                  return;
Line 1982  dbadd_mlink(const struct mlink *mlink)
Line 1981  dbadd_mlink(const struct mlink *mlink)
         SQL_BIND_INT64(stmts[STMT_INSERT_LINK], i, mlink->mpage->pageid);          SQL_BIND_INT64(stmts[STMT_INSERT_LINK], i, mlink->mpage->pageid);
         SQL_STEP(stmts[STMT_INSERT_LINK]);          SQL_STEP(stmts[STMT_INSERT_LINK]);
         sqlite3_reset(stmts[STMT_INSERT_LINK]);          sqlite3_reset(stmts[STMT_INSERT_LINK]);
   
           i = 1;
           SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, NAME_FILE);
           SQL_BIND_TEXT(stmts[STMT_INSERT_NAME], i, mlink->name);
           SQL_BIND_INT64(stmts[STMT_INSERT_NAME], i, mlink->mpage->pageid);
           SQL_STEP(stmts[STMT_INSERT_NAME]);
           sqlite3_reset(stmts[STMT_INSERT_NAME]);
 }  }
   
 /*  /*
Line 2048  dbadd(struct mpage *mpage, struct mchars *mc)
Line 2054  dbadd(struct mpage *mpage, struct mchars *mc)
   
         i = 1;          i = 1;
         SQL_BIND_TEXT(stmts[STMT_INSERT_PAGE], i, key->rendered);          SQL_BIND_TEXT(stmts[STMT_INSERT_PAGE], i, key->rendered);
         SQL_BIND_INT(stmts[STMT_INSERT_PAGE], i, FORM_SRC == mpage->form);          SQL_BIND_INT(stmts[STMT_INSERT_PAGE], i, mpage->form);
         SQL_STEP(stmts[STMT_INSERT_PAGE]);          SQL_STEP(stmts[STMT_INSERT_PAGE]);
         mpage->pageid = sqlite3_last_insert_rowid(db);          mpage->pageid = sqlite3_last_insert_rowid(db);
         sqlite3_reset(stmts[STMT_INSERT_PAGE]);          sqlite3_reset(stmts[STMT_INSERT_PAGE]);

Legend:
Removed from v.1.157  
changed lines
  Added in v.1.161

CVSweb