aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandocdb.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-12-08 01:00:58 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-12-08 01:00:58 +0000
commitf857cf61a65bdb110e3c6c23446a5ca2f1bf0076 (patch)
treec81040c82d4cfc1868e0cd21f57349a48a582154 /mandocdb.c
parent25437cf313c32ee95dbdaa2ac2757399327eb8ed (diff)
downloadmandoc-f857cf61a65bdb110e3c6c23446a5ca2f1bf0076.tar.gz
mandoc-f857cf61a65bdb110e3c6c23446a5ca2f1bf0076.tar.zst
mandoc-f857cf61a65bdb110e3c6c23446a5ca2f1bf0076.zip
If arguments are passed to mandocdb(8) in "default" mode, then use
realpath() to convert them into absolute paths before putting the traversed subdirectory filenames into the index.
Diffstat (limited to 'mandocdb.c')
-rw-r--r--mandocdb.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/mandocdb.c b/mandocdb.c
index e779b69e..62df7e8c 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -1,4 +1,4 @@
-/* $Id: mandocdb.c,v 1.25 2011/12/07 01:57:20 schwarze Exp $ */
+/* $Id: mandocdb.c,v 1.26 2011/12/08 01:00:58 kristaps Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -272,7 +272,9 @@ main(int argc, char *argv[])
struct manpaths dirs;
enum op op; /* current operation */
const char *dir;
- char ibuf[MAXPATHLEN], /* index fname */
+ char *cp;
+ char pbuf[PATH_MAX],
+ ibuf[MAXPATHLEN], /* index fname */
fbuf[MAXPATHLEN]; /* btree fname */
int ch, i, flags;
DB *idx, /* index database */
@@ -413,10 +415,15 @@ main(int argc, char *argv[])
*/
if (argc > 0) {
- dirs.paths = mandoc_malloc(argc * sizeof(char *));
+ dirs.paths = mandoc_calloc(argc, sizeof(char *));
dirs.sz = argc;
- for (i = 0; i < argc; i++)
- dirs.paths[i] = mandoc_strdup(argv[i]);
+ for (i = 0; i < argc; i++) {
+ if (NULL == (cp = realpath(argv[i], pbuf))) {
+ perror(argv[i]);
+ goto out;
+ }
+ dirs.paths[i] = mandoc_strdup(cp);
+ }
} else
manpath_parse(&dirs, NULL, NULL);