From f857cf61a65bdb110e3c6c23446a5ca2f1bf0076 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Thu, 8 Dec 2011 01:00:58 +0000 Subject: 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. --- mandocdb.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'mandocdb.c') 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 * Copyright (c) 2011 Ingo Schwarze @@ -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); -- cgit v1.2.3