=================================================================== RCS file: /cvs/mandoc/mandocdb.c,v retrieving revision 1.133 retrieving revision 1.136 diff -u -p -r1.133 -r1.136 --- mandoc/mandocdb.c 2014/04/10 02:46:21 1.133 +++ mandoc/mandocdb.c 2014/04/16 18:59:43 1.136 @@ -1,4 +1,4 @@ -/* $Id: mandocdb.c,v 1.133 2014/04/10 02:46:21 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.136 2014/04/16 18:59:43 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze @@ -55,22 +55,22 @@ extern const char *const mansearch_keynames[]; #define SQL_EXEC(_v) \ if (SQLITE_OK != sqlite3_exec(db, (_v), NULL, NULL, NULL)) \ - fprintf(stderr, "%s\n", sqlite3_errmsg(db)) + say("", "%s: %s", (_v), sqlite3_errmsg(db)) #define SQL_BIND_TEXT(_s, _i, _v) \ if (SQLITE_OK != sqlite3_bind_text \ ((_s), (_i)++, (_v), -1, SQLITE_STATIC)) \ - fprintf(stderr, "%s\n", sqlite3_errmsg(db)) + say(mlink->file, "%s", sqlite3_errmsg(db)) #define SQL_BIND_INT(_s, _i, _v) \ if (SQLITE_OK != sqlite3_bind_int \ ((_s), (_i)++, (_v))) \ - fprintf(stderr, "%s\n", sqlite3_errmsg(db)) + say(mlink->file, "%s", sqlite3_errmsg(db)) #define SQL_BIND_INT64(_s, _i, _v) \ if (SQLITE_OK != sqlite3_bind_int64 \ ((_s), (_i)++, (_v))) \ - fprintf(stderr, "%s\n", sqlite3_errmsg(db)) + say(mlink->file, "%s", sqlite3_errmsg(db)) #define SQL_STEP(_s) \ if (SQLITE_DONE != sqlite3_step((_s))) \ - fprintf(stderr, "%s\n", sqlite3_errmsg(db)) + say(mlink->file, "%s", sqlite3_errmsg(db)) enum op { OP_DEFAULT = 0, /* new dbs from dir list or default config */ @@ -1154,18 +1154,17 @@ mpages_merge(struct mchars *mc, struct mparse *mp) putkey(mpage, mlink->name, NAME_FILE); } + assert(NULL == mpage->desc); if (NULL != mdoc) { if (NULL != (cp = mdoc_meta(mdoc)->name)) putkey(mpage, cp, NAME_HEAD); - assert(NULL == mpage->desc); parse_mdoc(mpage, mdoc_node(mdoc)); - if (NULL == mpage->desc) - mpage->desc = mandoc_strdup( - mpage->mlinks->name); } else if (NULL != man) parse_man(mpage, man_node(man)); else parse_cat(mpage, fd[0]); + if (NULL == mpage->desc) + mpage->desc = mandoc_strdup(mpage->mlinks->name); if (warnings && !use_all) for (mlink = mpage->mlinks; mlink; @@ -1205,7 +1204,6 @@ names_check(void) { sqlite3_stmt *stmt; const char *name, *sec, *arch, *key; - size_t i; int irc; sqlite3_prepare_v2(db, @@ -1221,8 +1219,8 @@ names_check(void) ") USING (pageid);", -1, &stmt, NULL); - i = 1; - SQL_BIND_INT64(stmt, i, NAME_TITLE); + if (SQLITE_OK != sqlite3_bind_int64(stmt, 1, NAME_TITLE)) + say("", "%s", sqlite3_errmsg(db)); while (SQLITE_ROW == (irc = sqlite3_step(stmt))) { name = sqlite3_column_text(stmt, 0); @@ -1303,8 +1301,6 @@ parse_cat(struct mpage *mpage, int fd) if (warnings) say(mpage->mlinks->file, "Cannot find NAME section"); - assert(NULL == mpage->desc); - mpage->desc = mandoc_strdup(mpage->mlinks->name); fclose(stream); free(title); return; @@ -1343,7 +1339,6 @@ parse_cat(struct mpage *mpage, int fd) plen -= 2; } - assert(NULL == mpage->desc); mpage->desc = mandoc_strdup(p); fclose(stream); free(title); @@ -1483,7 +1478,6 @@ parse_man(struct mpage *mpage, const struct man_node * while (' ' == *start) start++; - assert(NULL == mpage->desc); mpage->desc = mandoc_strdup(start); free(title); return; @@ -1957,6 +1951,7 @@ dbadd(struct mpage *mpage, struct mchars *mc) dbadd_mlink(mlink); mlink = mlink->next; } + mlink = mpage->mlinks; for (key = ohash_first(&names, &slot); NULL != key; key = ohash_next(&names, &slot)) { @@ -2187,6 +2182,7 @@ create_tables: " \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) " "ON DELETE CASCADE\n" ");\n" + "CREATE INDEX mlinks_pageid_idx ON mlinks (pageid);\n" "\n" "CREATE TABLE \"names\" (\n" " \"bits\" INTEGER NOT NULL,\n" @@ -2200,7 +2196,8 @@ create_tables: " \"key\" TEXT NOT NULL,\n" " \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) " "ON DELETE CASCADE\n" - ");\n"; + ");\n" + "CREATE INDEX keys_pageid_idx ON keys (pageid);\n"; if (SQLITE_OK != sqlite3_exec(db, sql, NULL, NULL, NULL)) { exitcode = (int)MANDOCLEVEL_SYSERR;