source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: backport man(7) .Nd improvement
@ 2014-03-23 12:37 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2014-03-23 12:37 UTC (permalink / raw)
  To: source

Log Message:
-----------
backport man(7) .Nd improvement

Tags:
----
VERSION_1_12

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.49.2.14
retrieving revision 1.49.2.15
diff -Lmandocdb.c -Lmandocdb.c -u -p -r1.49.2.14 -r1.49.2.15
--- mandocdb.c
+++ mandocdb.c
@@ -1383,8 +1383,8 @@ static int
 pman_node(MAN_ARGS)
 {
 	const struct man_node *head, *body;
-	char		*start, *sv, *title;
-	size_t		 sz, titlesz;
+	char		*start, *title;
+	size_t		 sz;
 
 	if (NULL == n)
 		return(0);
@@ -1404,57 +1404,19 @@ pman_node(MAN_ARGS)
 				NULL != (head = (head->child)) &&
 				MAN_TEXT == head->type &&
 				0 == strcmp(head->string, "NAME") &&
-				NULL != (body = body->child) &&
-				MAN_TEXT == body->type) {
+				NULL != body->child) {
 
-			title = NULL;
-			titlesz = 0;
 			/*
 			 * Suck the entire NAME section into memory.
 			 * Yes, we might run away.
 			 * But too many manuals have big, spread-out
 			 * NAME sections over many lines.
 			 */
-			for ( ; NULL != body; body = body->next) {
-				if (MAN_TEXT != body->type)
-					break;
-				if (0 == (sz = strlen(body->string)))
-					continue;
-				title = mandoc_realloc
-					(title, titlesz + sz + 1);
-				memcpy(title + titlesz, body->string, sz);
-				titlesz += sz + 1;
-				title[(int)titlesz - 1] = ' ';
-			}
-			if (NULL == title)
-				return(0);
 
-			title = mandoc_realloc(title, titlesz + 1);
-			title[(int)titlesz] = '\0';
-
-			/* Skip leading space.  */
-
-			sv = title;
-			while (isspace((unsigned char)*sv))
-				sv++;
-
-			if (0 == (sz = strlen(sv))) {
-				free(title);
-				return(0);
-			}
-
-			/* Erase trailing space. */
-
-			start = &sv[sz - 1];
-			while (start > sv && isspace((unsigned char)*start))
-				*start-- = '\0';
-
-			if (start == sv) {
-				free(title);
+			title = NULL;
+			man_deroff(&title, body);
+			if (NULL == title)
 				return(0);
-			}
-
-			start = sv;
 
 			/* 
 			 * Go through a special heuristic dance here.
@@ -1466,6 +1428,7 @@ pman_node(MAN_ARGS)
 			 * the name parts here.
 			 */
 
+			start = title;
 			for ( ;; ) {
 				sz = strcspn(start, " ,");
 				if ('\0' == start[(int)sz])
@@ -1490,7 +1453,7 @@ pman_node(MAN_ARGS)
 
 			buf->len = 0;
 
-			if (sv == start) {
+			if (start == title) {
 				buf_append(buf, start);
 				free(title);
 				return(1);
--
 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-03-23 12:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-23 12:37 mdocml: backport man(7) .Nd improvement 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).