aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandocdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'mandocdb.c')
-rw-r--r--mandocdb.c26
1 files changed, 18 insertions, 8 deletions
diff --git a/mandocdb.c b/mandocdb.c
index 5b05ef45..5800d0e7 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -1,4 +1,4 @@
-/* $Id: mandocdb.c,v 1.137 2014/04/16 21:36:18 schwarze Exp $ */
+/* $Id: mandocdb.c,v 1.138 2014/04/18 21:55:38 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -442,15 +442,25 @@ main(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.