source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: schwarze@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: Make makewhatis(8) understand .so links to .gz pages.
Date: Wed, 26 Nov 2014 20:58:21 -0500 (EST)	[thread overview]
Message-ID: <4496021819862258172.enqueue@fantadrom.bsd.lv> (raw)

Log Message:
-----------
Make makewhatis(8) understand .so links to .gz pages.
Drop the FORM_GZ annotation in the mpages table; it is conceptually wrong 
because it ought to be in the mlinks table: An uncompressed .so link file
can point to a compressed manual page file and vice versa.  
Besides, it is no longer needed because mparse_open() handles it all.
Sprinkle some KNF while here.

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

Revision Data
-------------
Index: mansearch.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mansearch.c,v
retrieving revision 1.50
retrieving revision 1.51
diff -Lmansearch.c -Lmansearch.c -u -p -r1.50 -r1.51
--- mansearch.c
+++ mansearch.c
@@ -410,7 +410,6 @@ buildnames(struct manpage *mpage, sqlite
 {
 	char		*newnames, *prevsec, *prevarch;
 	const char	*oldnames, *sep1, *name, *sec, *sep2, *arch, *fsec;
-	const char	*gzip;
 	size_t		 i;
 	int		 c;
 
@@ -473,7 +472,7 @@ buildnames(struct manpage *mpage, sqlite
 
 		/* Also save the first file name encountered. */
 
-		if (NULL != mpage->file)
+		if (mpage->file != NULL)
 			continue;
 
 		if (form & FORM_SRC) {
@@ -483,22 +482,18 @@ buildnames(struct manpage *mpage, sqlite
 			sep1 = "cat";
 			fsec = "0";
 		}
-		if (form & FORM_GZ)
-			gzip = ".gz";
-		else
-			gzip = "";
-		sep2 = '\0' == *arch ? "" : "/";
-		mandoc_asprintf(&mpage->file, "%s/%s%s%s%s/%s.%s%s",
-		    path, sep1, sec, sep2, arch, name, fsec, gzip);
+		sep2 = *arch == '\0' ? "" : "/";
+		mandoc_asprintf(&mpage->file, "%s/%s%s%s%s/%s.%s",
+		    path, sep1, sec, sep2, arch, name, fsec);
 	}
-	if (SQLITE_DONE != c)
+	if (c != SQLITE_DONE)
 		fprintf(stderr, "%s\n", sqlite3_errmsg(db));
 	sqlite3_reset(s);
 
 	/* Append one final section to the names. */
 
-	if (NULL != prevsec) {
-		sep2 = '\0' == *prevarch ? "" : "/";
+	if (prevsec != NULL) {
+		sep2 = *prevarch == '\0' ? "" : "/";
 		mandoc_asprintf(&newnames, "%s(%s%s%s)",
 		    mpage->names, prevsec, sep2, prevarch);
 		free(mpage->names);
Index: mandocdb.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mandocdb.c,v
retrieving revision 1.170
retrieving revision 1.171
diff -Lmandocdb.c -Lmandocdb.c -u -p -r1.170 -r1.171
--- mandocdb.c
+++ mandocdb.c
@@ -1093,13 +1093,13 @@ mpages_merge(struct mchars *mc, struct m
 	str_info.free = hash_free;
 	str_info.key_offset = offsetof(struct str, key);
 
-	if (0 == nodb)
+	if ( ! nodb)
 		SQL_EXEC("BEGIN TRANSACTION");
 
 	mpage = ohash_first(&mpages, &pslot);
-	while (NULL != mpage) {
+	while (mpage != NULL) {
 		mlinks_undupe(mpage);
-		if (NULL == mpage->mlinks) {
+		if (mpage->mlinks == NULL) {
 			mpage = ohash_next(&mpages, &pslot);
 			continue;
 		}
@@ -1123,17 +1123,23 @@ mpages_merge(struct mchars *mc, struct m
 		 * source code, unless it is already known to be
 		 * formatted.  Fall back to formatted mode.
 		 */
-		if (FORM_CAT != mpage->mlinks->dform ||
-		    FORM_CAT != mpage->mlinks->fform) {
+		if (mpage->mlinks->dform != FORM_CAT ||
+		    mpage->mlinks->fform != FORM_CAT) {
 			lvl = mparse_readfd(mp, fd, mpage->mlinks->file);
 			if (lvl < MANDOCLEVEL_FATAL)
 				mparse_result(mp, &mdoc, &man, &sodest);
 		}
 
-		if (NULL != sodest) {
+		if (sodest != NULL) {
 			mlink_dest = ohash_find(&mlinks,
 			    ohash_qlookup(&mlinks, sodest));
-			if (NULL != mlink_dest) {
+			if (mlink_dest == NULL) {
+				mandoc_asprintf(&cp, "%s.gz", sodest);
+				mlink_dest = ohash_find(&mlinks,
+				    ohash_qlookup(&mlinks, cp));
+				free(cp);
+			}
+			if (mlink_dest != NULL) {
 
 				/* The .so target exists. */
 
@@ -1154,7 +1160,7 @@ mpages_merge(struct mchars *mc, struct m
 					if (mpage_dest->pageid)
 						dbadd_mlink_name(mlink);
 
-					if (NULL == mlink->next)
+					if (mlink->next == NULL)
 						break;
 					mlink = mlink->next;
 				}
@@ -1166,17 +1172,17 @@ mpages_merge(struct mchars *mc, struct m
 				mpage->mlinks = NULL;
 			}
 			goto nextpage;
-		} else if (NULL != mdoc) {
+		} else if (mdoc != NULL) {
 			mpage->form = FORM_SRC;
 			mpage->sec = mdoc_meta(mdoc)->msec;
 			mpage->sec = mandoc_strdup(
-			    NULL == mpage->sec ? "" : mpage->sec);
+			    mpage->sec == NULL ? "" : mpage->sec);
 			mpage->arch = mdoc_meta(mdoc)->arch;
 			mpage->arch = mandoc_strdup(
-			    NULL == mpage->arch ? "" : mpage->arch);
+			    mpage->arch == NULL ? "" : mpage->arch);
 			mpage->title =
 			    mandoc_strdup(mdoc_meta(mdoc)->title);
-		} else if (NULL != man) {
+		} else if (man != NULL) {
 			mpage->form = FORM_SRC;
 			mpage->sec =
 			    mandoc_strdup(man_meta(man)->msec);
@@ -1193,8 +1199,6 @@ mpages_merge(struct mchars *mc, struct m
 			mpage->title =
 			    mandoc_strdup(mpage->mlinks->name);
 		}
-		if (mpage->mlinks->gzip)
-			mpage->form |= FORM_GZ;
 		putkey(mpage, mpage->sec, TYPE_sec);
 		if (*mpage->arch != '\0')
 			putkey(mpage, mpage->arch, TYPE_arch);
Index: mansearch.h
===================================================================
RCS file: /home/cvs/mdocml/mdocml/mansearch.h,v
retrieving revision 1.20
retrieving revision 1.21
diff -Lmansearch.h -Lmansearch.h -u -p -r1.20 -r1.21
--- mansearch.h
+++ mansearch.h
@@ -70,7 +70,6 @@
 
 #define	FORM_CAT	 0  /* manual page is preformatted */
 #define	FORM_SRC	 1  /* format is mdoc(7) or man(7) */
-#define	FORM_GZ		 2  /* compressed with gzip(1) */
 #define	FORM_NONE	 4  /* format is unknown */
 
 enum	argmode {
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

                 reply	other threads:[~2014-11-27  1:58 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4496021819862258172.enqueue@fantadrom.bsd.lv \
    --to=schwarze@mdocml.bsd.lv \
    --cc=source@mdocml.bsd.lv \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).