version 1.143, 2014/04/23 19:09:16 |
version 1.147, 2014/05/07 15:10:36 |
Line 471 main(int argc, char *argv[]) |
|
Line 471 main(int argc, char *argv[]) |
|
* manpath_parse() wants to do it. |
* manpath_parse() wants to do it. |
*/ |
*/ |
if (argc > 0) { |
if (argc > 0) { |
dirs.paths = mandoc_calloc(argc, |
dirs.paths = mandoc_reallocarray(NULL, |
sizeof(char *)); |
argc, sizeof(char *)); |
dirs.sz = (size_t)argc; |
dirs.sz = (size_t)argc; |
for (i = 0; i < argc; i++) |
for (i = 0; i < argc; i++) |
dirs.paths[i] = mandoc_strdup(argv[i]); |
dirs.paths[i] = mandoc_strdup(argv[i]); |
Line 512 main(int argc, char *argv[]) |
|
Line 512 main(int argc, char *argv[]) |
|
goto out; |
goto out; |
|
|
mpages_merge(mc, mp); |
mpages_merge(mc, mp); |
if (warnings && |
if (warnings && !nodb && |
! (MPARSE_QUICK & mparse_options)) |
! (MPARSE_QUICK & mparse_options)) |
names_check(); |
names_check(); |
dbclose(0); |
dbclose(0); |
Line 1784 putkeys(const struct mpage *mpage, |
|
Line 1784 putkeys(const struct mpage *mpage, |
|
s->mask |= v; |
s->mask |= v; |
return; |
return; |
} else if (NULL == s) { |
} else if (NULL == s) { |
s = mandoc_calloc(sizeof(struct str) + sz + 1, 1); |
s = mandoc_calloc(1, sizeof(struct str) + sz + 1); |
memcpy(s->key, cp, sz); |
memcpy(s->key, cp, sz); |
ohash_insert(htab, slot, s); |
ohash_insert(htab, slot, s); |
} |
} |
Line 1996 dbadd(struct mpage *mpage, struct mchars *mc) |
|
Line 1996 dbadd(struct mpage *mpage, struct mchars *mc) |
|
mlink = mpage->mlinks; |
mlink = mpage->mlinks; |
|
|
if (nodb) { |
if (nodb) { |
|
for (key = ohash_first(&names, &slot); NULL != key; |
|
key = ohash_next(&names, &slot)) { |
|
if (key->rendered != key->key) |
|
free(key->rendered); |
|
free(key); |
|
} |
|
for (key = ohash_first(&strings, &slot); NULL != key; |
|
key = ohash_next(&strings, &slot)) { |
|
if (key->rendered != key->key) |
|
free(key->rendered); |
|
free(key); |
|
} |
|
if (0 == debug) |
|
return; |
while (NULL != mlink) { |
while (NULL != mlink) { |
fputs(mlink->name, stdout); |
fputs(mlink->name, stdout); |
if (NULL == mlink->next || |
if (NULL == mlink->next || |
Line 2207 dbopen(int real) |
|
Line 2221 dbopen(int real) |
|
rc = sqlite3_open_v2(MANDOC_DB, &db, ofl, NULL); |
rc = sqlite3_open_v2(MANDOC_DB, &db, ofl, NULL); |
if (SQLITE_OK != rc) { |
if (SQLITE_OK != rc) { |
exitcode = (int)MANDOCLEVEL_SYSERR; |
exitcode = (int)MANDOCLEVEL_SYSERR; |
say(MANDOC_DB, "%s", sqlite3_errmsg(db)); |
say(MANDOC_DB, "%s", sqlite3_errstr(rc)); |
return(0); |
return(0); |
} |
} |
goto prepare_statements; |
goto prepare_statements; |
Line 2221 dbopen(int real) |
|
Line 2235 dbopen(int real) |
|
goto create_tables; |
goto create_tables; |
if (MPARSE_QUICK & mparse_options) { |
if (MPARSE_QUICK & mparse_options) { |
exitcode = (int)MANDOCLEVEL_SYSERR; |
exitcode = (int)MANDOCLEVEL_SYSERR; |
say(MANDOC_DB "~", "%s", sqlite3_errmsg(db)); |
say(MANDOC_DB "~", "%s", sqlite3_errstr(rc)); |
return(0); |
return(0); |
} |
} |
|
|
Line 2237 dbopen(int real) |
|
Line 2251 dbopen(int real) |
|
rc = sqlite3_open_v2(tempfilename, &db, ofl, NULL); |
rc = sqlite3_open_v2(tempfilename, &db, ofl, NULL); |
if (SQLITE_OK != rc) { |
if (SQLITE_OK != rc) { |
exitcode = (int)MANDOCLEVEL_SYSERR; |
exitcode = (int)MANDOCLEVEL_SYSERR; |
say("", "%s: %s", tempfilename, sqlite3_errmsg(db)); |
say("", "%s: %s", tempfilename, sqlite3_errstr(rc)); |
return(0); |
return(0); |
} |
} |
|
|
|
|
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; |
say(MANDOC_DB, "%s", sqlite3_errmsg(db)); |
say(MANDOC_DB, "%s", sqlite3_errmsg(db)); |
|
sqlite3_close(db); |
return(0); |
return(0); |
} |
} |
|
|
prepare_statements: |
prepare_statements: |
SQL_EXEC("PRAGMA foreign_keys = ON"); |
if (SQLITE_OK != sqlite3_exec(db, |
|
"PRAGMA foreign_keys = ON", NULL, NULL, NULL)) { |
|
exitcode = (int)MANDOCLEVEL_SYSERR; |
|
say(MANDOC_DB, "PRAGMA foreign_keys: %s", |
|
sqlite3_errmsg(db)); |
|
sqlite3_close(db); |
|
return(0); |
|
} |
|
|
sql = "DELETE FROM mpages WHERE pageid IN " |
sql = "DELETE FROM mpages WHERE pageid IN " |
"(SELECT pageid FROM mlinks WHERE " |
"(SELECT pageid FROM mlinks WHERE " |
"sec=? AND arch=? AND name=?)"; |
"sec=? AND arch=? AND name=?)"; |
Line 2303 prepare_statements: |
|
Line 2326 prepare_statements: |
|
* synchronous mode for much better performance. |
* synchronous mode for much better performance. |
*/ |
*/ |
|
|
if (real) |
if (real && SQLITE_OK != sqlite3_exec(db, |
SQL_EXEC("PRAGMA synchronous = OFF"); |
"PRAGMA synchronous = OFF", NULL, NULL, NULL)) { |
|
exitcode = (int)MANDOCLEVEL_SYSERR; |
|
say(MANDOC_DB, "PRAGMA synchronous: %s", |
|
sqlite3_errmsg(db)); |
|
sqlite3_close(db); |
|
return(0); |
|
} |
#endif |
#endif |
|
|
return(1); |
return(1); |
|
|
hash_halloc(size_t sz, void *arg) |
hash_halloc(size_t sz, void *arg) |
{ |
{ |
|
|
return(mandoc_calloc(sz, 1)); |
return(mandoc_calloc(1, sz)); |
} |
} |
|
|
static void * |
static void * |