source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: In -p (picky) mode, warn unless each filename (aka mlink)
@ 2014-04-04 18:23 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-04-04 18:23 UTC (permalink / raw)
  To: source

Log Message:
-----------
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".

Modified Files:
--------------
    mdocml:
        mandocdb.c

Revision Data
-------------
Index: mandocdb.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mandocdb.c,v
retrieving revision 1.130
retrieving revision 1.131
diff -Lmandocdb.c -Lmandocdb.c -u -p -r1.130 -r1.131
--- mandocdb.c
+++ mandocdb.c
@@ -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 
 	 */
 
 	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 
 	 * 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 m
 	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 m
 			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);
@@ -1160,6 +1160,11 @@ mpages_merge(struct mchars *mc, struct m
 			parse_man(mpage, man_node(man));
 		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);
 
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-04-04 18:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-04 18:23 mdocml: In -p (picky) mode, warn unless each filename (aka mlink) schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).