summaryrefslogtreecommitdiffstats
path: root/usr.bin/mandoc/mandocdb.c
diff options
context:
space:
mode:
authorschwarze <schwarze@openbsd.org>2014-04-18 21:54:48 +0000
committerschwarze <schwarze@openbsd.org>2014-04-18 21:54:48 +0000
commita3d69d4af53ec859d1df0a15505cc9d90ae71abb (patch)
treee38bed033555c1ee85aedb3529376f822b3509e6 /usr.bin/mandoc/mandocdb.c
parentXXXXXXXXXXXXXXXX -> XXX (diff)
downloadwireguard-openbsd-a3d69d4af53ec859d1df0a15505cc9d90ae71abb.tar.xz
wireguard-openbsd-a3d69d4af53ec859d1df0a15505cc9d90ae71abb.zip
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@.
Diffstat (limited to 'usr.bin/mandoc/mandocdb.c')
-rw-r--r--usr.bin/mandoc/mandocdb.c26
1 files changed, 18 insertions, 8 deletions
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 <kristaps@bsd.lv>
* Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -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.