version 1.105, 2014/01/06 13:54:17 |
version 1.106, 2014/01/06 15:32:47 |
Line 700 filescan(const char *file) |
|
Line 700 filescan(const char *file) |
|
exitcode = (int)MANDOCLEVEL_BADARG; |
exitcode = (int)MANDOCLEVEL_BADARG; |
say(file, NULL); |
say(file, NULL); |
return; |
return; |
} else if (OP_TEST != op && strstr(buf, basedir) != buf) { |
} |
|
|
|
if (strstr(buf, basedir) == buf) |
|
start = buf + strlen(basedir) + 1; |
|
else if (OP_TEST == op) |
|
start = buf; |
|
else { |
exitcode = (int)MANDOCLEVEL_BADARG; |
exitcode = (int)MANDOCLEVEL_BADARG; |
say("", "%s: outside base directory", buf); |
say("", "%s: outside base directory", buf); |
return; |
return; |
} else if (-1 == stat(buf, &st)) { |
} |
|
|
|
if (-1 == stat(buf, &st)) { |
exitcode = (int)MANDOCLEVEL_BADARG; |
exitcode = (int)MANDOCLEVEL_BADARG; |
say(file, NULL); |
say(file, NULL); |
return; |
return; |
Line 713 filescan(const char *file) |
|
Line 721 filescan(const char *file) |
|
say(file, "Not a regular file"); |
say(file, "Not a regular file"); |
return; |
return; |
} |
} |
start = buf + strlen(basedir); |
|
mlink = mandoc_calloc(1, sizeof(struct mlink)); |
mlink = mandoc_calloc(1, sizeof(struct mlink)); |
strlcpy(mlink->file, start, sizeof(mlink->file)); |
strlcpy(mlink->file, start, sizeof(mlink->file)); |
|
|
|
|
size_t i; |
size_t i; |
unsigned int slot; |
unsigned int slot; |
|
|
if (nodb) |
if (0 == nodb) |
return; |
SQL_EXEC("BEGIN TRANSACTION"); |
|
|
mpage = ohash_first(&mpages, &slot); |
for (mpage = ohash_first(&mpages, &slot); NULL != mpage; |
while (NULL != mpage) { |
mpage = ohash_next(&mpages, &slot)) { |
mlink = mpage->mlinks; |
mlink = mpage->mlinks; |
i = 1; |
|
SQL_BIND_TEXT(stmts[STMT_DELETE_PAGE], i, mlink->file); |
|
SQL_STEP(stmts[STMT_DELETE_PAGE]); |
|
sqlite3_reset(stmts[STMT_DELETE_PAGE]); |
|
if (verb) |
if (verb) |
say(mlink->file, "Deleted from database"); |
say(mlink->file, "Deleting from database"); |
mpage = ohash_next(&mpages, &slot); |
if (nodb) |
|
continue; |
|
for ( ; NULL != mlink; mlink = mlink->next) { |
|
i = 1; |
|
SQL_BIND_TEXT(stmts[STMT_DELETE_PAGE], |
|
i, mlink->dsec); |
|
SQL_BIND_TEXT(stmts[STMT_DELETE_PAGE], |
|
i, mlink->arch); |
|
SQL_BIND_TEXT(stmts[STMT_DELETE_PAGE], |
|
i, mlink->name); |
|
SQL_STEP(stmts[STMT_DELETE_PAGE]); |
|
sqlite3_reset(stmts[STMT_DELETE_PAGE]); |
|
} |
} |
} |
|
|
|
if (0 == nodb) |
|
SQL_EXEC("END TRANSACTION"); |
} |
} |
|
|
/* |
/* |
Line 1915 dbopen(int real) |
|
Line 1934 dbopen(int real) |
|
|
|
prepare_statements: |
prepare_statements: |
SQL_EXEC("PRAGMA foreign_keys = ON"); |
SQL_EXEC("PRAGMA foreign_keys = ON"); |
sql = "DELETE FROM mpages where file=?"; |
sql = "DELETE FROM mpages WHERE id IN " |
|
"(SELECT pageid FROM mlinks WHERE " |
|
"sec=? AND arch=? AND name=?)"; |
sqlite3_prepare_v2(db, sql, -1, &stmts[STMT_DELETE_PAGE], NULL); |
sqlite3_prepare_v2(db, sql, -1, &stmts[STMT_DELETE_PAGE], NULL); |
sql = "INSERT INTO mpages " |
sql = "INSERT INTO mpages " |
"(form) VALUES (?)"; |
"(form) VALUES (?)"; |