[PATCH v2 app-xdm 4/4] man: build man page using sed rather than the C preprocessor

Gaetan Nadon memsize at videotron.ca
Tue Aug 31 17:19:36 PDT 2010


This fixes misalignments to correctly display \n and \ for sample file.
No source code changes needed to fix that.

Replace XCOMM IMakefile comment with #.

Replace #if with:
.if !'x.VARNAME'x.' .ig
[man page text]
..

If $(VARNAME) is empty, the man page text is shown
If $(VARNAME) is not empty, the man page text is skipped

Or replace #if with:
.if 'VARNAME'' .ig
[man page text]
..

If $(VARNAME) is empty, the man page text is skipped
If $(VARNAME) is not empty, the man page text is shown

In DisplayManager.randomDevice, the default /dev/urandom is no longer
displayed with double-quotes which is consistent with other
default values. This was a cpp side-effect.

Tested on Debian with groff and Solaris with nroff

Co-authored-by: Alan Coopersmith <alan.coopersmith at oracle.com>
Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
---
 Makefile.am  |   39 ++++++++++++++-------------------------
 configure.ac |    9 ++++-----
 xdm.man.cpp  |   33 ++++++++++++++++++---------------
 3 files changed, 36 insertions(+), 45 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index c8e60d8..b226282 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -119,33 +119,22 @@ noinst_DATA = $(noinst_man_PRE:man.cpp=@APP_MAN_SUFFIX@)
 MAINTAINERCLEANFILES = ChangeLog INSTALL
 CLEANFILES = $(appman_DATA) $(noinst_DATA)
 EXTRA_DIST = $(appman_PRE) $(noinst_man_PRE)
-
-include $(top_srcdir)/cpprules.in
-
-XORGRELSTRING = @PACKAGE_STRING@
-  XORGMANNAME = X Version 11
-
-MANDEFS = \
-	-D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
-	-DCHOOSERPATH="$(xdmlibdir)/chooser" -DXDMLOGDIR="$(XDMLOGDIR)" \
-	-DXDMDIR="$(XDMCONFIGDIR)" -DBINDIR="$(bindir)" \
-	-DXDMPIDDIR="$(XDMPIDDIR)" -DXDMXAUTHDIR="$(XDMXAUTHDIR)" \
-	-DDEF_USER_PATH="$(DEF_USER_PATH)" \
-	-DDEF_SYSTEM_PATH="$(DEF_SYSTEM_PATH)" \
-	-DDEF_GREETER_LIB="$(DEF_GREETER_LIB)" \
-	-D__appmansuffix__=$(APP_MAN_SUFFIX) \
-	-D__filemansuffix__=$(FILE_MAN_SUFFIX) \
-	-D__libmansuffix__=$(LIB_MAN_SUFFIX) \
-	-D__miscmansuffix__=$(MISC_MAN_SUFFIX) \
-	-D__drivermansuffix__=$(DRIVER_MAN_SUFFIX) \
-	-D__adminmansuffix__=$(ADMIN_MAN_SUFFIX) 
-
-CPP_FILES_FLAGS = $(MANDEFS) $(RANDOMMANDEFS) $(EXTRAMANDEFS)
-
-SUFFIXES += .$(APP_MAN_SUFFIX) .man.cpp
+SUFFIXES   = .$(APP_MAN_SUFFIX) .man.cpp
+
+MAN_SUBSTS +=	-e 's|CHOOSERPATH|$(xdmlibdir)/chooser|g' \
+		-e 's|XDMLOGDIR|$(XDMLOGDIR)|g' \
+		-e 's|XDMDIR|$(XDMCONFIGDIR)|g' \
+		-e 's|BINDIR|$(bindir)|g' \
+		-e 's|XDMPIDDIR|$(XDMPIDDIR)|g' \
+		-e 's|XDMXAUTHDIR|$(XDMXAUTHDIR)|g' \
+		-e 's|DEF_USER_PATH|$(DEF_USER_PATH)|g' \
+		-e 's|DEF_SYSTEM_PATH|$(DEF_SYSTEM_PATH)|g' \
+		-e 's|DEF_GREETER_LIB|$(DEF_GREETER_LIB)|g' \
+		-e 's|DEV_RANDOM|$(DEV_RANDOM)|g' \
+		-e 's|ARC4_RANDOM|$(ARC4_RANDOM)|g'
 
 .man.cpp.$(APP_MAN_SUFFIX):
-	$(cpp_verbose)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@
+	$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
 
 #
 #  xdmshell
diff --git a/configure.ac b/configure.ac
index e5b9a46..dd23034 100644
--- a/configure.ac
+++ b/configure.ac
@@ -198,18 +198,17 @@ fi
 if test x$RANDOM_DEVICE != xno ; then
 	AC_DEFINE_UNQUOTED(DEV_RANDOM,"$RANDOM_DEVICE",
 		[Define to device that provides random data source])
-	RANDOMMANDEFS="$RANDOMMANDEFS -DDEV_RANDOM=\\\"$RANDOM_DEVICE\\\""
+		DEV_RANDOM=$RANDOM_DEVICE
 fi
-
+AC_SUBST(DEV_RANDOM)
 
 AC_CHECK_FUNC(arc4random, [HAS_ARC4_RANDOM="yes"], [HAS_ARC4_RANDOM="no"])
 AM_CONDITIONAL(HAS_ARC4_RANDOM, test x$HAS_ARC4_RANDOM = xyes)
 if test x$HAS_ARC4_RANDOM = xyes ; then
 	AC_DEFINE(ARC4_RANDOM, 1, [Define to use arc4random() function])
-	RANDOMMANDEFS="$RANDOMMANDEFS -DARC4_RANDOM"
+	ARC4_RANDOM=1
 fi
-
-AC_SUBST(RANDOMMANDEFS)
+AC_SUBST(ARC4_RANDOM)
 
 # FIXME: find out how to check for these things. Note that Kerberos was
 # turned off everywhere but on OpenBSD.
diff --git a/xdm.man.cpp b/xdm.man.cpp
index 2545212..dfe0fcf 100644
--- a/xdm.man.cpp
+++ b/xdm.man.cpp
@@ -343,20 +343,23 @@ in the section
 A list of additional environment variables, separated by white space,
 to pass on to the \fIXsetup\fP,
 \fIXstartup\fP, \fIXsession\fP, and \fIXreset\fP programs.
-#if !defined(ARC4_RANDOM)
+.\" The command "if 'x.A'x' .ig" causes everything up to .. to be ignored
+.\" if A is replaced by an empty string in the sed processing, otherwise
+.\" it will be output as normal.
+.if !'x.ARC4_RANDOM'x.' .ig
 .IP \fBDisplayManager.randomFile\fP
 A file to checksum to generate the seed of authorization keys.
 This should be a file that changes frequently.
 The default is \fI/dev/mem\fP.
-#endif
-#ifdef DEV_RANDOM
+..
+.if 'x.DEV_RANDOM'x.' .ig
 .IP \fBDisplayManager.randomDevice\fP
 A file to read 8 bytes from to generate the seed of authorization keys.
 The default is \fI DEV_RANDOM \fP. If this file cannot be read, or if a
 read blocks for more than 5 seconds, xdm falls back to using a checksum
 of \fBDisplayManager.randomFile\fP to generate the seed.
-#endif
-#if !defined(ARC4_RANDOM)
+..
+.if !'x.ARC4_RANDOM'x.' .ig
 .IP \fBDisplayManager.prngdSocket\fP
 .IP \fBDisplayManager.prngPort\fP
 A UNIX domain socket name or a TCP socket port number on local host on
@@ -369,7 +372,7 @@ be specified. The default is to use the Unix-domain socket
 On systems that don't have such a daemon, a fall-back entropy
 gathering system, based on various log file contents hashed by the MD5
 algorithm is used instead.
-#endif
+..
 .IP \fBDisplayManager.greeterLib\fP
 On systems that support a dynamically-loadable greeter library, the
 name of the library.  The default is
@@ -676,13 +679,13 @@ Here is an example Xaccess file:
 .LP
 .ta 2i 4i
 .nf
-XCOMM
-XCOMM Xaccess \- XDMCP access control file
-XCOMM
+#
+# Xaccess \- XDMCP access control file
+#
 
-XCOMM
-XCOMM Direct/Broadcast query entries
-XCOMM
+#
+# Direct/Broadcast query entries
+#
 
 !xtra.lcs.mit.edu	# disallow direct/broadcast service for xtra
 bambi.ogi.edu	# allow access from this particular display
@@ -691,9 +694,9 @@ bambi.ogi.edu	# allow access from this particular display
 *.deshaw.com	NOBROADCAST	# allow only direct access
 *.gw.com			# allow direct and broadcast
 
-XCOMM
-XCOMM Indirect query entries
-XCOMM
+#
+# Indirect query entries
+#
 
 %HOSTS	expo.lcs.mit.edu xenon.lcs.mit.edu \\
 	excess.lcs.mit.edu kanga.lcs.mit.edu
-- 
1.6.0.4

Second edition
Many thanks to Alan's for the s/.if ''' \{ \}/.if ''' .ig ../ fix.





More information about the xorg-devel mailing list