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

Diff for /mandoc/mandocdb.c between version 1.34 and 1.35

version 1.34, 2011/12/12 02:00:49 version 1.35, 2011/12/16 08:04:34
Line 21 
Line 21 
   
 #include <sys/param.h>  #include <sys/param.h>
 #include <sys/types.h>  #include <sys/types.h>
 #include <sys/stat.h>  
   
 #include <assert.h>  #include <assert.h>
 #include <dirent.h>  #include <dirent.h>
Line 110  static void    index_prune(const struct of *, DB *, 
Line 109  static void    index_prune(const struct of *, DB *, 
                                 recno_t *, recno_t **, size_t *,                                  recno_t *, recno_t **, size_t *,
                                 size_t *);                                  size_t *);
 static  void              ofile_argbuild(int, char *[], struct of **);  static  void              ofile_argbuild(int, char *[], struct of **);
 static  int               ofile_dirbuild(const char *, const char *,  static  void              ofile_dirbuild(const char *, const char *,
                                 const char *, int, struct of **);                                  const char *, int, struct of **);
 static  void              ofile_free(struct of *);  static  void              ofile_free(struct of *);
 static  void              pformatted(DB *, struct buf *, struct buf *,  static  void              pformatted(DB *, struct buf *, struct buf *,
Line 384  main(int argc, char *argv[])
Line 383  main(int argc, char *argv[])
                         exit((int)MANDOCLEVEL_SYSERR);                          exit((int)MANDOCLEVEL_SYSERR);
                 }                  }
   
                 if (verb > 2) {  
                         printf("%s: Opened\n", fbuf);  
                         printf("%s: Opened\n", ibuf);  
                 }  
   
                 ofile_argbuild(argc, argv, &of);                  ofile_argbuild(argc, argv, &of);
   
                 if (NULL == of)                  if (NULL == of)
                         goto out;                          goto out;
   
Line 399  main(int argc, char *argv[])
Line 394  main(int argc, char *argv[])
                                 &maxrec, &recs, &recsz, &reccur);                                  &maxrec, &recs, &recsz, &reccur);
   
                 /*                  /*
                  * Go to the root of the respective manual tree                   * Go to the root of the respective manual tree.
                  * such that .so links work.  In case of failure,                   * This must work or no manuals may be found (they're
                  * just prod on, even though .so links won't work.                   * indexed relative to the root).
                  */                   */
   
                 if (OP_UPDATE == op) {                  if (OP_UPDATE == op) {
                         chdir(dir);                          if (-1 == chdir(dir)) {
                                   perror(dir);
                                   exit((int)MANDOCLEVEL_SYSERR);
                           }
                         index_merge(of, mp, &dbuf, &buf, hash,                          index_merge(of, mp, &dbuf, &buf, hash,
                                         db, fbuf, idx, ibuf,                                          db, fbuf, idx, ibuf,
                                         maxrec, recs, reccur);                                          maxrec, recs, reccur);
Line 466  main(int argc, char *argv[])
Line 464  main(int argc, char *argv[])
                         exit((int)MANDOCLEVEL_SYSERR);                          exit((int)MANDOCLEVEL_SYSERR);
                 }                  }
   
                 if (verb > 2) {  
                         printf("%s: Truncated\n", fbuf);  
                         printf("%s: Truncated\n", ibuf);  
                 }  
   
                 ofile_free(of);                  ofile_free(of);
                 of = NULL;                  of = NULL;
   
                 if ( ! ofile_dirbuild(dirs.paths[i], NULL, NULL,                  if (-1 == chdir(dirs.paths[i])) {
                                         0, &of))                          perror(dirs.paths[i]);
                         exit((int)MANDOCLEVEL_SYSERR);                          exit((int)MANDOCLEVEL_SYSERR);
                   }
   
                   ofile_dirbuild(".", NULL, NULL, 0, &of);
   
                 if (NULL == of)                  if (NULL == of)
                         continue;                          continue;
   
                 of = of->first;                  of = of->first;
   
                 /*                  /*
                  * Go to the root of the respective manual tree                   * Go to the root of the respective manual tree.
                  * such that .so links work.  In case of failure,                   * This must work or no manuals may be found (they're
                  * just prod on, even though .so links won't work.                   * indexed relative to the root).
                  */                   */
   
                 chdir(dirs.paths[i]);                  if (-1 == chdir(dirs.paths[i])) {
                           perror(dirs.paths[i]);
                           exit((int)MANDOCLEVEL_SYSERR);
                   }
   
                 index_merge(of, mp, &dbuf, &buf, hash, db, fbuf,                  index_merge(of, mp, &dbuf, &buf, hash, db, fbuf,
                                 idx, ibuf, maxrec, recs, reccur);                                  idx, ibuf, maxrec, recs, reccur);
         }          }
Line 1434  ofile_argbuild(int argc, char *argv[], struct of **of)
Line 1434  ofile_argbuild(int argc, char *argv[], struct of **of)
                  * Add the structure to the list.                   * Add the structure to the list.
                  */                   */
   
                 if (verb > 2)  
                         printf("%s: Scheduling\n", argv[i]);  
                 if (NULL == *of) {                  if (NULL == *of) {
                         *of = nof;                          *of = nof;
                         (*of)->first = nof;                          (*of)->first = nof;
Line 1455  ofile_argbuild(int argc, char *argv[], struct of **of)
Line 1453  ofile_argbuild(int argc, char *argv[], struct of **of)
  * everything else is a manual.   * everything else is a manual.
  * Pass in a pointer to a NULL structure for the first invocation.   * Pass in a pointer to a NULL structure for the first invocation.
  */   */
 static int  static void
 ofile_dirbuild(const char *dir, const char* psec, const char *parch,  ofile_dirbuild(const char *dir, const char* psec, const char *parch,
                 int p_src_form, struct of **of)                  int p_src_form, struct of **of)
 {  {
         char             buf[MAXPATHLEN];          char             buf[MAXPATHLEN];
         struct stat      sb;  
         size_t           sz;          size_t           sz;
         DIR             *d;          DIR             *d;
         const char      *fn, *sec, *arch;          const char      *fn, *sec, *arch;
Line 1471  ofile_dirbuild(const char *dir, const char* psec, cons
Line 1468  ofile_dirbuild(const char *dir, const char* psec, cons
   
         if (NULL == (d = opendir(dir))) {          if (NULL == (d = opendir(dir))) {
                 perror(dir);                  perror(dir);
                 return(0);                  exit((int)MANDOCLEVEL_SYSERR);
         }          }
   
         while (NULL != (dp = readdir(d))) {          while (NULL != (dp = readdir(d))) {
Line 1516  ofile_dirbuild(const char *dir, const char* psec, cons
Line 1513  ofile_dirbuild(const char *dir, const char* psec, cons
   
                         if (MAXPATHLEN <= sz) {                          if (MAXPATHLEN <= sz) {
                                 fprintf(stderr, "%s: Path too long\n", dir);                                  fprintf(stderr, "%s: Path too long\n", dir);
                                 return(0);                                  exit((int)MANDOCLEVEL_SYSERR);
                         }                          }
   
                         if (verb > 2)                          ofile_dirbuild(buf, sec, arch, src_form, of);
                                 printf("%s: Scanning\n", buf);  
   
                         if ( ! ofile_dirbuild(buf, sec, arch,  
                                         src_form, of))  
                                 return(0);  
                 }                  }
   
                 if (DT_REG != dp->d_type ||                  if (DT_REG != dp->d_type ||
                     (NULL == psec && !use_all) ||                                  (NULL == psec && !use_all) ||
                     !strcmp(MANDOC_DB, fn) ||                                  ! strcmp(MANDOC_DB, fn) ||
                     !strcmp(MANDOC_IDX, fn))                                  ! strcmp(MANDOC_IDX, fn))
                         continue;                          continue;
   
                 /*                  /*
Line 1593  ofile_dirbuild(const char *dir, const char* psec, cons
Line 1586  ofile_dirbuild(const char *dir, const char* psec, cons
                                             "%s: Path too long\n", buf);                                              "%s: Path too long\n", buf);
                                         continue;                                          continue;
                                 }                                  }
                                 if (0 == stat(buf, &sb))                                  if (0 == access(buf, R_OK))
                                         continue;                                          continue;
                         }                          }
                 }                  }
   
                   assert('.' == dir[0]);
                   assert('/' == dir[1]);
                 buf[0] = '\0';                  buf[0] = '\0';
                 strlcat(buf, dir, MAXPATHLEN);                  strlcat(buf, dir + 2, MAXPATHLEN);
                 strlcat(buf, "/", MAXPATHLEN);                  strlcat(buf, "/", MAXPATHLEN);
                 sz = strlcat(buf, fn, MAXPATHLEN);                  sz = strlcat(buf, fn, MAXPATHLEN);
                 if (sz >= MAXPATHLEN) {                  if (sz >= MAXPATHLEN) {
Line 1628  ofile_dirbuild(const char *dir, const char* psec, cons
Line 1623  ofile_dirbuild(const char *dir, const char* psec, cons
                  * Add the structure to the list.                   * Add the structure to the list.
                  */                   */
   
                 if (verb > 2)  
                         printf("%s: Scheduling\n", buf);  
                 if (NULL == *of) {                  if (NULL == *of) {
                         *of = nof;                          *of = nof;
                         (*of)->first = nof;                          (*of)->first = nof;
Line 1641  ofile_dirbuild(const char *dir, const char* psec, cons
Line 1634  ofile_dirbuild(const char *dir, const char* psec, cons
         }          }
   
         closedir(d);          closedir(d);
         return(1);  
 }  }
   
 static void  static void

Legend:
Removed from v.1.34  
changed lines
  Added in v.1.35

CVSweb