Module Name:    src
Committed By:   christos
Date:           Mon Jun 24 12:56:22 UTC 2013

Modified Files:
        src/libexec/makewhatis: makewhatis.c

Log Message:
PR/47958: Robert Kovacic: makewhatis.c not generating entries in whatisdb
for POD generated pages


To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 src/libexec/makewhatis/makewhatis.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/libexec/makewhatis/makewhatis.c
diff -u src/libexec/makewhatis/makewhatis.c:1.47 src/libexec/makewhatis/makewhatis.c:1.48
--- src/libexec/makewhatis/makewhatis.c:1.47	Thu Apr  2 17:39:33 2009
+++ src/libexec/makewhatis/makewhatis.c	Mon Jun 24 08:56:22 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: makewhatis.c,v 1.47 2009/04/02 21:39:33 apb Exp $	*/
+/*	$NetBSD: makewhatis.c,v 1.48 2013/06/24 12:56:22 christos Exp $	*/
 
 /*-
  * Copyright (c) 1999 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
 #if !defined(lint)
 __COPYRIGHT("@(#) Copyright (c) 1999\
  The NetBSD Foundation, Inc.  All rights reserved.");
-__RCSID("$NetBSD: makewhatis.c,v 1.47 2009/04/02 21:39:33 apb Exp $");
+__RCSID("$NetBSD: makewhatis.c,v 1.48 2013/06/24 12:56:22 christos Exp $");
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -871,6 +871,8 @@ static char *
 parsemanpage(const char *name, gzFile *in, int defaultsection)
 {
 	char	*section, buffer[8192], *ptr;
+	static const char POD[] = ".\\\" Automatically generated by Pod";
+	static const char IX[] = ".IX TITLE";
 
 	section = NULL;
 	do {
@@ -878,6 +880,24 @@ parsemanpage(const char *name, gzFile *i
 			free(section);
 			return NULL;
 		}
+
+		/*
+		 * Skip over lines in man pages that have been generated
+		 * by Pod, until we find the TITLE. This makewhatis cannot
+		 * deal with it (and as * a result the man page would not
+		 * appear in whatis.db)
+		 * Modified by Robert Kovacic, June 23 2013.
+		 */
+		if (strncasecmp(buffer, POD, sizeof(POD) - 1) == 0) {
+			do {
+				if (GetS(in, buffer, sizeof(buffer) - 1)
+				    == NULL) {
+					free(section);
+					return NULL;
+				}
+			} while (strncasecmp(buffer, IX, sizeof(IX) - 1) != 0);
+		} 
+
 		if (manpreprocess(buffer))
 			continue;
 		if (strncasecmp(buffer, ".Dt", 3) == 0) {

Reply via email to