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

Diff for /mandoc/mandocdb.c between version 1.9 and 1.10

version 1.9, 2011/11/20 12:39:08 version 1.10, 2011/11/23 09:52:20
Line 39 
Line 39 
 #include "mdoc.h"  #include "mdoc.h"
 #include "mandoc.h"  #include "mandoc.h"
 #include "mandocdb.h"  #include "mandocdb.h"
   #include "manpath.h"
   
 #define MANDOC_BUFSZ      BUFSIZ  #define MANDOC_BUFSZ      BUFSIZ
 #define MANDOC_SLOP       1024  #define MANDOC_SLOP       1024
Line 247  int
Line 248  int
 main(int argc, char *argv[])  main(int argc, char *argv[])
 {  {
         struct mparse   *mp; /* parse sequence */          struct mparse   *mp; /* parse sequence */
           struct manpaths  dirs;
         enum op          op; /* current operation */          enum op          op; /* current operation */
         const char      *dir;          const char      *dir;
         char             ibuf[MAXPATHLEN], /* index fname */          char             ibuf[MAXPATHLEN], /* index fname */
Line 274  main(int argc, char *argv[])
Line 276  main(int argc, char *argv[])
         else          else
                 ++progname;                  ++progname;
   
           memset(&dirs, 0, sizeof(struct manpaths));
   
         verb = 0;          verb = 0;
         of = NULL;          of = NULL;
         db = idx = NULL;          db = idx = NULL;
Line 370  main(int argc, char *argv[])
Line 374  main(int argc, char *argv[])
                 goto out;                  goto out;
         }          }
   
         for (i = 0; i < argc; i++) {          /*
            * Configure the directories we're going to scan.
            * If we have command-line arguments, use them.
            * If not, we use man(1)'s method (see mandocdb.8).
            */
   
           if (argc > 0) {
                   dirs.paths = mandoc_malloc(argc * sizeof(char *));
                   dirs.sz = argc;
                   for (i = 0; i < argc; i++)
                           dirs.paths[i] = mandoc_strdup(argv[i]);
           } else
                   manpath_parseconf(&dirs);
   
           for (i = 0; i < dirs.sz; i++) {
                 ibuf[0] = fbuf[0] = '\0';                  ibuf[0] = fbuf[0] = '\0';
   
                 strlcat(fbuf, argv[i], MAXPATHLEN);                  strlcat(fbuf, dirs.paths[i], MAXPATHLEN);
                 strlcat(fbuf, "/", MAXPATHLEN);                  strlcat(fbuf, "/", MAXPATHLEN);
                 sz1 = strlcat(fbuf, MANDOC_DB, MAXPATHLEN);                  sz1 = strlcat(fbuf, MANDOC_DB, MAXPATHLEN);
   
                 strlcat(ibuf, argv[i], MAXPATHLEN);                  strlcat(ibuf, dirs.paths[i], MAXPATHLEN);
                 strlcat(ibuf, "/", MAXPATHLEN);                  strlcat(ibuf, "/", MAXPATHLEN);
                 sz2 = strlcat(ibuf, MANDOC_IDX, MAXPATHLEN);                  sz2 = strlcat(ibuf, MANDOC_IDX, MAXPATHLEN);
   
                 if (sz1 >= MAXPATHLEN || sz2 >= MAXPATHLEN) {                  if (sz1 >= MAXPATHLEN || sz2 >= MAXPATHLEN) {
                         fprintf(stderr, "%s: Path too long\n", argv[i]);                          fprintf(stderr, "%s: Path too long\n",
                                           dirs.paths[i]);
                         exit((int)MANDOCLEVEL_BADARG);                          exit((int)MANDOCLEVEL_BADARG);
                 }                  }
   
Line 405  main(int argc, char *argv[])
Line 424  main(int argc, char *argv[])
                 ofile_free(of);                  ofile_free(of);
                 of = NULL;                  of = NULL;
   
                 if ( ! ofile_dirbuild(argv[i], verb, &of))                  if ( ! ofile_dirbuild(dirs.paths[i], verb, &of))
                         exit((int)MANDOCLEVEL_SYSERR);                          exit((int)MANDOCLEVEL_SYSERR);
   
                 if (NULL == of)                  if (NULL == of)
Line 427  out:
Line 446  out:
         if (mp)          if (mp)
                 mparse_free(mp);                  mparse_free(mp);
   
           manpath_free(&dirs);
         ofile_free(of);          ofile_free(of);
         free(buf.cp);          free(buf.cp);
         free(dbuf.cp);          free(dbuf.cp);

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

CVSweb