=================================================================== RCS file: /cvs/mandoc/catman.c,v retrieving revision 1.7 retrieving revision 1.11 diff -u -p -r1.7 -r1.11 --- mandoc/catman.c 2011/12/16 12:06:35 1.7 +++ mandoc/catman.c 2012/06/08 10:33:48 1.11 @@ -1,4 +1,4 @@ -/* $Id: catman.c,v 1.7 2011/12/16 12:06:35 kristaps Exp $ */ +/* $Id: catman.c,v 1.11 2012/06/08 10:33:48 kristaps Exp $ */ /* * Copyright (c) 2011 Kristaps Dzonsons * @@ -38,6 +38,7 @@ #endif #include "manpath.h" +#include "mandocdb.h" #define xstrlcpy(_dst, _src, _sz) \ do if (strlcpy((_dst), (_src), (_sz)) >= (_sz)) { \ @@ -66,7 +67,7 @@ int main(int argc, char *argv[]) { int ch; - char *aux, *base; + char *aux, *base, *conf_file; struct manpaths dirs; char buf[MAXPATHLEN]; extern char *optarg; @@ -78,11 +79,14 @@ main(int argc, char *argv[]) else ++progname; - aux = base = NULL; + aux = base = conf_file = NULL; xstrlcpy(buf, "/var/www/cache/man.cgi", MAXPATHLEN); - while (-1 != (ch = getopt(argc, argv, "fm:M:o:v"))) + while (-1 != (ch = getopt(argc, argv, "C:fm:M:o:v"))) switch (ch) { + case ('C'): + conf_file = optarg; + break; case ('f'): force = 1; break; @@ -112,7 +116,7 @@ main(int argc, char *argv[]) } memset(&dirs, 0, sizeof(struct manpaths)); - manpath_parse(&dirs, NULL, base, aux); + manpath_parse(&dirs, conf_file, base, aux); ch = manup(&dirs, buf); manpath_free(&dirs); return(ch ? EXIT_SUCCESS : EXIT_FAILURE); @@ -124,6 +128,7 @@ usage(void) fprintf(stderr, "usage: %s " "[-fv] " + "[-C file] " "[-o path] " "[-m manpath] " "[-M manpath]\n", @@ -212,7 +217,8 @@ indexhtml(char *src, size_t ssz, char *dst, size_t dsz pid = -1; xstrlcpy(fname, dst, MAXPATHLEN); - xstrlcat(fname, "/mandoc.index", MAXPATHLEN); + xstrlcat(fname, "/", MAXPATHLEN); + xstrlcat(fname, MANDOC_IDX, MAXPATHLEN); idx = dbopen(fname, O_RDONLY, 0, DB_RECNO, NULL); if (NULL == idx) { @@ -288,9 +294,12 @@ update(char *dst, char *src) dsz = strlen(dst); ssz = strlen(src); - xstrlcat(src, "/mandoc.db", MAXPATHLEN); - xstrlcat(dst, "/mandoc.db", MAXPATHLEN); + xstrlcat(src, "/", MAXPATHLEN); + xstrlcat(dst, "/", MAXPATHLEN); + xstrlcat(src, MANDOC_DB, MAXPATHLEN); + xstrlcat(dst, MANDOC_DB, MAXPATHLEN); + if ( ! filecpy(dst, src)) return(-1); if (verbose) @@ -298,9 +307,12 @@ update(char *dst, char *src) dst[(int)dsz] = src[(int)ssz] = '\0'; - xstrlcat(src, "/mandoc.index", MAXPATHLEN); - xstrlcat(dst, "/mandoc.index", MAXPATHLEN); + xstrlcat(src, "/", MAXPATHLEN); + xstrlcat(dst, "/", MAXPATHLEN); + xstrlcat(src, MANDOC_IDX, MAXPATHLEN); + xstrlcat(dst, MANDOC_IDX, MAXPATHLEN); + if ( ! filecpy(dst, src)) return(-1); if (verbose) @@ -326,9 +338,12 @@ treecpy(char *dst, char *src) dsz = strlen(dst); ssz = strlen(src); - xstrlcat(src, "/mandoc.index", MAXPATHLEN); - xstrlcat(dst, "/mandoc.index", MAXPATHLEN); + xstrlcat(src, "/", MAXPATHLEN); + xstrlcat(dst, "/", MAXPATHLEN); + xstrlcat(src, MANDOC_IDX, MAXPATHLEN); + xstrlcat(dst, MANDOC_IDX, MAXPATHLEN); + if (-1 == (rc = isnewer(dst, src))) return(0); @@ -337,9 +352,12 @@ treecpy(char *dst, char *src) if (1 == rc) return(update(dst, src)); - xstrlcat(src, "/mandoc.db", MAXPATHLEN); - xstrlcat(dst, "/mandoc.db", MAXPATHLEN); + xstrlcat(src, "/", MAXPATHLEN); + xstrlcat(dst, "/", MAXPATHLEN); + xstrlcat(src, MANDOC_DB, MAXPATHLEN); + xstrlcat(dst, MANDOC_DB, MAXPATHLEN); + if (-1 == (rc = isnewer(dst, src))) return(0); else if (rc == 0) @@ -362,7 +380,8 @@ manup(const struct manpaths *dirs, char *base) char dst[MAXPATHLEN], src[MAXPATHLEN]; const char *path; - int i, c; + size_t i; + int c; size_t sz; FILE *f;