From: schwarze Date: Fri, 18 Apr 2014 21:54:48 +0000 (+0000) Subject: In update mode, when opening the database fails, probably because it is X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=a3d69d4af53ec859d1df0a15505cc9d90ae71abb;p=openbsd In update mode, when opening the database fails, probably because it is missing or corrupt, just rebuild it from scratch. This also helps when installing the very first port on a freshly installed machine and is similar to what espie@'s classical makewhatis(8) did. Issue reported by naddy@ via kili@. --- diff --git a/usr.bin/mandoc/mandocdb.c b/usr.bin/mandoc/mandocdb.c index 0f5d9c42769..bd8a7e54329 100644 --- a/usr.bin/mandoc/mandocdb.c +++ b/usr.bin/mandoc/mandocdb.c @@ -1,4 +1,4 @@ -/* $Id: mandocdb.c,v 1.94 2014/04/16 21:35:48 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.95 2014/04/18 21:54:48 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze @@ -434,15 +434,25 @@ mandocdb(int argc, char *argv[]) */ if (0 == set_basedir(path_arg)) goto out; - for (i = 0; i < argc; i++) - filescan(argv[i]); - if (0 == dbopen(1)) - goto out; - if (OP_TEST != op) - dbprune(); + if (dbopen(1)) { + for (i = 0; i < argc; i++) + filescan(argv[i]); + if (OP_TEST != op) + dbprune(); + } else { + /* + * Database missing or corrupt. + * Recreate from scratch. + */ + op = OP_DEFAULT; + if (0 == treescan()) + goto out; + if (0 == dbopen(0)) + goto out; + } if (OP_DELETE != op) mpages_merge(mc, mp); - dbclose(1); + dbclose(OP_DEFAULT == op ? 0 : 1); } else { /* * If we have arguments, use them as our manpaths.