summaryrefslogtreecommitdiffstats
path: root/mandocdb.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2013-06-05 20:27:11 +0000
committerIngo Schwarze <schwarze@openbsd.org>2013-06-05 20:27:11 +0000
commit694118b909b0079ec52bf9b32a664abe3edd7d81 (patch)
tree9328d46085d9cbf43afdee434413242570722657 /mandocdb.c
parente1bfc53dbc2352e5f1c40ee55b788ad8614f8882 (diff)
downloadmandoc-694118b909b0079ec52bf9b32a664abe3edd7d81.tar.gz
Two sanity checks got lost in treescan()
during the switch from db to sqlite; restore these: * Warn and skip when directory and file name mismatch. * Warn and skip when finding special files. * Warning about "mandocdb.db" is useless, it is always present. * While here, do not hardcode "mandocdb.db", use MANDOC_DB.
Diffstat (limited to 'mandocdb.c')
-rw-r--r--mandocdb.c65
1 files changed, 36 insertions, 29 deletions
diff --git a/mandocdb.c b/mandocdb.c
index fe0579f5..3fbe8296 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -567,6 +567,8 @@ treescan(void)
* Disallow duplicate (hard-linked) files.
*/
if (FTS_F == ff->fts_info) {
+ if (0 == strcmp(path, MANDOC_DB))
+ continue;
if ( ! use_all && ff->fts_level < 2) {
if (warnings)
say(path, "Extraneous file");
@@ -575,45 +577,50 @@ treescan(void)
if (warnings)
say(path, "Duplicate file");
continue;
- }
-
- cp = ff->fts_name;
-
- if (0 == strcmp(cp, "mandocdb.db")) {
- if (warnings)
- say(path, "Skip database");
- continue;
- } else if (NULL != (cp = strrchr(cp, '.'))) {
- if (0 == strcmp(cp + 1, "html")) {
+ } else if (NULL == (sec =
+ strrchr(ff->fts_name, '.'))) {
+ if ( ! use_all) {
if (warnings)
- say(path, "Skip html");
- continue;
- } else if (0 == strcmp(cp + 1, "gz")) {
- if (warnings)
- say(path, "Skip gz");
- continue;
- } else if (0 == strcmp(cp + 1, "ps")) {
- if (warnings)
- say(path, "Skip ps");
- continue;
- } else if (0 == strcmp(cp + 1, "pdf")) {
- if (warnings)
- say(path, "Skip pdf");
+ say(path,
+ "No filename suffix");
continue;
}
- }
-
- if (NULL != (sec = strrchr(ff->fts_name, '.'))) {
- *sec = '\0';
- sec = stradd(sec + 1);
+ } else if (0 == strcmp(++sec, "html")) {
+ if (warnings)
+ say(path, "Skip html");
+ continue;
+ } else if (0 == strcmp(sec, "gz")) {
+ if (warnings)
+ say(path, "Skip gz");
+ continue;
+ } else if (0 == strcmp(sec, "ps")) {
+ if (warnings)
+ say(path, "Skip ps");
+ continue;
+ } else if (0 == strcmp(sec, "pdf")) {
+ if (warnings)
+ say(path, "Skip pdf");
+ continue;
+ } else if ( ! use_all &&
+ ((FORM_SRC == dform && strcmp(sec, dsec)) ||
+ (FORM_CAT == dform && strcmp(sec, "0")))) {
+ if (warnings)
+ say(path, "Wrong filename suffix");
+ continue;
+ } else {
+ sec[-1] = '\0';
+ sec = stradd(sec);
}
name = stradd(ff->fts_name);
ofadd(dform, path,
name, dsec, sec, arch, ff->fts_statp);
continue;
} else if (FTS_D != ff->fts_info &&
- FTS_DP != ff->fts_info)
+ FTS_DP != ff->fts_info) {
+ if (warnings)
+ say(path, "Not a regular file");
continue;
+ }
switch (ff->fts_level) {
case (0):