From 5b6c9ca5203b5fe675422a6ef8972e5e11b1e140 Mon Sep 17 00:00:00 2001 From: Bruno Victal Date: Mon, 9 Oct 2023 21:05:59 +0100 Subject: [PATCH] gnu: docbook-utils: Import patches from debian. * gnu/packages/docbook.scm (docbook-utils)[source]: Import patches from debian. Drop snippet for patching OpenSP and OpenJade. [native-inputs]: Add autoconf, automake and libtool. * gnu/packages/patches/docbook-utils-documentation-edits.patch: New file. * gnu/packages/patches/docbook-utils-escape-characters.patch: Ditto. * gnu/packages/patches/docbook-utils-remove-jade-sp.patch: Ditto. * gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch: Ditto. * gnu/packages/patches/docbook-utils-source-date-epoch.patch: Ditto. * gnu/packages/patches/docbook-utils-use-date-element.patch: Ditto. * gnu/local.mk: Register them. Signed-off-by: Maxim Cournoyer --- gnu/local.mk | 6 + gnu/packages/docbook.scm | 23 +- .../docbook-utils-documentation-edits.patch | 102 +++++++++ .../docbook-utils-escape-characters.patch | 36 +++ .../docbook-utils-remove-jade-sp.patch | 216 ++++++++++++++++++ ...book-utils-respect-refentry-for-name.patch | 36 +++ .../docbook-utils-source-date-epoch.patch | 31 +++ .../docbook-utils-use-date-element.patch | 63 +++++ 8 files changed, 505 insertions(+), 8 deletions(-) create mode 100644 gnu/packages/patches/docbook-utils-documentation-edits.patch create mode 100644 gnu/packages/patches/docbook-utils-escape-characters.patch create mode 100644 gnu/packages/patches/docbook-utils-remove-jade-sp.patch create mode 100644 gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch create mode 100644 gnu/packages/patches/docbook-utils-source-date-epoch.patch create mode 100644 gnu/packages/patches/docbook-utils-use-date-element.patch diff --git a/gnu/local.mk b/gnu/local.mk index 8c2aff524c..a88fce02c7 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1124,6 +1124,12 @@ dist_patch_DATA = \ %D%/packages/patches/diffutils-fix-signal-processing.patch \ %D%/packages/patches/directfb-davinci-glibc-228-compat.patch \ %D%/packages/patches/dkimproxy-add-ipv6-support.patch \ + %D%/packages/patches/docbook-utils-documentation-edits.patch \ + %D%/packages/patches/docbook-utils-escape-characters.patch \ + %D%/packages/patches/docbook-utils-remove-jade-sp.patch \ + %D%/packages/patches/docbook-utils-respect-refentry-for-name.patch \ + %D%/packages/patches/docbook-utils-source-date-epoch.patch \ + %D%/packages/patches/docbook-utils-use-date-element.patch \ %D%/packages/patches/doc++-include-directives.patch \ %D%/packages/patches/doc++-segfault-fix.patch \ %D%/packages/patches/dovecot-opensslv3.patch \ diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm index f310b8f7b8..8f973d0814 100644 --- a/gnu/packages/docbook.scm +++ b/gnu/packages/docbook.scm @@ -773,18 +773,20 @@ DB2LaTeX.") (sha256 (base32 "1scj5vgw1xz872pq54a89blcxqqm11p90yzv8a9mqq57x27apyj8")) + (patches + (search-patches "docbook-utils-documentation-edits.patch" + "docbook-utils-escape-characters.patch" + "docbook-utils-remove-jade-sp.patch" + "docbook-utils-respect-refentry-for-name.patch" + "docbook-utils-use-date-element.patch" + "docbook-utils-source-date-epoch.patch")) (modules '((guix build utils))) (snippet #~(begin ;; Patch build system. - (substitute* (find-files "." "\\.in$") + (substitute* (find-files "." "\\.(in|am)$") ;; Do not hard-code SGML_CATALOG_FILES. - ((".*SGML_CATALOG_FILES=/etc/sgml/catalog.*") "") - ;; Use OpenSP and OpenJade. - (("\\bjade\\b") - "openjade") - (("\\bnsgmls\\b") - "onsgmls")) + ((".*SGML_CATALOG_FILES=/etc/sgml/catalog.*") "")) ;; Do not override the SGML_CATALOG_FILES environment ;; variable. @@ -804,7 +806,12 @@ DB2LaTeX.") (("CONVERT=/usr/bin/") "CONVERT=") (("\\[ -x /usr/bin/([^ ]+) \\]" _ command) - (format #f "command -v ~a > /dev/null" command))))))) + (format #f "command -v ~a > /dev/null" command))) + + ;; This forces autoreconf to be invoked, needed for patches + ;; to be effective. + (delete-file "configure"))))) + (native-inputs (list autoconf automake libtool)) (build-system gnu-build-system) ;; Propagated for convenience. All these tools are used at run time to ;; provide the complete functionality of the docbook-utils commands. diff --git a/gnu/packages/patches/docbook-utils-documentation-edits.patch b/gnu/packages/patches/docbook-utils-documentation-edits.patch new file mode 100644 index 0000000000..7258d12675 --- /dev/null +++ b/gnu/packages/patches/docbook-utils-documentation-edits.patch @@ -0,0 +1,102 @@ +# Source: + +Description: Fix some typos in man pages +Author: Mathieu Malaterre + +Index: docbook-utils-0.6.14/doc/man/docbook2man-spec.pl.1 +=================================================================== +--- docbook-utils-0.6.14.orig/doc/man/docbook2man-spec.pl.1 2012-05-09 18:39:17.932819095 +0200 ++++ docbook-utils-0.6.14/doc/man/docbook2man-spec.pl.1 2012-05-09 18:39:24.780818845 +0200 +@@ -17,7 +17,7 @@ + .SH "DESCRIPTION" + .PP + \fBdocbook2man\fR is a sgmlspl spec file that produced man +-pages (using the -man macros) from DocBook RefEntry markup. ++pages (using the \-man macros) from DocBook RefEntry markup. + .PP + The program reads ESIS produced by nsgmls (or other SGML parsers) from + standard input. Markup not found in RefEntry is discarded. +Index: docbook-utils-0.6.14/doc/man/frontend-spec.7 +=================================================================== +--- docbook-utils-0.6.14.orig/doc/man/frontend-spec.7 2012-05-09 18:41:45.172813778 +0200 ++++ docbook-utils-0.6.14/doc/man/frontend-spec.7 2012-05-09 18:42:03.176813129 +0200 +@@ -10,7 +10,7 @@ + .SH "DESCRIPTION" + .PP + \fBjw\fR(1) calls frontends like +-\fIfrontends/docbook\fR to get the informations ++\fIfrontends/docbook\fR to get the information + specific to a given input format. The frontend knows which information + to return from the first command line parameter. It gets all necessary + data via environment variables ready to use. +Index: docbook-utils-0.6.14/doc/man/jw.1 +=================================================================== +--- docbook-utils-0.6.14.orig/doc/man/jw.1 2012-05-09 18:39:35.612818456 +0200 ++++ docbook-utils-0.6.14/doc/man/jw.1 2012-05-09 18:40:51.736815708 +0200 +@@ -142,7 +142,7 @@ + The following options apply to the conversion script: + .TP + \fB -f \fIfrontend\fB | --frontend \fIfrontend\fB \fR +-Allows to specify another frontend than default \fIdocbook\fR\&. ++Allows one to specify another frontend than default \fIdocbook\fR\&. + The list of currently available frontends is: + .RS + .TP +@@ -156,13 +156,13 @@ + .RE + .TP + \fB -b \fIbackend\fB | --backend \fIbackend\fB \fR +-Allows to specify another backend than default ++Allows one to specify another backend than default + \fIHTML\fR\&. The list of currently available + backends is: + .RS + .TP + \fB\fIdvi\fB\fR +-Converts to DVI (DeVice Independant ++Converts to DVI (DeVice Independent + files) by calling \fBJade\fR or + \fBOpenJade\fR\&. + .TP +@@ -210,7 +210,7 @@ + .RE + .TP + \fB -c \fIfile\fB | --cat \fIfile\fB \fR +-Allows to use an extra SGML Open Catalog that will list ++Allows one to use an extra SGML Open Catalog that will list + other files like customization style sheets, adaptations to the + DocBook Document Type Definition, special character entities, + etc. This catalog is added to the list of catalogs determined +@@ -241,7 +241,7 @@ + are specified on the command line. + .TP + \fB -d \fIfile\fB|default|none | --dsl \fIfile\fB|default|none \fR +-Allows to use a customized style sheet instead ++Allows one to use a customized style sheet instead + of the default one. + + A "target" starting with a hash mark "#" can be appended +Index: docbook-utils-0.6.14/doc/man/sgmldiff.1 +=================================================================== +--- docbook-utils-0.6.14.orig/doc/man/sgmldiff.1 2012-05-09 18:41:13.316814927 +0200 ++++ docbook-utils-0.6.14/doc/man/sgmldiff.1 2012-05-09 18:41:38.032814038 +0200 +@@ -17,7 +17,7 @@ + + .SH "DESCRIPTION" + .PP +-This perl script allows to determine the structural differences ++This perl script allows one to determine the structural differences + between two SGML files. It compares the files, regardless of what + is in between the tags, to only focus on the markup. Its output + is similar to \fBdiff\fR(1)\&. +@@ -62,8 +62,8 @@ + Lines 5 to 7 of the first file have been changed + into lines 8 to 10 of the second line. + In addition to those summaries, the lines of the first file are +-shown preceeded by '<' and the lines of the second file are +-shown preceeded by '>". ++shown preceded by '<' and the lines of the second file are ++shown preceded by '>". + .SH "OPTIONS" + .PP + Here is the list of actions that can be requested to diff --git a/gnu/packages/patches/docbook-utils-escape-characters.patch b/gnu/packages/patches/docbook-utils-escape-characters.patch new file mode 100644 index 0000000000..3845ee6238 --- /dev/null +++ b/gnu/packages/patches/docbook-utils-escape-characters.patch @@ -0,0 +1,36 @@ +# Source: + +Description: incorrectly strips whitespace (patch included) + In the previous upload, docbook2man was patched to escape the special + characters . and ' at the beginning of a line (see #399947). + Unfortunately that patch was incorrect -- as well as escaping the special + characters, it also removes all whitespace from the beginning of + affected lines. As a result, if you are in a block where whitespace + matters (such as ...) then the output is now incorrect. + + This is very easy to fix -- just match the whitespace and preserve it, + instead of tossing it away. The full patch (just two lines) is included + below. +Author: Ben Burton +Forwarded: not-needed +Bug-Debian: http://bugs.debian.org/528334 + +Edit by Bruno Victal : + Patch was edited so that it could be applied against the original + docbook-utils-0.6.14 sources. + +Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl +=================================================================== +--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl 2012-05-09 18:59:42.584774885 +0200 ++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl 2012-05-09 19:00:34.788773002 +0200 +@@ -1212,8 +1212,8 @@ + $_[0] =~ s/\\/\\\\/g; + + # Escape dots and single quotes in column 1 +- $_[0] =~ s/^\./\\\&\./; +- $_[0] =~ s/^\'/\\\&\'/; ++ $_[0] =~ s/^([ \t]*)\./$1\\\&\./; ++ $_[0] =~ s/^([ \t]*)\'/$1\\\&\'/; + + # In non-'pre'-type elements: + if(!$nocollapse_whitespace) { diff --git a/gnu/packages/patches/docbook-utils-remove-jade-sp.patch b/gnu/packages/patches/docbook-utils-remove-jade-sp.patch new file mode 100644 index 0000000000..99751b4de3 --- /dev/null +++ b/gnu/packages/patches/docbook-utils-remove-jade-sp.patch @@ -0,0 +1,216 @@ +# Source: +Description: Change dependencies on jade and sp to openjade and opensp +Author: Neil Roeth +Last-Update: 2016-07-24 + +Edit by Bruno Victal : + Patch was edited so that it could be applied against the original + docbook-utils-0.6.14 sources. +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- a/doc/HTML/Makefile.am ++++ b/doc/HTML/Makefile.am +@@ -1,4 +1,4 @@ +-htmldir = $(docdir)/html/docbook-utils-@VERSION@ ++htmldir = $(docdir)/html + html_DATA = api.html \ + backend-spec.html \ + docbook2man.html \ +@@ -25,6 +25,6 @@ + $(top_srcdir)/doc/refentry/sgmldiff.sgml + SGML_CATALOG_FILES=/etc/sgml/catalog \ + SGML_SEARCH_PATH=$(top_srcdir):$(top_srcdir)/doc:.. \ +- jade -t sgml -i html -d $(top_srcdir)/docbook-utils.dsl\#html \ ++ openjade -t sgml -i html -d $(top_srcdir)/docbook-utils.dsl\#html \ + -V '%use-id-as-filename%' $< + +--- a/doc/man/Makefile.am ++++ b/doc/man/Makefile.am +@@ -12,5 +12,5 @@ + $(top_srcdir)/helpers/docbook2man-spec.pl + SGML_CATALOG_FILES=/etc/sgml/catalog \ + SGML_SEARCH_PATH=$(top_srcdir)/doc:.. \ +- nsgmls $< | \ ++ onsgmls $< | \ + sgmlspl $(top_srcdir)/helpers/docbook2man-spec.pl +--- a/backends/man.in ++++ b/backends/man.in +@@ -7,8 +7,8 @@ + TMPDIR=`mktemp -d /tmp/man.XXXXXX` || \ + { echo >&2 "man backend: could not create secure temporary directory"; exit 1;} + trap 'rm -rf "${TMPDIR}"' EXIT +-nsgmls $SGML_FILE > "${TMPDIR}/nsgmls.tmp" +-sgmlspl $HELPER <"${TMPDIR}/nsgmls.tmp" 2>"${TMPDIR}/errs" ++onsgmls $SGML_FILE > "${TMPDIR}/onsgmls.tmp" ++sgmlspl $HELPER <"${TMPDIR}/onsgmls.tmp" 2>"${TMPDIR}/errs" + if [ $? -ne 0 ] + then + cat "${TMPDIR}/errs" +@@ -18,7 +18,7 @@ + if grep unresolved "${TMPDIR}/errs" >/dev/null 2>&1 + then + echo "Resolving references.." +- sgmlspl $HELPER <"${TMPDIR}/nsgmls.tmp" ++ sgmlspl $HELPER <"${TMPDIR}/onsgmls.tmp" + if [ $? -ne 0 ] + then exit 1 + fi +--- a/backends/texi.in ++++ b/backends/texi.in +@@ -3,7 +3,7 @@ + # This program is under GPL license. See LICENSE file for details. + + # Convert to texinfo +-nsgmls $SGML_FILE | sgmlspl $SGML_BASE_DIR/docbook/utils-@VERSION@/helpers/docbook2texi-spec.pl >$SGML_FILE_NAME.texi ++onsgmls $SGML_FILE | sgmlspl docbook2texi-spec.pl >$SGML_FILE_NAME.texi + if [ $? -ne 0 ] + then exit 1 + fi +--- a/bin/sgmldiff.in ++++ b/bin/sgmldiff.in +@@ -22,13 +22,13 @@ + + use strict; + use integer; +-use vars qw($nsgmls $errors $errorlog $VERSION); ++use vars qw($onsgmls $errors $errorlog $VERSION); + use Getopt::Long 2.01; + + $VERSION = 1.03; + +-my $nsgmls; +-$nsgmls = "@jade_bindir@/nsgmls"; ++my $onsgmls; ++$onsgmls = "@jade_bindir@/onsgmls"; + + #---------------------------------------------------------------------- + # TODO: +@@ -37,7 +37,7 @@ + # - Wait for suggestions ;-) + # + # Note: the input file need not be valid, nor is it necessary to have +-# the DTDs. nsgmls always returns a structure. ++# the DTDs. onsgmls always returns a structure. + #---------------------------------------------------------------------- + + # Get file name +@@ -141,11 +141,11 @@ + unlink $diff2; + + #--------------------------------------------------------------------- +-# Process nsgmls output: keep all stuff that is important for the ++# Process onsgmls output: keep all stuff that is important for the + # structure comparison. Make two structures: one that is diffed + # (without text) (DIFF) and one that is used to present the + # differences to the user (@full). For more info: see SP +-# documentation, nsgmls output format. ++# documentation, onsgmls output format. + + sub prepare { + my($filename,$todiffname) = @_; +@@ -161,7 +161,7 @@ + my @line_numbered = (); + my $line = 0; + +- open(ESIS, "$nsgmls -l $errors $errorlog -onotation-sysid -oid -oempty $filename | "); #-oentity generates strange output; ? -ononsgml ++ open(ESIS, "$onsgmls -l $errors $errorlog -onotation-sysid -oid -oempty $filename | "); #-oentity generates strange output; ? -ononsgml + open(DIFF, "> $todiffname"); + while () { + chomp $_; +@@ -375,7 +375,7 @@ + }; + + #---------------------------------------------------------------------- +-# Normalise data text from nsgmls (i.e. don't print the escaped text). ++# Normalise data text from onsgmls (i.e. don't print the escaped text). + sub normalise_text { + my($string,$prefix) = @_; + my $result = "$prefix"; +--- a/configure.in ++++ b/configure.in +@@ -21,7 +21,7 @@ + + dnl Checks for programs. + jade_bindirs="/usr/bin /usr/local/bin" +-AC_FIND_PROGRAM(nsgmls, $jade_bindirs, jade_bindir) ++AC_FIND_PROGRAM(onsgmls, $jade_bindirs, jade_bindir) + AC_SUBST(jade_bindir) + + perl_bindirs="/usr/bin /usr/local/bin" +--- a/doc/refentry/docbook2man-spec.pl.sgml ++++ b/doc/refentry/docbook2man-spec.pl.sgml +@@ -19,7 +19,7 @@ + + + +-nsgmls ++onsgmls + sgml document + | sgmlspl + docbook2man-spec.pl +@@ -35,7 +35,7 @@ + + + +-The program reads ESIS produced by nsgmls (or other SGML parsers) from ++The program reads ESIS produced by onsgmls (or other SGML parsers) from + standard input. Markup not found in RefEntry is discarded. + + +--- a/doc/refentry/docbook2texi-spec.pl.sgml ++++ b/doc/refentry/docbook2texi-spec.pl.sgml +@@ -20,7 +20,7 @@ + + + +-nsgmls ++onsgmls + sgml document + | sgmlspl + docbook2texi-spec.pl +@@ -37,7 +37,7 @@ + + + +-The program reads ESIS produced by nsgmls (or other SGML parsers) from ++The program reads ESIS produced by onsgmls (or other SGML parsers) from + standard input. Currently the document element must be Book, + otherwise the results are undefined. + +--- a/doc/refentry/jw.sgml ++++ b/doc/refentry/jw.sgml +@@ -630,7 +630,7 @@ + 1, + install-catalog + 8, +- nsgmls ++ onsgmls + 1, docbook-utils + homepage. +--- a/doc/refentry/sgmldiff.sgml ++++ b/doc/refentry/sgmldiff.sgml +@@ -238,10 +238,10 @@ + + + +- nsgmls 1 ++ onsgmls 1 + + +- a base component of Jade DSSSL engine ++ a base component of OpenJade DSSSL engine + + + +--- a/helpers/docbook2man-spec.pl ++++ b/helpers/docbook2man-spec.pl +@@ -7,7 +7,7 @@ + The SGMLSpm package from CPAN. This contains the sgmlspl script which + is used to grok this file. Use it like this: + +-nsgmls some-docbook-document.sgml | sgmlspl docbook2man-spec.pl ++onsgmls some-docbook-document.sgml | sgmlspl docbook2man-spec.pl + + =head1 DESCRIPTION + diff --git a/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch b/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch new file mode 100644 index 0000000000..1b8ce7a0de --- /dev/null +++ b/gnu/packages/patches/docbook-utils-respect-refentry-for-name.patch @@ -0,0 +1,36 @@ +# Source: + +Description: docbook2man should translate the NAME section according to the REFENTRY's lang attribute + Currently, docbook2man translates the NAME section according to the lang + attribute provided to the REFNAMEDIV tag. + When a lang attribute is specified in the REFENTRY tag and no lang + attribute is specified with the REFNAMEDIV, the lang attribute of the + REFENTRY should be used. +Author: Nicolas François +Forwarded: not-needed +Bug-Debian: http://bugs.debian.org/394511 + +Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl +=================================================================== +--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl 2012-05-09 18:55:53.276783163 +0200 ++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl 2012-05-09 18:58:04.792778418 +0200 +@@ -359,11 +359,14 @@ + # NAME section + man_sgml('', sub { + my %words = qw( fr NOM es NOMBRE de NAME ); +- if (defined($_[0]->attribute('LANG')->value)) { +- my $id = $_[0]->attribute('LANG')->value; +- my $ad = $words{$id}; +- output("\n.SH $ad\n");} +- else {output("\n.SH NAME\n");} ++ # Use the REFNAMEDIV's lang attribute, and default to the ++ # REFENTRY's lang attribute. ++ my $lang = $_[0]->attribute('LANG')->value; ++ $lang = $manpage_lang unless defined $lang; ++ if (defined($lang) and defined $words{lc($lang)}) { ++ my $ad = $words{lc($lang)}; ++ output("\n.SH $ad\n");} ++ else { output("\n.SH NAME\n");} + }); + + sgml('', \&save_cdata); diff --git a/gnu/packages/patches/docbook-utils-source-date-epoch.patch b/gnu/packages/patches/docbook-utils-source-date-epoch.patch new file mode 100644 index 0000000000..15c025a726 --- /dev/null +++ b/gnu/packages/patches/docbook-utils-source-date-epoch.patch @@ -0,0 +1,31 @@ +# Source: + +Author: Reiner Herrmann +Description: Support SOURCE_DATE_EPOCH for timestamps + To allow generating documents in a reproducible way, + allow overriding the timestamp through the environment. + . + See also: https://reproducible-builds.org/specs/source-date-epoch/ +Bug-Debian: https://bugs.debian.org/800797 + +--- a/helpers/docbook2man-spec.pl ++++ b/helpers/docbook2man-spec.pl +@@ -57,6 +57,7 @@ + use SGMLS; # Use the SGMLS package. + use SGMLS::Output; # Use stack-based output. + use SGMLS::Refs; ++use POSIX qw(strftime setlocale LC_TIME); + + ######################################################################## + # SGMLSPL script produced automatically by the script sgmlspl.pl +@@ -279,6 +280,10 @@ + _END_BANNER + + my $date = `date "+%d %B %Y"`; ++ if ($ENV{SOURCE_DATE_EPOCH}) { ++ setlocale(LC_TIME, "C"); ++ $date = strftime("%d %B %Y", gmtime($ENV{SOURCE_DATE_EPOCH} || time)); ++ } + my $manpage_date = $manpage_date || $date ; + + output '.TH "'; diff --git a/gnu/packages/patches/docbook-utils-use-date-element.patch b/gnu/packages/patches/docbook-utils-use-date-element.patch new file mode 100644 index 0000000000..106707f7d4 --- /dev/null +++ b/gnu/packages/patches/docbook-utils-use-date-element.patch @@ -0,0 +1,63 @@ +# Source: + +Description: patch to get the from the sgml file + For the moment, docbook2man doesn't use the tag date in + to but `date "+%d %B %Y"`, and thus depend on the current locale. + + + + 06 September 2003 + + + + A patch against /usr/share/perl5/sgmlspl-specs/docbook2man-spec.pl + allows to use the date written in the source SGML file (which can be + localized) instead of the current date. + + However, if no correct date tag is present in the SGML file, the date + written in the manpage will depend on the current locale. +Author: Simon Paillard +Forwarded: not-needed +Bug-Debian: http://bugs.debian.org/214982 + +Index: docbook-utils-0.6.14/helpers/docbook2man-spec.pl +=================================================================== +--- docbook-utils-0.6.14.orig/helpers/docbook2man-spec.pl 2012-05-09 18:27:28.000000000 +0200 ++++ docbook-utils-0.6.14/helpers/docbook2man-spec.pl 2012-05-09 18:55:53.276783163 +0200 +@@ -278,8 +278,9 @@ + .\\" etc. to Steve Cheng . + _END_BANNER + +- my $manpage_date = `date "+%d %B %Y"`; +- ++ my $date = `date "+%d %B %Y"`; ++ my $manpage_date = $manpage_date || $date ; ++ + output '.TH "'; + + # If the title is not mixed-case, convention says to +@@ -292,7 +293,7 @@ + } + + output '" "', fold_string($manpage_sect), +- '" "', fold_string(`date "+%d %B %Y"`), ++ '" "', fold_string($manpage_date), + '" "', $manpage_misc, + '" "', $manpage_manual, + "\"\n"; +@@ -568,6 +569,15 @@ + sgml('', sub { $_[0]->parent->ext->{'attribution'} = pop_output(); }); + + ++sgml('', sub { ++ save_cdata(); ++}); ++sgml('', sub { ++ $manpage_date = fold_string(pop_output()); ++ $raw_cdata--; ++}); ++ ++ + # IGNORE. + sgml('', sub { push_output('nul'); }); + sgml('', sub { pop_output(); });