version 1.133, 2014/04/10 02:46:21 |
version 1.136, 2014/04/16 18:59:43 |
Line 55 extern const char *const mansearch_keynames[]; |
|
Line 55 extern const char *const mansearch_keynames[]; |
|
|
|
#define SQL_EXEC(_v) \ |
#define SQL_EXEC(_v) \ |
if (SQLITE_OK != sqlite3_exec(db, (_v), NULL, NULL, NULL)) \ |
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) \ |
#define SQL_BIND_TEXT(_s, _i, _v) \ |
if (SQLITE_OK != sqlite3_bind_text \ |
if (SQLITE_OK != sqlite3_bind_text \ |
((_s), (_i)++, (_v), -1, SQLITE_STATIC)) \ |
((_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) \ |
#define SQL_BIND_INT(_s, _i, _v) \ |
if (SQLITE_OK != sqlite3_bind_int \ |
if (SQLITE_OK != sqlite3_bind_int \ |
((_s), (_i)++, (_v))) \ |
((_s), (_i)++, (_v))) \ |
fprintf(stderr, "%s\n", sqlite3_errmsg(db)) |
say(mlink->file, "%s", sqlite3_errmsg(db)) |
#define SQL_BIND_INT64(_s, _i, _v) \ |
#define SQL_BIND_INT64(_s, _i, _v) \ |
if (SQLITE_OK != sqlite3_bind_int64 \ |
if (SQLITE_OK != sqlite3_bind_int64 \ |
((_s), (_i)++, (_v))) \ |
((_s), (_i)++, (_v))) \ |
fprintf(stderr, "%s\n", sqlite3_errmsg(db)) |
say(mlink->file, "%s", sqlite3_errmsg(db)) |
#define SQL_STEP(_s) \ |
#define SQL_STEP(_s) \ |
if (SQLITE_DONE != sqlite3_step((_s))) \ |
if (SQLITE_DONE != sqlite3_step((_s))) \ |
fprintf(stderr, "%s\n", sqlite3_errmsg(db)) |
say(mlink->file, "%s", sqlite3_errmsg(db)) |
|
|
enum op { |
enum op { |
OP_DEFAULT = 0, /* new dbs from dir list or default config */ |
OP_DEFAULT = 0, /* new dbs from dir list or default config */ |
Line 1154 mpages_merge(struct mchars *mc, struct mparse *mp) |
|
Line 1154 mpages_merge(struct mchars *mc, struct mparse *mp) |
|
putkey(mpage, mlink->name, NAME_FILE); |
putkey(mpage, mlink->name, NAME_FILE); |
} |
} |
|
|
|
assert(NULL == mpage->desc); |
if (NULL != mdoc) { |
if (NULL != mdoc) { |
if (NULL != (cp = mdoc_meta(mdoc)->name)) |
if (NULL != (cp = mdoc_meta(mdoc)->name)) |
putkey(mpage, cp, NAME_HEAD); |
putkey(mpage, cp, NAME_HEAD); |
assert(NULL == mpage->desc); |
|
parse_mdoc(mpage, mdoc_node(mdoc)); |
parse_mdoc(mpage, mdoc_node(mdoc)); |
if (NULL == mpage->desc) |
|
mpage->desc = mandoc_strdup( |
|
mpage->mlinks->name); |
|
} else if (NULL != man) |
} else if (NULL != man) |
parse_man(mpage, man_node(man)); |
parse_man(mpage, man_node(man)); |
else |
else |
parse_cat(mpage, fd[0]); |
parse_cat(mpage, fd[0]); |
|
if (NULL == mpage->desc) |
|
mpage->desc = mandoc_strdup(mpage->mlinks->name); |
|
|
if (warnings && !use_all) |
if (warnings && !use_all) |
for (mlink = mpage->mlinks; mlink; |
for (mlink = mpage->mlinks; mlink; |
Line 1205 names_check(void) |
|
Line 1204 names_check(void) |
|
{ |
{ |
sqlite3_stmt *stmt; |
sqlite3_stmt *stmt; |
const char *name, *sec, *arch, *key; |
const char *name, *sec, *arch, *key; |
size_t i; |
|
int irc; |
int irc; |
|
|
sqlite3_prepare_v2(db, |
sqlite3_prepare_v2(db, |
Line 1221 names_check(void) |
|
Line 1219 names_check(void) |
|
") USING (pageid);", |
") USING (pageid);", |
-1, &stmt, NULL); |
-1, &stmt, NULL); |
|
|
i = 1; |
if (SQLITE_OK != sqlite3_bind_int64(stmt, 1, NAME_TITLE)) |
SQL_BIND_INT64(stmt, i, NAME_TITLE); |
say("", "%s", sqlite3_errmsg(db)); |
|
|
while (SQLITE_ROW == (irc = sqlite3_step(stmt))) { |
while (SQLITE_ROW == (irc = sqlite3_step(stmt))) { |
name = sqlite3_column_text(stmt, 0); |
name = sqlite3_column_text(stmt, 0); |
Line 1303 parse_cat(struct mpage *mpage, int fd) |
|
Line 1301 parse_cat(struct mpage *mpage, int fd) |
|
if (warnings) |
if (warnings) |
say(mpage->mlinks->file, |
say(mpage->mlinks->file, |
"Cannot find NAME section"); |
"Cannot find NAME section"); |
assert(NULL == mpage->desc); |
|
mpage->desc = mandoc_strdup(mpage->mlinks->name); |
|
fclose(stream); |
fclose(stream); |
free(title); |
free(title); |
return; |
return; |
Line 1343 parse_cat(struct mpage *mpage, int fd) |
|
Line 1339 parse_cat(struct mpage *mpage, int fd) |
|
plen -= 2; |
plen -= 2; |
} |
} |
|
|
assert(NULL == mpage->desc); |
|
mpage->desc = mandoc_strdup(p); |
mpage->desc = mandoc_strdup(p); |
fclose(stream); |
fclose(stream); |
free(title); |
free(title); |
Line 1483 parse_man(struct mpage *mpage, const struct man_node * |
|
Line 1478 parse_man(struct mpage *mpage, const struct man_node * |
|
while (' ' == *start) |
while (' ' == *start) |
start++; |
start++; |
|
|
assert(NULL == mpage->desc); |
|
mpage->desc = mandoc_strdup(start); |
mpage->desc = mandoc_strdup(start); |
free(title); |
free(title); |
return; |
return; |
Line 1957 dbadd(struct mpage *mpage, struct mchars *mc) |
|
Line 1951 dbadd(struct mpage *mpage, struct mchars *mc) |
|
dbadd_mlink(mlink); |
dbadd_mlink(mlink); |
mlink = mlink->next; |
mlink = mlink->next; |
} |
} |
|
mlink = mpage->mlinks; |
|
|
for (key = ohash_first(&names, &slot); NULL != key; |
for (key = ohash_first(&names, &slot); NULL != key; |
key = ohash_next(&names, &slot)) { |
key = ohash_next(&names, &slot)) { |
|
|
" \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) " |
" \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) " |
"ON DELETE CASCADE\n" |
"ON DELETE CASCADE\n" |
");\n" |
");\n" |
|
"CREATE INDEX mlinks_pageid_idx ON mlinks (pageid);\n" |
"\n" |
"\n" |
"CREATE TABLE \"names\" (\n" |
"CREATE TABLE \"names\" (\n" |
" \"bits\" INTEGER NOT NULL,\n" |
" \"bits\" INTEGER NOT NULL,\n" |
|
|
" \"key\" TEXT NOT NULL,\n" |
" \"key\" TEXT NOT NULL,\n" |
" \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) " |
" \"pageid\" INTEGER NOT NULL REFERENCES mpages(id) " |
"ON DELETE CASCADE\n" |
"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)) { |
if (SQLITE_OK != sqlite3_exec(db, sql, NULL, NULL, NULL)) { |
exitcode = (int)MANDOCLEVEL_SYSERR; |
exitcode = (int)MANDOCLEVEL_SYSERR; |