source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: Rip out the complete "reachable" checks, without replacement.
@ 2014-01-05  4:48 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-01-05  4:48 UTC (permalink / raw)
  To: source

Log Message:
-----------
Rip out the complete "reachable" checks, without replacement.
It's a pity i spent time during t2k13 writing this; however,
when an entire concept is busted, let us not look back,

There is no such thing as an unreachable page.  Even if you are crazy 
enough to put a page starting with ".Dt NAMEI 9" into a file man1/cat.1,
we now make sure that it can be found by all of the following:
Nm=namei Nm=cat sec=1 sec=9
It will always be displayed as:
cat(1) - pathname lookup
So you know that you have to type `man cat` to get at it.
That obsoletes the concept of "unreachable manuals" for good.

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.100
retrieving revision 1.101
diff -Lmandocdb.c -Lmandocdb.c -u -p -r1.100 -r1.101
--- mandocdb.c
+++ mandocdb.c
@@ -114,11 +114,6 @@ struct	mlink {
 	struct mlink	*next;    /* singly linked list */
 };
 
-struct	title {
-	char		*title; /* name(sec/arch) given inside the file */
-	char		*file; /* file name in case of mismatch */
-};
-
 enum	stmt {
 	STMT_DELETE_PAGE = 0,	/* delete mpage */
 	STMT_INSERT_PAGE,	/* insert mpage */
@@ -147,7 +142,7 @@ static	int	 mlink_check(struct mpage *, 
 static	void	 mlink_free(struct mlink *);
 static	void	 mlinks_undupe(struct mpage *);
 static	void	 mpages_free(void);
-static	void	 mpages_merge(struct mchars *, struct mparse *, int);
+static	void	 mpages_merge(struct mchars *, struct mparse *);
 static	void	 parse_cat(struct mpage *);
 static	void	 parse_man(struct mpage *, const struct man_node *);
 static	void	 parse_mdoc(struct mpage *, const struct mdoc_node *);
@@ -435,7 +430,7 @@ main(int argc, char *argv[])
 		if (OP_TEST != op)
 			dbprune();
 		if (OP_DELETE != op)
-			mpages_merge(mc, mp, 0);
+			mpages_merge(mc, mp);
 		dbclose(1);
 	} else {
 		/*
@@ -479,7 +474,7 @@ main(int argc, char *argv[])
 			if (0 == dbopen(0))
 				goto out;
 
-			mpages_merge(mc, mp, warnings && !use_all);
+			mpages_merge(mc, mp);
 			dbclose(0);
 
 			if (j + 1 < dirs.sz) {
@@ -945,19 +940,16 @@ mlink_check(struct mpage *mpage, struct 
  * and filename to determine whether the file is parsable or not.
  */
 static void
-mpages_merge(struct mchars *mc, struct mparse *mp, int check_reachable)
+mpages_merge(struct mchars *mc, struct mparse *mp)
 {
-	struct ohash		 title_table;
-	struct ohash_info	 title_info, str_info;
+	struct ohash_info	 str_info;
 	struct mpage		*mpage;
 	struct mlink		*mlink;
 	struct mdoc		*mdoc;
 	struct man		*man;
-	struct title		*title_entry;
-	char			*title_str;
 	const char		*cp;
 	int			 match;
-	unsigned int		 pslot, tslot;
+	unsigned int		 pslot;
 	enum mandoclevel	 lvl;
 
 	str_info.alloc = hash_alloc;
@@ -965,14 +957,6 @@ mpages_merge(struct mchars *mc, struct m
 	str_info.hfree = hash_free;
 	str_info.key_offset = offsetof(struct str, key);
 
-	if (check_reachable) {
-		title_info.alloc = hash_alloc;
-		title_info.halloc = hash_halloc;
-		title_info.hfree = hash_free;
-		title_info.key_offset = offsetof(struct title, title);
-		ohash_init(&title_table, 6, &title_info);
-	}
-
 	mpage = ohash_first(&mpages, &pslot);
 	while (NULL != mpage) {
 		mlinks_undupe(mpage);
@@ -1059,55 +1043,9 @@ mpages_merge(struct mchars *mc, struct m
 		else
 			parse_cat(mpage);
 
-		/*
-		 * Build a title string for the file.  If it matches
-		 * the location of the file, remember the title as
-		 * found; else, remember it as missing.
-		 */
-
-		if (check_reachable) {
-			if (-1 == asprintf(&title_str, "%s(%s%s%s)",
-			    mpage->title, mpage->sec,
-			    '\0' == *mpage->arch ? "" : "/",
-			    mpage->arch)) {
-				perror(NULL);
-				exit((int)MANDOCLEVEL_SYSERR);
-			}
-			tslot = ohash_qlookup(&title_table, title_str);
-			title_entry = ohash_find(&title_table, tslot);
-			if (NULL == title_entry) {
-				title_entry = mandoc_malloc(
-						sizeof(struct title));
-				title_entry->title = title_str;
-				title_entry->file = mandoc_strdup(
-				    match ? "" : mpage->mlinks->file);
-				ohash_insert(&title_table, tslot,
-						title_entry);
-			} else {
-				if (match)
-					*title_entry->file = '\0';
-				free(title_str);
-			}
-		}
-
 		dbindex(mpage, mc);
 		ohash_delete(&strings);
 		mpage = ohash_next(&mpages, &pslot);
-	}
-
-	if (check_reachable) {
-		title_entry = ohash_first(&title_table, &tslot);
-		while (NULL != title_entry) {
-			if ('\0' != *title_entry->file)
-				say(title_entry->file,
-			    	    "Probably unreachable, title is %s",
-				    title_entry->title);
-			free(title_entry->title);
-			free(title_entry->file);
-			free(title_entry);
-			title_entry = ohash_next(&title_table, &tslot);
-		}
-		ohash_delete(&title_table);
 	}
 }
 
--
 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-01-05  4:48 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-05  4:48 mdocml: Rip out the complete "reachable" checks, without replacement 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).