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 <maxim.cournoyer@gmail.com>
This commit is contained in:
Bruno Victal 2023-10-09 21:05:59 +01:00 committed by Ludovic Courtès
parent 7e4ddd2d2e
commit 5b6c9ca520
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5
8 changed files with 505 additions and 8 deletions

View file

@ -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 \

View file

@ -773,18 +773,20 @@ (define-public docbook-utils
(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 @@ (define-public docbook-utils
(("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.

View file

@ -0,0 +1,102 @@
# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/spellingtypo.patch/>
Description: Fix some typos in man pages
Author: Mathieu Malaterre <malat@debian.org>
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

View file

@ -0,0 +1,36 @@
# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/bug_528334.patch/>
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 <screen>...</screen>) 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 <bab@debian.org>
Forwarded: not-needed
Bug-Debian: http://bugs.debian.org/528334
Edit by Bruno Victal <mirai@makinata.eu>:
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) {

View file

@ -0,0 +1,216 @@
# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/remove-jade-sp.patch/>
Description: Change dependencies on jade and sp to openjade and opensp
Author: Neil Roeth <neil@debian.org>
Last-Update: 2016-07-24
Edit by Bruno Victal <mirai@makinata.eu>:
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 (<ESIS>) {
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 @@
<!-- docbook2man-spec.pl BREAKAGE HERE! -->
<CmdSynopsis>
-<Command>nsgmls</command>
+<Command>onsgmls</command>
<Arg><Replaceable>sgml document</replaceable></Arg>
<Command>| sgmlspl</command>
<Arg choice=req>docbook2man-spec.pl</arg>
@@ -35,7 +35,7 @@
</Para>
<Para>
-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.
</Para>
--- a/doc/refentry/docbook2texi-spec.pl.sgml
+++ b/doc/refentry/docbook2texi-spec.pl.sgml
@@ -20,7 +20,7 @@
<!-- docbook2man-spec.pl BREAKAGE HERE! -->
<CmdSynopsis>
-<Command>nsgmls</command>
+<Command>onsgmls</command>
<Arg><Replaceable>sgml document</replaceable></Arg>
<Command>| sgmlspl</command>
<Arg choice=req>docbook2texi-spec.pl</arg>
@@ -37,7 +37,7 @@
</Para>
<Para>
-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 <SGMLTag>Book</sgmltag>,
otherwise the results are undefined.
</Para>
--- a/doc/refentry/jw.sgml
+++ b/doc/refentry/jw.sgml
@@ -630,7 +630,7 @@
<manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>install-catalog</refentrytitle>
<manvolnum>8</manvolnum></citerefentry>,
- <citerefentry><refentrytitle>nsgmls</refentrytitle>
+ <citerefentry><refentrytitle>onsgmls</refentrytitle>
<manvolnum>1</manvolnum></citerefentry>, <ulink
url="http://sources.redhat.com/docbook-tools/">docbook-utils
homepage</ulink>.</para>
--- a/doc/refentry/sgmldiff.sgml
+++ b/doc/refentry/sgmldiff.sgml
@@ -238,10 +238,10 @@
<glossterm>
<!-- Next line is a hack to force a paragraph break in the man-page. -->
<cmdsynopsis> <command></command> </cmdsynopsis>
- <citerefentry> <refentrytitle>nsgmls</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>
+ <citerefentry> <refentrytitle>onsgmls</refentrytitle> <manvolnum>1</manvolnum> </citerefentry>
</glossterm>
<glossdef>
- <para>a base component of <application>Jade</application> DSSSL engine</para>
+ <para>a base component of <application>OpenJade</application> DSSSL engine</para>
</glossdef>
</glossentry>
--- 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

View file

@ -0,0 +1,36 @@
# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/bug_394511.patch/>
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 <nicolas.francois@centraliens.net>
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('<REFNAMEDIV>', 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('<REFNAME>', \&save_cdata);

View file

@ -0,0 +1,31 @@
# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/support_source_date_epoch.patch/>
Author: Reiner Herrmann <reiner@reiner-h.de>
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 "';

View file

@ -0,0 +1,63 @@
# Source: <https://sources.debian.org/patches/docbook-utils/0.6.14-4/bug_214982.patch/>
Description: patch to get the <date> from the sgml file
For the moment, docbook2man doesn't use the tag date in <date> </date>
to but `date "+%d %B %Y"`, and thus depend on the current locale.
<refentry>
<docinfo>
<date>06 September 2003</>
</docinfo>
</refentry>
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 <simon.paillard@resel.enst-bretagne.fr>
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 <steve\@ggi-project.org>.
_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('</ATTRIBUTION>', sub { $_[0]->parent->ext->{'attribution'} = pop_output(); });
+sgml('<DATE>', sub {
+ save_cdata();
+});
+sgml('</DATE>', sub {
+ $manpage_date = fold_string(pop_output());
+ $raw_cdata--;
+});
+
+
# IGNORE.
sgml('<DOCINFO>', sub { push_output('nul'); });
sgml('</DOCINFO>', sub { pop_output(); });