source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: In man(7), when no explicit volume name is given, use the
@ 2011-12-02  1:37 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2011-12-02  1:37 UTC (permalink / raw)
  To: source

Log Message:
-----------
In man(7), when no explicit volume name is given, use the default
volume name for the respective manual section, just like in mdoc(7).
This gives us nicer page headers for cvs(1), lynx(1), tic(1),
mkhybrid(8), and many curses(3) manuals.

ok kristaps@

To not break compatibility, i wrote a corresponding patch for GNU troff
which Werner Lemberg accepted upstream at rev. 1.65 of:
http://cvs.savannah.gnu.org/viewvc/groff/tmac/an-old.tmac?root=groff

Modified Files:
--------------
    mdocml:
        Makefile
        libmandoc.h
        libmdoc.h
        man.7
        man_validate.c
        mdoc_validate.c
        msec.c

Revision Data
-------------
Index: man.7
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man.7,v
retrieving revision 1.111
retrieving revision 1.112
diff -Lman.7 -Lman.7 -u -p -r1.111 -r1.112
--- man.7
+++ man.7
@@ -840,6 +840,19 @@ The
 .Sx \&sp
 macro does not accept negative values in mandoc.
 In GNU troff, this would result in strange behaviour.
+.It
+In page header lines, GNU troff versions up to and including 1.21
+only print
+.Ar volume
+names explicitly specified in the
+.Sx \&TH
+macro; mandoc and newer groff print the default volume name
+corresponding to the
+.Ar section
+number when no
+.Ar volume
+is given, like in
+.Xr mdoc 7 .
 .El
 .Sh SEE ALSO
 .Xr man 1 ,
Index: mdoc_validate.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/mdoc_validate.c,v
retrieving revision 1.179
retrieving revision 1.180
diff -Lmdoc_validate.c -Lmdoc_validate.c -u -p -r1.179 -r1.180
--- mdoc_validate.c
+++ mdoc_validate.c
@@ -2084,7 +2084,7 @@ post_dt(POST_ARGS)
 	 *       arch = NULL
 	 */
 
-	cp = mdoc_a2msec(nn->string);
+	cp = mandoc_a2msec(nn->string);
 	if (cp) {
 		mdoc->meta.vol = mandoc_strdup(cp);
 		mdoc->meta.msec = mandoc_strdup(nn->string);
Index: libmdoc.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/libmdoc.h,v
retrieving revision 1.77
retrieving revision 1.78
diff -Llibmdoc.h -Llibmdoc.h -u -p -r1.77 -r1.78
--- libmdoc.h
+++ libmdoc.h
@@ -124,7 +124,6 @@ const char	 *mdoc_a2lib(const char *);
 const char	 *mdoc_a2st(const char *);
 const char	 *mdoc_a2arch(const char *);
 const char	 *mdoc_a2vol(const char *);
-const char	 *mdoc_a2msec(const char *);
 int		  mdoc_valid_pre(struct mdoc *, struct mdoc_node *);
 int		  mdoc_valid_post(struct mdoc *);
 enum margverr	  mdoc_argv(struct mdoc *, int, enum mdoct,
Index: msec.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/msec.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -Lmsec.c -Lmsec.c -u -p -r1.9 -r1.10
--- msec.c
+++ msec.c
@@ -21,15 +21,14 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "mdoc.h"
 #include "mandoc.h"
-#include "libmdoc.h"
+#include "libmandoc.h"
 
 #define LINE(x, y) \
 	if (0 == strcmp(p, x)) return(y);
 
 const char *
-mdoc_a2msec(const char *p)
+mandoc_a2msec(const char *p)
 {
 
 #include "msec.in"
Index: Makefile
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/Makefile,v
retrieving revision 1.384
retrieving revision 1.385
diff -LMakefile -LMakefile -u -p -r1.384 -r1.385
--- Makefile
+++ Makefile
@@ -173,7 +173,6 @@ LIBMDOC_OBJS	 = arch.o \
 		   mdoc_hash.o \
 		   mdoc_macro.o \
 		   mdoc_validate.o \
-		   msec.o \
 		   st.o \
 		   vol.o
 LIBMDOC_LNS	 = arch.ln \
@@ -184,7 +183,6 @@ LIBMDOC_LNS	 = arch.ln \
 		   mdoc_hash.ln \
 		   mdoc_macro.ln \
 		   mdoc_validate.ln \
-		   msec.ln \
 		   st.ln \
 		   vol.ln
 
@@ -206,12 +204,14 @@ LIBMANDOC_OBJS	 = $(LIBMAN_OBJS) \
 		   $(LIBROFF_OBJS) \
 		   chars.o \
 		   mandoc.o \
+		   msec.o \
 		   read.o
 LIBMANDOC_LNS	 = $(LIBMAN_LNS) \
 		   $(LIBMDOC_LNS) \
 		   $(LIBROFF_LNS) \
 		   chars.ln \
 		   mandoc.ln \
+		   msec.ln \
 		   read.ln
 
 COMPAT_OBJS	 = compat_getsubopt.o \
Index: man_validate.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/man_validate.c,v
retrieving revision 1.78
retrieving revision 1.79
diff -Lman_validate.c -Lman_validate.c -u -p -r1.78 -r1.79
--- man_validate.c
+++ man_validate.c
@@ -413,9 +413,13 @@ post_TH(CHKARGS)
 		m->meta.source = mandoc_strdup(n->string);
 
 	/* TITLE MSEC DATE SOURCE ->VOL<- */
+	/* If missing, use the default VOL name for MSEC. */
 
 	if (n && (n = n->next))
 		m->meta.vol = mandoc_strdup(n->string);
+	else if ('\0' != m->meta.msec[0] &&
+	    (NULL != (p = mandoc_a2msec(m->meta.msec))))
+		m->meta.vol = mandoc_strdup(p);
 
 	/*
 	 * Remove the `TH' node after we've processed it for our
Index: libmandoc.h
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/libmandoc.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -Llibmandoc.h -Llibmandoc.h -u -p -r1.28 -r1.29
--- libmandoc.h
+++ libmandoc.h
@@ -49,6 +49,7 @@ char		*mandoc_normdate(struct mparse *, 
 int		 mandoc_eos(const char *, size_t, int);
 int		 mandoc_getcontrol(const char *, int *);
 int		 mandoc_strntoi(const char *, size_t, int);
+const char	*mandoc_a2msec(const char*);
 
 void	 	 mdoc_free(struct mdoc *);
 struct	mdoc	*mdoc_alloc(struct roff *, struct mparse *);
--
 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:[~2011-12-02  1:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-02  1:37 mdocml: In man(7), when no explicit volume name is given, use the 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).