aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--AUTHORS1
-rwxr-xr-xbootstrap312
-rw-r--r--doc/Makefile.am141
-rwxr-xr-xdoc/check-docs.sh74
-rw-r--r--doc/fdl.texi450
-rwxr-xr-xdoc/gendocs_template123
-rw-r--r--doc/macros.texi31
-rw-r--r--doc/mastermenu.el90
-rw-r--r--doc/rendition.texi85
-rw-r--r--doc/untabify.el13
-rw-r--r--pies/Makefile.am39
-rw-r--r--pies/depmap.c170
-rw-r--r--pies/pies.c1010
-rw-r--r--pies/pies.h119
-rw-r--r--pies/pies.rcin25
-rw-r--r--pies/progman.c971
16 files changed, 3654 insertions, 0 deletions
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..89f81e3
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Sergey Poznyakoff gray@gnu.org
diff --git a/bootstrap b/bootstrap
new file mode 100755
index 0000000..51d94b2
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,312 @@
+#! /bin/sh
+############################
+## Configuration
+############################
+
+GNULIB_DATE=2007-05-12
+GNU_SOURCE_BASE=gnu
+
+MODLIST="argp\
+ fprintftime\
+ getline\
+ gettext\
+ malloc\
+ memrchr\
+ mkdtemp\
+ obstack\
+ realloc\
+ regex\
+ save-cwd\
+ snprintf\
+ strtok_r\
+ vasprintf"
+
+MODAVOID="xalloc-die openat-die"
+
+# Other locale categories that need message catalogs.
+EXTRA_LOCALE_CATEGORIES=
+
+NLS_MARKERS="\
+ MF_THROW:2\
+ MF_ASSERT:3\
+ parse_error:1\
+ parse_error_locus:2\
+ mu_error:1\
+ gacopyz_io_log:3\
+ gacopyz_logmsg:2\
+ gacopyz_log:3"
+
+# Additional xgettext options to use. Use "\\\newline" to break lines.
+XGETTEXT_OPTIONS='\\\
+ --flag=_:1:pass-c-format\\\
+ --flag=N_:1:pass-c-format\\\
+ --flag=error:3:c-format --flag=error_at_line:5:c-format\\\
+'
+
+COPYRIGHT_HOLDER="Sergey Poznyakoff"
+
+# Translation Project URL, for the registry of all projects
+# and for the translation-team master directory.
+# (for future use)
+tp_url() {
+ echo "http://translationproject.org/domain/$1.html"
+}
+
+############################
+## Implementation
+############################
+
+usage() {
+ echo >&2 "\
+Usage: $0 [OPTION]... GNULIB_DIR
+Bootstrap this package from the checked-out sources.
+
+ --copy Copy files instead of creating symbolic links.
+ --force Attempt to bootstrap even if the sources seem
+ not to have been checked out.
+ --skip-po Do not download po files.
+ --update-po[=LANG] Update po file(s) and exit.
+
+The only argument specifes the file name of the directory were gnulib
+sources are located. You will have to check out them beforehand, \`bootstrap'
+won't do this for you.
+
+Local defaults can be provided by placing the file \`.bootstrap' in the
+current working directory. The file is read, comments and empty lines are
+removed, shell variables expanded and the result is prepended to the command
+line options.
+
+Running without arguments will suffice in most cases.
+"
+}
+
+# Read local configuration file
+if [ -r .bootstrap ]; then
+ echo "$0: Reading configuration file .bootstrap"
+ eval set -- "`sed 's/#.*$//;/^$/d' .bootstrap | tr '\n' ' '` $*"
+fi
+
+extract_package_name='
+ /^AC_INIT(/{
+ /.*,.*,.*,/{
+ s///
+ s/[][]//g
+ p
+ q
+ }
+ s/AC_INIT(\[*//
+ s/]*,.*//
+ s/^GNU //
+ y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
+ s/[^A-Za-z0-9_]/-/g
+ p
+ }
+'
+package=`sed -n "$extract_package_name" configure.ac` || exit
+
+extract_bug_address='
+ /^AC-INIT-BUG-ADDRESS/{
+ s/[][]//g
+ s/.*=//p
+ }
+'
+bug_address=`m4 -D'AC_INIT=AC-INIT-BUG-ADDRESS=$3' configure.ac | sed -n "$extract_bug_address"`
+if test -z "$bug_address"; then
+ bug_address="bug-${package}@gnu.org.ua"
+fi
+
+# Whether to use copies instead of symlinks.
+copy=false
+
+GNULIB_OPTION=
+DOWNLOAD_PO=
+
+for option
+do
+ case $option in
+ --help)
+ usage
+ exit;;
+ --skip-po | --no-po) # --no-po is for compatibility with 'tar' tradition.
+ DOWNLOAD_PO=skip;;
+ --update-po=*)
+ DOWNLOAD_PO=`expr "$option" : '--update-po=\(.*\)'`;;
+ --update-po)
+ DOWNLOAD_PO=only;;
+ --copy)
+ copy=true;;
+ -*)
+ echo >&2 "$0: $option: unknown option"
+ exit 1;;
+ *)
+ if [ -n "$NULIB_OPTION" ]; then
+ echo "$0: gnulib directory specified twice">&2
+ exit 1
+ fi
+ GNULIB_DIR=$option;;
+ esac
+done
+
+datecmp() {
+ test `echo "1 $1
+2 $2" | tr '-' ' ' | sort -n -k2 -k3 -k4 -k1 | sed -n '1s/ .*//p'` -eq 1
+}
+
+if [ -n "$GNULIB_DIR" ]; then
+ if [ -d "$GNULIB_DIR" ]; then
+ PATH="$GNULIB_DIR:$PATH"
+ if [ -r "$GNULIB_DIR/ChangeLog" ]; then
+ GNULIB_REV=`sed '/^[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}/q' "$GNULIB_DIR/ChangeLog"`
+ if datecmp "$GNULIB_DATE" "$GNULIB_REV"; then :;
+ else
+ echo "$0: Gnulib version is too old: $GNULIB_REV">&2
+ echo "$0: It should not be older than $GNULIB_DATE">&2
+ echo "$0: Please, update gnulib and retry">&2
+ exit
+ fi
+ else
+ echo "$0: No $GNULIB_DIR/ChangeLog file found">&2
+ fi
+ else
+ echo "$0: specified gnulib location is not a directory">&2
+ fi
+else
+ echo "$0: warning: gnulib source directory not specified">&2
+ echo "$0: warning: looking for gnulib-tool in PATH...">&2
+fi
+
+gnulib-tool --version >/dev/null 2>&1
+if [ $? -ne 0 ]; then
+ echo "$0: Cannot run gnulib-tool. Try \`$0 --help' for more info.">&2
+ exit 1
+fi
+
+echo "$0: Bootstrapping $package"
+
+echo "$0: Running autopoint"
+autopoint -f || exit 1
+
+# Create gettext configuration.
+echo "$0: Creating po/Makevars from po/Makevars.template ..."
+rm -f po/Makevars
+
+if [ -n "$NLS_MARKERS" ]; then
+ XGETTEXT_OPTIONS="$XGETTEXT_OPTIONS "`echo $NLS_MARKERS | tr ' ' '\n' | sed 's/.*/ --flag=&:pass-c-format\\\\\\\\\\\\/'`"
+"
+fi
+
+sed '
+ 1i\
+# -*- buffer-read-only: t -*- vi: set ro:\
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+
+ /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/
+ /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/
+ /^MSGID_BUGS_ADDRESS *=/s/=.*/= '"$bug_address"'/
+ /^XGETTEXT_OPTIONS *=/{
+ s/$/ \\/
+ a\
+ '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+}
+ }
+' po/Makevars.template >po/Makevars
+
+# Get translations.
+
+get_translations() {
+ subdir=$1
+ domain=$2
+ po_file=$3
+
+ case $WGET_COMMAND in
+ '')
+ echo "$0: wget not available; skipping translations";;
+ ?*)
+ url=`tp_url $domain`
+ baseurl=`expr "$url" : '\(.*\)/.*'`
+ echo "$0: getting translations into $subdir for $domain..." &&
+ case $po_file in
+ '') (cd $subdir && rm -f dummy `ls | sed -n '/\.gmo$/p; /\.po/p'`);;
+ esac &&
+
+ $WGET_COMMAND -O "$subdir/$domain.html" "$url" &&
+
+ sed -n 's|.*href="\(.*\)/\([^/][^/]*\)/'"$domain"'-\([^/"]*\)\.[^."]*\.po".*|\2:\3:\1|p' <"$subdir/$domain.html" |
+ sort -t: -k 1,1 -k 2,2n -k2,2 -k3,3n -k3,3 -k4,4n -k4,4 -k5,5n -k5.5 |
+ awk -F: '
+ { if (lang && $1 != lang) print lang, ver, $3 }
+ { lang = $1; ver = $2 }
+ END { if (lang) print lang, ver, $3 }
+ ' | awk -v domain="$domain" -v baseurl="$baseurl" -v subdir="$subdir" \
+ -v po_file="$po_file" '
+ {
+ lang = $1
+ if (po_file && po_file != (lang ".po")) next
+ ver = $2
+ printf "{ $WGET_COMMAND -O %s/%s.po %s/%s/%s/%s-%s.%s.po &&\n", subdir, lang, baseurl, $3, lang, domain, ver, lang
+ printf " msgfmt -c -o /dev/null %s/%s.po || {\n", subdir, lang
+ printf " echo >&2 '\'"$0"': omitting translation for %s'\''\n", lang
+ printf " rm -f %s/%s.po; }; } &&\n", subdir, lang
+ }
+ END { print ":" }
+ ' | WGET_COMMAND="$WGET_COMMAND" sh
+ ;;
+ esac &&
+ ls "$subdir"/*.po 2>/dev/null |
+ sed 's|.*/||; s|\.po$||' >"$subdir/LINGUAS" &&
+ rm -f "$subdir/$domain.html"
+}
+
+save_LC_ALL="$LC_ALL"
+LC_ALL=C
+case `wget --help` in
+*'--no-cache'*)
+ WGET_COMMAND='wget -nv --no-cache';;
+*'--cache=on/off'*)
+ WGET_COMMAND='wget -nv --cache=off';;
+*'--non-verbose'*)
+ WGET_COMMAND='wget -nv';;
+*)
+ WGET_COMMAND='';;
+esac
+LC_ALL="$save_LC_ALL"
+
+case $DOWNLOAD_PO in
+'skip')
+ ;;
+'')
+ get_translations po $package || exit
+ ;;
+'only')
+ get_translations po $package
+ exit
+ ;;
+*.po)
+ get_translations po $package "$DOWNLOAD_PO"
+ exit
+ ;;
+*)
+ get_translations po $package "${DOWNLOAD_PO}.po"
+ exit
+esac
+
+echo "$0: Importing gnulib files ..."
+if [ -n "$MODAVOID" ]; then
+ gnulib_tool_options="`echo $MODAVOID | sed 's/\([^ ][^ ]*\)/--avoid &/g'`"
+fi
+
+test -d $GNU_SOURCE_BASE || mkdir $GNU_SOURCE_BASE
+gnulib-tool --import --source-base=$GNU_SOURCE_BASE $gnulib_tool_options $MODLIST
+
+echo "$0: Reconfiguring ..."
+
+for command in \
+ 'aclocal --force -I m4' \
+ 'autoconf --force' \
+ 'autoheader --force' \
+ 'automake --add-missing --copy --force-missing';
+do
+ echo "$0: $command ..."
+ $command || exit
+done
+
+echo "$0: done. Now you can run './configure'."
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..0394d05
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,141 @@
+# This file is part of Mailfromd.
+# Copyright (C) 2005, 2006, 2007, 2008 Sergey Poznyakoff
+#
+# Mailfromd is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# Mailfromd is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Mailfromd. If not, see <http://www.gnu.org/licenses/>.
+
+info_TEXINFOS=mailfromd.texi
+mailfromd_TEXINFOS=\
+ fdl.texi\
+ gacopyz.texi\
+ macros.texi\
+ mtasim.texi\
+ rendition.texi\
+ strftime.texi\
+ values.texi
+
+EXTRA_DIST = \
+ check-docs.sh\
+ gendocs_template\
+ mastermenu.el\
+ untabify.el
+
+clean-local:
+ rm -rf manual
+
+# Checking
+check-format:
+ @if test -n "`cat $(info_TEXINFOS) $(mailfromd_TEXINFOS) | tr -d -c '\t'`"; then \
+ echo "Sources contain tabs; run make untabify"; \
+ false; \
+ fi
+
+check-pragmas:
+ @check-docs.sh pragmas \
+ '/} option_cache\[\] = {/,/^}/s/[ \t]*{ *"\(.*\)".*/\1/pg' \
+ 's/@deffnx* {pragma option} *\([^@, ]*\) .*/\1/p' \
+ $(top_srcdir)/mfd/main.c -- \
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -E - \
+ $(info_TEXINFOS)
+
+check-options:
+ @check-docs.sh options \
+ '/argp_option options\[\] = /,/^}/s/[ \t]*{ *"\([^,"]*\)".*/\1/pg' \
+ 's/@opindex *\([^@,]*\).*/\1/p' \
+ $(top_srcdir)/mfd/main.c -- \
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -E - \
+ $(info_TEXINFOS)
+
+check-builtins:
+ @check-docs.sh builtins \
+ '/MF_DEFUN/{s/[ \t]*MF_DEFUN *(\([^,][^,]*\),.*/\1/p;\
+ s/[ \t]*MF_DEFUN_VARARGS *(\([^,][^,]*\),.*/\1/p}' \
+ 's/@deftypefn {Built-in Function} *[^ ][^ ]* *\([^ ]*\).*/\1/p' \
+ $(top_srcdir)/mfd/bi_*.m4 -- \
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -E - \
+ $(info_TEXINFOS)
+
+check-mflib:
+ @check-docs.sh "library functions" \
+ '/^[ \t]*func[ \t][ \t]*__/b;\
+ /^[ \t]*func/s/[ \t]*func[ \t][ \t]*\(.[^ \t(]*\).*/\1/p' \
+ 's/@deftypefn {Library Function} *[^ ][^ ]* *\([^ ]*\).*/\1/p' \
+ $(top_srcdir)/mflib/*.mf -- \
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -E - \
+ $(info_TEXINFOS)
+
+check-exceptions:
+ @check-docs.sh exceptions \
+ '/typedef enum mf_status_code {/,/^};/s/[ \t]*mf_\(.*\),.*/\1/p' \
+ 's/@cindex \([^,][^,]*\), exception type/\1/p' \
+ $(top_srcdir)/mfd/mailfromd.h -- \
+ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -E - \
+ $(info_TEXINFOS)
+
+check-refs:
+ @sed -e = $(info_TEXINFOS) $(mailfromd_TEXINFOS) | \
+ sed -n 'N;/@FIXME-.*ref/{s/\(^[0-9][0-9]*\).*@FIXME-.*ref{\([^}]*\)}.*/$(info_TEXINFOS):\1: \2/gp}' > $@-t; \
+ if [ -s $@-t ]; then echo "Unresolved cross-references:"; cat $@-t;\
+ fi
+ rm -f $@-t
+
+check-fixmes:
+ @sed -e = $(info_TEXINFOS) | \
+ sed -n 'N;/@FIXME{/{s/\(^[0-9][0-9]*\).*@FIXME{\([^}]*\).*/$(info_TEXINFOS):\1: \2/gp}' > $@-t; \
+ if [ -s $@-t ]; then echo "Unresolved FIXMEs:"; cat $@-t;\
+ fi
+ rm -f $@-t
+
+check-unrevised:
+ @grep -Hn @UNREVISED $(info_TEXINFOS) > $@-t; \
+ if [ -s $@-t ]; then \
+ echo "Unrevised nodes:"; \
+ cat $@-t; \
+ rm $@-t; \
+ false;\
+ else \
+ rm $@-t; \
+ fi
+
+all-check-docs: check-format check-options check-pragmas check-builtins check-mflib check-exceptions check-refs check-fixmes check-unrevised
+
+check-docs:
+ $(MAKE) -k all-check-docs
+
+#
+
+master-menu:
+ emacs -batch -l mastermenu.el -f make-master-menu $(info_TEXINFOS)
+
+untabify:
+ emacs -batch -l untabify.el $(info_TEXINFOS) $(mailfromd_TEXINFOS)
+
+final: untabify master-menu
+
+# The rendering level is one of PUBLISH, DISTRIB or PROOF.
+# Just call `make RENDITION=PROOF [target]' if you want PROOF rendition.
+
+MAKEINFOFLAGS=-D$(RENDITION)
+
+GENDOCS=gendocs.sh
+
+TEXI2DVI=texi2dvi -t '@set $(RENDITION)' -E
+
+# Make sure you set TEXINPUTS.
+# TEXINPUTS=/usr/share/texmf/pdftex/plain/misc/ is ok for most distributions
+manual:
+ TEXINPUTS=$(srcdir):$(top_srcdir)/build-aux:$(TEXINPUTS) \
+ MAKEINFO="$(MAKEINFO) $(MAKEINFOFLAGS)" \
+ TEXI2DVI="$(TEXI2DVI) -t @finalout" \
+ $(GENDOCS) --texi2html $(PACKAGE) '$(PACKAGE_NAME) manual'
+
diff --git a/doc/check-docs.sh b/doc/check-docs.sh
new file mode 100755
index 0000000..c0b0487
--- /dev/null
+++ b/doc/check-docs.sh
@@ -0,0 +1,74 @@
+#! /bin/sh
+# This file is part of mailfrom filter.
+# Copyright (C) 2006, 2007 Sergey Poznyakoff
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+usage() {
+ cat <<EOT
+usage: $0 item code-sed doc-sed sources -- args...
+EOT
+}
+
+if [ $# -le 4 ]; then
+ usage
+ exit 2
+fi
+
+item=$1
+shift
+codesexp="$1"
+shift
+docsexp=$1
+shift
+
+source=
+while [ $# -ne 0 ]
+do
+ if [ "$1" = "--" ]; then
+ shift
+ break;
+ fi
+ source="$source $1"
+ shift
+done
+
+TEMPDIR=/tmp/mfck.$$
+mkdir $TEMPDIR || exit 1
+trap 'rm -rf $TEMPDIR' 1 2 13 15
+
+sed -n "$codesexp" $source | sort | uniq > $TEMPDIR/src
+$* | \
+ sed -n '/^@macro/,/^@end macro/d;'"$docsexp" \
+ | sort | uniq > $TEMPDIR/doc
+
+join -v1 $TEMPDIR/src $TEMPDIR/doc > $TEMPDIR/src-doc
+join -v2 $TEMPDIR/src $TEMPDIR/doc > $TEMPDIR/doc-src
+(if [ -s $TEMPDIR/src-doc ]; then
+ echo "Not documented $item:"
+ cat $TEMPDIR/src-doc
+ fi
+ if [ -s $TEMPDIR/doc-src ]; then
+ echo "Non-existing $item:"
+ cat $TEMPDIR/doc-src
+ fi) > $TEMPDIR/report
+
+if [ -s $TEMPDIR/report ]; then
+ cat $TEMPDIR/report
+ rm -rf $TEMPDIR
+ exit 1
+else
+ rm -rf $TEMPDIR
+ exit 0
+fi
diff --git a/doc/fdl.texi b/doc/fdl.texi
new file mode 100644
index 0000000..a3c8c6f
--- /dev/null
+++ b/doc/fdl.texi
@@ -0,0 +1,450 @@
+@setfilename fdl.info
+@appendix GNU Free Documentation License
+@cindex FDL, GNU Free Documentation License
+@center Version 1.2, November 2002
+
+@display
+Copyright @copyright{} 2000,2001,2002 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+@end display
+
+@enumerate 0
+@item
+PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document @dfn{free} in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of ``copyleft'', which means that derivative
+works of the document must themselves be free in the same sense. It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does. But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book. We recommend this License
+principally for works whose purpose is instruction or reference.
+
+@item
+APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License. Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein. The ``Document'', below,
+refers to any such manual or work. Any member of the public is a
+licensee, and is addressed as ``you''. You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A ``Modified Version'' of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A ``Secondary Section'' is a named appendix or a front-matter section
+of the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall
+subject (or to related matters) and contains nothing that could fall
+directly within that overall subject. (Thus, if the Document is in
+part a textbook of mathematics, a Secondary Section may not explain
+any mathematics.) The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The ``Invariant Sections'' are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License. If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant. The Document may contain zero
+Invariant Sections. If the Document does not identify any Invariant
+Sections then there are none.
+
+The ``Cover Texts'' are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License. A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A ``Transparent'' copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters. A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text. A copy that is not ``Transparent'' is called ``Opaque''.
+
+Examples of suitable formats for Transparent copies include plain
+@sc{ascii} without markup, Texinfo input format, La@TeX{} input
+format, @acronym{SGML} or @acronym{XML} using a publicly available
+@acronym{DTD}, and standard-conforming simple @acronym{HTML},
+PostScript or @acronym{PDF} designed for human modification. Examples
+of transparent image formats include @acronym{PNG}, @acronym{XCF} and
+@acronym{JPG}. Opaque formats include proprietary formats that can be
+read and edited only by proprietary word processors, @acronym{SGML} or
+@acronym{XML} for which the @acronym{DTD} and/or processing tools are
+not generally available, and the machine-generated @acronym{HTML},
+PostScript or @acronym{PDF} produced by some word processors for
+output purposes only.
+
+The ``Title Page'' means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page. For works in
+formats which do not have any title page as such, ``Title Page'' means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section ``Entitled XYZ'' means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language. (Here XYZ stands for a
+specific section name mentioned below, such as ``Acknowledgements'',
+``Dedications'', ``Endorsements'', or ``History''.) To ``Preserve the Title''
+of such a section when you modify the Document means that it remains a
+section ``Entitled XYZ'' according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document. These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+@item
+VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License. You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute. However, you may accept
+compensation in exchange for copies. If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+@item
+COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover. Both covers must also clearly and legibly identify
+you as the publisher of these copies. The front cover must present
+the full title with all words of the title equally prominent and
+visible. You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+@item
+MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it. In addition, you must do these things in the Modified Version:
+
+@enumerate A
+@item
+Use in the Title Page (and on the covers, if any) a title distinct
+from that of the Document, and from those of previous versions
+(which should, if there were any, be listed in the History section
+of the Document). You may use the same title as a previous version
+if the original publisher of that version gives permission.
+
+@item
+List on the Title Page, as authors, one or more persons or entities
+responsible for authorship of the modifications in the Modified
+Version, together with at least five of the principal authors of the
+Document (all of its principal authors, if it has fewer than five),
+unless they release you from this requirement.
+
+@item
+State on the Title page the name of the publisher of the
+Modified Version, as the publisher.
+
+@item
+Preserve all the copyright notices of the Document.
+
+@item
+Add an appropriate copyright notice for your modifications
+adjacent to the other copyright notices.
+
+@item
+Include, immediately after the copyright notices, a license notice
+giving the public permission to use the Modified Version under the
+terms of this License, in the form shown in the Addendum below.
+
+@item
+Preserve in that license notice the full lists of Invariant Sections
+and required Cover Texts given in the Document's license notice.
+
+@item
+Include an unaltered copy of this License.
+
+@item
+Preserve the section Entitled ``History'', Preserve its Title, and add
+to it an item stating at least the title, year, new authors, and
+publisher of the Modified Version as given on the Title Page. If
+there is no section Entitled ``History'' in the Document, create one
+stating the title, year, authors, and publisher of the Document as
+given on its Title Page, then add an item describing the Modified
+Version as stated in the previous sentence.
+
+@item
+Preserve the network location, if any, given in the Document for
+public access to a Transparent copy of the Document, and likewise
+the network locations given in the Document for previous versions
+it was based on. These may be placed in the ``History'' section.
+You may omit a network location for a work that was published at
+least four years before the Document itself, or if the original
+publisher of the version it refers to gives permission.
+
+@item
+For any section Entitled ``Acknowledgements'' or ``Dedications'', Preserve
+the Title of the section, and preserve in the section all the
+substance and tone of each of the contributor acknowledgements and/or
+dedications given therein.
+
+@item
+Preserve all the Invariant Sections of the Document,
+unaltered in their text and in their titles. Section numbers
+or the equivalent are not considered part of the section titles.
+
+@item
+Delete any section Entitled ``Endorsements''. Such a section
+may not be included in the Modified Version.
+
+@item
+Do not retitle any existing section to be Entitled ``Endorsements'' or
+to conflict in title with any Invariant Section.
+
+@item
+Preserve any Warranty Disclaimers.
+@end enumerate
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant. To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled ``Endorsements'', provided it contains
+nothing but endorsements of your Modified Version by various
+parties---for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version. Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity. If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+@item
+COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy. If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled ``History''
+in the various original documents, forming one section Entitled
+``History''; likewise combine any sections Entitled ``Acknowledgements'',
+and any sections Entitled ``Dedications''. You must delete all
+sections Entitled ``Endorsements.''
+
+@item
+COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+@item
+AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an ``aggregate'' if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+@item
+TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections. You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers. In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled ``Acknowledgements'',
+``Dedications'', or ``History'', the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+@item
+TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License. Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License. However,
+parties who have received