]> git.cameronkatri.com Git - mandoc.git/commitdiff
In -p (picky) mode, warn unless each filename (aka mlink)
authorIngo Schwarze <schwarze@openbsd.org>
Fri, 4 Apr 2014 18:23:30 +0000 (18:23 +0000)
committerIngo Schwarze <schwarze@openbsd.org>
Fri, 4 Apr 2014 18:23:30 +0000 (18:23 +0000)
appears as a name in the NAME section.
While here, garbage collect two unused variables, both called "match".

mandocdb.c

index 90bfd1ef1a747dc5048912e7f0a002753999ce4d..14dea417e918131328660ebcfa5807759ac4ecac 100644 (file)
@@ -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 <kristaps@bsd.lv>
  * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -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: