Improve error handling in dbopen(). If PRAGMA SQL statements fail,
authorschwarze <schwarze@openbsd.org>
Sun, 27 Apr 2014 23:03:52 +0000 (23:03 +0000)
committerschwarze <schwarze@openbsd.org>
Sun, 27 Apr 2014 23:03:52 +0000 (23:03 +0000)
commitb72d2ce07a5aa4c69a70ee8544070a63f9db5964
tree42e612d1d2b666000dda1f7923482e830f83e381
parentbb04a0c02b277f099ab68b0d42f1e143a909714b
Improve error handling in dbopen().  If PRAGMA SQL statements fail,
report the error, close the database, and return failure from dbopen(),
such that the main program can recover and rebuild the database.

As noticed by stsp@, this can happen when database files are
accessible, but corrupt or in the wrong format, which will now
automatically be repaired.

Besides, use a safer idiom after sqlite3_open*() failure that also
handles out-of-memory situations correctly, and do not forget to
close the database after CREATE TABLE failure.
usr.bin/mandoc/mandocdb.c