=================================================================== RCS file: /cvs/mandoc/mandocdb.c,v retrieving revision 1.204 retrieving revision 1.207 diff -u -p -r1.204 -r1.207 --- mandoc/mandocdb.c 2015/10/20 02:01:31 1.204 +++ mandoc/mandocdb.c 2015/11/06 17:33:34 1.207 @@ -1,4 +1,4 @@ -/* $Id: mandocdb.c,v 1.204 2015/10/20 02:01:31 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.207 2015/11/06 17:33:34 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2011-2015 Ingo Schwarze @@ -183,8 +183,6 @@ static int set_basedir(const char *, int); static int treescan(void); static size_t utf8(unsigned int, char [7]); -extern char *__progname; - static char tempfilename[32]; static int nodb; /* no database changes */ static int mparse_options; /* abort the parse early */ @@ -335,10 +333,17 @@ mandocdb(int argc, char *argv[]) { struct manconf conf; struct mparse *mp; - const char *path_arg; + const char *path_arg, *progname; size_t j, sz; int ch, i; +#if HAVE_PLEDGE + if (pledge("stdio rpath wpath cpath fattr flock proc exec", NULL) == -1) { + perror("pledge"); + return (int)MANDOCLEVEL_SYSERR; + } +#endif + memset(&conf, 0, sizeof(conf)); memset(stmts, 0, STMT__MAX * sizeof(sqlite3_stmt *)); @@ -412,6 +417,13 @@ mandocdb(int argc, char *argv[]) argc -= optind; argv += optind; +#if HAVE_PLEDGE + if (nodb && pledge("stdio rpath", NULL) == -1) { + perror("pledge"); + return (int)MANDOCLEVEL_SYSERR; + } +#endif + if (OP_CONFFILE == op && argc > 0) { warnx("-C: Too many arguments"); goto usage; @@ -437,6 +449,14 @@ mandocdb(int argc, char *argv[]) * The existing database is usable. Process * all files specified on the command-line. */ +#if HAVE_PLEDGE + if (!nodb && pledge("stdio rpath wpath cpath fattr flock", + NULL) == -1) { + perror("pledge"); + exitcode = (int)MANDOCLEVEL_SYSERR; + goto out; + } +#endif use_all = 1; for (i = 0; i < argc; i++) filescan(argv[i]); @@ -526,13 +546,13 @@ out: ohash_delete(&mlinks); return exitcode; usage: + progname = getprogname(); fprintf(stderr, "usage: %s [-aDnpQ] [-C file] [-Tutf8]\n" " %s [-aDnpQ] [-Tutf8] dir ...\n" " %s [-DnpQ] [-Tutf8] -d dir [file ...]\n" " %s [-Dnp] -u dir [file ...]\n" " %s [-Q] -t file ...\n", - __progname, __progname, __progname, - __progname, __progname); + progname, progname, progname, progname, progname); return (int)MANDOCLEVEL_BADARG; } @@ -1176,6 +1196,7 @@ mpages_merge(struct mparse *mp) mpage->arch == NULL ? "" : mpage->arch); mpage->title = mandoc_strdup(man->meta.title); } else if (man != NULL && man->macroset == MACROSET_MAN) { + man_validate(man); mpage->form = FORM_SRC; mpage->sec = mandoc_strdup(man->meta.msec); mpage->arch = mandoc_strdup(mlink->arch);