version 1.9, 2011/11/20 12:39:08 |
version 1.10, 2011/11/23 09:52:20 |
|
|
#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 |
|
|
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) |
|
|
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); |