aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mandocdb.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-10-12 00:32:55 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-10-12 00:32:55 +0000
commite8386453e665d523d7de82cd5ae291f0e9609bd5 (patch)
tree151edb007be0f5868f1b43c9ff58f792e62b9d1c /mandocdb.c
parentaaa5d1ca1a2cd9ee706ee668753bf556fd2fe433 (diff)
downloadmandoc-e8386453e665d523d7de82cd5ae291f0e9609bd5.tar.gz
mandoc-e8386453e665d523d7de82cd5ae291f0e9609bd5.tar.zst
mandoc-e8386453e665d523d7de82cd5ae291f0e9609bd5.zip
Clear dform and dsec when exiting a first-level directory in treescan().
Fixes a segfault reported by bentley@. While here, do some style cleanup in the same function.
Diffstat (limited to 'mandocdb.c')
-rw-r--r--mandocdb.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/mandocdb.c b/mandocdb.c
index b7644fd8..6418f64d 100644
--- a/mandocdb.c
+++ b/mandocdb.c
@@ -1,4 +1,4 @@
-/* $Id: mandocdb.c,v 1.199 2015/10/12 00:08:15 schwarze Exp $ */
+/* $Id: mandocdb.c,v 1.200 2015/10/12 00:32:55 schwarze Exp $ */
/*
* Copyright (c) 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2011-2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -584,7 +584,7 @@ treescan(void)
f = fts_open((char * const *)argv,
FTS_PHYSICAL | FTS_NOCHDIR, NULL);
- if (NULL == f) {
+ if (f == NULL) {
exitcode = (int)MANDOCLEVEL_SYSERR;
say("", "&fts_open");
return 0;
@@ -593,7 +593,7 @@ treescan(void)
dsec = arch = NULL;
dform = FORM_NONE;
- while (NULL != (ff = fts_read(f))) {
+ while ((ff = fts_read(f)) != NULL) {
path = ff->fts_path + 2;
switch (ff->fts_info) {
@@ -602,7 +602,7 @@ treescan(void)
* then get handled just like regular files.
*/
case FTS_SL:
- if (NULL == realpath(path, buf)) {
+ if (realpath(path, buf) == NULL) {
if (warnings)
say(path, "&realpath");
continue;
@@ -617,7 +617,7 @@ treescan(void)
continue;
}
/* Use logical inode to avoid mpages dupe. */
- if (-1 == stat(path, ff->fts_statp)) {
+ if (stat(path, ff->fts_statp) == -1) {
if (warnings)
say(path, "&stat");
continue;
@@ -629,7 +629,7 @@ treescan(void)
* stored directory data and handling the filename.
*/
case FTS_F:
- if (0 == strcmp(path, MANDOC_DB))
+ if ( ! strcmp(path, MANDOC_DB))
continue;
if ( ! use_all && ff->fts_level < 2) {
if (warnings)
@@ -638,37 +638,37 @@ treescan(void)
}
gzip = 0;
fsec = NULL;
- while (NULL == fsec) {
+ while (fsec == NULL) {
fsec = strrchr(ff->fts_name, '.');
- if (NULL == fsec || strcmp(fsec+1, "gz"))
+ if (fsec == NULL || strcmp(fsec+1, "gz"))
break;
gzip = 1;
*fsec = '\0';
fsec = NULL;
}
- if (NULL == fsec) {
+ if (fsec == NULL) {
if ( ! use_all) {
if (warnings)
say(path,
"No filename suffix");
continue;
}
- } else if (0 == strcmp(++fsec, "html")) {
+ } else if ( ! strcmp(++fsec, "html")) {
if (warnings)
say(path, "Skip html");
continue;
- } else if (0 == strcmp(fsec, "ps")) {
+ } else if ( ! strcmp(fsec, "ps")) {
if (warnings)
say(path, "Skip ps");
continue;
- } else if (0 == strcmp(fsec, "pdf")) {
+ } else if ( ! strcmp(fsec, "pdf")) {
if (warnings)
say(path, "Skip pdf");
continue;
} else if ( ! use_all &&
- ((FORM_SRC == dform &&
+ ((dform == FORM_SRC &&
strncmp(fsec, dsec, strlen(dsec))) ||
- (FORM_CAT == dform && strcmp(fsec, "0")))) {
+ (dform == FORM_CAT && strcmp(fsec, "0")))) {
if (warnings)
say(path, "Wrong filename suffix");
continue;
@@ -713,13 +713,16 @@ treescan(void)
* If we're not in use_all, enforce it.
*/
cp = ff->fts_name;
- if (FTS_DP == ff->fts_info)
+ if (ff->fts_info == FTS_DP) {
+ dform = FORM_NONE;
+ dsec = NULL;
break;
+ }
- if (0 == strncmp(cp, "man", 3)) {
+ if ( ! strncmp(cp, "man", 3)) {
dform = FORM_SRC;
dsec = cp + 3;
- } else if (0 == strncmp(cp, "cat", 3)) {
+ } else if ( ! strncmp(cp, "cat", 3)) {
dform = FORM_CAT;
dsec = cp + 3;
} else {
@@ -727,7 +730,7 @@ treescan(void)
dsec = NULL;
}
- if (NULL != dsec || use_all)
+ if (dsec != NULL || use_all)
break;
if (warnings)
@@ -739,13 +742,13 @@ treescan(void)
* Possibly our architecture.
* If we're descending, keep tabs on it.
*/
- if (FTS_DP != ff->fts_info && NULL != dsec)
+ if (ff->fts_info != FTS_DP && dsec != NULL)
arch = ff->fts_name;
else
arch = NULL;
break;
default:
- if (FTS_DP == ff->fts_info || use_all)
+ if (ff->fts_info == FTS_DP || use_all)
break;
if (warnings)
say(path, "Extraneous directory part");