From 4a2a147f948be452ddfb31352aab00091bb58e50 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Fri, 4 Apr 2014 18:23:30 +0000 Subject: In -p (picky) mode, warn unless each filename (aka mlink) appears as a name in the NAME section. While here, garbage collect two unused variables, both called "match". --- mandocdb.c | 55 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 25 deletions(-) (limited to 'mandocdb.c') diff --git a/mandocdb.c b/mandocdb.c index 90bfd1ef..14dea417 100644 --- a/mandocdb.c +++ b/mandocdb.c @@ -1,4 +1,4 @@ -/* $Id: mandocdb.c,v 1.130 2014/04/04 16:43:16 schwarze Exp $ */ +/* $Id: mandocdb.c,v 1.131 2014/04/04 18:23:30 schwarze Exp $ */ /* * Copyright (c) 2011, 2012 Kristaps Dzonsons * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze @@ -147,7 +147,7 @@ static void *hash_alloc(size_t, void *); static void hash_free(void *, size_t, void *); static void *hash_halloc(size_t, void *); static void mlink_add(struct mlink *, const struct stat *); -static int mlink_check(struct mpage *, struct mlink *); +static void mlink_check(struct mpage *, struct mlink *); static void mlink_free(struct mlink *); static void mlinks_undupe(struct mpage *); static void mpages_free(void); @@ -924,12 +924,11 @@ nextlink: } } -static int +static void mlink_check(struct mpage *mpage, struct mlink *mlink) { - int match; - - match = 1; + struct str *str; + unsigned int slot; /* * Check whether the manual section given in a file @@ -941,11 +940,9 @@ mlink_check(struct mpage *mpage, struct mlink *mlink) */ if (FORM_SRC == mpage->form && - strcasecmp(mpage->sec, mlink->dsec)) { - match = 0; + strcasecmp(mpage->sec, mlink->dsec)) say(mlink->file, "Section \"%s\" manual in %s directory", mpage->sec, mlink->dsec); - } /* * Manual page directories exist for each kernel @@ -960,16 +957,28 @@ mlink_check(struct mpage *mpage, struct mlink *mlink) * on amd64, i386, sparc, and sparc64. */ - if (strcasecmp(mpage->arch, mlink->arch)) { - match = 0; + if (strcasecmp(mpage->arch, mlink->arch)) say(mlink->file, "Architecture \"%s\" manual in " "\"%s\" directory", mpage->arch, mlink->arch); - } - if (strcasecmp(mpage->title, mlink->name)) - match = 0; + /* + * XXX + * parse_cat() doesn't set TYPE_Nm and TYPE_NAME yet. + */ + + if (FORM_CAT == mpage->form) + return; + + /* + * Check whether this mlink + * appears as a name in the NAME section. + */ - return(match); + slot = ohash_qlookup(&strings, mlink->name); + str = ohash_find(&strings, slot); + assert(NULL != str); + if ( ! (TYPE_NAME & str->mask)) + say(mlink->file, "Name missing in NAME section"); } /* @@ -992,7 +1001,7 @@ mpages_merge(struct mchars *mc, struct mparse *mp) char *sodest; char *cp; pid_t child_pid; - int match, status; + int status; unsigned int pslot; enum mandoclevel lvl; @@ -1140,15 +1149,6 @@ mpages_merge(struct mchars *mc, struct mparse *mp) putkey(mpage, mlink->name, TYPE_Nm); } - if (warnings && !use_all) { - match = 0; - for (mlink = mpage->mlinks; mlink; - mlink = mlink->next) - if (mlink_check(mpage, mlink)) - match = 1; - } else - match = 1; - if (NULL != mdoc) { if (NULL != (cp = mdoc_meta(mdoc)->name)) putkey(mpage, cp, TYPE_Nm); @@ -1161,6 +1161,11 @@ mpages_merge(struct mchars *mc, struct mparse *mp) else parse_cat(mpage, fd[0]); + if (warnings && !use_all) + for (mlink = mpage->mlinks; mlink; + mlink = mlink->next) + mlink_check(mpage, mlink); + dbadd(mpage, mc); nextpage: -- cgit v1.2.3-56-ge451