wml-2.0.12.orig/0000755000175000017500000000000011613524776011406 5ustar abeabewml-2.0.12.orig/SUPPORT0000644000175000017500000000211310343637577012505 0ustar abeabe S U P P O R T ============= Mailing List ------------ There is an official support mailing list for WML users: sw-wml@engelschall.com Here you can reach the WML author Ralf S. Engelschall and the current maintainer Denis Barbier plus currently approximately 210 other people who use WML and which can help you in case of problems. Use this forum to spread your WML-related ideas and suggestion, too. Feel free to ask anything WML-related you want. Mailing List Subscription ------------------------- To subscribe to this Majordomo-controlled mailing list, just send an E-mail to majordomo@engelschall.com (*NOT* to sw-wml@engelschall !!) with only subscribe sw-wml @ in the _body_ (leave the subject empty). DO NOT SEND @ LITERALLY. INSTEAD REPLACE IT WITH YOUR EMAIL ADDRESS. After sending this, Majordomo will respond with an authority challenge which has to send back again for security reasons (to avoid that others subscribe you without your ok). Now you are successfully subscribed to this list. wml-2.0.12.orig/MANIFEST0000644000175000017500000016266711002047126012536 0ustar abeabeANNOUNCE BUGREPORT ChangeLog ChangeLog~ config/aclocal.m4 config/configure.ac config/configure.fixit config/Makefile config/Makefile~ config/prep_modules_files.sh config/.svn/entries config/.svn/format config/.svn/prop-base/configure.fixit.svn-base config/.svn/text-base/aclocal.m4.svn-base config/.svn/text-base/configure.ac.svn-base config/.svn/text-base/configure.fixit.svn-base config/.svn/text-base/Makefile.svn-base config/.svn/text-base/prep_modules_files.sh.svn-base configure COPYING COPYRIGHT COPYRIGHT.OTHER CREDITS etc/config.guess etc/config.sub etc/shtool etc/summary etc/.svn/entries etc/.svn/format etc/.svn/prop-base/config.guess.svn-base etc/.svn/prop-base/config.sub.svn-base etc/.svn/prop-base/shtool.svn-base etc/.svn/prop-base/summary.svn-base etc/.svn/text-base/config.guess.svn-base etc/.svn/text-base/config.sub.svn-base etc/.svn/text-base/shtool.svn-base etc/.svn/text-base/summary.svn-base INSTALL INSTALL.CYGWIN Makefile.in MANIFEST NEWS README README~ README.mp4h SUPPORT svn-commit.tmp~ VERSION VERSION~ VERSION.HISTORY wml_aux/freetable/freetable.src wml_aux/freetable/Makefile.in wml_aux/freetable/.svn/dir-prop-base wml_aux/freetable/.svn/entries wml_aux/freetable/.svn/format wml_aux/freetable/.svn/prop-base/freetable.src.svn-base wml_aux/freetable/.svn/text-base/freetable.src.svn-base wml_aux/freetable/.svn/text-base/Makefile.in.svn-base wml_aux/htmlclean/htmlclean.src wml_aux/htmlclean/Makefile.in wml_aux/htmlclean/.svn/dir-prop-base wml_aux/htmlclean/.svn/entries wml_aux/htmlclean/.svn/format wml_aux/htmlclean/.svn/text-base/htmlclean.src.svn-base wml_aux/htmlclean/.svn/text-base/Makefile.in.svn-base wml_aux/htmlinfo/htmlinfo.src wml_aux/htmlinfo/Makefile.in wml_aux/htmlinfo/.svn/dir-prop-base wml_aux/htmlinfo/.svn/entries wml_aux/htmlinfo/.svn/format wml_aux/htmlinfo/.svn/text-base/htmlinfo.src.svn-base wml_aux/htmlinfo/.svn/text-base/Makefile.in.svn-base wml_aux/iselect/acconfig.h wml_aux/iselect/aclocal.m4 wml_aux/iselect/config_ac.h.in wml_aux/iselect/config_sc.h.in wml_aux/iselect/configure wml_aux/iselect/configure.in wml_aux/iselect/COPYING wml_aux/iselect/etc/asc2c wml_aux/iselect/etc/shtool wml_aux/iselect/etc/.svn/entries wml_aux/iselect/etc/.svn/format wml_aux/iselect/etc/.svn/prop-base/asc2c.svn-base wml_aux/iselect/etc/.svn/prop-base/shtool.svn-base wml_aux/iselect/etc/.svn/text-base/asc2c.svn-base wml_aux/iselect/etc/.svn/text-base/shtool.svn-base wml_aux/iselect/iselect_browse.c wml_aux/iselect/iselect_browse.h wml_aux/iselect/iselect_getopt.c wml_aux/iselect/iselect_getopt.h wml_aux/iselect/iselect_global.h wml_aux/iselect/iselect_help.c wml_aux/iselect/iselect_help.txt wml_aux/iselect/iselect_keys.c wml_aux/iselect/iselect_keys.h wml_aux/iselect/iselect_main.c wml_aux/iselect/iselect.pod wml_aux/iselect/iselect_readme.c wml_aux/iselect/iselect_readme.txt wml_aux/iselect/iselect_version.c wml_aux/iselect/Makefile.in wml_aux/iselect/README wml_aux/iselect/.svn/dir-prop-base wml_aux/iselect/.svn/entries wml_aux/iselect/.svn/format wml_aux/iselect/.svn/prop-base/configure.svn-base wml_aux/iselect/.svn/text-base/acconfig.h.svn-base wml_aux/iselect/.svn/text-base/aclocal.m4.svn-base wml_aux/iselect/.svn/text-base/config_ac.h.in.svn-base wml_aux/iselect/.svn/text-base/config_sc.h.in.svn-base wml_aux/iselect/.svn/text-base/configure.in.svn-base wml_aux/iselect/.svn/text-base/configure.svn-base wml_aux/iselect/.svn/text-base/COPYING.svn-base wml_aux/iselect/.svn/text-base/iselect_browse.c.svn-base wml_aux/iselect/.svn/text-base/iselect_browse.h.svn-base wml_aux/iselect/.svn/text-base/iselect_getopt.c.svn-base wml_aux/iselect/.svn/text-base/iselect_getopt.h.svn-base wml_aux/iselect/.svn/text-base/iselect_global.h.svn-base wml_aux/iselect/.svn/text-base/iselect_help.c.svn-base wml_aux/iselect/.svn/text-base/iselect_help.txt.svn-base wml_aux/iselect/.svn/text-base/iselect_keys.c.svn-base wml_aux/iselect/.svn/text-base/iselect_keys.h.svn-base wml_aux/iselect/.svn/text-base/iselect_main.c.svn-base wml_aux/iselect/.svn/text-base/iselect.pod.svn-base wml_aux/iselect/.svn/text-base/iselect_readme.c.svn-base wml_aux/iselect/.svn/text-base/iselect_readme.txt.svn-base wml_aux/iselect/.svn/text-base/iselect_version.c.svn-base wml_aux/iselect/.svn/text-base/Makefile.in.svn-base wml_aux/iselect/.svn/text-base/README.svn-base wml_aux/iselect/.svn/text-base/VERSIONS.svn-base wml_aux/iselect/VERSIONS wml_aux/linklint/linklint.pod wml_aux/linklint/linklint.src wml_aux/linklint/Makefile.in wml_aux/linklint/.svn/dir-prop-base wml_aux/linklint/.svn/entries wml_aux/linklint/.svn/format wml_aux/linklint/.svn/prop-base/linklint.src.svn-base wml_aux/linklint/.svn/text-base/linklint.pod.svn-base wml_aux/linklint/.svn/text-base/linklint.src.svn-base wml_aux/linklint/.svn/text-base/Makefile.in.svn-base wml_aux/Makefile.in wml_aux/map2html/Makefile.in wml_aux/map2html/map2html.src wml_aux/map2html/.svn/dir-prop-base wml_aux/map2html/.svn/entries wml_aux/map2html/.svn/format wml_aux/map2html/.svn/text-base/Makefile.in.svn-base wml_aux/map2html/.svn/text-base/map2html.src.svn-base wml_aux/.svn/dir-prop-base wml_aux/.svn/entries wml_aux/.svn/format wml_aux/.svn/text-base/Makefile.in.svn-base wml_aux/tidy/attrs.c wml_aux/tidy/clean.c wml_aux/tidy/config.c wml_aux/tidy/entities.c wml_aux/tidy/grid.gif wml_aux/tidy/html.h wml_aux/tidy/istack.c wml_aux/tidy/lexer.c wml_aux/tidy/localize.c wml_aux/tidy/Makefile.in wml_aux/tidy/Makefile.orig wml_aux/tidy/Overview.html wml_aux/tidy/parser.c wml_aux/tidy/platform.h wml_aux/tidy/pprint.c wml_aux/tidy/release-notes.html wml_aux/tidy/.svn/dir-prop-base wml_aux/tidy/.svn/entries wml_aux/tidy/.svn/format wml_aux/tidy/.svn/prop-base/grid.gif.svn-base wml_aux/tidy/.svn/prop-base/tidy.gif.svn-base wml_aux/tidy/.svn/text-base/attrs.c.svn-base wml_aux/tidy/.svn/text-base/clean.c.svn-base wml_aux/tidy/.svn/text-base/config.c.svn-base wml_aux/tidy/.svn/text-base/entities.c.svn-base wml_aux/tidy/.svn/text-base/grid.gif.svn-base wml_aux/tidy/.svn/text-base/html.h.svn-base wml_aux/tidy/.svn/text-base/istack.c.svn-base wml_aux/tidy/.svn/text-base/lexer.c.svn-base wml_aux/tidy/.svn/text-base/localize.c.svn-base wml_aux/tidy/.svn/text-base/Makefile.in.svn-base wml_aux/tidy/.svn/text-base/Makefile.orig.svn-base wml_aux/tidy/.svn/text-base/Overview.html.svn-base wml_aux/tidy/.svn/text-base/parser.c.svn-base wml_aux/tidy/.svn/text-base/platform.h.svn-base wml_aux/tidy/.svn/text-base/pprint.c.svn-base wml_aux/tidy/.svn/text-base/release-notes.html.svn-base wml_aux/tidy/.svn/text-base/tab2space.c.svn-base wml_aux/tidy/.svn/text-base/tags.c.svn-base wml_aux/tidy/.svn/text-base/tidy.c.svn-base wml_aux/tidy/.svn/text-base/tidy.gif.svn-base wml_aux/tidy/tab2space.c wml_aux/tidy/tags.c wml_aux/tidy/tidy.c wml_aux/tidy/tidy.gif wml_aux/tidy/tidy.txt wml_aux/txt2html/LICENSE wml_aux/txt2html/Makefile.in wml_aux/txt2html/.svn/dir-prop-base wml_aux/txt2html/.svn/entries wml_aux/txt2html/.svn/format wml_aux/txt2html/.svn/text-base/LICENSE.svn-base wml_aux/txt2html/.svn/text-base/Makefile.in.svn-base wml_aux/txt2html/.svn/text-base/txt2html.dict.svn-base wml_aux/txt2html/.svn/text-base/txt2html.src.svn-base wml_aux/txt2html/.svn/text-base/txt2html.txt.svn-base wml_aux/txt2html/txt2html.dict wml_aux/txt2html/txt2html.src wml_aux/txt2html/txt2html.txt wml_aux/weblint/Makefile.in wml_aux/weblint/.svn/dir-prop-base wml_aux/weblint/.svn/entries wml_aux/weblint/.svn/format wml_aux/weblint/.svn/text-base/Makefile.in.svn-base wml_aux/weblint/.svn/text-base/weblint.1.svn-base wml_aux/weblint/.svn/text-base/weblintrc.svn-base wml_aux/weblint/.svn/text-base/weblint.src.svn-base wml_aux/weblint/weblint.1 wml_aux/weblint/weblintrc wml_aux/weblint/weblint.src wml_backend/Makefile.in wml_backend/p1_ipp/ipp.src wml_backend/p1_ipp/Makefile.in wml_backend/p1_ipp/.svn/dir-prop-base wml_backend/p1_ipp/.svn/entries wml_backend/p1_ipp/.svn/format wml_backend/p1_ipp/.svn/text-base/ipp.src.svn-base wml_backend/p1_ipp/.svn/text-base/Makefile.in.svn-base wml_backend/p2_mp4h/ABOUT-NLS wml_backend/p2_mp4h/acconfig.h wml_backend/p2_mp4h/acinclude.m4 wml_backend/p2_mp4h/acinclude.m4~ wml_backend/p2_mp4h/aclocal.m4 wml_backend/p2_mp4h/autogen.sh wml_backend/p2_mp4h/bootstrap.sh~ wml_backend/p2_mp4h/ChangeLog wml_backend/p2_mp4h/config.guess wml_backend/p2_mp4h/config.h.in wml_backend/p2_mp4h/config.h.in~ wml_backend/p2_mp4h/config.rpath wml_backend/p2_mp4h/config.sub wml_backend/p2_mp4h/configure wml_backend/p2_mp4h/configure.ac wml_backend/p2_mp4h/configure.ac~ wml_backend/p2_mp4h/COPYING wml_backend/p2_mp4h/CREDITS wml_backend/p2_mp4h/depcomp wml_backend/p2_mp4h/doc/html.out wml_backend/p2_mp4h/doc/list-tags wml_backend/p2_mp4h/doc/Makefile.am wml_backend/p2_mp4h/doc/Makefile.in wml_backend/p2_mp4h/doc/mp4h.mp4h wml_backend/p2_mp4h/doc/pod.out wml_backend/p2_mp4h/doc/.svn/dir-prop-base wml_backend/p2_mp4h/doc/.svn/entries wml_backend/p2_mp4h/doc/.svn/format wml_backend/p2_mp4h/doc/.svn/prop-base/html.out.svn-base wml_backend/p2_mp4h/doc/.svn/prop-base/list-tags.svn-base wml_backend/p2_mp4h/doc/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/doc/.svn/prop-base/mp4h.mp4h.svn-base wml_backend/p2_mp4h/doc/.svn/prop-base/pod.out.svn-base wml_backend/p2_mp4h/doc/.svn/prop-base/texinfo.out.svn-base wml_backend/p2_mp4h/doc/.svn/text-base/html.out.svn-base wml_backend/p2_mp4h/doc/.svn/text-base/list-tags.svn-base wml_backend/p2_mp4h/doc/.svn/text-base/Makefile.am.svn-base wml_backend/p2_mp4h/doc/.svn/text-base/mp4h.mp4h.svn-base wml_backend/p2_mp4h/doc/.svn/text-base/pod.out.svn-base wml_backend/p2_mp4h/doc/.svn/text-base/texinfo.out.svn-base wml_backend/p2_mp4h/doc/texinfo.out wml_backend/p2_mp4h/INSTALL wml_backend/p2_mp4h/install-sh wml_backend/p2_mp4h/intl/bindtextdom.c wml_backend/p2_mp4h/intl/ChangeLog wml_backend/p2_mp4h/intl/config.charset wml_backend/p2_mp4h/intl/dcgettext.c wml_backend/p2_mp4h/intl/dcigettext.c wml_backend/p2_mp4h/intl/dcngettext.c wml_backend/p2_mp4h/intl/dgettext.c wml_backend/p2_mp4h/intl/dngettext.c wml_backend/p2_mp4h/intl/explodename.c wml_backend/p2_mp4h/intl/finddomain.c wml_backend/p2_mp4h/intl/gettext.c wml_backend/p2_mp4h/intl/gettext.h wml_backend/p2_mp4h/intl/gettextP.h wml_backend/p2_mp4h/intl/hash-string.h wml_backend/p2_mp4h/intl/intl-compat.c wml_backend/p2_mp4h/intl/l10nflist.c wml_backend/p2_mp4h/intl/libgettext.h wml_backend/p2_mp4h/intl/libgnuintl.h wml_backend/p2_mp4h/intl/loadinfo.h wml_backend/p2_mp4h/intl/loadmsgcat.c wml_backend/p2_mp4h/intl/localcharset.c wml_backend/p2_mp4h/intl/locale.alias wml_backend/p2_mp4h/intl/localealias.c wml_backend/p2_mp4h/intl/Makefile.in wml_backend/p2_mp4h/intl/ngettext.c wml_backend/p2_mp4h/intl/plural.c wml_backend/p2_mp4h/intl/plural.y wml_backend/p2_mp4h/intl/ref-add.sin wml_backend/p2_mp4h/intl/ref-del.sin wml_backend/p2_mp4h/intl/.svn/dir-prop-base wml_backend/p2_mp4h/intl/.svn/entries wml_backend/p2_mp4h/intl/.svn/format wml_backend/p2_mp4h/intl/.svn/prop-base/bindtextdom.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/ChangeLog.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/config.charset.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/dcgettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/dcigettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/dcngettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/dgettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/dngettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/explodename.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/finddomain.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/gettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/gettext.h.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/gettextP.h.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/hash-string.h.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/intl-compat.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/l10nflist.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/libgettext.h.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/libgnuintl.h.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/loadinfo.h.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/loadmsgcat.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/localcharset.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/localealias.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/locale.alias.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/Makefile.in.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/ngettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/plural.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/plural.y.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/ref-add.sin.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/ref-del.sin.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/textdomain.c.svn-base wml_backend/p2_mp4h/intl/.svn/prop-base/VERSION.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/bindtextdom.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/ChangeLog.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/config.charset.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/dcgettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/dcigettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/dcngettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/dgettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/dngettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/explodename.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/finddomain.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/gettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/gettext.h.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/gettextP.h.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/hash-string.h.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/intl-compat.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/l10nflist.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/libgettext.h.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/libgnuintl.h.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/loadinfo.h.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/loadmsgcat.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/localcharset.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/localealias.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/locale.alias.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/Makefile.in.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/ngettext.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/plural.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/plural.y.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/ref-add.sin.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/ref-del.sin.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/textdomain.c.svn-base wml_backend/p2_mp4h/intl/.svn/text-base/VERSION.svn-base wml_backend/p2_mp4h/intl/textdomain.c wml_backend/p2_mp4h/intltool-extract wml_backend/p2_mp4h/intltool-merge wml_backend/p2_mp4h/intltool-update wml_backend/p2_mp4h/intl/VERSION wml_backend/p2_mp4h/lib/COPYING.LIB wml_backend/p2_mp4h/lib/error.c wml_backend/p2_mp4h/lib/error.h wml_backend/p2_mp4h/lib/getopt1.c wml_backend/p2_mp4h/lib/getopt.c wml_backend/p2_mp4h/lib/getopt.h wml_backend/p2_mp4h/lib/Makefile.am wml_backend/p2_mp4h/lib/Makefile.in wml_backend/p2_mp4h/lib/obstack.c wml_backend/p2_mp4h/lib/obstack.h wml_backend/p2_mp4h/lib/strtol.c wml_backend/p2_mp4h/lib/.svn/dir-prop-base wml_backend/p2_mp4h/lib/.svn/entries wml_backend/p2_mp4h/lib/.svn/format wml_backend/p2_mp4h/lib/.svn/prop-base/COPYING.LIB.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/error.c.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/error.h.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/getopt1.c.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/getopt.c.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/getopt.h.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/obstack.c.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/obstack.h.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/strtol.c.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/xmalloc.c.svn-base wml_backend/p2_mp4h/lib/.svn/prop-base/xstrdup.c.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/COPYING.LIB.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/error.c.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/error.h.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/getopt1.c.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/getopt.c.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/getopt.h.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/Makefile.am.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/obstack.c.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/obstack.h.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/strtol.c.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/xmalloc.c.svn-base wml_backend/p2_mp4h/lib/.svn/text-base/xstrdup.c.svn-base wml_backend/p2_mp4h/lib/xmalloc.c wml_backend/p2_mp4h/lib/xstrdup.c wml_backend/p2_mp4h/ltmain.sh wml_backend/p2_mp4h/Makefile.am wml_backend/p2_mp4h/Makefile.am~ wml_backend/p2_mp4h/Makefile.in wml_backend/p2_mp4h/MANIFEST wml_backend/p2_mp4h/missing wml_backend/p2_mp4h/mkinstalldirs wml_backend/p2_mp4h/modules/intl/gettext.c wml_backend/p2_mp4h/modules/intl/gettext.mp4h wml_backend/p2_mp4h/modules/intl/gettext.src wml_backend/p2_mp4h/modules/intl/Makefile.am wml_backend/p2_mp4h/modules/intl/Makefile.am~ wml_backend/p2_mp4h/modules/intl/Makefile.in wml_backend/p2_mp4h/modules/intl/.svn/dir-prop-base wml_backend/p2_mp4h/modules/intl/.svn/entries wml_backend/p2_mp4h/modules/intl/.svn/format wml_backend/p2_mp4h/modules/intl/.svn/prop-base/gettext.c.svn-base wml_backend/p2_mp4h/modules/intl/.svn/prop-base/gettext.mp4h.svn-base wml_backend/p2_mp4h/modules/intl/.svn/prop-base/gettext.src.svn-base wml_backend/p2_mp4h/modules/intl/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/modules/intl/.svn/text-base/gettext.c.svn-base wml_backend/p2_mp4h/modules/intl/.svn/text-base/gettext.mp4h.svn-base wml_backend/p2_mp4h/modules/intl/.svn/text-base/gettext.src.svn-base wml_backend/p2_mp4h/modules/intl/.svn/text-base/Makefile.am.svn-base wml_backend/p2_mp4h/modules/Makefile.am wml_backend/p2_mp4h/modules/Makefile.in wml_backend/p2_mp4h/modules/subdirs.am wml_backend/p2_mp4h/modules/.svn/dir-prop-base wml_backend/p2_mp4h/modules/.svn/entries wml_backend/p2_mp4h/modules/.svn/format wml_backend/p2_mp4h/modules/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/modules/.svn/text-base/Makefile.am.svn-base wml_backend/p2_mp4h/modules/system/exec.c wml_backend/p2_mp4h/modules/system/exec.src wml_backend/p2_mp4h/modules/system/Makefile.am wml_backend/p2_mp4h/modules/system/Makefile.am~ wml_backend/p2_mp4h/modules/system/Makefile.in wml_backend/p2_mp4h/modules/system/sh.c wml_backend/p2_mp4h/modules/system/sh.mp4h wml_backend/p2_mp4h/modules/system/sh.src wml_backend/p2_mp4h/modules/system/.svn/dir-prop-base wml_backend/p2_mp4h/modules/system/.svn/entries wml_backend/p2_mp4h/modules/system/.svn/format wml_backend/p2_mp4h/modules/system/.svn/prop-base/exec.c.svn-base wml_backend/p2_mp4h/modules/system/.svn/prop-base/exec.src.svn-base wml_backend/p2_mp4h/modules/system/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/modules/system/.svn/prop-base/sh.c.svn-base wml_backend/p2_mp4h/modules/system/.svn/prop-base/sh.mp4h.svn-base wml_backend/p2_mp4h/modules/system/.svn/prop-base/sh.src.svn-base wml_backend/p2_mp4h/modules/system/.svn/text-base/exec.c.svn-base wml_backend/p2_mp4h/modules/system/.svn/text-base/exec.src.svn-base wml_backend/p2_mp4h/modules/system/.svn/text-base/Makefile.am.svn-base wml_backend/p2_mp4h/modules/system/.svn/text-base/sh.c.svn-base wml_backend/p2_mp4h/modules/system/.svn/text-base/sh.mp4h.svn-base wml_backend/p2_mp4h/modules/system/.svn/text-base/sh.src.svn-base wml_backend/p2_mp4h/mp4h-config.src wml_backend/p2_mp4h/pcre/dftables.c wml_backend/p2_mp4h/pcre/internal.h wml_backend/p2_mp4h/pcre/Makefile~ wml_backend/p2_mp4h/pcre/Makefile.am wml_backend/p2_mp4h/pcre/Makefile.in wml_backend/p2_mp4h/pcre/maketables.c wml_backend/p2_mp4h/pcre/pcre.c wml_backend/p2_mp4h/pcre/pcre.h wml_backend/p2_mp4h/pcre/study.c wml_backend/p2_mp4h/pcre/.svn/dir-prop-base wml_backend/p2_mp4h/pcre/.svn/entries wml_backend/p2_mp4h/pcre/.svn/format wml_backend/p2_mp4h/pcre/.svn/prop-base/dftables.c.svn-base wml_backend/p2_mp4h/pcre/.svn/prop-base/internal.h.svn-base wml_backend/p2_mp4h/pcre/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/pcre/.svn/prop-base/maketables.c.svn-base wml_backend/p2_mp4h/pcre/.svn/prop-base/pcre.c.svn-base wml_backend/p2_mp4h/pcre/.svn/prop-base/pcre.h.svn-base wml_backend/p2_mp4h/pcre/.svn/prop-base/study.c.svn-base wml_backend/p2_mp4h/pcre/.svn/text-base/dftables.c.svn-base wml_backend/p2_mp4h/pcre/.svn/text-base/internal.h.svn-base wml_backend/p2_mp4h/pcre/.svn/text-base/Makefile.am.svn-base wml_backend/p2_mp4h/pcre/.svn/text-base/maketables.c.svn-base wml_backend/p2_mp4h/pcre/.svn/text-base/pcre.c.svn-base wml_backend/p2_mp4h/pcre/.svn/text-base/pcre.h.svn-base wml_backend/p2_mp4h/pcre/.svn/text-base/study.c.svn-base wml_backend/p2_mp4h/po/ChangeLog wml_backend/p2_mp4h/po/LINGUAS wml_backend/p2_mp4h/po/Makefile.in.in wml_backend/p2_mp4h/po/mp4h.pot wml_backend/p2_mp4h/po/POTFILES.in wml_backend/p2_mp4h/po/.svn/dir-prop-base wml_backend/p2_mp4h/po/.svn/entries wml_backend/p2_mp4h/po/.svn/format wml_backend/p2_mp4h/po/.svn/prop-base/ChangeLog.svn-base wml_backend/p2_mp4h/po/.svn/prop-base/LINGUAS.svn-base wml_backend/p2_mp4h/po/.svn/prop-base/Makefile.in.in.svn-base wml_backend/p2_mp4h/po/.svn/prop-base/POTFILES.in.svn-base wml_backend/p2_mp4h/po/svn-prop.tmp~ wml_backend/p2_mp4h/po/.svn/text-base/ChangeLog.svn-base wml_backend/p2_mp4h/po/.svn/text-base/LINGUAS.svn-base wml_backend/p2_mp4h/po/.svn/text-base/Makefile.in.in.svn-base wml_backend/p2_mp4h/po/.svn/text-base/mp4h.pot.svn-base wml_backend/p2_mp4h/po/.svn/text-base/POTFILES.in.svn-base wml_backend/p2_mp4h/README wml_backend/p2_mp4h/README.pcre wml_backend/p2_mp4h/shtool wml_backend/p2_mp4h/src/builtin.c wml_backend/p2_mp4h/src/builtin.h wml_backend/p2_mp4h/src/debug.c wml_backend/p2_mp4h/src/devel.c wml_backend/p2_mp4h/src/freeze.c wml_backend/p2_mp4h/src/input.c wml_backend/p2_mp4h/src/ltdl.c wml_backend/p2_mp4h/src/ltdl.c.patch wml_backend/p2_mp4h/src/ltdl.h wml_backend/p2_mp4h/src/macro.c wml_backend/p2_mp4h/src/Makefile.am wml_backend/p2_mp4h/src/Makefile.in wml_backend/p2_mp4h/src/module.c wml_backend/p2_mp4h/src/mp4h.c wml_backend/p2_mp4h/src/mp4h.h wml_backend/p2_mp4h/src/output.c wml_backend/p2_mp4h/src/path.c wml_backend/p2_mp4h/src/readme.tmpl wml_backend/p2_mp4h/src/.svn/dir-prop-base wml_backend/p2_mp4h/src/.svn/entries wml_backend/p2_mp4h/src/.svn/format wml_backend/p2_mp4h/src/.svn/prop-base/builtin.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/builtin.h.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/debug.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/devel.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/freeze.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/input.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/macro.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/module.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/mp4h.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/mp4h.h.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/output.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/path.c.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/readme.tmpl.svn-base wml_backend/p2_mp4h/src/.svn/prop-base/symtab.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/builtin.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/builtin.h.svn-base wml_backend/p2_mp4h/src/.svn/text-base/debug.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/devel.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/freeze.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/input.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/ltdl.c.patch.svn-base wml_backend/p2_mp4h/src/.svn/text-base/ltdl.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/ltdl.h.svn-base wml_backend/p2_mp4h/src/.svn/text-base/macro.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/Makefile.am.svn-base wml_backend/p2_mp4h/src/.svn/text-base/module.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/mp4h.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/mp4h.h.svn-base wml_backend/p2_mp4h/src/.svn/text-base/output.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/path.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/readme.tmpl.svn-base wml_backend/p2_mp4h/src/.svn/text-base/symtab.c.svn-base wml_backend/p2_mp4h/src/.svn/text-base/version.c.svn-base wml_backend/p2_mp4h/src/symtab.c wml_backend/p2_mp4h/src/version.c wml_backend/p2_mp4h/.svn/dir-prop-base wml_backend/p2_mp4h/.svn/entries wml_backend/p2_mp4h/.svn/format wml_backend/p2_mp4h/.svn/prop-base/ABOUT-NLS.svn-base wml_backend/p2_mp4h/.svn/prop-base/acinclude.m4.svn-base wml_backend/p2_mp4h/.svn/prop-base/autogen.sh.svn-base wml_backend/p2_mp4h/.svn/prop-base/ChangeLog.svn-base wml_backend/p2_mp4h/.svn/prop-base/config.rpath.svn-base wml_backend/p2_mp4h/.svn/prop-base/configure.ac.svn-base wml_backend/p2_mp4h/.svn/prop-base/COPYING.svn-base wml_backend/p2_mp4h/.svn/prop-base/CREDITS.svn-base wml_backend/p2_mp4h/.svn/prop-base/depcomp.svn-base wml_backend/p2_mp4h/.svn/prop-base/install-sh.svn-base wml_backend/p2_mp4h/.svn/prop-base/INSTALL.svn-base wml_backend/p2_mp4h/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/.svn/prop-base/missing.svn-base wml_backend/p2_mp4h/.svn/prop-base/mkinstalldirs.svn-base wml_backend/p2_mp4h/.svn/prop-base/mp4h-config.src.svn-base wml_backend/p2_mp4h/.svn/prop-base/README.pcre.svn-base wml_backend/p2_mp4h/.svn/prop-base/shtool.svn-base wml_backend/p2_mp4h/svn-prop.tmp~ wml_backend/p2_mp4h/.svn/text-base/ABOUT-NLS.svn-base wml_backend/p2_mp4h/.svn/text-base/acconfig.h.svn-base wml_backend/p2_mp4h/.svn/text-base/acinclude.m4.svn-base wml_backend/p2_mp4h/.svn/text-base/autogen.sh.svn-base wml_backend/p2_mp4h/.svn/text-base/ChangeLog.svn-base wml_backend/p2_mp4h/.svn/text-base/config.rpath.svn-base wml_backend/p2_mp4h/.svn/text-base/configure.ac.svn-base wml_backend/p2_mp4h/.svn/text-base/COPYING.svn-base wml_backend/p2_mp4h/.svn/text-base/CREDITS.svn-base wml_backend/p2_mp4h/.svn/text-base/depcomp.svn-base wml_backend/p2_mp4h/.svn/text-base/install-sh.svn-base wml_backend/p2_mp4h/.svn/text-base/INSTALL.svn-base wml_backend/p2_mp4h/.svn/text-base/Makefile.am.svn-base wml_backend/p2_mp4h/.svn/text-base/MANIFEST.svn-base wml_backend/p2_mp4h/.svn/text-base/missing.svn-base wml_backend/p2_mp4h/.svn/text-base/mkinstalldirs.svn-base wml_backend/p2_mp4h/.svn/text-base/mp4h-config.src.svn-base wml_backend/p2_mp4h/.svn/text-base/README.pcre.svn-base wml_backend/p2_mp4h/.svn/text-base/README.svn-base wml_backend/p2_mp4h/.svn/text-base/shtool.svn-base wml_backend/p2_mp4h/tests/Makefile.am wml_backend/p2_mp4h/tests/Makefile.in wml_backend/p2_mp4h/tests/.svn/dir-prop-base wml_backend/p2_mp4h/tests/.svn/entries wml_backend/p2_mp4h/tests/.svn/format wml_backend/p2_mp4h/tests/.svn/prop-base/Makefile.am.svn-base wml_backend/p2_mp4h/tests/.svn/text-base/Makefile.am.svn-base wml_backend/p3_eperl/acconfig.h wml_backend/p3_eperl/aclocal.m4 wml_backend/p3_eperl/ARTISTIC wml_backend/p3_eperl/config_ac.h.in wml_backend/p3_eperl/config_sc.h.in wml_backend/p3_eperl/configure wml_backend/p3_eperl/configure.in wml_backend/p3_eperl/configure.in.rej wml_backend/p3_eperl/COPYING wml_backend/p3_eperl/eperl_config.c wml_backend/p3_eperl/eperl_config.h wml_backend/p3_eperl/eperl_debug.c wml_backend/p3_eperl/eperl_getopt.c wml_backend/p3_eperl/eperl_getopt.h wml_backend/p3_eperl/eperl_global.h wml_backend/p3_eperl/eperl_http.c wml_backend/p3_eperl/eperl_license.c wml_backend/p3_eperl/eperl_logo.c wml_backend/p3_eperl/eperl_logo.gif wml_backend/p3_eperl/eperl_main.c wml_backend/p3_eperl/eperl_parse.c wml_backend/p3_eperl/eperl_perl5.c wml_backend/p3_eperl/eperl_perl5.h wml_backend/p3_eperl/eperl_perl5_sm.pl wml_backend/p3_eperl/eperl.pod wml_backend/p3_eperl/eperl_powered.c wml_backend/p3_eperl/eperl_powered.gif wml_backend/p3_eperl/eperl_pp.c wml_backend/p3_eperl/eperl_proto.h wml_backend/p3_eperl/eperl_readme.c wml_backend/p3_eperl/eperl_security.h wml_backend/p3_eperl/eperl_sys.c wml_backend/p3_eperl/eperl_version.c wml_backend/p3_eperl/etc/asc2c wml_backend/p3_eperl/etc/bin2c wml_backend/p3_eperl/etc/mkproto wml_backend/p3_eperl/etc/shtool wml_backend/p3_eperl/etc/.svn/entries wml_backend/p3_eperl/etc/.svn/format wml_backend/p3_eperl/etc/.svn/prop-base/asc2c.svn-base wml_backend/p3_eperl/etc/.svn/prop-base/bin2c.svn-base wml_backend/p3_eperl/etc/.svn/prop-base/mkproto.svn-base wml_backend/p3_eperl/etc/.svn/prop-base/shtool.svn-base wml_backend/p3_eperl/etc/.svn/text-base/asc2c.svn-base wml_backend/p3_eperl/etc/.svn/text-base/bin2c.svn-base wml_backend/p3_eperl/etc/.svn/text-base/mkproto.svn-base wml_backend/p3_eperl/etc/.svn/text-base/shtool.svn-base wml_backend/p3_eperl/Makefile.in wml_backend/p3_eperl/README wml_backend/p3_eperl/.svn/dir-prop-base wml_backend/p3_eperl/.svn/entries wml_backend/p3_eperl/.svn/format wml_backend/p3_eperl/.svn/prop-base/eperl_logo.gif.svn-base wml_backend/p3_eperl/.svn/prop-base/eperl_powered.gif.svn-base wml_backend/p3_eperl/svn-prop.tmp~ wml_backend/p3_eperl/.svn/text-base/acconfig.h.svn-base wml_backend/p3_eperl/.svn/text-base/aclocal.m4.svn-base wml_backend/p3_eperl/.svn/text-base/ARTISTIC.svn-base wml_backend/p3_eperl/.svn/text-base/config_ac.h.in.svn-base wml_backend/p3_eperl/.svn/text-base/config_sc.h.in.svn-base wml_backend/p3_eperl/.svn/text-base/configure.in.svn-base wml_backend/p3_eperl/.svn/text-base/COPYING.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_config.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_config.h.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_debug.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_getopt.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_getopt.h.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_global.h.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_http.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_license.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_logo.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_logo.gif.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_main.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_parse.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_perl5.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_perl5.h.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_perl5_sm.pl.svn-base wml_backend/p3_eperl/.svn/text-base/eperl.pod.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_powered.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_powered.gif.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_pp.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_proto.h.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_readme.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_security.h.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_sys.c.svn-base wml_backend/p3_eperl/.svn/text-base/eperl_version.c.svn-base wml_backend/p3_eperl/.svn/text-base/Makefile.in.svn-base wml_backend/p3_eperl/.svn/text-base/README.svn-base wml_backend/p4_gm4/acconfig.h wml_backend/p4_gm4/aclocal.m4 wml_backend/p4_gm4/config.h.in wml_backend/p4_gm4/configure wml_backend/p4_gm4/configure.in wml_backend/p4_gm4/doc/m4.txt wml_backend/p4_gm4/doc/.svn/entries wml_backend/p4_gm4/doc/.svn/format wml_backend/p4_gm4/doc/.svn/text-base/m4.txt.svn-base wml_backend/p4_gm4/install.sh wml_backend/p4_gm4/lib/alloca.c wml_backend/p4_gm4/lib/error.c wml_backend/p4_gm4/lib/error.h wml_backend/p4_gm4/lib/getopt1.c wml_backend/p4_gm4/lib/getopt.c wml_backend/p4_gm4/lib/getopt.h wml_backend/p4_gm4/lib/Makefile.in wml_backend/p4_gm4/lib/obstack.c wml_backend/p4_gm4/lib/obstack.h wml_backend/p4_gm4/lib/regex.c wml_backend/p4_gm4/lib/regex.h wml_backend/p4_gm4/lib/strtol.c wml_backend/p4_gm4/lib/.svn/dir-prop-base wml_backend/p4_gm4/lib/.svn/entries wml_backend/p4_gm4/lib/.svn/format wml_backend/p4_gm4/lib/.svn/text-base/alloca.c.svn-base wml_backend/p4_gm4/lib/.svn/text-base/error.c.svn-base wml_backend/p4_gm4/lib/.svn/text-base/error.h.svn-base wml_backend/p4_gm4/lib/.svn/text-base/getopt1.c.svn-base wml_backend/p4_gm4/lib/.svn/text-base/getopt.c.svn-base wml_backend/p4_gm4/lib/.svn/text-base/getopt.h.svn-base wml_backend/p4_gm4/lib/.svn/text-base/Makefile.in.svn-base wml_backend/p4_gm4/lib/.svn/text-base/obstack.c.svn-base wml_backend/p4_gm4/lib/.svn/text-base/obstack.h.svn-base wml_backend/p4_gm4/lib/.svn/text-base/regex.c.svn-base wml_backend/p4_gm4/lib/.svn/text-base/regex.h.svn-base wml_backend/p4_gm4/lib/.svn/text-base/strtol.c.svn-base wml_backend/p4_gm4/lib/.svn/text-base/xmalloc.c.svn-base wml_backend/p4_gm4/lib/.svn/text-base/xstrdup.c.svn-base wml_backend/p4_gm4/lib/xmalloc.c wml_backend/p4_gm4/lib/xstrdup.c wml_backend/p4_gm4/Makefile.in wml_backend/p4_gm4/src/ansi2knr.1 wml_backend/p4_gm4/src/ansi2knr.c wml_backend/p4_gm4/src/builtin.c wml_backend/p4_gm4/src/debug.c wml_backend/p4_gm4/src/eval.c wml_backend/p4_gm4/src/format.c wml_backend/p4_gm4/src/freeze.c wml_backend/p4_gm4/src/input.c wml_backend/p4_gm4/src/m4.c wml_backend/p4_gm4/src/m4.h wml_backend/p4_gm4/src/macro.c wml_backend/p4_gm4/src/Makefile.in wml_backend/p4_gm4/src/output.c wml_backend/p4_gm4/src/path.c wml_backend/p4_gm4/src/.svn/dir-prop-base wml_backend/p4_gm4/src/.svn/entries wml_backend/p4_gm4/src/.svn/format wml_backend/p4_gm4/src/.svn/text-base/ansi2knr.1.svn-base wml_backend/p4_gm4/src/.svn/text-base/ansi2knr.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/builtin.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/debug.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/eval.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/format.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/freeze.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/input.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/m4.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/m4.h.svn-base wml_backend/p4_gm4/src/.svn/text-base/macro.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/Makefile.in.svn-base wml_backend/p4_gm4/src/.svn/text-base/output.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/path.c.svn-base wml_backend/p4_gm4/src/.svn/text-base/symtab.c.svn-base wml_backend/p4_gm4/src/symtab.c wml_backend/p4_gm4/stamp-h.in wml_backend/p4_gm4/.svn/dir-prop-base wml_backend/p4_gm4/.svn/entries wml_backend/p4_gm4/.svn/format wml_backend/p4_gm4/.svn/prop-base/configure.svn-base wml_backend/p4_gm4/.svn/prop-base/install.sh.svn-base wml_backend/p4_gm4/.svn/text-base/acconfig.h.svn-base wml_backend/p4_gm4/.svn/text-base/aclocal.m4.svn-base wml_backend/p4_gm4/.svn/text-base/config.h.in.svn-base wml_backend/p4_gm4/.svn/text-base/configure.in.svn-base wml_backend/p4_gm4/.svn/text-base/configure.svn-base wml_backend/p4_gm4/.svn/text-base/install.sh.svn-base wml_backend/p4_gm4/.svn/text-base/Makefile.in.svn-base wml_backend/p4_gm4/.svn/text-base/stamp-h.in.svn-base wml_backend/p5_divert/divert.src wml_backend/p5_divert/Makefile.in wml_backend/p5_divert/.svn/dir-prop-base wml_backend/p5_divert/.svn/entries wml_backend/p5_divert/.svn/format wml_backend/p5_divert/.svn/text-base/divert.src.svn-base wml_backend/p5_divert/.svn/text-base/Makefile.in.svn-base wml_backend/p6_asubst/asubst.src wml_backend/p6_asubst/Makefile.in wml_backend/p6_asubst/.svn/dir-prop-base wml_backend/p6_asubst/.svn/entries wml_backend/p6_asubst/.svn/format wml_backend/p6_asubst/.svn/text-base/asubst.src.svn-base wml_backend/p6_asubst/.svn/text-base/Makefile.in.svn-base wml_backend/p7_htmlfix/htmlfix.src wml_backend/p7_htmlfix/Makefile.in wml_backend/p7_htmlfix/.svn/dir-prop-base wml_backend/p7_htmlfix/.svn/entries wml_backend/p7_htmlfix/.svn/format wml_backend/p7_htmlfix/.svn/text-base/htmlfix.src.svn-base wml_backend/p7_htmlfix/.svn/text-base/Makefile.in.svn-base wml_backend/p8_htmlstrip/htmlstrip.src wml_backend/p8_htmlstrip/Makefile.in wml_backend/p8_htmlstrip/.svn/dir-prop-base wml_backend/p8_htmlstrip/.svn/entries wml_backend/p8_htmlstrip/.svn/format wml_backend/p8_htmlstrip/.svn/text-base/htmlstrip.src.svn-base wml_backend/p8_htmlstrip/.svn/text-base/Makefile.in.svn-base wml_backend/p9_slice/aclocal.m4 wml_backend/p9_slice/ChangeLog wml_backend/p9_slice/configure wml_backend/p9_slice/configure.ac wml_backend/p9_slice/COPYING wml_backend/p9_slice/etc/expand.in wml_backend/p9_slice/etc/fixconfigure wml_backend/p9_slice/etc/shtool wml_backend/p9_slice/etc/.svn/dir-prop-base wml_backend/p9_slice/etc/.svn/entries wml_backend/p9_slice/etc/.svn/format wml_backend/p9_slice/etc/.svn/prop-base/fixconfigure.svn-base wml_backend/p9_slice/etc/.svn/prop-base/shtool.svn-base wml_backend/p9_slice/etc/.svn/text-base/expand.in.svn-base wml_backend/p9_slice/etc/.svn/text-base/fixconfigure.svn-base wml_backend/p9_slice/etc/.svn/text-base/shtool.svn-base wml_backend/p9_slice/INSTALL wml_backend/p9_slice/LICENSE wml_backend/p9_slice/Makefile.in wml_backend/p9_slice/MANIFEST wml_backend/p9_slice/README wml_backend/p9_slice/slice_main.pl wml_backend/p9_slice/slice_pass1.pl wml_backend/p9_slice/slice_pass2.pl wml_backend/p9_slice/slice_pass3.pl wml_backend/p9_slice/slice.pod wml_backend/p9_slice/slice_setup.pl wml_backend/p9_slice/slice_term.pl wml_backend/p9_slice/slice_term.y wml_backend/p9_slice/slice_util.pl wml_backend/p9_slice/slice_vers.pl wml_backend/p9_slice/.svn/dir-prop-base wml_backend/p9_slice/.svn/entries wml_backend/p9_slice/.svn/format wml_backend/p9_slice/.svn/prop-base/configure.svn-base wml_backend/p9_slice/.svn/text-base/aclocal.m4.svn-base wml_backend/p9_slice/.svn/text-base/ChangeLog.svn-base wml_backend/p9_slice/.svn/text-base/configure.ac.svn-base wml_backend/p9_slice/.svn/text-base/configure.svn-base wml_backend/p9_slice/.svn/text-base/COPYING.svn-base wml_backend/p9_slice/.svn/text-base/INSTALL.svn-base wml_backend/p9_slice/.svn/text-base/LICENSE.svn-base wml_backend/p9_slice/.svn/text-base/Makefile.in.svn-base wml_backend/p9_slice/.svn/text-base/MANIFEST.svn-base wml_backend/p9_slice/.svn/text-base/README.svn-base wml_backend/p9_slice/.svn/text-base/slice_main.pl.svn-base wml_backend/p9_slice/.svn/text-base/slice_pass1.pl.svn-base wml_backend/p9_slice/.svn/text-base/slice_pass2.pl.svn-base wml_backend/p9_slice/.svn/text-base/slice_pass3.pl.svn-base wml_backend/p9_slice/.svn/text-base/slice.pod.svn-base wml_backend/p9_slice/.svn/text-base/slice_setup.pl.svn-base wml_backend/p9_slice/.svn/text-base/slice_term.pl.svn-base wml_backend/p9_slice/.svn/text-base/slice_term.y.svn-base wml_backend/p9_slice/.svn/text-base/slice_util.pl.svn-base wml_backend/p9_slice/.svn/text-base/slice_vers.pl.svn-base wml_backend/svn-commit.tmp~ wml_backend/.svn/dir-prop-base wml_backend/.svn/entries wml_backend/.svn/format wml_backend/.svn/text-base/Makefile.in.svn-base wml_common/bitvector/BitVector.c wml_common/bitvector/BitVector.h wml_common/bitvector/Makefile.PL wml_common/bitvector/MANIFEST wml_common/bitvector/README.txt wml_common/bitvector/.svn/dir-prop-base wml_common/bitvector/.svn/entries wml_common/bitvector/.svn/format wml_common/bitvector/.svn/text-base/BitVector.c.svn-base wml_common/bitvector/.svn/text-base/BitVector.h.svn-base wml_common/bitvector/.svn/text-base/Makefile.PL.svn-base wml_common/bitvector/.svn/text-base/MANIFEST.svn-base wml_common/bitvector/.svn/text-base/README.txt.svn-base wml_common/bitvector/.svn/text-base/ToolBox.h.svn-base wml_common/bitvector/.svn/text-base/typemap.svn-base wml_common/bitvector/.svn/text-base/Vector.pm.svn-base wml_common/bitvector/.svn/text-base/Vector.xs.svn-base wml_common/bitvector/ToolBox.h wml_common/bitvector/typemap wml_common/bitvector/Vector.pm wml_common/bitvector/Vector.xs wml_common/filepathconvert/Makefile.PL wml_common/filepathconvert/MANIFEST wml_common/filepathconvert/PathConvert.pm wml_common/filepathconvert/.svn/dir-prop-base wml_common/filepathconvert/.svn/entries wml_common/filepathconvert/.svn/format wml_common/filepathconvert/.svn/text-base/Makefile.PL.svn-base wml_common/filepathconvert/.svn/text-base/MANIFEST.svn-base wml_common/filepathconvert/.svn/text-base/PathConvert.pm.svn-base wml_common/gd/configure wml_common/gd/configure.in wml_common/gd/GD.pm wml_common/gd/GD.xs wml_common/gd/libgd/COPYING wml_common/gd/libgd/gd.c wml_common/gd/libgd/gd_gif.c wml_common/gd/libgd/gd.h wml_common/gd/libgd/gd_io.c wml_common/gd/libgd/gd_io_dp.c wml_common/gd/libgd/gd_io.h wml_common/gd/libgd/gd_png.c wml_common/gd/libgd/Makefile.PL.in wml_common/gd/libgd/README wml_common/gd/libgd/.svn/dir-prop-base wml_common/gd/libgd/.svn/entries wml_common/gd/libgd/.svn/format wml_common/gd/libgd/.svn/text-base/COPYING.svn-base wml_common/gd/libgd/.svn/text-base/gd.c.svn-base wml_common/gd/libgd/.svn/text-base/gd_gif.c.svn-base wml_common/gd/libgd/.svn/text-base/gd.h.svn-base wml_common/gd/libgd/.svn/text-base/gd_io.c.svn-base wml_common/gd/libgd/.svn/text-base/gd_io_dp.c.svn-base wml_common/gd/libgd/.svn/text-base/gd_io.h.svn-base wml_common/gd/libgd/.svn/text-base/gd_png.c.svn-base wml_common/gd/libgd/.svn/text-base/Makefile.PL.in.svn-base wml_common/gd/libgd/.svn/text-base/README.svn-base wml_common/gd/Makefile.PL.in wml_common/gd/MANIFEST wml_common/gd/README wml_common/gd/.svn/dir-prop-base wml_common/gd/.svn/entries wml_common/gd/.svn/format wml_common/gd/.svn/prop-base/configure.svn-base wml_common/gd/.svn/text-base/configure.in.svn-base wml_common/gd/.svn/text-base/configure.svn-base wml_common/gd/.svn/text-base/GD.pm.svn-base wml_common/gd/.svn/text-base/GD.xs.svn-base wml_common/gd/.svn/text-base/Makefile.PL.in.svn-base wml_common/gd/.svn/text-base/MANIFEST.svn-base wml_common/gd/.svn/text-base/README.svn-base wml_common/gd/.svn/text-base/typemap.svn-base wml_common/gd/typemap wml_common/getoptlong/GetoptLong.pm wml_common/getoptlong/Makefile.PL wml_common/getoptlong/MANIFEST wml_common/getoptlong/README wml_common/getoptlong/.svn/dir-prop-base wml_common/getoptlong/.svn/entries wml_common/getoptlong/.svn/format wml_common/getoptlong/.svn/text-base/GetoptLong.pm.svn-base wml_common/getoptlong/.svn/text-base/Makefile.PL.svn-base wml_common/getoptlong/.svn/text-base/MANIFEST.svn-base wml_common/getoptlong/.svn/text-base/README.svn-base wml_common/htmlclean/Changes wml_common/htmlclean/Clean.pm wml_common/htmlclean/HTML/Clean.pm wml_common/htmlclean/HTML/.svn/entries wml_common/htmlclean/HTML/.svn/format wml_common/htmlclean/HTML/.svn/text-base/Clean.pm.svn-base wml_common/htmlclean/Makefile.PL wml_common/htmlclean/MANIFEST wml_common/htmlclean/README wml_common/htmlclean/.svn/dir-prop-base wml_common/htmlclean/.svn/entries wml_common/htmlclean/.svn/format wml_common/htmlclean/.svn/text-base/Changes.svn-base wml_common/htmlclean/.svn/text-base/Clean.pm.svn-base wml_common/htmlclean/.svn/text-base/Makefile.PL.svn-base wml_common/htmlclean/.svn/text-base/MANIFEST.svn-base wml_common/htmlclean/.svn/text-base/README.svn-base wml_common/htmlclean/.svn/text-base/TODO.svn-base wml_common/htmlclean/TODO wml_common/imagesize/Makefile.PL wml_common/imagesize/MANIFEST wml_common/imagesize/README wml_common/imagesize/Size.pm wml_common/imagesize/.svn/dir-prop-base wml_common/imagesize/.svn/entries wml_common/imagesize/.svn/format wml_common/imagesize/.svn/text-base/Makefile.PL.svn-base wml_common/imagesize/.svn/text-base/MANIFEST.svn-base wml_common/imagesize/.svn/text-base/README.svn-base wml_common/imagesize/.svn/text-base/Size.pm.svn-base wml_common/io/IO/Dir.pm wml_common/io/IO/File.pm wml_common/io/IO/Handle.pm wml_common/io/IO/Pipe.pm wml_common/io/IO.pm wml_common/io/IO/Poll.pm wml_common/io/IO/Seekable.pm wml_common/io/IO/Select.pm wml_common/io/IO/Socket/INET.pm wml_common/io/IO/Socket.pm wml_common/io/IO/Socket/.svn/entries wml_common/io/IO/Socket/.svn/format wml_common/io/IO/Socket/.svn/text-base/INET.pm.svn-base wml_common/io/IO/Socket/.svn/text-base/UNIX.pm.svn-base wml_common/io/IO/Socket/UNIX.pm wml_common/io/IO/.svn/entries wml_common/io/IO/.svn/format wml_common/io/IO/.svn/text-base/Dir.pm.svn-base wml_common/io/IO/.svn/text-base/File.pm.svn-base wml_common/io/IO/.svn/text-base/Handle.pm.svn-base wml_common/io/IO/.svn/text-base/Pipe.pm.svn-base wml_common/io/IO/.svn/text-base/Poll.pm.svn-base wml_common/io/IO/.svn/text-base/Seekable.pm.svn-base wml_common/io/IO/.svn/text-base/Select.pm.svn-base wml_common/io/IO/.svn/text-base/Socket.pm.svn-base wml_common/io/IO.xs wml_common/io/Makefile.PL wml_common/io/MANIFEST wml_common/io/poll.c wml_common/io/poll.h wml_common/io/README wml_common/io/.svn/dir-prop-base wml_common/io/.svn/entries wml_common/io/.svn/format wml_common/io/.svn/text-base/IO.pm.svn-base wml_common/io/.svn/text-base/IO.xs.svn-base wml_common/io/.svn/text-base/Makefile.PL.svn-base wml_common/io/.svn/text-base/MANIFEST.svn-base wml_common/io/.svn/text-base/poll.c.svn-base wml_common/io/.svn/text-base/poll.h.svn-base wml_common/io/.svn/text-base/README.svn-base wml_common/Makefile.in wml_common/.svn/dir-prop-base wml_common/.svn/entries wml_common/.svn/format wml_common/.svn/text-base/Makefile.in.svn-base wml_common/termreadkey/Configure.pm wml_common/termreadkey/genchars.pl wml_common/termreadkey/Makefile.PL wml_common/termreadkey/MANIFEST wml_common/termreadkey/ppport.h wml_common/termreadkey/ReadKey.pm wml_common/termreadkey/ReadKey.xs wml_common/termreadkey/README wml_common/termreadkey/.svn/dir-prop-base wml_common/termreadkey/.svn/entries wml_common/termreadkey/.svn/format wml_common/termreadkey/.svn/text-base/Configure.pm.svn-base wml_common/termreadkey/.svn/text-base/genchars.pl.svn-base wml_common/termreadkey/.svn/text-base/Makefile.PL.svn-base wml_common/termreadkey/.svn/text-base/MANIFEST.svn-base wml_common/termreadkey/.svn/text-base/ppport.h.svn-base wml_common/termreadkey/.svn/text-base/ReadKey.pm.svn-base wml_common/termreadkey/.svn/text-base/ReadKey.xs.svn-base wml_common/termreadkey/.svn/text-base/README.svn-base wml_common/termreadkey/.svn/text-base/test.pl.svn-base wml_common/termreadkey/test.pl wml_contrib/mkwml wml_contrib/navbar-FH.wml wml_contrib/README wml_contrib/.svn/entries wml_contrib/.svn/format wml_contrib/.svn/prop-base/mkwml.svn-base wml_contrib/.svn/prop-base/wmg.cgi.svn-base wml_contrib/.svn/prop-base/wml1to2.svn-base wml_contrib/.svn/text-base/mkwml.svn-base wml_contrib/.svn/text-base/navbar-FH.wml.svn-base wml_contrib/.svn/text-base/README.svn-base wml_contrib/.svn/text-base/tkwmd.svn-base wml_contrib/.svn/text-base/wmg.cgi.svn-base wml_contrib/.svn/text-base/wml1to2.svn-base wml_contrib/.svn/text-base/wml.spec.in.svn-base wml_contrib/.svn/text-base/wml.spec.svn-base wml_contrib/.svn/text-base/wml.vim.svn-base wml_contrib/tkwmd wml_contrib/wmg.cgi wml_contrib/wml1to2 wml_contrib/wml.spec wml_contrib/wml.spec.in wml_contrib/wml.vim wml_docs/Makefile.in wml_docs/.svn/dir-prop-base wml_docs/.svn/entries wml_docs/.svn/format wml_docs/.svn/text-base/Makefile.in.svn-base wml_docs/.svn/text-base/wml_barebone.txt.svn-base wml_docs/.svn/text-base/wml_faq.pod.svn-base wml_docs/.svn/text-base/wml_intro.pod.svn-base wml_docs/.svn/text-base/wml_macros.pod.svn-base wml_docs/.svn/text-base/wml_std_css1.txt.svn-base wml_docs/.svn/text-base/wml_std_css2.txt.svn-base wml_docs/.svn/text-base/wml_std_csspos.txt.svn-base wml_docs/.svn/text-base/wml_std_html20.txt.svn-base wml_docs/.svn/text-base/wml_std_html32.txt.svn-base wml_docs/.svn/text-base/wml_std_html401.txt.svn-base wml_docs/.svn/text-base/wml_std_html40.txt.svn-base wml_docs/.svn/text-base/wml_std_wai10.txt.svn-base wml_docs/.svn/text-base/wml_std_xhtml10.txt.svn-base wml_docs/.svn/text-base/wml_tags.L.incl.svn-base wml_docs/.svn/text-base/wml_tags.L.main.svn-base wml_docs/.svn/text-base/wml_tags.pod.in.svn-base wml_docs/.svn/text-base/wml_tags.pod.pl.svn-base wml_docs/.svn/text-base/wml_tutorial.pod.svn-base wml_docs/wml_barebone.txt wml_docs/wml_faq.pod wml_docs/wml_intro.pod wml_docs/wml_macros.pod wml_docs/wml_std_css1.txt wml_docs/wml_std_css2.txt wml_docs/wml_std_csspos.txt wml_docs/wml_std_html20.txt wml_docs/wml_std_html32.txt wml_docs/wml_std_html401.txt wml_docs/wml_std_html40.txt wml_docs/wml_std_wai10.txt wml_docs/wml_std_xhtml10.txt wml_docs/wml_tags.L.incl wml_docs/wml_tags.L.main wml_docs/wml_tags.pod.in wml_docs/wml_tags.pod.pl wml_docs/wml_tutorial.pod wml_frontend/Makefile.in wml_frontend/.svn/dir-prop-base wml_frontend/.svn/entries wml_frontend/.svn/format wml_frontend/.svn/text-base/Makefile.in.svn-base wml_frontend/.svn/text-base/wmb.src.svn-base wml_frontend/.svn/text-base/wmd_missing.src.svn-base wml_frontend/.svn/text-base/wmd.src.svn-base wml_frontend/.svn/text-base/wmd.txt.svn-base wml_frontend/.svn/text-base/wmk.src.svn-base wml_frontend/.svn/text-base/wml.src.svn-base wml_frontend/.svn/text-base/wmu.src.svn-base wml_frontend/wmb.src wml_frontend/wmd_missing.src wml_frontend/wmd.src wml_frontend/wmd.txt wml_frontend/wmk.src wml_frontend/wml.src wml_frontend/wmu.src wml_include/all.src wml_include/des/all.src wml_include/des/gfont.src wml_include/des/imgbg.src wml_include/des/imgdot.src wml_include/des/lowsrc.src wml_include/des/navbar.src wml_include/des/preload.src wml_include/des/rollover.src wml_include/des/space.src wml_include/des/.svn/dir-prop-base wml_include/des/.svn/entries wml_include/des/.svn/format wml_include/des/.svn/text-base/all.src.svn-base wml_include/des/.svn/text-base/gfont.src.svn-base wml_include/des/.svn/text-base/imgbg.src.svn-base wml_include/des/.svn/text-base/imgdot.src.svn-base wml_include/des/.svn/text-base/lowsrc.src.svn-base wml_include/des/.svn/text-base/navbar.src.svn-base wml_include/des/.svn/text-base/preload.src.svn-base wml_include/des/.svn/text-base/rollover.src.svn-base wml_include/des/.svn/text-base/space.src.svn-base wml_include/des/.svn/text-base/typography.src.svn-base wml_include/des/typography.src wml_include/fmt/all.src wml_include/fmt/isolatin.src wml_include/fmt/pod.src wml_include/fmt/sdf.src wml_include/fmt/.svn/dir-prop-base wml_include/fmt/.svn/entries wml_include/fmt/.svn/format wml_include/fmt/.svn/text-base/all.src.svn-base wml_include/fmt/.svn/text-base/isolatin.src.svn-base wml_include/fmt/.svn/text-base/pod.src.svn-base wml_include/fmt/.svn/text-base/sdf.src.svn-base wml_include/fmt/.svn/text-base/text.src.svn-base wml_include/fmt/.svn/text-base/url.src.svn-base wml_include/fmt/.svn/text-base/verbatim.src.svn-base wml_include/fmt/.svn/text-base/xtable.src.svn-base wml_include/fmt/text.src wml_include/fmt/url.src wml_include/fmt/verbatim.src wml_include/fmt/xtable.src wml_include/imp/all.src wml_include/imp/csmap.src wml_include/imp/fsview.src wml_include/imp/generic.src wml_include/imp/.svn/dir-prop-base wml_include/imp/.svn/entries wml_include/imp/.svn/format wml_include/imp/.svn/text-base/all.src.svn-base wml_include/imp/.svn/text-base/csmap.src.svn-base wml_include/imp/.svn/text-base/fsview.src.svn-base wml_include/imp/.svn/text-base/generic.src.svn-base wml_include/Makefile.in wml_include/mod/all.src wml_include/mod/MakeMaker.src wml_include/mod/.svn/dir-prop-base wml_include/mod/.svn/entries wml_include/mod/.svn/format wml_include/mod/.svn/text-base/all.src.svn-base wml_include/mod/.svn/text-base/MakeMaker.src.svn-base wml_include/mod/.svn/text-base/version.src.svn-base wml_include/mod/version.src wml_include/std/all.src wml_include/std/box.src wml_include/std/case.src wml_include/std/grid.src wml_include/std/href.src wml_include/std/info.src wml_include/std/label.src wml_include/std/lang.src wml_include/std/logo.src wml_include/std/page.src wml_include/std/.svn/dir-prop-base wml_include/std/.svn/entries wml_include/std/.svn/format wml_include/std/.svn/text-base/all.src.svn-base wml_include/std/.svn/text-base/box.src.svn-base wml_include/std/.svn/text-base/case.src.svn-base wml_include/std/.svn/text-base/grid.src.svn-base wml_include/std/.svn/text-base/href.src.svn-base wml_include/std/.svn/text-base/info.src.svn-base wml_include/std/.svn/text-base/label.src.svn-base wml_include/std/.svn/text-base/lang.src.svn-base wml_include/std/.svn/text-base/logo.src.svn-base wml_include/std/.svn/text-base/page.src.svn-base wml_include/std/.svn/text-base/tags.src.svn-base wml_include/std/.svn/text-base/toc.src.svn-base wml_include/std/tags.src wml_include/std/toc.src wml_include/sup/all.src wml_include/sup/hextriple.src wml_include/sup/path.src wml_include/sup/.svn/dir-prop-base wml_include/sup/.svn/entries wml_include/sup/.svn/format wml_include/sup/.svn/text-base/all.src.svn-base wml_include/sup/.svn/text-base/hextriple.src.svn-base wml_include/sup/.svn/text-base/path.src.svn-base wml_include/.svn/dir-prop-base wml_include/.svn/entries wml_include/.svn/format wml_include/.svn/text-base/all.src.svn-base wml_include/.svn/text-base/Makefile.in.svn-base wml_include/sys/all.src wml_include/sys/bootp3.src.in wml_include/sys/bootp4.src wml_include/sys/compat1.src wml_include/sys/.svn/dir-prop-base wml_include/sys/.svn/entries wml_include/sys/.svn/format wml_include/sys/.svn/text-base/all.src.svn-base wml_include/sys/.svn/text-base/bootp3.src.in.svn-base wml_include/sys/.svn/text-base/bootp4.src.svn-base wml_include/sys/.svn/text-base/compat1.src.svn-base wml_misc/logo-apache.gif wml_misc/logo-apache.info wml_misc/logo-apache.png wml_misc/logo-freebsd.gif wml_misc/logo-freebsd.info wml_misc/logo-freebsd.png wml_misc/logo-gimp.gif wml_misc/logo-gimp.info wml_misc/logo-gimp.png wml_misc/logo-htdig.gif wml_misc/logo-htdig.info wml_misc/logo-htdig.png wml_misc/logo-linux.gif wml_misc/logo-linux.info wml_misc/logo-linux.png wml_misc/logo-netbsd.gif wml_misc/logo-netbsd.info wml_misc/logo-netbsd.png wml_misc/logo-openbsd.gif wml_misc/logo-openbsd.info wml_misc/logo-openbsd.png wml_misc/logo-php3.gif wml_misc/logo-php3.info wml_misc/logo-php3.png wml_misc/logo-php.gif wml_misc/logo-php.info wml_misc/logo-php.png wml_misc/logo-vim.gif wml_misc/logo-vim.info wml_misc/logo-vim.png wml_misc/logo-wml.gif wml_misc/logo-wml.info wml_misc/logo-wml.png wml_misc/logo-xemacs.gif wml_misc/logo-xemacs.info wml_misc/logo-xemacs.png wml_misc/Makefile.in wml_misc/README wml_misc/.svn/dir-prop-base wml_misc/.svn/entries wml_misc/.svn/format wml_misc/.svn/prop-base/logo-apache.gif.svn-base wml_misc/.svn/prop-base/logo-apache.png.svn-base wml_misc/.svn/prop-base/logo-freebsd.gif.svn-base wml_misc/.svn/prop-base/logo-freebsd.png.svn-base wml_misc/.svn/prop-base/logo-gimp.gif.svn-base wml_misc/.svn/prop-base/logo-gimp.png.svn-base wml_misc/.svn/prop-base/logo-htdig.gif.svn-base wml_misc/.svn/prop-base/logo-htdig.png.svn-base wml_misc/.svn/prop-base/logo-linux.gif.svn-base wml_misc/.svn/prop-base/logo-linux.png.svn-base wml_misc/.svn/prop-base/logo-netbsd.gif.svn-base wml_misc/.svn/prop-base/logo-netbsd.png.svn-base wml_misc/.svn/prop-base/logo-openbsd.gif.svn-base wml_misc/.svn/prop-base/logo-openbsd.png.svn-base wml_misc/.svn/prop-base/logo-php3.gif.svn-base wml_misc/.svn/prop-base/logo-php3.png.svn-base wml_misc/.svn/prop-base/logo-php.gif.svn-base wml_misc/.svn/prop-base/logo-php.png.svn-base wml_misc/.svn/prop-base/logo-vim.gif.svn-base wml_misc/.svn/prop-base/logo-vim.png.svn-base wml_misc/.svn/prop-base/logo-wml.gif.svn-base wml_misc/.svn/prop-base/logo-wml.png.svn-base wml_misc/.svn/prop-base/logo-xemacs.gif.svn-base wml_misc/.svn/prop-base/logo-xemacs.png.svn-base wml_misc/.svn/text-base/logo-apache.gif.svn-base wml_misc/.svn/text-base/logo-apache.info.svn-base wml_misc/.svn/text-base/logo-apache.png.svn-base wml_misc/.svn/text-base/logo-freebsd.gif.svn-base wml_misc/.svn/text-base/logo-freebsd.info.svn-base wml_misc/.svn/text-base/logo-freebsd.png.svn-base wml_misc/.svn/text-base/logo-gimp.gif.svn-base wml_misc/.svn/text-base/logo-gimp.info.svn-base wml_misc/.svn/text-base/logo-gimp.png.svn-base wml_misc/.svn/text-base/logo-htdig.gif.svn-base wml_misc/.svn/text-base/logo-htdig.info.svn-base wml_misc/.svn/text-base/logo-htdig.png.svn-base wml_misc/.svn/text-base/logo-linux.gif.svn-base wml_misc/.svn/text-base/logo-linux.info.svn-base wml_misc/.svn/text-base/logo-linux.png.svn-base wml_misc/.svn/text-base/logo-netbsd.gif.svn-base wml_misc/.svn/text-base/logo-netbsd.info.svn-base wml_misc/.svn/text-base/logo-netbsd.png.svn-base wml_misc/.svn/text-base/logo-openbsd.gif.svn-base wml_misc/.svn/text-base/logo-openbsd.info.svn-base wml_misc/.svn/text-base/logo-openbsd.png.svn-base wml_misc/.svn/text-base/logo-php3.gif.svn-base wml_misc/.svn/text-base/logo-php3.info.svn-base wml_misc/.svn/text-base/logo-php3.png.svn-base wml_misc/.svn/text-base/logo-php.gif.svn-base wml_misc/.svn/text-base/logo-php.info.svn-base wml_misc/.svn/text-base/logo-php.png.svn-base wml_misc/.svn/text-base/logo-vim.gif.svn-base wml_misc/.svn/text-base/logo-vim.info.svn-base wml_misc/.svn/text-base/logo-vim.png.svn-base wml_misc/.svn/text-base/logo-wml.gif.svn-base wml_misc/.svn/text-base/logo-wml.info.svn-base wml_misc/.svn/text-base/logo-wml.png.svn-base wml_misc/.svn/text-base/logo-xemacs.gif.svn-base wml_misc/.svn/text-base/logo-xemacs.info.svn-base wml_misc/.svn/text-base/logo-xemacs.png.svn-base wml_misc/.svn/text-base/Makefile.in.svn-base wml_misc/.svn/text-base/README.svn-base wml_test/Makefile.in wml_test/.svn/dir-prop-base wml_test/.svn/entries wml_test/.svn/format wml_test/.svn/text-base/Makefile.in.svn-base wml_test/.svn/text-base/TEST.pl.svn-base wml_test/.svn/text-base/TEST.svn-base wml_test/.svn/text-base/.wmlrc.svn-base wml_test/t/01-p1_ipp.t wml_test/t/02-p2_mp4h.t wml_test/t/03-p3_eperl.t wml_test/t/04-p4_gm4.t wml_test/t/05-p5_divert.t wml_test/t/06-p6_asubst.t wml_test/t/07-p7_htmlfix.t wml_test/t/08-p8_htmlstrip.t wml_test/t/09-p9_slice.t wml_test/t/10-wml.t wml_test/t/11-wmk.t wml_test/t/des-gfont.t wml_test/t/des-navbar.t wml_test/t/des-space.t wml_test/t/des-typography.t wml_test/TEST wml_test/TEST.pl wml_test/t/std-grid.t wml_test/t/std-href.t wml_test/t/std-lang.t wml_test/t/std-tags.t wml_test/t/std-toc.t wml_test/t/.svn/entries wml_test/t/.svn/format wml_test/t/.svn/text-base/01-p1_ipp.t.svn-base wml_test/t/.svn/text-base/02-p2_mp4h.t.svn-base wml_test/t/.svn/text-base/03-p3_eperl.t.svn-base wml_test/t/.svn/text-base/04-p4_gm4.t.svn-base wml_test/t/.svn/text-base/05-p5_divert.t.svn-base wml_test/t/.svn/text-base/06-p6_asubst.t.svn-base wml_test/t/.svn/text-base/07-p7_htmlfix.t.svn-base wml_test/t/.svn/text-base/08-p8_htmlstrip.t.svn-base wml_test/t/.svn/text-base/09-p9_slice.t.svn-base wml_test/t/.svn/text-base/10-wml.t.svn-base wml_test/t/.svn/text-base/11-wmk.t.svn-base wml_test/t/.svn/text-base/des-gfont.t.svn-base wml_test/t/.svn/text-base/des-navbar.t.svn-base wml_test/t/.svn/text-base/des-space.t.svn-base wml_test/t/.svn/text-base/des-typography.t.svn-base wml_test/t/.svn/text-base/std-grid.t.svn-base wml_test/t/.svn/text-base/std-href.t.svn-base wml_test/t/.svn/text-base/std-lang.t.svn-base wml_test/t/.svn/text-base/std-tags.t.svn-base wml_test/t/.svn/text-base/std-toc.t.svn-base wml_test/.wmlrc wml-2.0.12.orig/configure0000755000175000017500000040731010755361730013315 0ustar abeabe#! /bin/sh # From configure.ac Revision: 1.31 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell autoconf@gnu.org about your system, echo including any error possibly output before this echo message } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= ac_unique_file="INSTALL" ac_default_prefix=/usr/local ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir localstatedir includedir oldincludedir docdir infodir htmldir dvidir pdfdir psdir libdir localedir mandir DEFS ECHO_C ECHO_N ECHO_T LIBS build_alias host_alias target_alias WML_VERSION VERSION WML_CONFIG_ARGS MAINT built_system built_user built_date libsubdir tmpdir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os DCOLON CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP RANLIB SET_MAKE PATH_PERL perlprog perlvers PERL_OPTS have_getoptlong have_bitvector have_filepathconvert have_imagesize have_io have_termreadkey INSTALLPRIVLIB INSTALLARCHLIB catdir subdirs LIBOBJS LTLIBOBJS' ac_subst_files='' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' ac_subdirs_all='wml_backend/p2_mp4h wml_backend/p3_eperl wml_backend/p4_gm4 wml_aux/iselect wml_common/gd ' # Initialize some variables set by options. ac_init_help= ac_init_version=false # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid feature name: $ac_feature" >&2 { (exit 1); exit 1; }; } ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` eval enable_$ac_feature=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=\$ac_optarg ;; -without-* | --without-*) ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid package name: $ac_package" >&2 { (exit 1); exit 1; }; } ac_package=`echo $ac_package | sed 's/[-.]/_/g'` eval with_$ac_package=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi # Be sure to have absolute directory names. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { echo "$as_me: error: Working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$0" || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$0" : 'X\(//\)[^/]' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures this package to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then cat <<\_ACEOF Optional Features: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-cc=PATH use a specific ANSI C compiler --with-forced-cc=PATH force the global usage of a specific ANSI C compiler --with-perl=PATH force the usage of a specific Perl 5 interpreter --with-perl-opts=STRING options to pass to Makefiles when compiling Perl modules --with-openworld try to use system-wide copies of Perl modules --with-catdir=STRING subdir prefix for preformatted manpages (default: cat) Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && echo "$as_me: caught signal $ac_signal" echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then set x "$CONFIG_SITE" elif test "x$prefix" != xNONE; then set x "$prefix/share/config.site" "$prefix/etc/config.site" else set x "$ac_default_prefix/share/config.site" \ "$ac_default_prefix/etc/config.site" fi shift for ac_site_file do if test -r "$ac_site_file"; then { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { echo "$as_me:$LINENO: creating cache $cache_file" >&5 echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ac_cache_corrupted=: fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in etc "$srcdir"/etc; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in etc \"$srcdir\"/etc" >&5 echo "$as_me: error: cannot find install-sh or install.sh in etc \"$srcdir\"/etc" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. shtool=./etc/shtool TERM_BOLD=`$shtool echo -e %B 2>/dev/null` TERM_NORM=`$shtool echo -e %b 2>/dev/null` WML_VERSION="`$shtool version -l txt -d long VERSION`" VERSION="`$shtool version -l txt VERSION`" echo "${TERM_BOLD}Configuring for WML $WML_VERSION${TERM_NORM}" WML_CONFIG_ARGS="$*" { echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; } # Check whether --enable-maintainer-mode was given. if test "${enable_maintainer_mode+set}" = set; then enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval else USE_MAINTAINER_MODE=no fi { echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6; } if test ".$USE_MAINTAINER_MODE" = .yes; then MAINT='#M#' else MAINT= fi { echo "$as_me:$LINENO: result: " >&5 echo "${ECHO_T}" >&6; } { echo "$as_me:$LINENO: result: ${TERM_BOLD}CHECK: Build Environment${TERM_NORM}" >&5 echo "${ECHO_T}${TERM_BOLD}CHECK: Build Environment${TERM_NORM}" >&6; } built_system=`$shtool guessos` { echo "$as_me:$LINENO: checking for built user" >&5 echo $ECHO_N "checking for built user... $ECHO_C" >&6; } built_user="`$shtool echo -e -n %u@%h%d`" { echo "$as_me:$LINENO: result: $built_user" >&5 echo "${ECHO_T}$built_user" >&6; } { echo "$as_me:$LINENO: checking for built date" >&5 echo $ECHO_N "checking for built date... $ECHO_C" >&6; } built_date="`$shtool echo -e -n '%D-%m-%Y'`" { echo "$as_me:$LINENO: result: $built_date" >&5 echo "${ECHO_T}$built_date" >&6; } test "x$prefix" = xNONE && prefix=$ac_default_prefix eval "dir=$prefix" case $dir in *wml* ) libsubdir= ;; * ) libsubdir="/wml" ;; esac tmpdir=${TMPDIR-/tmp} DCOLON="::" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { echo "$as_me:$LINENO: checking build system type" >&5 echo $ECHO_N "checking build system type... $ECHO_C" >&6; } if test "${ac_cv_build+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { echo "$as_me:$LINENO: result: $ac_cv_build" >&5 echo "${ECHO_T}$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { echo "$as_me:$LINENO: checking host system type" >&5 echo $ECHO_N "checking host system type... $ECHO_C" >&6; } if test "${ac_cv_host+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { echo "$as_me:$LINENO: result: $ac_cv_host" >&5 echo "${ECHO_T}$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac case $host in *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*) DCOLON="." ;; esac { echo "$as_me:$LINENO: checking target system type" >&5 echo $ECHO_N "checking target system type... $ECHO_C" >&6; } if test "${ac_cv_target+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { echo "$as_me:$LINENO: result: $ac_cv_target" >&5 echo "${ECHO_T}$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 echo "$as_me: error: invalid value of canonical target" >&2;} { (exit 1); exit 1; }; };; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- case $target in *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*) DCOLON="." ;; esac { echo "$as_me:$LINENO: result: " >&5 echo "${ECHO_T}" >&6; } { echo "$as_me:$LINENO: result: ${TERM_BOLD}CHECK: Build Utilities${TERM_NORM}" >&5 echo "${ECHO_T}${TERM_BOLD}CHECK: Build Utilities${TERM_NORM}" >&6; } # Check whether --with-cc was given. if test "${with_cc+set}" = set; then withval=$with_cc; CC=$with_cc else : fi # Check whether --with-forced-cc was given. if test "${with_forced_cc+set}" = set; then withval=$with_forced_cc; CC=$with_forced_cc export CC else : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { echo "$as_me:$LINENO: result: $CC" >&5 echo "${ECHO_T}$CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 echo "${ECHO_T}$ac_ct_CC" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # # List of possible output files, starting from the most likely. # The algorithm is not robust to junk in `.', hence go to wildcards (a.*) # only as a last resort. b.out is created by i960 compilers. ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' # # The IRIX 6 linker writes into existing files which may not be # executable, retaining their permissions. Remove them first so a # subsequent execution test works. ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6; } if test -z "$ac_file"; then echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether the C compiler works" >&5 echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi fi fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } rm -f a.out a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $cross_compiling" >&5 echo "${ECHO_T}$cross_compiling" >&6; } { echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest$ac_cv_exeext { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } GCC=`test $ac_compiler_gnu = yes && echo yes` ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { echo "$as_me:$LINENO: result: none needed" >&5 echo "${ECHO_T}none needed" >&6; } ;; xno) { echo "$as_me:$LINENO: result: unsupported" >&5 echo "${ECHO_T}unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { echo "$as_me:$LINENO: result: $CPP" >&5 echo "${ECHO_T}$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { echo "$as_me:$LINENO: result: $RANLIB" >&5 echo "${ECHO_T}$RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 echo "${ECHO_T}$ac_ct_RANLIB" >&6; } else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&5 echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools whose name does not start with the host triplet. If you think this configuration is useful to you, please write to autoconf@gnu.org." >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi { echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then echo $ECHO_N "(cached) $ECHO_C" >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } SET_MAKE= else { echo "$as_me:$LINENO: result: no" >&5 echo "${ECHO_T}no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi { echo "$as_me:$LINENO: result: " >&5 echo "${ECHO_T}" >&6; } { echo "$as_me:$LINENO: result: ${TERM_BOLD}CHECK: Perl Language${TERM_NORM}" >&5 echo "${ECHO_T}${TERM_BOLD}CHECK: Perl Language${TERM_NORM}" >&6; } { echo "$as_me:$LINENO: checking for Perl language" >&5 echo $ECHO_N "checking for Perl language... $ECHO_C" >&6; } # Check whether --with-perl was given. if test "${with_perl+set}" = set; then withval=$with_perl; perlprog=$with_perl perlvers=`$perlprog -e 'printf "%.3f",$]'` else perlvers= for dir in `echo $PATH | sed -e 's/:/ /g'` $tmpdir; do for perl in perl5 perl miniperl; do if test -f "$dir/$perl"; then if test -x "$dir/$perl"; then perlprog="$dir/$perl" if $perlprog -e 'require 5.003'; then perlvers=`$perlprog -e 'printf "%.3f",$]'` break 2 fi fi fi done done fi PATH_PERL=$perlprog { echo "$as_me:$LINENO: result: $perlprog v$perlvers" >&5 echo "${ECHO_T}$perlprog v$perlvers" >&6; } if $perlprog -e 'require 5.003'; then : else echo "" echo "Latest Perl found on your system is $perlvers," echo "but at least Perl version 5.003 is required." echo "In case the newer one is not in PATH, just use" echo "the option --with-perl=/path/to/bin/perl to" echo "provide the correct executable." echo "" { { echo "$as_me:$LINENO: error: Perl version too old" >&5 echo "$as_me: error: Perl version too old" >&2;} { (exit 1); exit 1; }; } fi if test -f $PATH_PERL; then : else { { echo "$as_me:$LINENO: error: required program \`\`perl'' not found" >&5 echo "$as_me: error: required program \`\`perl'' not found" >&2;} { (exit 1); exit 1; }; } fi path_perl=$PATH_PERL # Check whether --with-perl_opts was given. if test "${with_perl_opts+set}" = set; then withval=$with_perl_opts; PERL_OPTS=$with_perl_opts else PERL_OPTS= fi # Check whether --with-openworld was given. if test "${with_openworld+set}" = set; then withval=$with_openworld; else with_openworld=no fi if test ".$with_openworld" = .no; then have_getoptlong=0 have_bitvector=0 have_filepathconvert=0 have_imagesize=0 have_io=0 have_termreadkey=0 have_delimmatch=0 else { echo "$as_me:$LINENO: checking for Perl module Getopt::Long (2.16)" >&5 echo $ECHO_N "checking for Perl module Getopt::Long (2.16)... $ECHO_C" >&6; } rc=`$path_perl -e 'eval {require Getopt::Long 2.16}; print "ok" unless $@'`; if test ".$rc" = .ok; then have_getoptlong=1 { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else have_getoptlong=0 { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } fi { echo "$as_me:$LINENO: checking for Perl module Bit::Vector (5.2)" >&5 echo $ECHO_N "checking for Perl module Bit::Vector (5.2)... $ECHO_C" >&6; } rc=`$path_perl -e 'eval {require Bit::Vector 5.2}; print "ok" unless $@'`; if test ".$rc" = .ok; then have_bitvector=1 { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else have_bitvector=0 { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } fi { echo "$as_me:$LINENO: checking for Perl module File::PathConvert (ANY)" >&5 echo $ECHO_N "checking for Perl module File::PathConvert (ANY)... $ECHO_C" >&6; } rc=`$path_perl -e 'eval {require File::PathConvert }; print "ok" unless $@'`; if test ".$rc" = .ok; then have_filepathconvert=1 { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else have_filepathconvert=0 { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } fi { echo "$as_me:$LINENO: checking for Perl module Image::Size (2.6)" >&5 echo $ECHO_N "checking for Perl module Image::Size (2.6)... $ECHO_C" >&6; } rc=`$path_perl -e 'eval {require Image::Size 2.6}; print "ok" unless $@'`; if test ".$rc" = .ok; then have_imagesize=1 { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else have_imagesize=0 { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } fi { echo "$as_me:$LINENO: checking for Perl module IO::File (1.07)" >&5 echo $ECHO_N "checking for Perl module IO::File (1.07)... $ECHO_C" >&6; } rc=`$path_perl -e 'eval {require IO::File 1.07}; print "ok" unless $@'`; if test ".$rc" = .ok; then have_io=1 { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else have_io=0 { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } fi { echo "$as_me:$LINENO: checking for Perl module Term::ReadKey (2.11)" >&5 echo $ECHO_N "checking for Perl module Term::ReadKey (2.11)... $ECHO_C" >&6; } rc=`$path_perl -e 'eval {require Term::ReadKey 2.11}; print "ok" unless $@'`; if test ".$rc" = .ok; then have_termreadkey=1 { echo "$as_me:$LINENO: result: found" >&5 echo "${ECHO_T}found" >&6; } else have_termreadkey=0 { echo "$as_me:$LINENO: result: not found" >&5 echo "${ECHO_T}not found" >&6; } fi fi { echo "$as_me:$LINENO: checking for MakeMaker's private install paths" >&5 echo $ECHO_N "checking for MakeMaker's private install paths... $ECHO_C" >&6; } MYTMPDIR=$tmpdir/ac.$$ rm -rf $MYTMPDIR 2>/dev/null mkdir $MYTMPDIR cat >$MYTMPDIR/Makefile.PL <<'EOT' use ExtUtils::MakeMaker; WriteMakefile( 'NAME' => 'Dummy::Dummy', 'VERSION' => '0.0' ); sub MY::postamble { q{ abs2prefix = sed -e "s|^$(PREFIX)|'\\\\$$(libdir)'/perl|" dummy: @echo INSTALLPRIVLIB=`echo $(INSTALLPRIVLIB) | $(abs2prefix)` @echo INSTALLARCHLIB=`echo $(INSTALLARCHLIB) | $(abs2prefix)` }; } EOT test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' eval "dir=$libdir$libsubdir" ( cd $MYTMPDIR; eval "$path_perl Makefile.PL PREFIX=$dir/perl LIB=$dir/perl/lib >/dev/null 2>/dev/null" ) for line in `make -f $MYTMPDIR/Makefile dummy | grep '^INSTALL'`; do eval "$line" done rm -rf $MYTMPDIR 2>/dev/null { echo "$as_me:$LINENO: result: ok" >&5 echo "${ECHO_T}ok" >&6; } # Check whether --with-catdir was given. if test "${with_catdir+set}" = set; then withval=$with_catdir; catdir=$with_catdir else catdir=cat fi ac_configure_args="$ac_configure_args --with-tidy=`pwd`/wml_aux/tidy/tidy" subdirs="$subdirs wml_backend/p2_mp4h wml_backend/p3_eperl wml_backend/p4_gm4 wml_aux/iselect wml_common/gd" { echo "$as_me:$LINENO: result: " >&5 echo "${ECHO_T}" >&6; } { echo "$as_me:$LINENO: result: ${TERM_BOLD}RESULT: Substituting Files${TERM_NORM}" >&5 echo "${ECHO_T}${TERM_BOLD}RESULT: Substituting Files${TERM_NORM}" >&6; } ac_config_files="$ac_config_files Makefile wml_frontend/Makefile wml_backend/Makefile wml_backend/p1_ipp/Makefile wml_backend/p5_divert/Makefile wml_backend/p6_asubst/Makefile wml_backend/p7_htmlfix/Makefile wml_backend/p8_htmlstrip/Makefile wml_backend/p9_slice/Makefile wml_common/Makefile wml_docs/Makefile wml_aux/Makefile wml_aux/htmlinfo/Makefile wml_aux/htmlclean/Makefile wml_aux/linklint/Makefile wml_aux/map2html/Makefile wml_aux/txt2html/Makefile wml_aux/tidy/Makefile wml_aux/weblint/Makefile wml_aux/freetable/Makefile wml_misc/Makefile wml_include/Makefile wml_test/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { echo "$as_me:$LINENO: updating cache $cache_file" >&5 echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : ${CONFIG_STATUS=./config.status} ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then echo "#! /bin/sh" >conf$$.sh echo "exit 0" >>conf$$.sh chmod +x conf$$.sh if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then PATH_SEPARATOR=';' else PATH_SEPARATOR=: fi rm -f conf$$.sh fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) as_nl=' ' IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. for as_var in \ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ LC_TELEPHONE LC_TIME do if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var fi done # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir fi echo >conf$$.file if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by $as_me, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF cat >>$CONFIG_STATUS <<_ACEOF # Files that config.status was made for. config_files="$ac_config_files" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTIONS] [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If no file are specified by the user, then we need to provide default # value. By we need to know if files were specified by the user. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift CONFIG_FILES="$CONFIG_FILES $ac_optarg" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 CONFIG_SHELL=$SHELL export CONFIG_SHELL exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "wml_frontend/Makefile") CONFIG_FILES="$CONFIG_FILES wml_frontend/Makefile" ;; "wml_backend/Makefile") CONFIG_FILES="$CONFIG_FILES wml_backend/Makefile" ;; "wml_backend/p1_ipp/Makefile") CONFIG_FILES="$CONFIG_FILES wml_backend/p1_ipp/Makefile" ;; "wml_backend/p5_divert/Makefile") CONFIG_FILES="$CONFIG_FILES wml_backend/p5_divert/Makefile" ;; "wml_backend/p6_asubst/Makefile") CONFIG_FILES="$CONFIG_FILES wml_backend/p6_asubst/Makefile" ;; "wml_backend/p7_htmlfix/Makefile") CONFIG_FILES="$CONFIG_FILES wml_backend/p7_htmlfix/Makefile" ;; "wml_backend/p8_htmlstrip/Makefile") CONFIG_FILES="$CONFIG_FILES wml_backend/p8_htmlstrip/Makefile" ;; "wml_backend/p9_slice/Makefile") CONFIG_FILES="$CONFIG_FILES wml_backend/p9_slice/Makefile" ;; "wml_common/Makefile") CONFIG_FILES="$CONFIG_FILES wml_common/Makefile" ;; "wml_docs/Makefile") CONFIG_FILES="$CONFIG_FILES wml_docs/Makefile" ;; "wml_aux/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/Makefile" ;; "wml_aux/htmlinfo/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/htmlinfo/Makefile" ;; "wml_aux/htmlclean/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/htmlclean/Makefile" ;; "wml_aux/linklint/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/linklint/Makefile" ;; "wml_aux/map2html/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/map2html/Makefile" ;; "wml_aux/txt2html/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/txt2html/Makefile" ;; "wml_aux/tidy/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/tidy/Makefile" ;; "wml_aux/weblint/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/weblint/Makefile" ;; "wml_aux/freetable/Makefile") CONFIG_FILES="$CONFIG_FILES wml_aux/freetable/Makefile" ;; "wml_misc/Makefile") CONFIG_FILES="$CONFIG_FILES wml_misc/Makefile" ;; "wml_include/Makefile") CONFIG_FILES="$CONFIG_FILES wml_include/Makefile" ;; "wml_test/Makefile") CONFIG_FILES="$CONFIG_FILES wml_test/Makefile" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { echo "$me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # # Set up the sed scripts for CONFIG_FILES section. # # No need to generate the scripts if there are no CONFIG_FILES. # This happens for instance when ./config.status config.h if test -n "$CONFIG_FILES"; then _ACEOF ac_delim='%!_!# ' for ac_last_try in false false false false false :; do cat >conf$$subs.sed <<_ACEOF SHELL!$SHELL$ac_delim PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim PACKAGE_NAME!$PACKAGE_NAME$ac_delim PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim PACKAGE_STRING!$PACKAGE_STRING$ac_delim PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim exec_prefix!$exec_prefix$ac_delim prefix!$prefix$ac_delim program_transform_name!$program_transform_name$ac_delim bindir!$bindir$ac_delim sbindir!$sbindir$ac_delim libexecdir!$libexecdir$ac_delim datarootdir!$datarootdir$ac_delim datadir!$datadir$ac_delim sysconfdir!$sysconfdir$ac_delim sharedstatedir!$sharedstatedir$ac_delim localstatedir!$localstatedir$ac_delim includedir!$includedir$ac_delim oldincludedir!$oldincludedir$ac_delim docdir!$docdir$ac_delim infodir!$infodir$ac_delim htmldir!$htmldir$ac_delim dvidir!$dvidir$ac_delim pdfdir!$pdfdir$ac_delim psdir!$psdir$ac_delim libdir!$libdir$ac_delim localedir!$localedir$ac_delim mandir!$mandir$ac_delim DEFS!$DEFS$ac_delim ECHO_C!$ECHO_C$ac_delim ECHO_N!$ECHO_N$ac_delim ECHO_T!$ECHO_T$ac_delim LIBS!$LIBS$ac_delim build_alias!$build_alias$ac_delim host_alias!$host_alias$ac_delim target_alias!$target_alias$ac_delim WML_VERSION!$WML_VERSION$ac_delim VERSION!$VERSION$ac_delim WML_CONFIG_ARGS!$WML_CONFIG_ARGS$ac_delim MAINT!$MAINT$ac_delim built_system!$built_system$ac_delim built_user!$built_user$ac_delim built_date!$built_date$ac_delim libsubdir!$libsubdir$ac_delim tmpdir!$tmpdir$ac_delim build!$build$ac_delim build_cpu!$build_cpu$ac_delim build_vendor!$build_vendor$ac_delim build_os!$build_os$ac_delim host!$host$ac_delim host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim target!$target$ac_delim target_cpu!$target_cpu$ac_delim target_vendor!$target_vendor$ac_delim target_os!$target_os$ac_delim DCOLON!$DCOLON$ac_delim CC!$CC$ac_delim CFLAGS!$CFLAGS$ac_delim LDFLAGS!$LDFLAGS$ac_delim CPPFLAGS!$CPPFLAGS$ac_delim ac_ct_CC!$ac_ct_CC$ac_delim EXEEXT!$EXEEXT$ac_delim OBJEXT!$OBJEXT$ac_delim CPP!$CPP$ac_delim RANLIB!$RANLIB$ac_delim SET_MAKE!$SET_MAKE$ac_delim PATH_PERL!$PATH_PERL$ac_delim perlprog!$perlprog$ac_delim perlvers!$perlvers$ac_delim PERL_OPTS!$PERL_OPTS$ac_delim have_getoptlong!$have_getoptlong$ac_delim have_bitvector!$have_bitvector$ac_delim have_filepathconvert!$have_filepathconvert$ac_delim have_imagesize!$have_imagesize$ac_delim have_io!$have_io$ac_delim have_termreadkey!$have_termreadkey$ac_delim INSTALLPRIVLIB!$INSTALLPRIVLIB$ac_delim INSTALLARCHLIB!$INSTALLARCHLIB$ac_delim catdir!$catdir$ac_delim subdirs!$subdirs$ac_delim LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 85; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` if test -n "$ac_eof"; then ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof /@[a-zA-Z_][a-zA-Z_0-9]*@/!b end _ACEOF sed ' s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g s/^/s,@/; s/!/@,|#_!!_#|/ :n t n s/'"$ac_delim"'$/,g/; t s/$/\\/; p N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF :end s/|#_!!_#|//g CEOF$ac_eof _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF fi # test -n "$CONFIG_FILES" for ac_tag in :F $CONFIG_FILES do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 echo "$as_me: error: Invalid tag $ac_tag." >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac ac_file_inputs="$ac_file_inputs $ac_f" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input="Generated from "`IFS=: echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { echo "$as_me:$LINENO: creating $ac_file" >&5 echo "$as_me: creating $ac_file" >&6;} fi case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin";; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= case `sed -n '/datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' $ac_file_inputs` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF sed "$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s&@configure_input@&$configure_input&;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out"; rm -f "$tmp/out";; *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; esac ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi # # CONFIG_SUBDIRS section. # if test "$no_recursion" != yes; then # Remove --cache-file and --srcdir arguments so they do not pile up. ac_sub_configure_args= ac_prev= eval "set x $ac_configure_args" shift for ac_arg do if test -n "$ac_prev"; then ac_prev= continue fi case $ac_arg in -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ | --c=*) ;; --config-cache | -C) ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) ;; *) case $ac_arg in *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="$ac_sub_configure_args '$ac_arg'" ;; esac done # Always prepend --prefix to ensure using the same prefix # in subdir configurations. ac_arg="--prefix=$prefix" case $ac_arg in *\'*) ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" # Pass --silent if test "$silent" = yes; then ac_sub_configure_args="--silent $ac_sub_configure_args" fi ac_popdir=`pwd` for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue # Do not complain, so a configure script can configure whichever # parts of a large source tree are present. test -d "$srcdir/$ac_dir" || continue ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" echo "$as_me:$LINENO: $ac_msg" >&5 echo "$ac_msg" >&6 { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" # Check for guested configure; otherwise get Cygnus style configure. if test -f "$ac_srcdir/configure.gnu"; then ac_sub_configure=$ac_srcdir/configure.gnu elif test -f "$ac_srcdir/configure"; then ac_sub_configure=$ac_srcdir/configure elif test -f "$ac_srcdir/configure.in"; then # This should be Cygnus configure. ac_sub_configure=$ac_aux_dir/configure else { echo "$as_me:$LINENO: WARNING: no configuration information is in $ac_dir" >&5 echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} ac_sub_configure= fi # The recursion is here. if test -n "$ac_sub_configure"; then # Make the cache file name correct relative to the subdirectory. case $cache_file in [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative name. ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; esac { echo "$as_me:$LINENO: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} # The eval makes quoting arguments work. eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} { (exit 1); exit 1; }; } fi cd "$ac_popdir" done fi echo "" echo "Now please type '${TERM_BOLD}make${TERM_NORM}' to compile. Good luck." echo "" wml-2.0.12.orig/VERSION0000644000175000017500000000024011001444777012443 0ustar abeabe VERSION -- Version Information for WML (syntax: Text) [automatically generated and maintained by GNU shtool] This is WML, Version 2.0.12 (16-Apr-2008) wml-2.0.12.orig/wml_test/0000755000175000017500000000000011613524770013236 5ustar abeabewml-2.0.12.orig/wml_test/TEST0000644000175000017500000000036510343637514013744 0ustar abeabe## ## TEST -- WML Test Suite runtime engine ## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. ## use Test::Harness; @TESTS = split(/[ \n]/, `echo t/*.t`); #$Test::Harness::verbose = 1; Test::Harness::runtests(@TESTS); ##EOF## wml-2.0.12.orig/wml_test/TEST.pl0000644000175000017500000000236210343637514014355 0ustar abeabe## ## TEST.pl -- WML Test Suite utility functions ## Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. ## package TEST; @TMPFILES = (); $TMPFILECNT = 0; sub init { return; } sub tmpfile { local (*FP, $file); $file = "tmp." . sprintf("%02d", $TMPFILECNT++); push(@TMPFILES, $file); if (@_ != -1) { open(FP, ">$file"); print FP @_; close(FP); } return $file; } sub tmpfile_with_name { local ($name) = shift @_; local (*FP, $file); $file = $name; push(@TMPFILES, $file); if (@_ != -1) { open(FP, ">$file"); print FP @_; close(FP); } return $file; } sub system { local ($cmd) = @_; local ($rc); $rc = system($cmd); return $rc; } sub generic { local ($pass, $in, $out, $opt) = @_; local($tmpfile1, $tmpfile2, $tmpfile3, $rc); $tmpfile1 = &tmpfile(qq#$in#); $tmpfile2 = &tmpfile(qq#$out#); $tmpfile3 = &tmpfile; $rc = &system("$ENV{WML} -p$pass $opt $tmpfile1 >$tmpfile3"); print ($rc == 0 ? "ok\n" : "not ok\n"); $rc = &system("cmp $tmpfile2 $tmpfile3"); print ($rc == 0 ? "ok\n" : "not ok\n"); } sub cleanup { foreach $file (@TMPFILES) { unlink($file); } } 1; ##EOF## wml-2.0.12.orig/wml_test/Makefile.in0000644000175000017500000000450310343637514015305 0ustar abeabe## ## wml_test/Makefile ## Copyright (c) 1998-2001 Ralf S. Engelschall ## @SET_MAKE@ # ------------------------------------------------ # DEFINITIONS # ------------------------------------------------ SHELL = /bin/sh top_srcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ prefix = @prefix@ PATH_PERL = @PATH_PERL@ # ------------------------------------------------ # TARGETS # ------------------------------------------------ all: install: test: -@set -e; \ root=`$(PATH_PERL) -e 'use Cwd; ($$cwd = cwd) =~ s|/?$$|/TEST.root|; print $$cwd'`; \ if [ ! -d TEST.root ]; then \ echo "Temporarily installing WML system into local test tree:"; \ rm -rf TEST.root 2>/dev/null || :; mkdir TEST.root; \ (cd .. && $(MAKE) all 2>&1) |\ (cd .. && $(MAKE) install prefix=$$root 2>&1) |\ $(PATH_PERL) -n -e 's/^.*$$/./s; print STDERR $$_; $$i++; print STDERR "\n" if ($$i % 60 == 0);'; \ echo ''; \ echo "Fixing installation prefix for local test tree:"; \ case x$(prefix) in \ x*wml* ) lib="lib" ;; \ x* ) lib="lib/wml" ;; \ esac; \ (cd TEST.root; \ for file in \ bin/wml \ bin/wmk \ bin/wmd \ bin/wmb \ bin/wmu \ $$lib/exec/wml_aux_freetable \ $$lib/exec/wml_aux_htmlclean \ $$lib/exec/wml_aux_htmlinfo \ $$lib/exec/wml_aux_linklint \ $$lib/exec/wml_aux_map2html \ $$lib/exec/wml_aux_txt2html \ $$lib/exec/wml_aux_weblint \ $$lib/exec/wml_p1_ipp \ $$lib/exec/wml_p5_divert \ $$lib/exec/wml_p6_asubst \ $$lib/exec/wml_p7_htmlfix \ $$lib/exec/wml_p8_htmlstrip \ $$lib/exec/wml_p9_slice \ $$lib/include/sys/bootp3.wml; do \ sed -e '4,$$'"s;$(prefix);$${root};g" <$$file >$$file.n \ && mv $$file.n $$file; \ chmod a+x $$file; \ echo "dummy"; \ done) |\ $(PATH_PERL) -n -e 's/^.*$$/./s; print STDERR $$_; $$i++; print STDERR "\n" if ($$i % 60 == 0);'; \ echo ''; \ else :; \ fi; \ echo "Running WML Test Suite (still incomplete):"; \ WML="$$root/bin/wml -q -W1,-N"; export WML; \ LANG=C; LC_ALL=C; export LANG LC_ALL; \ $(PATH_PERL) TEST clean: -rm -rf TEST.root tmp.*.cmd 2>/dev/null distclean: clean -rm -f Makefile realclean: distclean ##EOF## wml-2.0.12.orig/wml_test/.wmlrc0000644000175000017500000000001110343637514014353 0ustar abeabe-DROOT~. wml-2.0.12.orig/wml_test/t/0000755000175000017500000000000011613524770013501 5ustar abeabewml-2.0.12.orig/wml_test/t/09-p9_slice.t0000644000175000017500000000111310343637514015617 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; # # TEST 1-2: throughput # $pass = 9; $tmpfile1 = &TEST::tmpfile(<<'EOT_IN'); %!slice -o(ALL-LANG_*)+LANG_EN:b [LANG_EN:en:] [LANG_DE:de:] [LANG_EN:[LANG_EN:en:][LANG_DE:de:]:] [LANG_DE:[LANG_EN:en:][LANG_DE:de:]:] EOT_IN $tmpfile2 = &TEST::tmpfile(<<'EOT_IN'); en ende en EOT_IN $rc = &TEST::system("$ENV{WML} -p$pass $tmpfile1 >a"); print ($rc == 0 ? "ok\n" : "not ok\n"); $rc = &TEST::system("cmp $tmpfile2 b"); print ($rc == 0 ? "ok\n" : "not ok\n"); push(@TEST::TMPFILES, "b"); push(@TEST::TMPFILES, "a"); &TEST::cleanup; wml-2.0.12.orig/wml_test/t/std-toc.t0000644000175000017500000000303410343637514015243 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..4\n"; $pass = "1-9"; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::std::toc style=pre

Chapter 1

Section 1

Section 2

Chapter 2

Section 1

Section 2

EOT_IN

Chapter 1

Section 1

Section 2

Chapter 2

Section 1

Section 2

Chapter 1
    Section 1
    Section 2
Chapter 2
    Section 1
    Section 2
EOT_OUT &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::std::toc style=ol type=A1a

Chapter 1

Section 1

Subsection 1

Subsection 2

Section 2

EOT_IN

Chapter 1

Section 1

Subsection 1

Subsection 2

Section 2

  1. Chapter 1
    1. Section 1
      1. Subsection 1
      2. Subsection 2
    2. Section 2
EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/des-navbar.t0000644000175000017500000000232210343637514015707 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..4\n"; $pass = "1-9"; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::navbar EOT_IN foobar EOT_OUT &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::navbar EOT_IN foobar EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/04-p4_gm4.t0000644000175000017500000000054310343637514015203 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..4\n"; # # TEST 1-2: throughput # $pass = 4; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); m4_define(`foo',`bar')m4_dnl foo EOT_IN bar EOT_OUT &TEST::generic("1,4", <<'EOT_IN', <<'EOT_OUT', ''); m4_quotes`'m4_dnl m4_define(`foo',`bar')m4_dnl foo m4_noquotes`' EOT_IN bar `' EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/10-wml.t0000644000175000017500000000065410343637514014710 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..4\n"; # # TEST 1-2: throughput # $pass = "1-9"; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); foo bar baz quux öäüÖÄÜß !"§$%&/()=?`'*+ EOT_IN foo bar baz quux öäüÖÄÜß !"§$%&/()=?`'*+ EOT_OUT &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', '-Dbar -Dvoid=\"\" -Dvoid2='); \ $(bar) $(void) $(void2) $(ROOT)\ EOT_IN 1 . EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/std-tags.t0000644000175000017500000000064710343637514015423 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; $pass = "1-9"; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::std::tags %body ABC DEF EOT_IN ABC DEF EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/des-typography.t0000644000175000017500000002142010343637514016644 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..10\n"; $pass = "1-9"; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::typography This is a Headline This paragraph has an indented first line. Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux

This is a Sub-Headline Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux EOT_IN This is a Headline


This paragraph has an indented first line. Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux

This is a Sub-Headline

Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux EOT_OUT &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::typography

This is spaced text

This is more spaced text EOT_IN

T h i s   i s   s p a c e d   t e x t 

T  h  i  s     i  s     m  o  r  e     s  p  a  c  e  d     t  e  x  t   EOT_OUT &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::typography

This is spaced text, including interline spacing. Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux This is spaced text, including interline spacing. Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux This is spaced text, including interline spacing. Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux This is spaced text, including interline spacing. EOT_IN

This is spaced text, including interline spacing. Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux This is spaced text, including interline spacing. Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux This is spaced text, including interline spacing. Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux This is spaced text, including interline spacing. EOT_OUT &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::typography

This is Small Caps text

This is Complete Small Caps text EOT_IN

THIS IS SMALL CAPS TEXT

THIS IS COMPLETE SMALL CAPS TEXT EOT_OUT &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::typography

This is a typographically more strong list environment Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux EOT_IN

This is a typographically more strong list environment



   Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux

   Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux



   Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux

   Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux

   Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux


   Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux Foo bar quux
EOT_OUT push(@TEST::TMPFILES, "imgdot-1x1-cccccc.gif"); push(@TEST::TMPFILES, "imgdot-1x1-ff3333.gif"); push(@TEST::TMPFILES, "imgdot-1x1-transp-ffffff.gif"); &TEST::cleanup; wml-2.0.12.orig/wml_test/t/std-href.t0000644000175000017500000000215410343637514015404 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; $pass = "1-9"; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::std::href EOT_IN THE://URL THE_NAME THE://URL THE_NAME THE://URL THE_NAME EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/06-p6_asubst.t0000644000175000017500000000050110343637514016013 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; # # TEST 1-2: throughput # $pass = 6; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); {:[[s/ä/ä/]][[s/ü/ü/]][[tr/[a-z]/[A-Z]/]] Foo Bar Baz Quux with Umlauts ä and ü :} EOT_IN FOO BAR BAZ QUUX WITH UMLAUTS &AUML; AND &UUML; EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/std-grid.t0000644000175000017500000000262410343637514015407 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; $pass = "1-9"; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::std::grid This is Cell #1 of Grid #1 This is Cell #2 of Grid #2: A B C D This is Cell #3 of Grid #1 This is Cell #4 of Grid #1 This is Cell #5 of Grid #1 This is Cell #6 of Grid #1 EOT_IN
This is Cell #1 of Grid #1 This is Cell #2 of Grid #2:
A B
C D
This is Cell #3 of Grid #1 This is Cell #4 of Grid #1
This is Cell #5 of Grid #1 This is Cell #6 of Grid #1
EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/11-wmk.t0000644000175000017500000000344110343637514014705 0ustar abeabe use Term::Cap; require "TEST.pl"; &TEST::init; eval "\$term = Tgetent Term::Cap { TERM => undef, OSPEED => 9600 }"; if ($@) { $bold = ''; $norm = ''; } else { $bold = $term->Tputs('md', 1, undef); $norm = $term->Tputs('me', 1, undef); } print "1..6\n"; # # TEST 1-2: throughput # $wmk = $ENV{WML}; $wmk =~ s/l /k /; $wmk =~ s/l$/k/; &TEST::tmpfile_with_name('a.html', "x"); &TEST::tmpfile_with_name('a', <<'EOT_IN'); foo EOT_IN &TEST::tmpfile_with_name('a.wml', <<"EOT_IN"); #include 'a' bar EOT_IN $tmpfile1 = &TEST::tmpfile(<<'EOT_IN'); foo bar EOT_IN $rc = `$wmk a.wml 2>&1`; print ($rc eq "$ENV{WML} -n -q -W \"1,-N\" -o a.html a.wml\n" ? "ok\n" : "not ok\n"); $rc = &TEST::system("cmp $tmpfile1 a.html"); print ($rc == 0 ? "ok\n" : "not ok\n"); $rc = `$wmk a.wml 2>&1`; print ($rc eq "$ENV{WML} -n -q -W \"1,-N\" -o a.html a.wml (${bold}skipped${norm})\n" ? "ok\n" : "not ok\n"); open(OUT, ">>a"); print OUT " "; close(OUT); $rc = `$wmk a.wml 2>&1`; print ($rc eq "$ENV{WML} -n -q -W \"1,-N\" -o a.html a.wml\n" ? "ok\n" : "not ok\n"); $tmpfile1 = &TEST::tmpfile(<<'EOT_IN'); Hello EOT_IN $tmpfile2 = &TEST::tmpfile(<<'EOT_IN'); Willkommen EOT_IN &TEST::tmpfile_with_name('a.wml', <<'EOT_IN'); #!wml -o (ALL-LANG_*)+LANG_EN:%BASE.en.html \ -o (ALL-LANG_*)+LANG_DE:%BASE.de.html #use wml::std::lang Hello EOT_IN $rc = `$wmk a.wml 2>&1`; print ($rc eq "$ENV{WML} -n -q -W \"1,-N\" -o '(ALL-LANG_*)+LANG_EN:a.en.html' -o '(ALL-LANG_*)+LANG_DE:a.de.html' a.wml\n" ? "ok\n" : "not ok\n"); $rc = &TEST::system("cmp $tmpfile1 a.en.html") && &TEST::system("cmp $tmpfile2 a.de.html"); print ($rc == 0 ? "ok\n" : "not ok\n"); push(@TEST::TMPFILES, "a.en.html"); push(@TEST::TMPFILES, "a.de.html"); &TEST::cleanup; wml-2.0.12.orig/wml_test/t/des-space.t0000644000175000017500000000277610343637514015546 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; $pass = "1-9"; # Test if PNG support was found my $png_support = 0; { open (IN, '<../wml_common/gd/Makefile'); local $/ = undef; $conf = ; close (IN); $png_support = ($conf =~ m/-lpng/); } if ($png_support) { # PNG support available &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::space EOT_IN EOT_OUT } else { # PNG support unavailable &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::space EOT_IN EOT_OUT } # If the variable @TEST::TMPFILES appears only once, a warning # is reported push(@TEST::TMPFILES, "imgdot-1x1-transp-ffffff.gif"); push(@TEST::TMPFILES, "imgdot-1x1-transp-ffffff.png"); &TEST::cleanup; wml-2.0.12.orig/wml_test/t/01-p1_ipp.t0000644000175000017500000000171210343637514015275 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..4\n"; # # TEST 1-4: throughput # $tmpfile1 = &TEST::tmpfile_with_name('a', <<'EOT'); a1 #include 'b' a2 EOT &TEST::tmpfile_with_name('b', <<'EOT'); b1 #include 'c' b2 EOT &TEST::tmpfile_with_name('c', <<'EOT'); c EOT $tmpfile2 = &TEST::tmpfile(<<'EOT'); a1 b1 c b2 a2 EOT $tmpfile3 = &TEST::tmpfile; $rc = &TEST::system("$ENV{WML} -p1 $tmpfile1 >$tmpfile3"); print ($rc == 0 ? "ok\n" : "not ok\n"); $rc = &TEST::system("cmp $tmpfile2 $tmpfile3"); print ($rc == 0 ? "ok\n" : "not ok\n"); $tmpfile1 = &TEST::tmpfile(<<'EOT'); #include "b" bar=1 foo=$(foo) \ baz=$(baz) # comment EOT &TEST::tmpfile_with_name('b',<<'EOT'); bar=$(bar) __END__ skipped EOT $tmpfile2 = &TEST::tmpfile(<<'EOT'); bar=1 foo=1 baz= EOT $rc = &TEST::system("$ENV{WML} -p1 -Dfoo=1 $tmpfile1 >$tmpfile3"); print ($rc == 0 ? "ok\n" : "not ok\n"); $rc = &TEST::system("cmp $tmpfile2 $tmpfile3"); print ($rc == 0 ? "ok\n" : "not ok\n"); &TEST::cleanup; wml-2.0.12.orig/wml_test/t/02-p2_mp4h.t0000644000175000017500000000312210343637514015354 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..6\n"; # # TEST 1-2: throughput # $pass = 2; # Arrays &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); ]>>;;; The value of array[] is `]>'. ;;; , EOT_IN The value of array[0] is `value-zero'. The value of array[1] is `value-one'. The value of array[2] is `value-two'. 1, 3, 5, 7, 9, 1 2 20 3 4 1 2 3 4 20 EOT_OUT # Arithmetic operators &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); EOT_IN 6 55.200000 -0.400000 EOT_OUT # String operators &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); EOT_IN This Is A List true true foo far 1 4 3 true a b c EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/05-p5_divert.t0000644000175000017500000000034410343637514016012 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; # # TEST 1-2: throughput # $pass = 5; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); FOO <> QUUX ..BAR>> BAZ <<.. EOT_IN FOO BAZ QUUX EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/07-p7_htmlfix.t0000644000175000017500000000114010343637514016167 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..4\n"; # # TEST 1-2: throughput # $pass = 7; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); EOT_IN EOT_OUT &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); EOT_IN EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/std-lang.t0000644000175000017500000000126610343637514015404 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; &TEST::tmpfile_with_name('a.wml', <<'EOT_IN'); #use wml::std::lang Link EOT_IN $tmpfile1 = &TEST::tmpfile(<<'EOT_IN'); Link EOT_IN $tmpfile2 = &TEST::tmpfile(<<'EOT_IN'); Link EOT_IN $rc = &TEST::system("$ENV{WML} a.wml 2>&1"); print ($rc == 0 ? "ok\n" : "not ok\n"); $rc = &TEST::system("cmp a.en.html $tmpfile1 && cmp a.de.html $tmpfile2"); print ($rc == 0 ? "ok\n" : "not ok\n"); push(@TEST::TMPFILES, "a.en.html"); push(@TEST::TMPFILES, "a.de.html"); &TEST::cleanup; wml-2.0.12.orig/wml_test/t/03-p3_eperl.t0000644000175000017500000000031510343637514015616 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; # # TEST 1-2: throughput # $pass = 3; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); <: print "foo"; :> EOT_IN foo EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/08-p8_htmlstrip.t0000644000175000017500000000034110343637514016546 0ustar abeabe require "TEST.pl"; &TEST::init; print "1..2\n"; # # TEST 1-2: throughput # $pass = 8; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); foo


bar
EOT_IN foo

bar
EOT_OUT &TEST::cleanup; wml-2.0.12.orig/wml_test/t/des-gfont.t0000644000175000017500000000202110343637514015547 0ustar abeabe require "TEST.pl"; &TEST::init; $exists = 0; foreach (split(/:/, $ENV{'PATH'})) { if (-x "$_/gfont") { $exists = 1; last; } } if (not $exists) { $| = 1; print STDERR "(skipped) "; print "1..1\nok\n"; exit (0); } print "1..6\n"; $pass = "1-9"; &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', ''); #use wml::des::gfont foo void EOT_IN void EOT_OUT push(@TEST::TMPFILES, qw(tmp.00.gfont000.gif tmp.00.gfont000.gif.cmd)); &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', '-Dbar -Dvoid=\"\" -Dvoid2='); #use wml::des::gfont foo EOT_IN foo EOT_OUT push(@TEST::TMPFILES, qw(tmp.gif tmp.gif.cmd)); &TEST::generic($pass, <<'EOT_IN', <<'EOT_OUT', '-Dbar -Dvoid=\"\" -Dvoid2='); #use wml::des::gfont foo EOT_IN foo EOT_OUT push(@TEST::TMPFILES, qw(tmp.gfont000.gif tmp.gfont000.gif.cmd)); &TEST::cleanup; wml-2.0.12.orig/wml_common/0000755000175000017500000000000011613525005013537 5ustar abeabewml-2.0.12.orig/wml_common/gd/0000755000175000017500000000000011613525003014127 5ustar abeabewml-2.0.12.orig/wml_common/gd/MANIFEST0000644000175000017500000000027610343637544015302 0ustar abeabeGD.pm GD.xs MANIFEST Makefile.PL README libgd/COPYING libgd/Makefile.PL libgd/README libgd/gd.c libgd/gd.h libgd/gd_gif.c libgd/gd_io.c libgd/gd_io.h libgd/gd_io_dp.c libgd/gd_png.c typemap wml-2.0.12.orig/wml_common/gd/configure0000755000175000017500000011640610343637544016063 0ustar abeabe#! /bin/sh # From configure.in Revision: 1.2 # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: ac_help="$ac_help --with-cc=PATH use a specific ANSI C compiler" ac_help="$ac_help --with-forced-cc=PATH force the global usage of a specific ANSI C compiler" # Initialize some variables set by options. # The variables have the same names as the options, with # dashes changed to underlines. build=NONE cache_file=./config.cache exec_prefix=NONE host=NONE no_create= nonopt=NONE no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= target=NONE verbose= x_includes=NONE x_libraries=NONE bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datadir='${prefix}/share' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' libdir='${exec_prefix}/lib' includedir='${prefix}/include' oldincludedir='/usr/include' infodir='${prefix}/info' mandir='${prefix}/man' # Initialize some other variables. subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Maximum number of lines to put in a shell here document. ac_max_here_lines=12 ac_prev= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi case "$ac_option" in -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; *) ac_optarg= ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case "$ac_option" in -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir="$ac_optarg" ;; -build | --build | --buil | --bui | --bu) ac_prev=build ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build="$ac_optarg" ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file="$ac_optarg" ;; -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ | --da=*) datadir="$ac_optarg" ;; -disable-* | --disable-*) ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` eval "enable_${ac_feature}=no" ;; -enable-* | --enable-*) ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } fi ac_feature=`echo $ac_feature| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "enable_${ac_feature}='$ac_optarg'" ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix="$ac_optarg" ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he) # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat << EOF Usage: configure [options] [host] Options: [defaults in brackets after descriptions] Configuration: --cache-file=FILE cache test results in FILE --help print this message --no-create do not create output files --quiet, --silent do not print \`checking...' messages --version print the version of autoconf that created configure Directory and file names: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [same as prefix] --bindir=DIR user executables in DIR [EPREFIX/bin] --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] --libexecdir=DIR program executables in DIR [EPREFIX/libexec] --datadir=DIR read-only architecture-independent data in DIR [PREFIX/share] --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data in DIR [PREFIX/com] --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] --libdir=DIR object code libraries in DIR [EPREFIX/lib] --includedir=DIR C header files in DIR [PREFIX/include] --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] --infodir=DIR info documentation in DIR [PREFIX/info] --mandir=DIR man documentation in DIR [PREFIX/man] --srcdir=DIR find the sources in DIR [configure dir or ..] --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names EOF cat << EOF Host type: --build=BUILD configure for building on BUILD [BUILD=HOST] --host=HOST configure for HOST [guessed] --target=TARGET configure for TARGET [TARGET=HOST] Features and packages: --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR EOF if test -n "$ac_help"; then echo "--enable and --with options recognized:$ac_help" fi exit 0 ;; -host | --host | --hos | --ho) ac_prev=host ;; -host=* | --host=* | --hos=* | --ho=*) host="$ac_optarg" ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir="$ac_optarg" ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir="$ac_optarg" ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir="$ac_optarg" ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir="$ac_optarg" ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst \ | --locals | --local | --loca | --loc | --lo) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) localstatedir="$ac_optarg" ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir="$ac_optarg" ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir="$ac_optarg" ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix="$ac_optarg" ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix="$ac_optarg" ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix="$ac_optarg" ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name="$ac_optarg" ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir="$ac_optarg" ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir="$ac_optarg" ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site="$ac_optarg" ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir="$ac_optarg" ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir="$ac_optarg" ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target="$ac_optarg" ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers) echo "configure generated by autoconf version 2.13" exit 0 ;; -with-* | --with-*) ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` case "$ac_option" in *=*) ;; *) ac_optarg=yes ;; esac eval "with_${ac_package}='$ac_optarg'" ;; -without-* | --without-*) ac_package=`echo $ac_option|sed -e 's/-*without-//'` # Reject names that are not valid shell variable names. if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } fi ac_package=`echo $ac_package| sed 's/-/_/g'` eval "with_${ac_package}=no" ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes="$ac_optarg" ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries="$ac_optarg" ;; -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } ;; *) if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then echo "configure: warning: $ac_option: invalid host type" 1>&2 fi if test "x$nonopt" != xNONE; then { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } fi nonopt="$ac_option" ;; esac done if test -n "$ac_prev"; then { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } fi trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 # File descriptor usage: # 0 standard input # 1 file creation # 2 errors and warnings # 3 some systems may open it to /dev/tty # 4 used on the Kubota Titan # 6 checking for... messages and results # 5 compiler messages saved in config.log if test "$silent" = yes; then exec 6>/dev/null else exec 6>&1 fi exec 5>./config.log echo "\ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. " 1>&5 # Strip out --no-create and --no-recursion so they do not pile up. # Also quote any args containing shell metacharacters. ac_configure_args= for ac_arg do case "$ac_arg" in -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c) ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) ac_configure_args="$ac_configure_args '$ac_arg'" ;; *) ac_configure_args="$ac_configure_args $ac_arg" ;; esac done # NLS nuisances. # Only set these to C if already set. These must not be set unconditionally # because not all systems understand e.g. LANG=C (notably SCO). # Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! # Non-C LC_CTYPE values break the ctype check. if test "${LANG+set}" = set; then LANG=C; export LANG; fi if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -rf conftest* confdefs.h # AIX cpp loses on an empty file, so make sure it contains at least a newline. echo > confdefs.h # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. ac_unique_file=GD.pm # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then its parent. ac_prog=$0 ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. srcdir=$ac_confdir if test ! -r $srcdir/$ac_unique_file; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r $srcdir/$ac_unique_file; then if test "$ac_srcdir_defaulted" = yes; then { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } else { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } fi fi srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` # Prefer explicitly selected file to automatically selected ones. if test -z "$CONFIG_SITE"; then if test "x$prefix" != xNONE; then CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" else CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi fi for ac_site_file in $CONFIG_SITE; do if test -r "$ac_site_file"; then echo "loading site script $ac_site_file" . "$ac_site_file" fi done if test -r "$cache_file"; then echo "loading cache $cache_file" . $cache_file else echo "creating cache $cache_file" > $cache_file fi ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross ac_exeext= ac_objext=o if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then ac_n= ac_c=' ' ac_t=' ' else ac_n=-n ac_c= ac_t= fi else ac_n= ac_c='\c' ac_t= fi tmpdir=${TMPDIR-/tmp} echo "$ac_t""" 1>&6 echo "$ac_t""CHECK: Build Utilities" 1>&6 # Check whether --with-cc or --without-cc was given. if test "${with_cc+set}" = set; then withval="$with_cc" CC=$with_cc else : fi # Check whether --with-forced-cc or --without-forced-cc was given. if test "${with_forced_cc+set}" = set; then withval="$with_forced_cc" CC=$with_forced_cc export CC else : fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:563: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="gcc" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:593: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_prog_rejected=no ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" break fi done IFS="$ac_save_ifs" if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# -gt 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift set dummy "$ac_dir/$ac_word" "$@" shift ac_cv_prog_CC="$@" fi fi fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi if test -z "$CC"; then case "`uname -s`" in *win32* | *WIN32*) # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:644: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_CC="cl" break fi done IFS="$ac_save_ifs" fi fi CC="$ac_cv_prog_CC" if test -n "$CC"; then echo "$ac_t""$CC" 1>&6 else echo "$ac_t""no" 1>&6 fi ;; esac fi test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 echo "configure:676: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF #line 687 "configure" #include "confdefs.h" main(){return(0);} EOF if { (eval echo configure:692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then ac_cv_prog_cc_cross=no else ac_cv_prog_cc_cross=yes fi else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 ac_cv_prog_cc_works=no fi rm -fr conftest* ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. ac_cpp='$CPP $CPPFLAGS' ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' cross_compiling=$ac_cv_prog_cc_cross echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 echo "configure:718: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 echo "configure:723: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no fi fi echo "$ac_t""$ac_cv_prog_gcc" 1>&6 if test $ac_cv_prog_gcc = yes; then GCC=yes else GCC= fi ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 echo "configure:751: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else echo 'void f(){}' > conftest.c if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then ac_cv_prog_cc_g=yes else ac_cv_prog_cc_g=no fi rm -f conftest* fi echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 if test "$ac_test_CFLAGS" = set; then CFLAGS="$ac_save_CFLAGS" elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 echo "configure:783: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else # This must be in double quotes, not single quotes, because CPP may get # substituted into the Makefile and "${CC-cc}" will confuse make. CPP="${CC-cc} -E" # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:804: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:821: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:838: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* CPP=/lib/cpp fi rm -f conftest* fi rm -f conftest* fi rm -f conftest* ac_cv_prog_CPP="$CPP" fi CPP="$ac_cv_prog_CPP" else ac_cv_prog_CPP="$CPP" fi echo "$ac_t""$CPP" 1>&6 # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 echo "configure:865: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" ac_dummy="$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then ac_cv_prog_RANLIB="ranlib" break fi done IFS="$ac_save_ifs" test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi fi RANLIB="$ac_cv_prog_RANLIB" if test -n "$RANLIB"; then echo "$ac_t""$RANLIB" 1>&6 else echo "$ac_t""no" 1>&6 fi echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 echo "configure:893: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftestmake <<\EOF all: @echo 'ac_maketemp="${MAKE}"' EOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` if test -n "$ac_maketemp"; then eval ac_cv_prog_make_${ac_make}_set=yes else eval ac_cv_prog_make_${ac_make}_set=no fi rm -f conftestmake fi if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then echo "$ac_t""yes" 1>&6 SET_MAKE= else echo "$ac_t""no" 1>&6 SET_MAKE="MAKE=${MAKE-make}" fi echo "$ac_t""" 1>&6 echo "$ac_t""CHECK: PNG Support" 1>&6 echo $ac_n "checking for png_write_image in -lpng""... $ac_c" 1>&6 echo "configure:924: checking for png_write_image in -lpng" >&5 ac_lib_var=`echo png'_'png_write_image | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" LIBS="-lpng $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 ac_tr_lib=HAVE_LIB`echo png | sed -e 's/[^a-zA-Z0-9_]/_/g' \ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` cat >> confdefs.h <&6 fi ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for png.h""... $ac_c" 1>&6 echo "configure:972: checking for png.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" { (eval echo configure:982: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* eval "ac_cv_header_$ac_safe=yes" else echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* eval "ac_cv_header_$ac_safe=no" fi rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 : else echo "$ac_t""no" 1>&6 fi LIBPNG= if test ".$ac_cv_lib_png_png_write_image" = .yes; then if test ".$ac_cv_header_png_h" = .yes; then LIBPNG=-lpng fi fi trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs. It is not useful on other systems. # If it contains results you don't want to keep, you may remove or edit it. # # By default, configure uses ./config.cache as the cache file, # creating it if it does not exist already. You can give configure # the --cache-file=FILE option to use a different cache file; that is # what configure does when it calls configure scripts in # subdirectories, so they share the cache. # Giving --cache-file=/dev/null disables caching, for debugging configure. # config.status only pays attention to the cache file if you give it the # --recheck option to rerun configure. # EOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, don't put newlines in cache variables' values. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. (set) 2>&1 | case `(ac_space=' '; set | grep ac_space) 2>&1` in *ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote substitution # turns \\\\ into \\, and sed turns \\ into \). sed -n \ -e "s/'/'\\\\''/g" \ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' ;; esac >> confcache if cmp -s $cache_file confcache; then : else if test -w $cache_file; then echo "updating cache $cache_file" cat confcache > $cache_file else echo "not updating unwritable cache $cache_file" fi fi rm -f confcache trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Any assignment to VPATH causes Sun make to only execute # the first set of double-colon rules, so remove it if not needed. # If there is a colon in the path, we need to keep it. if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' fi trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. cat > conftest.defs <<\EOF s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g s%\[%\\&%g s%\]%\\&%g s%\$%$$%g EOF DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` rm -f conftest.defs # Without the "./", some shells look in PATH for config.status. : ${CONFIG_STATUS=./config.status} echo creating $CONFIG_STATUS rm -f $CONFIG_STATUS cat > $CONFIG_STATUS </dev/null | sed 1q`: # # $0 $ac_configure_args # # Compiler output produced by configure, useful for debugging # configure, is in ./config.log if it exists. ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" for ac_option do case "\$ac_option" in -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; -version | --version | --versio | --versi | --vers | --ver | --ve | --v) echo "$CONFIG_STATUS generated by autoconf version 2.13" exit 0 ;; -help | --help | --hel | --he | --h) echo "\$ac_cs_usage"; exit 0 ;; *) echo "\$ac_cs_usage"; exit 1 ;; esac done ac_given_srcdir=$srcdir trap 'rm -fr `echo "Makefile.PL libgd/Makefile.PL " | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF $ac_vpsub $extrasub s%@SHELL@%$SHELL%g s%@CFLAGS@%$CFLAGS%g s%@CPPFLAGS@%$CPPFLAGS%g s%@CXXFLAGS@%$CXXFLAGS%g s%@FFLAGS@%$FFLAGS%g s%@DEFS@%$DEFS%g s%@LDFLAGS@%$LDFLAGS%g s%@LIBS@%$LIBS%g s%@exec_prefix@%$exec_prefix%g s%@prefix@%$prefix%g s%@program_transform_name@%$program_transform_name%g s%@bindir@%$bindir%g s%@sbindir@%$sbindir%g s%@libexecdir@%$libexecdir%g s%@datadir@%$datadir%g s%@sysconfdir@%$sysconfdir%g s%@sharedstatedir@%$sharedstatedir%g s%@localstatedir@%$localstatedir%g s%@libdir@%$libdir%g s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g s%@tmpdir@%$tmpdir%g s%@CC@%$CC%g s%@CPP@%$CPP%g s%@RANLIB@%$RANLIB%g s%@SET_MAKE@%$SET_MAKE%g s%@LIBPNG@%$LIBPNG%g CEOF EOF cat >> $CONFIG_STATUS <<\EOF # Split the substitutions into bite-sized pieces for seds with # small command number limits, like on Digital OSF/1 and HP-UX. ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. ac_file=1 # Number of current file. ac_beg=1 # First line for current file. ac_end=$ac_max_sed_cmds # Line after last line for current file. ac_more_lines=: ac_sed_cmds="" while $ac_more_lines; do if test $ac_beg -gt 1; then sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file else sed "${ac_end}q" conftest.subs > conftest.s$ac_file fi if test ! -s conftest.s$ac_file; then ac_more_lines=false rm -f conftest.s$ac_file else if test -z "$ac_sed_cmds"; then ac_sed_cmds="sed -f conftest.s$ac_file" else ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" fi ac_file=`expr $ac_file + 1` ac_beg=$ac_end ac_end=`expr $ac_end + $ac_max_sed_cmds` fi done if test -z "$ac_sed_cmds"; then ac_sed_cmds=cat fi EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". case "$ac_file" in *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; *) ac_file_in="${ac_file}.in" ;; esac # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. # Remove last slash and all that follows it. Not all systems have dirname. ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then # The file is in a subdirectory. test ! -d "$ac_dir" && mkdir "$ac_dir" ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" # A "../" for each directory in $ac_dir_suffix. ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` else ac_dir_suffix= ac_dots= fi case "$ac_given_srcdir" in .) srcdir=. if test -z "$ac_dots"; then top_srcdir=. else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; *) # Relative path. srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" top_srcdir="$ac_dots$ac_given_srcdir" ;; esac echo creating "$ac_file" rm -f "$ac_file" configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." case "$ac_file" in *Makefile*) ac_comsub="1i\\ # $configure_input" ;; *) ac_comsub= ;; esac ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` sed -e "$ac_comsub s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* EOF cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 wml-2.0.12.orig/wml_common/gd/GD.pm0000644000175000017500000010552710343637544015006 0ustar abeabepackage WML::GD; # Copyright 1995 Lincoln D. Stein. See accompanying README file for # usage information require 5.004; require FileHandle; require Exporter; require DynaLoader; require AutoLoader; use Carp 'croak','carp'; use strict; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD); $VERSION = "1.23"; @ISA = qw(Exporter DynaLoader); # Items to export into callers namespace by default. Note: do not export # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. @EXPORT = qw( gdMaxColors ); sub AUTOLOAD { # This AUTOLOAD is used to 'autoload' constants from the constant() # XS function. If a constant is not found then control is passed # to the AUTOLOAD in AutoLoader. my($constname); ($constname = $AUTOLOAD) =~ s/.*:://; my $val = constant($constname, @_ ? $_[0] : 0); if ($! != 0) { if ($! =~ /Invalid/) { $AutoLoader::AUTOLOAD = $AUTOLOAD; goto &AutoLoader::AUTOLOAD; } else { my($pack,$file,$line) = caller; die "Your vendor has not defined GD macro $pack\:\:$constname, used at $file line $line.\n"; } } eval "sub $AUTOLOAD { $val }"; goto &$AUTOLOAD; } bootstrap WML::GD; # Autoload methods go after __END__, and are processed by the autosplit program. 1; __END__ =head1 NAME GD.pm - Interface to Gd Graphics Library =head1 SYNOPSIS use GD; # create a new image $im = new GD::Image(100,100); # allocate some colors $white = $im->colorAllocate(255,255,255); $black = $im->colorAllocate(0,0,0); $red = $im->colorAllocate(255,0,0); $blue = $im->colorAllocate(0,0,255); # make the background transparent and interlaced $im->transparent($white); $im->interlaced('true'); # Put a black frame around the picture $im->rectangle(0,0,99,99,$black); # Draw a blue oval $im->arc(50,50,95,75,0,360,$blue); # And fill it with red $im->fill(50,50,$red); # make sure we are writing to a binary stream binmode STDOUT; # Convert the image to PNG and print it on standard output print $im->png; =head1 DESCRIPTION B is a port of Thomas Boutell's gd graphics library (see below). GD allows you to create color drawings using a large number of graphics primitives, and emit the drawings as PNG files. GD defines the following three classes: =over 5 =item C An image class, which holds the image data and accepts graphic primitive method calls. =item C A font class, which holds static font information and used for text rendering. =item C A simple polygon object, used for storing lists of vertices prior to rendering a polygon into an image. =back A Simple Example: #!/usr/local/bin/perl use GD; # create a new image $im = new GD::Image(100,100); # allocate some colors $white = $im->colorAllocate(255,255,255); $black = $im->colorAllocate(0,0,0); $red = $im->colorAllocate(255,0,0); $blue = $im->colorAllocate(0,0,255); # make the background transparent and interlaced $im->transparent($white); $im->interlaced('true'); # Put a black frame around the picture $im->rectangle(0,0,99,99,$black); # Draw a blue oval $im->arc(50,50,95,75,0,360,$blue); # And fill it with red $im->fill(50,50,$red); # make sure we are writing to a binary stream binmode STDOUT; # Convert the image to PNG and print it on standard output print $im->png; Notes: =over 5 =item 1. To create a new, empty image, send a new() message to GD::Image, passing it the width and height of the image you want to create. An image object will be returned. Other class methods allow you to initialize an image from a preexisting PNG, GD or XBM file. =item 2. Next you will ordinarily add colors to the image's color table. colors are added using a colorAllocate() method call. The three parameters in each call are the red, green and blue (rgb) triples for the desired color. The method returns the index of that color in the image's color table. You should store these indexes for later use. =item 3. Now you can do some drawing! The various graphics primitives are described below. In this example, we do some text drawing, create an oval, and create and draw a polygon. =item 4. Polygons are created with a new() message to GD::Polygon. You can add points to the returned polygon one at a time using the addPt() method. The polygon can then be passed to an image for rendering. =item 5. When you're done drawing, you can convert the image into PNG format by sending it a png() message. It will return a (potentially large) scalar value containing the binary data for the image. Ordinarily you will print it out at this point or write it to a file. To ensure portability to platforms that differentiate between text and binary files, be sure to call C on the file you are writing the image to. =back =head1 Method Calls =head2 Creating and Saving Images =over 5 =item C Cnew(width,height)> I To create a new, blank image, send a new() message to the GD::Image class. For example: $myImage = new GD::Image(100,100) || die; This will create an image that is 100 x 100 pixels wide. If you don't specify the dimensions, a default of 64 x 64 will be chosen. If something goes wrong (e.g. insufficient memory), this call will return undef. =item C CnewFromPng(FILEHANDLE)> I This will create an image from a PNG file read in through the provided filehandle. The filehandle must previously have been opened on a valid PNG file or pipe. If successful, this call will return an initialized image which you can then manipulate as you please. If it fails, which usually happens if the thing at the other end of the filehandle is not a valid PNG file, the call returns undef. Notice that the call doesn't automatically close the filehandle for you. But it does call C for you, on platforms where this matters. To get information about the size and color usage of the information, you can call the image query methods described below. Example usage: open (PNG,"barnswallow.png") || die; $myImage = newFromPng GD::Image(PNG) || die; close PNG; =item C CnewFromXbm(FILEHANDLE)> I This works in exactly the same way as C, but reads the contents of an X Bitmap (black & white) file: open (XBM,"coredump.xbm") || die; $myImage = newFromXbm GD::Image(XBM) || die; close XBM; Note that this function also calls C before reading from the filehandle. =item C CnewFromXpm($filename)> I This creates a new GD::Image object starting from a B. This is unlike the other newFrom() functions because it does not take a filehandle. This difference comes from an inconsistency in the underlying gd library. $myImage = newFromXpm GD::Image('earth.xpm') || die; This function is only available if libgd was compiled with XPM support. NOTE: As of version 1.7.3 of the libgd library, I can't get the underlying createFromXpm() function to return a valid image -- I just get black. =item C CnewFromGd2(FILEHANDLE)> I This works in exactly the same way as C, but uses the new compressed GD2 image format. =item C CnewFromGd(FILEHANDLE)> I This works in exactly the same way as C, but reads the contents of a GD file. GD is Tom Boutell's disk-based storage format, intended for the rare case when you need to read and write the image to disk quickly. It's not intended for regular use, because, unlike PNG or JPEG, no image compression is performed and these files can become B. open (GDF,"godzilla.gd") || die; $myImage = newFromGd GD::Image(GDF) || die; close GDF; Note that this function also calls C before reading from the supplied filehandle. =item C CnewFromGd2(FILEHANDLE)> I This works in exactly the same way as C, but uses the new compressed GD2 image format. =item C CnewFromGd2Part(FILEHANDLE,srcX,srcY,width,height)> I This class method allows you to read in just a portion of a GD version 2 image file. In additionto a filehandle, it accepts the top-left corner and dimensions (width,height) of the region of the image to read. For example: open (GDF,"godzilla.gd2") || die; $myImage = GD::Image->newFromGd2Part(GDF,10,20,100,100) || die; close GDF; This reads a 100x100 square portion of the image starting from position (10,20). =item C C<$image-Epng> I This returns the image data in PNG format. You can then print it, pipe it to a display program, or write it to a file. Example: $png_data = $myImage->png; open (DISPLAY,"| display -") || die; binmode DISPLAY; print DISPLAY $png_data; close DISPLAY; Note the use of C. This is crucial for portability to DOSish platforms. =item C C<$image-Egd> I This returns the image data in GD format. You can then print it, pipe it to a display program, or write it to a file. Example: binmode MYOUTFILE; print MYOUTFILE $myImage->gd; =item C C<$image-Egd2> I Same as gd(), except that it returns the data in compressed GD2 format. =back =head2 Color Control =over 5 =item C C<$image-EcolorAllocate(red,green,blue)> I This allocates a color with the specified red, green and blue components and returns its index in the color table, if specified. The first color allocated in this way becomes the image's background color. (255,255,255) is white (all pixels on). (0,0,0) is black (all pixels off). (255,0,0) is fully saturated red. (127,127,127) is 50% gray. You can find plenty of examples in /usr/X11/lib/X11/rgb.txt. If no colors are allocated, then this function returns -1. Example: $white = $myImage->colorAllocate(0,0,0); #background color $black = $myImage->colorAllocate(255,255,255); $peachpuff = $myImage->colorAllocate(255,218,185); =item C C<$image-EcolorDeallocate(colorIndex)> I This marks the color at the specified index as being ripe for reallocation. The next time colorAllocate is used, this entry will be replaced. You can call this method several times to deallocate multiple colors. There's no function result from this call. Example: $myImage->colorDeallocate($peachpuff); $peachy = $myImage->colorAllocate(255,210,185); =item C C<$image-EcolorClosest(red,green,blue)> I This returns the index of the color closest in the color table to the red green and blue components specified. If no colors have yet been allocated, then this call returns -1. Example: $apricot = $myImage->colorClosest(255,200,180); =item C C<$image-EcolorExact(red,green,blue)> I This returns the index of a color that exactly matches the specified red green and blue components. If such a color is not in the color table, this call returns -1. $rosey = $myImage->colorExact(255,100,80); warn "Everything's coming up roses.\n" if $rosey >= 0; =item C C<$image-EcolorResolve(red,green,blue)> I This returns the index of a color that exactly matches the specified red green and blue components. If such a color is not in the color table and there is room, then this method allocates the color in the color table and returns its index. $rosey = $myImage->colorResolve(255,100,80); warn "Everything's coming up roses.\n" if $rosey >= 0; =item C C<$image-EcolorsTotal)> I This returns the total number of colors allocated in the object. $maxColors = $myImage->colorsTotal; =item C C<$image-EgetPixel(x,y)> I This returns the color table index underneath the specified point. It can be combined with rgb() to obtain the rgb color underneath the pixel. Example: $index = $myImage->getPixel(20,100); ($r,$g,$b) = $myImage->rgb($index); =item C C<$image-Ergb(colorIndex)> I This returns a list containing the red, green and blue components of the specified color index. Example: @RGB = $myImage->rgb($peachy); =item C C<$image-Etransparent(colorIndex)> I This marks the color at the specified index as being transparent. Portions of the image drawn in this color will be invisible. This is useful for creating paintbrushes of odd shapes, as well as for making PNG backgrounds transparent for displaying on the Web. Only one color can be transparent at any time. To disable transparency, specify -1 for the index. If you call this method without any parameters, it will return the current index of the transparent color, or -1 if none. Example: open(PNG,"test.png"); $im = newFromPng GD::Image(PNG); $white = $im->colorClosest(255,255,255); # find white $im->transparent($white); binmode STDOUT; print $im->png; =back =head2 Special Colors GD implements a number of special colors that can be used to achieve special effects. They are constants defined in the GD:: namespace, but automatically exported into your namespace when the GD module is loaded. =over 5 =item C =item C C<$image-EsetBrush( )> and C You can draw lines and shapes using a brush pattern. Brushes are just images that you can create and manipulate in the usual way. When you draw with them, their contents are used for the color and shape of the lines. To make a brushed line, you must create or load the brush first, then assign it to the image using C. You can then draw in that with that brush using the C special color. It's often useful to set the background of the brush to transparent so that the non-colored parts don't overwrite other parts of your image. Example: # Create a brush at an angle $diagonal_brush = new GD::Image(5,5); $white = $diagonal_brush->allocateColor(255,255,255); $black = $diagonal_brush->allocateColor(0,0,0); $diagonal_brush->transparent($white); $diagonal_brush->line(0,4,4,0,$black); # NE diagonal # Set the brush $myImage->setBrush($diagonal_brush); # Draw a circle using the brush $myImage->arc(50,50,25,25,0,360,gdBrushed); =item C =item C C<$image-EsetStyle(@colors)> and C Styled lines consist of an arbitrary series of repeated colors and are useful for generating dotted and dashed lines. To create a styled line, use C to specify a repeating series of colors. It accepts an array consisting of one or more color indexes. Then draw using the C special color. Another special color, C can be used to introduce holes in the line, as the example shows. Example: # Set a style consisting of 4 pixels of yellow, # 4 pixels of blue, and a 2 pixel gap $myImage->setStyle($yellow,$yellow,$yellow,$yellow, $blue,$blue,$blue,$blue, gdTransparent,gdTransparent); $myImage->arc(50,50,25,25,0,360,gdStyled); To combine the C and C behaviors, you can specify C. In this case, a pixel from the current brush pattern is rendered wherever the color specified in setStyle() is neither gdTransparent nor 0. =item C Draw filled shapes and flood fills using a pattern. The pattern is just another image. The image will be tiled multiple times in order to fill the required space, creating wallpaper effects. You must call C in order to define the particular tile pattern you'll use for drawing when you specify the gdTiled color. details. =item C The gdStyled color is used for creating dashed and dotted lines. A styled line can contain any series of colors and is created using the C command. =back =head2 Drawing Commands =over 5 =item C C<$image-EsetPixel(x,y,color)> I This sets the pixel at (x,y) to the specified color index. No value is returned from this method. The coordinate system starts at the upper left at (0,0) and gets larger as you go down and to the right. You can use a real color, or one of the special colors gdBrushed, gdStyled and gdStyledBrushed can be specified. Example: # This assumes $peach already allocated $myImage->setPixel(50,50,$peach); =item C C<$image-Eline(x1,y1,x2,y2,color)> I This draws a line from (x1,y1) to (x2,y2) of the specified color. You can use a real color, or one of the special colors gdBrushed, gdStyled and gdStyledBrushed. Example: # Draw a diagonal line using the currently defind # paintbrush pattern. $myImage->line(0,0,150,150,gdBrushed); =item C C<$image-EdashedLine(x1,y1,x2,y2,color)> I This draws a dashed line from (x1,y1) to (x2,y2) in the specified color. A more powerful way to generate arbitrary dashed and dotted lines is to use the setStyle() method described below and to draw with the special color gdStyled. Example: $myImage->dashedLine(0,0,150,150,$blue); =item C C I This draws a rectangle with the specified color. (x1,y1) and (x2,y2) are the upper left and lower right corners respectively. Both real color indexes and the special colors gdBrushed, gdStyled and gdStyledBrushed are accepted. Example: $myImage->rectangle(10,10,100,100,$rose); =item C C<$image-EfilledRectangle(x1,y1,x2,y2,color)> I This draws a rectangle filed with the specified color. You can use a real color, or the special fill color gdTiled to fill the polygon with a pattern. Example: # read in a fill pattern and set it open(PNG,"happyface.png") || die; $tile = newFromPng GD::Image(PNG); $myImage->setTile($tile); # draw the rectangle, filling it with the pattern $myImage->filledRectangle(10,10,150,200,gdTiled); =item C C<$image-Epolygon(polygon,color)> I This draws a polygon with the specified color. The polygon must be created first (see below). The polygon must have at least three vertices. If the last vertex doesn't close the polygon, the method will close it for you. Both real color indexes and the special colors gdBrushed, gdStyled and gdStyledBrushed can be specified. Example: $poly = new GD::Polygon; $poly->addPt(50,0); $poly->addPt(99,99); $poly->addPt(0,99); $myImage->polygon($poly,$blue); =item C C<$image-EfilledPolygon(poly,color)> I This draws a polygon filled with the specified color. You can use a real color, or the special fill color gdTiled to fill the polygon with a pattern. Example: # make a polygon $poly = new GD::Polygon; $poly->addPt(50,0); $poly->addPt(99,99); $poly->addPt(0,99); # draw the polygon, filling it with a color $myImage->filledPolygon($poly,$peachpuff); =item C C<$image-Earc(cx,cy,width,height,start,end,color)> I This draws arcs and ellipses. (cx,cy) are the center of the arc, and (width,height) specify the width and height, respectively. The portion of the ellipse covered by the arc are controlled by start and end, both of which are given in degrees from 0 to 360. Zero is at the top of the ellipse, and angles increase clockwise. To specify a complete ellipse, use 0 and 360 as the starting and ending angles. To draw a circle, use the same value for width and height. You can specify a normal color or one of the special colors gdBrushed, gdStyled, or gdStyledBrushed. Example: # draw a semicircle centered at 100,100 $myImage->arc(100,100,50,50,0,180,$blue); =item C C<$image-Efill(x,y,color)> I This method flood-fills regions with the specified color. The color will spread through the image, starting at point (x,y), until it is stopped by a pixel of a different color from the starting pixel (this is similar to the "paintbucket" in many popular drawing toys). You can specify a normal color, or the special color gdTiled, to flood-fill with patterns. Example: # Draw a rectangle, and then make its interior blue $myImage->rectangle(10,10,100,100,$black); $myImage->fill(50,50,$blue); =item C<$image-EfillToBorder(x,y,bordercolor,color)> I Like C, this method flood-fills regions with the specified color, starting at position (x,y). However, instead of stopping when it hits a pixel of a different color than the starting pixel, flooding will only stop when it hits the color specified by bordercolor. You must specify a normal indexed color for the bordercolor. However, you are free to use the gdTiled color for the fill. Example: # This has the same effect as the previous example $myImage->rectangle(10,10,100,100,$black); $myImage->fillToBorder(50,50,$black,$blue); =back =head2 Image Copying Commands Two methods are provided for copying a rectangular region from one image to another. One method copies a region without resizing it. The other allows you to stretch the region during the copy operation. With either of these methods it is important to know that the routines will attempt to flesh out the destination image's color table to match the colors that are being copied from the source. If the destination's color table is already full, then the routines will attempt to find the best match, with varying results. =over 5 =item C C<$image-Ecopy(sourceImage,dstX,dstY,srcX,srcY,width,height)> I This is the simplest of the several copy operations, copying the specified region from the source image to the destination image (the one performing the method call). (srcX,srcY) specify the upper left corner of a rectangle in the source image, and (width,height) give the width and height of the region to copy. (dstX,dstY) control where in the destination image to stamp the copy. You can use the same image for both the source and the destination, but the source and destination regions must not overlap or strange things will happen. Example: $myImage = new GD::Image(100,100); ... various drawing stuff ... $srcImage = new GD::Image(50,50); ... more drawing stuff ... # copy a 25x25 pixel region from $srcImage to # the rectangle starting at (10,10) in $myImage $myImage->copy($srcImage,10,10,0,0,25,25); =item C C<$image-Eclone()> I Make a copy of the image and return it as a new object. The new image will look identical. However, it may differ in the size of the color palette and other nonessential details. Example: $myImage = new GD::Image(100,100); ... various drawing stuff ... $copy = $myImage->clone; C<$image-EcopyMerge(sourceImage,dstX,dstY,srcX,srcY,width,height,percent)> I This copies the indicated rectangle from the source image to the destination image, merging the colors to the extent specified by percent (an integer between 0 and 100). Specifying 100% has the same effect as copy() -- replacing the destination pixels with the source image. This is most useful for highlighting an area by merging in a solid rectangle. Example: $myImage = new GD::Image(100,100); ... various drawing stuff ... $redImage = new GD::Image(50,50); ... more drawing stuff ... # copy a 25x25 pixel region from $srcImage to # the rectangle starting at (10,10) in $myImage, merging 50% $myImage->copyMerge($srcImage,10,10,0,0,25,25,50); C<$image-EcopyMergeGray(sourceImage,dstX,dstY,srcX,srcY,width,height,percent)> I This is identical to copyMerge() except that it preserves the hue of the source by converting all the pixels of the destination rectangle to grayscale before merging. =item C C<$image-EcopyResized(sourceImage,dstX,dstY,srcX,srcY,destW,destH,srcW,srcH)> I This method is similar to copy() but allows you to choose different sizes for the source and destination rectangles. The source and destination rectangle's are specified independently by (srcW,srcH) and (destW,destH) respectively. copyResized() will stretch or shrink the image to accomodate the size requirements. Example: $myImage = new GD::Image(100,100); ... various drawing stuff ... $srcImage = new GD::Image(50,50); ... more drawing stuff ... # copy a 25x25 pixel region from $srcImage to # a larger rectangle starting at (10,10) in $myImage $myImage->copyResized($srcImage,10,10,0,0,50,50,25,25); =back =head2 Character and String Drawing Gd allows you to draw characters and strings, either in normal horizontal orientation or rotated 90 degrees. These routines use a GD::Font object, described in more detail below. There are four built-in fonts, available in global variables gdGiantFont, gdLargeFont, gdMediumBoldFont, gdSmallFont and gdTinyFont. Currently there is no way of dynamically creating your own fonts. =over 5 =item C C<$image-Estring(font,x,y,string,color)> I This method draws a string startin at position (x,y) in the specified font and color. Your choices of fonts are gdSmallFont, gdMediumBoldFont, gdTinyFont, gdLargeFont and gdGiantFont. Example: $myImage->string(gdSmallFont,2,10,"Peachy Keen",$peach); =item C C<$image-EstringUp(font,x,y,string,color)> I Just like the previous call, but draws the text rotated counterclockwise 90 degrees. =item C =item C C<$image-Echar(font,x,y,char,color)> I C<$image-EcharUp(font,x,y,char,color)> I These methods draw single characters at position (x,y) in the specified font and color. They're carry-overs from the C interface, where there is a distinction between characters and strings. Perl is insensible to such subtle distinctions. =item C C<@bounds = $image-EstringTTF(fgcolor,fontname,ptsize,angle,x,y,string)> I C<@bounds = GD::Image-EstringTTF(fgcolor,fontname,ptsize,angle,x,y,string)> I This method uses TrueType to draw a scaled, antialiased string using the TrueType vector font of your choice. It requires that libgd to have been compiled with TrueType support, and for the appropriate TrueType font to be installed on your system. The arguments are as follows: fgcolor Color index to draw the string in fontname An absolute or relative path to the TrueType (.ttf) font file ptsize The desired point size (may be fractional) angle The rotation angle, in radians x,y X and Y coordinates to start drawing the string string The string itself If successful, the method returns an eight-element list giving the boundaries of the rendered string: @bounds[0,1] Lower left corner (x,y) @bounds[2,3] Lower right corner (x,y) @bounds[4,5] Upper right corner (x,y) @bounds[6,7] Upper left corner (x,y) In case of an error (such as the font not being available, or TTF support not being available), the method returns an empty list and sets $@ to the error message. You may also call this method from the GD::Image class name, in which case it doesn't do any actual drawing, but returns the bounding box using an inexpensive operation. You can use this to perform layout operations prior to drawing. =back =head2 Miscellaneous Image Methods =over 5 =item C C<$image-Einterlaced( )> C<$image-Einterlaced(1)> I This method sets or queries the image's interlaced setting. Interlace produces a cool venetian blinds effect on certain viewers. Provide a true parameter to set the interlace attribute. Provide undef to disable it. Call the method without parameters to find out the current setting. =item C C<$image-EgetBounds( )> I This method will return a two-member list containing the width and height of the image. You query but not not change the size of the image once it's created. =item C C<$image1-Ecompare($image2)> Compare two images and return a bitmap describing the differenes found, if any. The return value must be logically ANDed with one or more constants in order to determine the differences. The following constants are available: GD_CMP_IMAGE The two images look different GD_CMP_NUM_COLORS The two images have different numbers of colors GD_CMP_COLOR The two images' palettes differ GD_CMP_SIZE_X The two images differ in the horizontal dimension GD_CMP_SIZE_Y The two images differ in the vertical dimension GD_CMP_TRANSPARENT The two images have different transparency GD_CMP_BACKGROUND The two images have different background colors GD_CMP_INTERLACE The two images differ in their interlace The most important of these is GD_CMP_IMAGE, which will tell you whether the two images will look different, ignoring differences in the order of colors in the color palette and other invisible changes. The constants are not imported by default, but must be imported individually or by importing the :cmp tag. Example: use GD qw(:DEFAULT :cmp); # get $image1 from somewhere # get $image2 from somewhere if ($image1->compare($image2) & GD_CMP_IMAGE) { warn "images differ!"; } =back =head2 Polygon Methods A few primitive polygon creation and manipulation methods are provided. They aren't part of the Gd library, but I thought they might be handy to have around (they're borrowed from my qd.pl Quickdraw library). =over 5 =item C Cnew> I Create an empty polygon with no vertices. $poly = new GD::Polygon; =item C C<$poly-EaddPt(x,y)> I Add point (x,y) to the polygon. $poly->addPt(0,0); $poly->addPt(0,50); $poly->addPt(25,25); $myImage->fillPoly($poly,$blue); =item C C<$poly-EgetPt(index)> I Retrieve the point at the specified vertex. ($x,$y) = $poly->getPt(2); =item C C<$poly-EsetPt(index,x,y)> I Change the value of an already existing vertex. It is an error to set a vertex that isn't already defined. $poly->setPt(2,100,100); =item C C<$poly-EdeletePt(index)> I Delete the specified vertex, returning its value. ($x,$y) = $poly->deletePt(1); =item C C<$poly-EtoPt(dx,dy)> I Draw from current vertex to a new vertex, using relative (dx,dy) coordinates. If this is the first point, act like addPt(). $poly->addPt(0,0); $poly->toPt(0,50); $poly->toPt(25,-25); $myImage->fillPoly($poly,$blue); =item C C<$poly-Elength> I Return the number of vertices in the polygon. $points = $poly->length; =item C C<$poly-Evertices> I Return a list of all the verticies in the polygon object. Each membver of the list is a reference to an (x,y) array. @vertices = $poly->vertices; foreach $v (@vertices) print join(",",@$v),"\n"; } =item C C<$poly-Ebounds> I Return the smallest rectangle that completely encloses the polygon. The return value is an array containing the (left,top,right,bottom) of the rectangle. ($left,$top,$right,$bottom) = $poly->bounds; =item C C<$poly-Eoffset(dx,dy)> I Offset all the vertices of the polygon by the specified horizontal (dh) and vertical (dy) amounts. Positive numbers move the polygon down and to the right. $poly->offset(10,30); =item C C<$poly-Emap(srcL,srcT,srcR,srcB,destL,dstT,dstR,dstB)> I Map the polygon from a source rectangle to an equivalent position in a destination rectangle, moving it and resizing it as necessary. See polys.pl for an example of how this works. Both the source and destination rectangles are given in (left,top,right,bottom) coordinates. For convenience, you can use the polygon's own bounding box as the source rectangle. # Make the polygon really tall $poly->map($poly->bounds,0,0,50,200); =item C C<$poly-Escale(sx,sy)> I Scale each vertex of the polygon by the X and Y factors indicated by sx and sy. For example scale(2,2) will make the polygon twice as large. For best results, move the center of the polygon to position (0,0) before you scale, then move it back to its previous position. =item C C<$poly-Etransform(sx,rx,sy,ry,tx,ty)> I Run each vertex of the polygon through a transformation matrix, where sx and sy are the X and Y scaling factors, rx and ry are the X and Y rotation factors, and tx and ty are X and Y offsets. See the Adobe PostScript Reference, page 154 for a full explanation, or experiment. =back =head2 Font Utilities The libgd library (used by the Perl GD library) has built-in support for about half a dozen fonts, which were converted from public-domain X Windows fonts. For more fonts, compile libgd with TrueType support and use the stringTTF() call. If you wish to add more built-in fonts, the directory bdf_scripts contains two contributed utilities that may help you convert X-Windows BDF-format fonts into the format that libgd uses internally. However these scripts were written for earlier versions of GD which included its own mini-gd library. These scripts will have to be adapted for use with libgd, and the libgd library itself will have to be recompiled and linked! Please do not contact me for help with these scripts: they are unsupported. =over 5 =item C CSmall> I This is the basic small font, "borrowed" from a well known public domain 6x12 font. =item C CLarge> I This is the basic large font, "borrowed" from a well known public domain 8x16 font. =item C CMediumBold> I This is a bold font intermediate in size between the small and large fonts, borrowed from a public domain 7x13 font; =item C CTiny> I This is a tiny, almost unreadable font, 5x8 pixels wide. =item C CGiant> I This is a 9x15 bold font converted by Jan Pazdziora from a sans serif X11 font. =item C C<$font-Enchars> I This returns the number of characters in the font. print "The large font contains ",gdLargeFont->nchars," characters\n"; =item C C<$font-Eoffset> I This returns the ASCII value of the first character in the font =item C =item C C<$font-Ewidth> C I These return the width and height of the font. ($w,$h) = (gdLargeFont->width,gdLargeFont->height); =back =head1 Obtaining the C-language version of gd libgd, the C-language version of gd, can be obtained at URL http://www.boutell.com/gd/. Directions for installing and using it can be found at that site. Please do not contact me for help with libgd. =head1 Copyright Information The GD.pm interface is copyright 1995-1999, Lincoln D. Stein. It is distributed under the same terms as Perl itself. See the "Artistic License" in the Perl source code distribution for licensing terms. The latest versions of GD.pm are available at http://stein.cshl.org/WWW/software/GD wml-2.0.12.orig/wml_common/gd/GD.xs0000644000175000017500000000421610343637544015015 0ustar abeabe#ifdef PERL_CAPI #define WIN32IO_IS_STDIO #endif #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "libgd/gd.h" #ifdef FCGI #include #else #ifdef USE_SFIO #include #else #include #endif #include #endif /* Copyright 1995 - 1998, Lincoln D. Stein. See accompanying README file for usage restrictions */ typedef gdImagePtr WML__GD__Image; typedef PerlIO * InputStream; MODULE = WML::GD PACKAGE = WML::GD::Image PREFIX=gd WML::GD::Image gdnew(packname="WML::GD::Image", x=64, y=64) char * packname int x int y PROTOTYPE: $;$$ CODE: { gdImagePtr theImage; theImage = gdImageCreate(x,y); RETVAL = theImage; } OUTPUT: RETVAL SV* gdpng(image) WML::GD::Image image PROTOTYPE: $ CODE: { int size; #ifdef HAVE_LIBPNG void* data; data = (void *) gdImagePngPtr(image,&size); #else const char* data = '\0'; size = 1; croak("libgd was compiled without support of the PNG image format"); #endif RETVAL = newSVpv((char*) data,size); #ifdef HAVE_LIBPNG free(data); #endif } OUTPUT: RETVAL SV* gdgif(image) WML::GD::Image image PROTOTYPE: $ CODE: { void* data; int size; data = (void *) gdImageGifPtr(image,&size); RETVAL = newSVpv((char*) data,size); free(data); } OUTPUT: RETVAL int gdtransparent(image, ...) WML::GD::Image image PROTOTYPE: $;$ CODE: { int color; if (items > 1) { color=(int)SvIV(ST(1)); gdImageColorTransparent(image,color); } RETVAL = gdImageGetTransparent(image); } OUTPUT: RETVAL void gdline(image,x1,y1,x2,y2,color) WML::GD::Image image int x1 int y1 int x2 int y2 int color PROTOTYPE: $$$$$$ CODE: { gdImageLine(image,x1,y1,x2,y2,color); } void gdfilledRectangle(image,x1,y1,x2,y2,color) WML::GD::Image image int x1 int y1 int x2 int y2 int color PROTOTYPE: $$$$$$ CODE: { gdImageFilledRectangle(image,x1,y1,x2,y2,color); } int colorAllocate(image,r,g,b) WML::GD::Image image int r int g int b PROTOTYPE: $$$$ CODE: { RETVAL = gdImageColorAllocate(image,r,g,b); } OUTPUT: RETVAL wml-2.0.12.orig/wml_common/gd/README0000644000175000017500000003157110343637544015033 0ustar abeabe ******************* THIS IS NOT GD-1.23 ******************* As you can read below, GD is a Perl interface to the Thomas Boutell's gd library. He decided to remove support for GIF images in recent releases, and GD follows this policy. I want to allow generation of both PNG and GIF images, so i had to hack GD-1.23. There are numerous other changes, removals of font related stuff, gd and gd2 file format, etc. Below is the original README file of GD-1.23 Denis Barbier 2000/01/05 GD.pm -- A perl5 interface to Thomas Boutell's gd library. ABSTRACT: This is a autoloadable interface module for libgd, a popular library for creating and manipulating PNG files. With this library you can create PNG images on the fly or modify existing files. Features include: a. lines, polygons, rectangles and arcs, both filled and unfilled b. flood fills c. the use of arbitrary images as brushes and as tiled fill patterns d. line styling (dashed lines and the like) e. horizontal and vertical text rendering f. support for transparency and interlacing For full information on usage, see the accompanying man and html documentation. COPYRIGHT INFO The GD.pm interface is copyright 1995-1999, Lincoln D. Stein. It is covered by the Perl "Artistic License", which allows for free usage and redistribution. See the Artistic License in the Perl source package for details. Code from the gd graphics library is covered separately, under a 1994 copyright by Quest Protein Database Center, Cold Spring Harbor Labs, and by Thomas Boutell. THE LATEST VERSION IS 1.23 WHAT'S NEW IN 1.23 - added some more libraries to link in, might help unresolved symbol problems - if Tom Boutell would provide support for linking libgd dynamically, none of these unresolved symbol problems would be occurring!!!!! WHAT'S NEW IN 1.22 - added support for statically linked libgd.a, which is now default for libgd 1.7.3 (grrrr) - added newFromGd2Part() and newFromXPM() methods WHAT'S NEW IN 1.21 - fix to regression test so that all tests pass when truetype support not enabled - removed GD.html from distribution WHAT'S NEW IN 1.20 - uses libgd 1.6.3, allowing it to 1. create png images 2. render TrueType Fonts - SUPPORT FOR GIF OUTPUT HAS BEEN REMOVED DUE TO UNISYS PATENT RESTRICTIONS - Fixes to compile correctly on VMS systems - Patches from ActiveState for Windows/DOS systems. - bdftogd fix from Honza Pazdziora to handle non-fixed width fonts better WHAT'S NEW IN 1.19 - Fixes to compile correctly on Win32 systems WHAT'S NEW IN 1.18 - New "Giant" font. WHAT'S NEW IN 1.17 - Patches from Gurusamy Sarathy that allow GD to compile correctly on Win32 systems. - Patches from Jan Pazdziora to handle the full ISO-Latin-2 alphabet, along with some bug fixes. WHAT'S NEW IN 1.16 - Patches from Andreas Koenig to use FileHandle correctly (also fixes problems with mod_perl). WHAT'S NEW IN 1.15 - Patches from Ulrich Pfeifer to allow to compile correctly with FastCGI - Patches from Douglas Wegscheid to avoid multiple defined symbol problems under NetBSD - Patches from Weinfriend Koenig to fix problems in filled polygons, plus new routines for scaling, translating and rotating polygons. WHAT'S NEW IN 1.14 - Modified gd library now included in the package. - Performance improvements. - Extensive code cleanup. - Runs correctly with FastCGI. INSTALLATION: 1. Make sure you have downloaded and installed the following packages: a. Perl 5.004 or higher: http://www.perl.com/ b. The gd graphics library, version 1.6.3 or higher: http://www.boutell.com/gd/ c. The PNG graphics library: http://www.cdrom.com/pub/png/ d. The zlib compression library: http://www.cdrom.com/pub/infozip/zlib/ e. The FreeType font rendering library for TrueType fonts (optional): http://www.freetype.org/ 2. Unpack the tar file: zcat GD-1.XX.tar.gz | tar xvf - (Where "XX" is the most recent revision number.) This will create the directory GD-1.XX. 3. To compile GD.pm on a system that supports dynamic linking: a. cd GD-1.XX b. perl Makefile.PL c. make d. make test (optional) e. make html (optional) f. make install This will create GD.pm, its HTML manual page, and install GD into the system-wide Perl library directory. You'll need root privileges to do the install step. If you don't have them, see below. If during step (b) you see either of these messages: Note (probably harmless): No library found for -lttf Note (probably harmless): No library found for -lXpm this means that FreeType and/or Xpm support will not be compiled in. You may still be able to use the library, but the functions that call these routines will fail (check the $@ variable for the exact error message). If you get a link error while loading the module, then you be able to recover the situation by changing the library search path specified by the @extrasearch variable in Makefile.PL If you see notes about any other missing libraries (-lz, -lgd, -lpng) then this module will not compile and install correctly. 4. To compile GD.pm statically on systems that do not support dynamic linking: a. cd GD-1.XX b. perl Makefile.PL LINKTYPE=static c. make perl d. make -f Makefile.aperl inst_perl MAP_TARGET=gdperl This will create a new version of Perl and install it in your system binaries directory, under the name "gdperl". 5. Before you install GD, you may want to run the regression tests. You can do this after the "make" step by typing: make test If any tests fail, you might want to run them verbosely with: make test TEST_VERBOSE=1 6. There are some demos you can run in ext/GD/demos. They print PNG files to standard output. To view the files, pipe their output to "display" or "xv" in this way: a. cd GD-1.XX/demos b perl shapes.pl | display - You will need a graphics program that can read and display PNG format. I recommend Image::Magick's display program, available from ftp://ftp.wizards.dupont.com/pub/ImageMagick/ If you don't have any display programs handy, you can save to a temporary file and display with recent versions of Netscape or Internet Explorer. 7. A program named fonttest is included in this package under demos. This generates an image showing all the built-in fonts available. If you have built libgd with TrueType support, and you have a directory containing some TrueType fonts, you can create a simple font listing by running the program truetype_test, also located in demos. 8. See demos/gd_example.cgi for an example of how to use GD to create a picture dynamically with a CGI script. It's intended to be run under a Web server. To see it work, install it in your server's cgi-bin/ directory and invoke it from a browser by fetching a URL like: http://your.site/cgi-bin/gd_example.cgi INSTALLING GD IN YOUR HOME DIRECTORY IF YOU DON'T HAVE PRIVILEGES TO INSTALL GD.pm in your system's main Perl library directory, don't despair. You can install it into your home directory using the following feature of Makefile.PL: a. cd GD-1.XX b. perl Makefile.PL LIB=/home/fred/lib c. make d. make install (change /home/fred/lib as appropriate for your home directory). This will install GD.pm in /home/fred/lib. You may get some errors about not being able to install the manual pages. Either don't worry about it, or run the "perl Makefile.PL" step with the INST_MAN3DIR variable set to some directory you have write permission for. You'll now need to modify your GD-using scripts to tell Perl where to find GD. This example assumes that your home directory is at path "/home/fred"; change it as appropriate. #!/usr/local/bin/perl use lib '/home/fred/lib'; use GD; ... etc ... USING GD WITH FAST CGI FastCGI is a protocol from OpenMarket Corporation that markedly speeds up the execution of CGI scripts. To use FastCGI with Perl scripts, you need a specially-modified version of the Perl interpreter which you can obtain in binary and/or source form from: http://www.fastcgi.com/ To use GD with a FastCGI version of Perl you'll need to recompile it using the modified Perl. In this example, I assume that this version of Perl is found at '/usr/local/fcgi/bin/perl': modify as appropriate for your system. a. cd GD-1.XX b. edit Makefile.PL and uncomment the line 'DEFINE' => '-DFCGI' c. /usr/local/fcgi/bin/perl Makefile.PL d. make e. make install Note that these instructions have not been verified for a long time, and may no longer work. If you successfully use this module with FastCGI and find that the instructions are no longer valid, please send me the updated information. IF YOU RUN INTO PROBLEMS Some versions of Unix and Unix-like systems such as Linux ship with an incomplete version of the Perl distribution. If you get warnings such as "Module ExtUtils::MakeMaker not found", you may have such a system. Your only option is to obtain the full Perl distribution and reinstall it. If the make and install all seem to go well but you get errors like "Fatal error: can't load module GD.so", or "Fatal error: unknown symbol gdFontSmall" when you try to run a script that uses GD, you may have problems with dynamic linking. Check whether other dynamically-linked Perl modules such as POSIX and DB_File run correctly. If not, then you'll have to link Perl statically, as described above. If you are trying to compile and link GD on a Windows or Macintosh machine and fail, please verify that you are able to build the Perl distribution from source code. If you can't do that, then you don't have the compiler/linker/make tools required for building Perl modules. You may not even need to do this, as ActiveState and MacPerl both include precompiled versions of GD. If you have problems and can't solve it on your own, post a message to the newsgroup "comp.lang.perl.modules". There are some systems that require obscure compiler and linker options in order to compile correctly, and unfortunately I have a limited number of systems at my disposal. You're much more likely to get correct answers from the gurus on the newsgroup than from myself. THE QUICKDRAW LIBRARY Also included in this package is qd.pl, a package of Quickdraw routines. If you are familiar with the Quickdraw Macintosh library, you can create Macintosh pictures (complete with scaleable fonts, draggable objects, etc. etc.) directly in Perl. See README.QUICKDRAW and qd.pl for more information. FREQUENTLY ASKED QUESTIONS 1. What happened to GIF support? Unisys owns the patent on the LZW compression scheme, which is the basis for GIF. Recently (Summer 1999) Unisys's lawyers have begun threatening providers of GIF software, as well as Web site operators who display GIF images. To avoid legal issues, Tom Boutell and myself are forced to remove GIF support from GD. PNG is technically better than GIF, and is supported by newer Web browsers, including Netscape Navigator 4.04 and higher, and Microsoft Internet Explorer 4.0 and higher. 2. Is there a utility to convert X Windows BDF fonts into GD fonts. Yes. See the directory bdf_scripts/. However these scripts were written for earlier versions of GD which included its own mini-gd library. These scripts will have to be adapted for use with libgd, and the libgd library itself will have to be recompiled and linked! 3. Does GD run with MacPerl/Win32 Perl? Yes. The latest MacPerl and ActiveState binaries come with GD already compiled in and ready to go. 4. GD won't compile on system XX. The most frequent problem is missing or redundant symbols during the link. If you get an error about missing math symbols (usually "floor"), then uncomment the line in Makefile.PL that starts with 'LIBS'. If you get an error about multiple redundant symbols, then comment out the line. 5. When I try to load an XPM file, all I get is blackness! I can't get the libgd createFromXpm() function to work, either. There may be a bug in the library. BUG REPORTS Feel free to contact me via e-mail. Provide the version numbers of GD, Perl, make and model of your operating system, and make and model of your Web server, if appropriate. Provide a small script that demonstrates the bug. Do NOT contact me for issues involving compilation failures on Windows, VMS, or Macintosh systems. I do not have any such systems on hand, and cannot help you out. ACKNOWLEDGEMENTS: I'd like to thank Jan Pazdziora, Geoff Baysinger, and David Kilzer for their contributions to the library, as well as Thomas Boutell who wrote libgd. UPDATES: The current version of GD can be found at: http://stein.cshl.org/WWW/software/GD AUTHOR: Lincoln Stein lstein@cshl.org http://stein.cshl.org/~lstein wml-2.0.12.orig/wml_common/gd/typemap0000644000175000017500000000004010343637544015540 0ustar abeabeTYPEMAP WML::GD::Image T_PTROBJ wml-2.0.12.orig/wml_common/gd/Makefile.PL.in0000644000175000017500000000224610343637544016527 0ustar abeabeuse ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( 'NAME' => 'WML::GD', 'VERSION_FROM' => 'GD.pm', 'PM' => {'GD.pm' => '$(INST_LIBDIR)/GD.pm'}, 'MYEXTLIB' => 'libgd/libgd$(LIB_EXT)', 'dist' => {'COMPRESS'=>'gzip -9f', 'SUFFIX' => 'gz', 'ZIP'=>'/usr/bin/zip','ZIPFLAGS'=>'-rl'}, 'realclean' => {'FILES'=>'Makefile.PL libgd/Makefile.PL config.cache config.log config.status'}, # Uncomment the line below if you're getting link errors # having to do with missing math functions (like floor) 'LIBS' => ["-lm @LIBPNG@"], 'DEFINE' => '@DEFS@' # Uncomment the line below if you're using a perl compiled # for fastCGI (http://www.fastcgi.com/). # 'DEFINE' => '-DFCGI' ); sub MY::postamble{ ' $(MYEXTLIB): libgd/Makefile DEFINE=\'$(DEFINE)\'; export DEFINE INC; \ cd libgd && $(MAKE) -e '; } # hack to avoid MakeMaker bug of empty rm -f command sub MY::realclean { package MY; # so that "SUPER" works right my $inherited = shift->SUPER::realclean(@_); $inherited =~ s/ rm -f \n//s; $inherited; } wml-2.0.12.orig/wml_common/filepathconvert/0000755000175000017500000000000011613524770016744 5ustar abeabewml-2.0.12.orig/wml_common/filepathconvert/MANIFEST0000644000175000017500000000004410343637544020076 0ustar abeabeMANIFEST Makefile.PL PathConvert.pm wml-2.0.12.orig/wml_common/filepathconvert/PathConvert.pm0000644000175000017500000010734410343637544021553 0ustar abeabe# # Copyright (c) 1996, 1997, 1998 Shigio Yamaguchi. All rights reserved. # This program is free software; you can redistribute it and/or # modify it under the same terms as Perl itself. # # File::PathConvert.pm # package File::PathConvert; require 5.002; use strict ; BEGIN { use Exporter (); use vars qw($VERSION @ISA @EXPORT_OK); $VERSION = 0.85; @ISA = qw(Exporter); @EXPORT_OK = qw(setfstype splitpath joinpath splitdirs joindirs realpath abs2rel rel2abs $maxsymlinks $verbose $SL $resolved ); } use vars qw( $maxsymlinks $verbose $SL $resolved ) ; use Cwd; # # Initialize @EXPORT_OK vars # $maxsymlinks = 32; # allowed symlink number in a path $verbose = 0; # 1: verbose on, 0: verbose off $SL = '' ; # Separator char export $resolved = '' ; # realpath() intermediate value export ############################################################################# # # Package Globals # my $fstype ; # A name indicating the type of filesystem currently in use my $sep ; # separator my $sepRE ; # RE to match spearator my $notsepRE ; # RE to match anything else my $volumeRE ; # RE to match the volume name my $directoryRE ; # RE to match the directory name my $isrootRE ; # RE to match root path: applied to directory portion only my $thisDir ; # Name of this directory my $thisDirRE ; # Name of this directory my $parentDir ; # Name of parent directory my $parentDirRE ; # RE to match parent dir name my $casesensitive ; # Set to non-zero for case sensitive name comprisions. Only # affects names, not any other REs, so $isrootRE for Win32 # must be case insensitive my $idempotent ; # Set to non-zero if '//' is equivalent to '/'. This # does not affect leading '//' and '\\' under Win32, # but will fold '///' and '////', etc, in to '//' on this # Win32 ########### # # The following globals are regexs used in the indicated routines. These # are initialized by setfstype, so they don't need to be rebuilt each time # the routine that uses them is called. my $basenamesplitRE ; # Used in realpath() to split filenames. ########### # # This RE matches (and saves) the portion of the string that is just before # the beginning of a name # my $beginning_of_name ; # # This whopper of an RE looks for the pattern "name/.." if it occurs # after the beginning of the string or after the root RE, or after a separator. # We don't assume that the isrootRE has a trailing separator. # It also makes sure that we aren't eliminating '../..' and './..' patterns # by using the negative lookahead assertion '(?!' ... ')' construct. It also # ignores 'name/..name'. # my $name_sep_parentRE ; # # Matches '..$', '../' after a root my $leading_parentRE ; # # Matches things like '/(./)+' and '^(./)+' # my $dot_sep_etcRE ; # # Matches trailing '/' or '/.' # my $trailing_sepRE ; ############################################################################# # # Functions # # # setfstype: takes the name of an operating system and sets up globals that # allow the other functions to operate on multiple OSs. See # %fsconfig for the sets of settings. # # This is run once on module load to configure for the OS named # in $^O. # # Interface: # i) $osname, as in $^O or plain english: "MacOS", "DOS, etc. # This is _not_ usually case sensitive. # r) Name of recognized name on success else undef. Note that, as # shipped, 'unix' is the default is nothing else matches. # go) $fstype and lots of internal parameters and regexs. # x) Dies if a parameter required in @fsconfig is missing. # # # There are some things I couldn't figure a way to parameterize by setting # globals. $fstype is checked for filesystem type-specific logic, like # VMS directory syntax. # # Setting up for a particular OS type takes two steps: identify the OS and # set all of the 'atomic' global variables, then take some of the atomic # globals which are regexps and build composite values from them. # # The atomic regexp terms are generally used to build the larger composite # regexps that recognize and break apart paths. This leads to # two important rules for the atomic regexp terms: # # (1) Do not use '(' ... ')' in the regex terms, since they are used to build # regexs that use '(' ... ')' to parse paths. # # (2) They must be built so that a '?' or other quantifier may be appended. # This generally means using the '(?:' ... ')' or '[' ... ']' to group # multicharacter patterns. Other '(?' ... ')' may also do. # # The routines herein strive to preserve the # original separator and root settings, and, it turns out, never need to # prepend root to a string (although they do need to insert separators on # occasion). This is good, since the Win32 root expressions can be like # '/', '\', 'A:/', 'a:/', or even '\\' or '//' for UNC style names. # # Note that the default root and default notsep are not used, and so are # undefined. # # For DOS, MacOS, and VMS, we assume that all paths handed in are on the same # volume. This is not a significant limitation except for abs2rel, since the # absolute path is assumed to be on the same volume as the base path. # sub setfstype($;) { my( $osname ) = @_ ; # Find the best match for OS and set up our atomic globals accordingly if ( $osname =~ /^(?:(ms)?(dos|win(32|nt)?))/i ) { $fstype = 'Win32' ; $sep = '/' ; $sepRE = '[\\\\/]' ; $notsepRE = '[^\\\\/]' ; $volumeRE = '(?:^(?:[a-zA-Z]:|(?:\\\\\\\\|//)[^\\\\/]+[\\\\/][^\\\\/]+)?)' ; $directoryRE = '(?:(?:.*[\\\\/](?:\.\.?$)?)?)' ; $isrootRE = '(?:^[\\\\/])' ; $thisDir = '.' ; $thisDirRE = '\.' ; $parentDir = '..' ; $parentDirRE = '(?:\.\.)' ; $casesensitive = 0 ; $idempotent = 1 ; } elsif ( $osname =~ /^MacOS$/i ) { $fstype = 'MacOS' ; $sep = ':' ; $sepRE = '\:' ; $notsepRE = '[^:]' ; $volumeRE = '(?:^(?:.*::)?)' ; $directoryRE = '(?:(?:.*:)?)' ; $isrootRE = '(?:^:)' ; $thisDir = '.' ; $thisDirRE = '\.' ; $parentDir = '..' ; $parentDirRE = '(?:\.\.)' ; $casesensitive = 0 ; $idempotent = 1 ; } elsif ( $osname =~ /^VMS$/i ) { $fstype = 'VMS' ; $sep = '.' ; $sepRE = '[\.\]]' ; $notsepRE = '[^\.\]]' ; # volume is node::volume:, where node:: and volume: are optional # and node:: cannot be present without volume. node can include # an access control string in double quotes. # Not supported: # quoted full node names # embedding a double quote in a string ("" to put " in) # support ':' in node names # foreign file specifications # task specifications # UIC Directory format (use the 6 digit name for it, instead) $volumeRE = '(?:^(?:(?:[\w\$-]+(?:"[^"]*")?::)?[\w\$-]+:)?)' ; $directoryRE = '(?:(?:\[.*\])?)' ; # Root is the lack of a leading '.', unless string is empty, which # means 'cwd', which is relative. $isrootRE = '(?:^[^\.])' ; $thisDir = '' ; $thisDirRE = '\[\]' ; $parentDir = '-' ; $parentDirRE = '-' ; $casesensitive = 0 ; $idempotent = 0 ; } elsif ( $osname =~ /^URL$/i ) { # URL spec based on RFC2396 (ftp://ftp.isi.edu/in-notes/rfc2396.txt) $fstype = 'URL' ; $sep = '/' ; $sepRE = '/' ; $notsepRE = '[^/]' ; # Volume= scheme + authority, both optional $volumeRE = '(?:^(?:[a-zA-Z][a-zA-Z0-9+-.]*:)?(?://[^/?]*)?)' ; # Directories do _not_ include the query component: we pretend that # anything after a "?" is the filename or part of it. So a '/' # terminates and is part of the directory spec, while a '?' or '#' # terminate and are not part of the directory spec. # # We pretend that ";param" syntax does not exist # $directoryRE = '(?:(?:[^?#]*/(?:\.\.?(?:$|(?=[?#])))?)?)' ; $isrootRE = '(?:^/)' ; $thisDir = '.' ; $thisDirRE = '\.' ; $parentDir = '..' ; $parentDirRE = '(?:\.\.)' ; # Assume case sensitive, since many (most?) are. The user can override # this if they so desire. $casesensitive = 1 ; $idempotent = 1 ; } else { $fstype = 'Unix' ; $sep = '/' ; $sepRE = '/' ; $notsepRE = '[^/]' ; $volumeRE = '' ; $directoryRE = '(?:(?:.*/(?:\.\.?$)?)?)' ; $isrootRE = '(?:^/)' ; $thisDir = '.' ; $thisDirRE = '\.' ; $parentDir = '..' ; $parentDirRE = '(?:\.\.)' ; $casesensitive = 1 ; $idempotent = 1 ; } # Now set our composite regexps. # Maintain old name for backward compatibility $SL= $sep ; # Build lots of REs used below, so they don't need to be built every time # the routines that use them are called. $basenamesplitRE = '^(.*)' . $sepRE . '(' . $notsepRE . '*)$' ; $leading_parentRE = '(' . $isrootRE . '?)(?:' . $parentDirRE . $sepRE . ')*(?:' . $parentDirRE . '$)?' ; $trailing_sepRE = '(.)' . $sepRE . $thisDirRE . '?$' ; $beginning_of_name = '(?:^|' . $isrootRE . '|' . $sepRE . ')' ; $dot_sep_etcRE = '(' . $beginning_of_name . ')(?:' . $thisDirRE . $sepRE . ')+'; $name_sep_parentRE = '(' . $beginning_of_name . ')' . '(?!(?:' . $thisDirRE . '|' . $parentDirRE . ')' . $sepRE . ')' . $notsepRE . '+' . $sepRE . $parentDirRE . '(?:' . $sepRE . '|$)' ; if ( $verbose ) { print( < $maxsymlinks) { warn("realpath: too many symbolic links: $links.") if $verbose; chdir($backdir); return undef; } redo LOOP; } elsif (-d _) { unless (chdir($basename)) { warn("realpath: chdir($basename) failed: $! (in ${\cwd()}).") if $verbose; chdir($backdir); return undef; } $basename = ''; } } } # # Get the current directory name and append the basename. # $resolved = cwd(); if ( $basename ne '' ) { $resolved .= $sep if ($resolved ne $sep); $resolved .= $basename } chdir($backdir); return $resolved; } # end sub realpath # # abs2rel: make a relative pathname from an absolute pathname # # Interface: # i) $path absolute path(needed) # i) $base base directory(optional) # r) relative path of $path # # Note: abs2rel doesn't check whether the specified path exist or not. # sub abs2rel($;$;) { my($path, $base) = @_; my($reg ); my( $path_volume, $path_directory, $path_file )= splitpath( $path,'nofile'); if ( $path_directory !~ /$isrootRE/ ) { warn("abs2rel: nothing to do: '$path' is relative.") if $verbose; return $path; } $base = cwd() if ( $base eq '' ) ; my( $base_volume, $base_directory, $base_file )= splitpath( $base,'nofile'); # check for a filename, since the nofile parameter does not work for OSs # like VMS that have explicit delimiters between the dir and file portions warn( "abs2rel: filename '$base_file' passed in \$base" ) if ( $base_file ne '' && $verbose ) ; if ( $base_directory !~ /$isrootRE/ ) { # Make $base absolute my( $cw_volume, $cw_directory, $dummy ) = splitpath( cwd(), 'nofile' ) ; # maybe we should warn if $cw_volume ne $base_volume and both are not '' $base_volume= $cw_volume if ( $base_volume eq '' && $cw_volume ne '' ) ; $base_directory = join( '', $cw_directory, $sep, $base_directory ) ; } #print( "[$path_directory,$base_directory]\n" ) ; $path_directory = regularize( $path_directory ); $base_directory = regularize( $base_directory ); #print( "[$path_directory,$base_directory]\n" ) ; # Now, remove all leading components that are the same, so 'name/a' # 'name/b' become 'a' and 'b'. my @pathchunks = split($sepRE, $path_directory); my @basechunks = split($sepRE, $base_directory); if ( $casesensitive ) { while (@pathchunks && @basechunks && $pathchunks[0] eq $basechunks[0]) { shift @pathchunks ; shift @basechunks ; } } else { while ( @pathchunks && @basechunks && lc( $pathchunks[0] ) eq lc( $basechunks[0] ) ) { shift @pathchunks ; shift @basechunks ; } } # No need to use joindirs() here, since we know that the arrays # are well formed. $path_directory= join( $sep, @pathchunks ); $base_directory= join( $sep, @basechunks ); #print( "[$path_directory,$base_directory]\n" ) ; # Convert $base_directory from absolute to relative if ( $fstype eq 'VMS' ) { $base_directory= $sep . $base_directory if ( $base_directory ne '' ) ; } else { $base_directory=~ s/^$sepRE// ; } #print( "[$base_directory]\n" ) ; # $base_directory now contains the directories the resulting relative path # must ascend out of before it can descend to $path_directory. So, # replace all names with $parentDir $base_directory =~ s/$notsepRE+/$parentDir/g ; #print( "[$base_directory]\n" ) ; # Glue the two together, using a separator if necessary, and preventing an # empty result. if ( $path_directory ne '' && $base_directory ne '' ) { $path_directory = "$base_directory$sep$path_directory" ; } else { $path_directory = "$base_directory$path_directory" ; } $path_directory = regularize( $path_directory ) ; # relative URLs should have no name in the volume, only a scheme. $path_volume=~ s#/.*## if ( $fstype eq 'URL' ) ; return joinpath( $path_volume, $path_directory, $path_file ) ; } # # rel2abs: make an absolute pathname from a relative pathname # # Assumes no trailing file name on $base. Ignores it if present on an OS # like $VMS. # # Interface: # i) $path relative path (needed) # i) $base base directory (optional) # r) absolute path of $path # # Note: rel2abs doesn't check if the paths exist. # sub rel2abs($;$;) { my( $path, $base ) = @_; my( $reg ); my( $path_volume, $path_directory, $path_file )= splitpath( $path, 'nofile' ) ; if ( $path_directory =~ /$isrootRE/ ) { warn( "rel2abs: nothing to do: '$path' is absolute" ) if $verbose; return $path; } warn( "rel2abs: volume '$path_volume' passed in relative path: \$path" ) if ( $path_volume ne '' && $verbose ) ; $base = cwd() if ( !defined( $base ) || $base eq '' ) ; my( $base_volume, $base_directory, $base_file )= splitpath( $base, 'nofile' ) ; # check for a filename, since the nofile parameter does not work for OSs # like VMS that have explicit delimiters between the dir and file portions warn( "rel2abs: filename '$base_file' passed in \$base" ) if ( $base_file ne '' && $verbose ) ; if ( $base_directory !~ /$isrootRE/ ) { # Make $base absolute my( $cw_volume, $cw_directory, $dummy ) = splitpath( cwd(), 'nofile' ) ; # maybe we should warn if $cw_volume ne $base_volume and both are not '' $base_volume= $cw_volume if ( $base_volume eq '' && $cw_volume ne '' ) ; $base_directory = join( '', $cw_directory, $sep, $base_directory ) ; } $path_directory = regularize( $path_directory ); $base_directory = regularize( $base_directory ); my $result_directory ; # Avoid using a separator if either directory component is empty. if ( $base_directory ne '' && $path_directory ne '' ) { $result_directory= joindirs( $base_directory, $path_directory ) ; } else { $result_directory= "$base_directory$path_directory" ; } $result_directory = regularize( $result_directory ); return joinpath( $base_volume, $result_directory, $path_file ) ; } # # regularize a path. # # Removes dubious and redundant information. # should only be called on directory portion on OSs # with volumes and with delimeters that separate dir names from file names, # since the separators can take on different semantics, like "\\" for UNC # under Win32, or '.' in filenames under VMS. # sub regularize { my( $in )= $_[ 0 ] ; # Combine idempotent separators. Do this first so all other REs only # need to match one separator. Use the first sep found instead of # sepRE to preserve slashes on Win32. $in =~ s/($sepRE)$sepRE+/$1/g if ( $idempotent ) ; # We do this after deleting redundant separators in order to be consistent. # If a Win32 path ended in \/, we want to be sure that the \ is returned, # no the /. $in =~ /($sepRE)$sepRE*$/ ; my $trailing_sep = defined( $1 ) ? $1 : '' ; # Delete all occurences of 'name/..(/|$)'. This is done with a while # loop to get rid of things like 'name1/name2/../..'. We chose the pattern # name/../ as the target instead of /name/.. so as to preserve 'rootness'. while ($in =~ s/$name_sep_parentRE/$1/g) {} # Get rid of ./ in '^./' and '/./' $in =~ s/$dot_sep_etcRE/$1/g ; # Get rid of trailing '/' and '/.' unless it would leave an empty string $in =~ s/$trailing_sepRE/$1/ ; # Get rid of '../' constructs from absolute paths $in =~ s/$leading_parentRE/$1/ if ( $in =~ /$isrootRE/ ) ; # # Default to current directory if it's now empty. # $in = $thisDir if $_[0] eq '' ; # # Restore trailing separator if it was lost. We do this to preserve # the 'dir-ness' of the path: paths that ended in a separator on entry # should leave with one in case the caller is using trailing slashes to # indicate paths to directories. $in .= $trailing_sep if ( $trailing_sep ne '' && $in !~ /$sepRE$/ ) ; return $in ; } 1; __END__ =head1 NAME abs2rel - convert an absolute path to a relative path rel2abs - convert a relative path to an absolute path realpath - convert a logical path to a physical path (resolve symlinks) splitpath - split a path in to volume, directory and filename components joinpath - join volume, directory, and filename components to form a path splitdirs - split directory specification in to component names joindirs - join component names in to a directory specification setfstype - set the file system type =head1 SYNOPSIS use File::PathConvert qw(realpath abs2rel rel2abs setfstype splitpath joinpath splitdirs joindirs $resolved); $relpath = abs2rel($abspath); $abspath = abs2rel($abspath, $base); $abspath = rel2abs($relpath); $abspath = rel2abs($relpath, $base); $path = realpath($logpath) || die "resolution stopped at $resolved"; ( $volume, $directory, $filename )= splitpath( $path ) ; ( $volume, $directory, $filename )= splitpath( $path, 'nofile' ) ; $path= joinpath( $volume, $directory, $filename ) ; @directories= splitdirs( $directory ) ; $directory= joindirs( @directories ) ; =head1 DESCRIPTION File::PathConvert provides functions to convert between absolute and relative paths, and from logical paths to physical paths on a variety of filesystems, including the URL 'filesystem'. Paths are decomposed internally in to volume, directory, and, sometimes filename portions as appropriate to the operation and filesystem, then recombined. This preserves the volume and filename portions so that they may be returned, and prevents them from interfering with the path conversions. Here are some examples of path decomposition. A '****' in a column indicates the column is not used in C and C functions for that filesystem type. FS VOLUME Directory filename ======= ======================= =============== ============= URL http: /a/b/ c?query http://fubar.com /a/b/ c?query //p.d.q.com /a/b/c/ ?query VMS Server::Volume: [a.b] c Server"access spec":: [a.b] c Volume: [a.b] c Win32 A: \a\b\c **** \\server\Volume \a\b\c **** \\server\Volume \a/b/c **** Unix **** \a\b\c **** MacOS Volume:: a:b:c **** Many more examples abound in the test.pl included with this module. Only the VMS and URL filesystems indicate if the last name in a path is a directory or file. For other filesystems, all non-volume names are assumed to be directory names. For URLs, the last name in a path is assumed to be a filename unless it ends in '/', '/.', or '/..'. Other assumptions are made as well, especially MacOS and VMS. THESE MAY CHANGE BASED ON PROGRAMMER FEEDBACK! The conversion routines C, C, and C are the main focus of this package. C and C are provided to allow volume oriented filesystems (almost anything non-unixian, actually) to be accomodated. C and C provide directory path grammar parsing and encoding, which is especially useful for VMS. =over 4 =item setfstype This is called automatically on module load to set the filesystem type according to $^O. The user can call this later set the filesystem type manually. If the name is not recognized, unix defaults are used. Names matching /^URL$/i, /^VMS$/i, /^MacOS$/i, or /^(ms)?(win|dos)/32|nt)?$/i yield the appropriate (hopefully) filesystem settings. These strings may be generalized in the future. Examples: File::PathConvert::setfstype( 'url' ) ; File::PathConvert::setfstype( 'Win32' ) ; File::PathConvert::setfstype( 'HAL9000' ) ; # Results in Unix default =item abs2rel C converts an absolute path name to a relative path: converting /1/2/3/a/b/c relative to /1/2/3 returns a/b/c $relpath= abs2rel( $abspath ) ; $relpath= abs2rel( $abspath, $base ) ; If $abspath is already relative, it is returned unchanged. Otherwise the relative path from $base to $abspath is returned. If $base is undefined the current directory is used. The volume and filename portions of $base are ignored if present. If $abspath and $base are on different volumes, the volume from $abspath is used. No filesystem calls are made except for getting the current working directory if $base is undefined, so symbolic links are not checked for or resolved, and no check is done for existance. Examples # Unix 'a/b/c' == abs2rel( 'a/b/c', $anything ) 'a/b/c' == abs2rel( '/1/2/3/a/b/c', '/1/2/3' ) # DOS 'a\\b/c' == abs2rel( 'a\\b/c', $anything ) 'a\\b/c' == abs2rel( '/1\\2/3/a\\b/c', '/1/2/3' ) # URL 'http:a/b/c' == abs2rel( 'http:a/b/c', $anything ) 'http:a/b/c' == abs2rel( 'http:/1/2/3/a/b/c', 'ftp://t.org/1/2/3/?z' ) 'http:a/b/c?q' == abs2rel( 'http:/1/2/3/a/b/c/?q', 'ftp://t.org/1/2/3?z' ) 'http://s.com/a/b/c?q' == abs2rel( 'http://s.com/1/2/3/a/b/c?q', 'ftp://t.org/1/2/3/?z') =item rel2abs C makes converts a relative path name to an absolute path: converting a/b/c relative to /1/2/3 returns /1/2/3/a/b/c. $abspath= rel2abs( $relpath ) ; $abspath= rel2abs( $relpath, $base ) ; If $relpath is already absolute, it is returned unchanged. Otherwise $relpath is taken to be relative to $base and the resulting absolute path is returned. If $base is not supplied, the current working directory is used. The volume portion of $relpath is ignored. The filename portion of $base is also ignored. The volume from $base is returned if present. The filename portion of $abspath is returned if present. No filesystem calls are made except for getting the current working directory if $base is undefined, so symbolic links are not checked for or resolved, and no check is done for existance. C will not return a path of the form "./file". Examples # Unix '/a/b/c' == rel2abs( '/a/b/c', $anything ) '/1/2/3/a/b/c' == rel2abs( 'a/b/c', '/1/2/3' ) # DOS '\\a\\b/c' == rel2abs( '\\a\\b/c', $anything ) '/1\\2/3\\a\\b/c' == rel2abs( 'a\\b/c', '/1\\2/3' ) 'C:/1\\2/3\\a\\b/c' == rel2abs( 'D:a\\b/c', 'C:/1\\2/3' ) '\\\\s\\v/1\\2/3\\a\\b/c' == rel2abs( 'D:a\\b/c', '\\\\s\\v/1\\2/3' ) # URL 'http:/a/b/c?q' == rel2abs( 'http:/a/b/c?q', $anything ) 'ftp://t.org/1/2/3/a/b/c?q'== rel2abs( 'http:a/b/c?q', 'ftp://t.org/1/2/3?z' ) =item realpath C makes a canonicalized absolute pathname and resolves all symbolic links, extra ``/'' characters, and references to /./ and /../ in the path. C resolves both absolute and relative paths. It returns the resolved name on success, otherwise it returns undef and sets the valiable C<$File::PathConvert::resolved> to the pathname that caused the problem. All but the last component of the path must exist. This implementation is based on 4.4BSD realpath(3). It is not tested under other operating systems at this time. If '/sys' is a symbolic link to '/usr/src/sys': chdir('/usr'); '/usr/src/sys/kern' == realpath('../sys/kern'); '/usr/src/sys/kern' == realpath('/sys/kern'); =item splitpath To be written... =item joinpath To be written... Note that C usually yields path. URLs with directory components ending in '/.' or '/..' will be fixed up to end in '/./' and '/../'. =item splitdirs To be written... =item joindirs =back =head1 BUGS C is not fully multiplatform. =head1 LIMITATIONS =over 4 =item * In URLs, paths not ending in '/' are split such that the last name in the path is a filename. This is not intuitive: many people use such URLs for directories, and most servers send a redirect. This may cause programers using this package to code in bugs, it may be more pragmatic to always assume all names are directory names. (Note that the query portion is always part of the filename). =item * If the relative and base paths are on different volumes, no error is returned. A silent, hopefully reasonable assumption is made. =item * No detection of unix style paths is done when other filesystems are selected, like File::Basename does. =back =head1 AUTHORS Barrie Slaymaker Shigio Yamaguchi =cut wml-2.0.12.orig/wml_common/filepathconvert/Makefile.PL0000644000175000017500000000034510343637544020723 0ustar abeabeuse ExtUtils::MakeMaker; WriteMakefile( 'NAME' => 'File::PathConvert', 'VERSION_FROM' => 'PathConvert.pm', 'clean' => {FILES => 'LOG ./test'}, 'dist' => {TARFLAGS => 'cvf', COMPRESS => 'gzip', SUFFIX => 'gz'}, ); wml-2.0.12.orig/wml_common/Makefile.in0000644000175000017500000000721410343637545015624 0ustar abeabe## ## wml_common/Makefile ## Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. ## # ------------------------------------------------ # DEFINITIONS # ------------------------------------------------ @SET_MAKE@ SHELL = /bin/sh top_srcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s INSTALL_DATA = $(top_srcdir)/etc/shtool install -c -m 644 prefix = @prefix@ exec_prefix = $(prefix) bindir = $(prefix)/bin libsubdir = @libsubdir@ libdir = $(prefix)/lib$(libsubdir) mandir = $(prefix)/man PATH_PERL = @PATH_PERL@ MM_INSTALL_OPTS = PREFIX=$(libdir)/perl \ INSTALLPRIVLIB=@INSTALLPRIVLIB@ \ INSTALLARCHLIB=@INSTALLARCHLIB@ \ INST_MAN1DIR= \ INSTALLMAN1DIR= \ INST_MAN3DIR= \ INSTALLMAN3DIR= PERL_OPTS = @PERL_OPTS@ INITVARS = \ have_getoptlong=@have_getoptlong@ \ have_bitvector=@have_bitvector@ \ have_filepathconvert=@have_filepathconvert@ \ have_imagesize=@have_imagesize@ \ have_io=@have_io@ \ have_termreadkey=@have_termreadkey@ \ have_htmlclean=0 \ have_gd=0 SUBDIRS = \ bitvector \ filepathconvert \ gd \ getoptlong \ htmlclean \ imagesize \ io \ termreadkey # ------------------------------------------------ # TARGETS # ------------------------------------------------ all: @set -e; \ set dummy $(MAKEFLAGS); amf=$$2; \ $(INITVARS); \ for dir in $(SUBDIRS); do \ eval "update=\"`echo '$$'have_$$dir`\""; \ if test ".$$update" = .0; then \ echo "===> wml_common/$$dir ($@)"; \ if [ -f $$dir/Makefile ]; then \ :; \ else \ (cd $$dir && $(PATH_PERL) Makefile.PL $(MM_INSTALL_OPTS)); \ fi; \ (cd $$dir && $(MAKE) $(PERL_OPTS) pure_all) \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ echo "<=== wml_common/$$dir"; \ else :; \ fi; \ done && test -z "$$fail" install: @set -e; \ set dummy $(MAKEFLAGS); amf=$$2; \ $(INITVARS); \ for dir in $(SUBDIRS); do \ eval "update=\"`echo '$$'have_$$dir`\""; \ if test ".$$update" = .0; then \ echo "===> wml_common/$$dir ($@)"; \ (cd $$dir && $(MAKE) pure_perl_install $(MM_INSTALL_OPTS) 2>&1 | sed -e '/^## Diff/,/^## Runn/d') \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ echo "<=== wml_common/$$dir"; \ else :; \ fi; \ done && test -z "$$fail" clean: -@$(INITVARS); \ for dir in $(SUBDIRS); do \ eval "update=\"`echo '$$'have_$$dir`\""; \ if test ".$$update" = .0; then \ echo "===> wml_common/$$dir ($@)"; \ if [ -f $$dir/Makefile ]; then \ (cd $$dir && $(MAKE) clean); \ fi; \ echo "<=== wml_common/$$dir"; \ else :; \ fi; \ rm -f $$dir/Makefile.old 2>/dev/null; \ done # The distclean target in the Makefile generated by ExtUtils::MakeMaker # performs a check to see if files are all listed in the MANIFEST file. # An error is reported because of CVS files, it's why the realclean # target is used instead. distclean: clean -@$(INITVARS); \ for dir in $(SUBDIRS); do \ eval "update=\"`echo '$$'have_$$dir`\""; \ if test ".$$update" = .0; then \ echo "===> wml_common/$$dir ($@)"; \ (cd $$dir && $(PATH_PERL) Makefile.PL && $(MAKE) realclean); \ echo "<=== wml_common/$$dir"; \ else :; \ fi; \ done -rm -f Makefile realclean: distclean ##EOF## wml-2.0.12.orig/etc/0000755000175000017500000000000011613524770012153 5ustar abeabewml-2.0.12.orig/etc/summary0000755000175000017500000000070610343637563013605 0ustar abeabe: eval 'exec perl -S $0 ${1+"$@"}' if $running_under_some_shell; ## ## summary -- Display a summary of the latest changes ## $changelog = $ARGV[0]; open(CL, "<$changelog") || die; $changes = ''; $changes .= $_ while (); close(CL); $changes =~ s|^.+?\n(\s*Changes between)|$1|s; $changes =~ s|(Changes between.*?\n)\s*Changes between.*|$1|s; $changes =~ s/\n(\s*\*\)\s*.+?):\s*\n.+?(?=\n\s*\*\)\s*|$)/$1/sg; $changes .= "\n"; print $changes; wml-2.0.12.orig/etc/config.guess0000755000175000017500000011576310343637563014514 0ustar abeabe#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. timestamp='2002-09-03' # This file 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 2 of the License, 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # This shell variable is my proudest work .. or something. --bje set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ; (old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old) || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ; dummy=$tmpdir/dummy ; files="$dummy.c $dummy.o $dummy.rel $dummy" ; trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; rm -f $files ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; unset files' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; arc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; pmax:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mipseb-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; wgrisc:OpenBSD:*:*) echo mipsel-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) if test $UNAME_RELEASE = "V4.0"; then UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` fi # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. eval $set_cc_for_build cat <$dummy.s .data \$Lformat: .byte 37,100,45,37,120,10,0 # "%d-%x\n" .text .globl main .align 4 .ent main main: .frame \$30,16,\$26,0 ldgp \$29,0(\$27) .prologue 1 .long 0x47e03d80 # implver \$0 lda \$2,-1 .long 0x47e20c21 # amask \$2,\$1 lda \$16,\$Lformat mov \$0,\$17 not \$1,\$18 jsr \$26,printf ldgp \$29,0(\$26) mov 0,\$16 jsr \$26,exit .end main EOF $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null if test "$?" = 0 ; then case `$dummy` in 0-0) UNAME_MACHINE="alpha" ;; 1-0) UNAME_MACHINE="alphaev5" ;; 1-1) UNAME_MACHINE="alphaev56" ;; 1-101) UNAME_MACHINE="alphapca56" ;; 2-303) UNAME_MACHINE="alphaev6" ;; 2-307) UNAME_MACHINE="alphaev67" ;; 2-1307) UNAME_MACHINE="alphaev68" ;; 3-1307) UNAME_MACHINE="alphaev7" ;; esac fi rm -f $dummy.s $dummy && rmdir $tmpdir echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 rm -f $dummy.c $dummy && rmdir $tmpdir echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 rm -f $dummy.c $dummy && rmdir $tmpdir echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`$dummy` if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi rm -f $dummy.c $dummy && rmdir $tmpdir fi ;; esac echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD $dummy.c -o $dummy && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 rm -f $dummy.c $dummy && rmdir $tmpdir echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3D:*:*:*) echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) # Determine whether the default compiler uses glibc. eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #if __GLIBC__ >= 2 LIBC=gnu #else LIBC= #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` rm -f $dummy.c && rmdir $tmpdir echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:3*) echo i386-pc-interix3 exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i386-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` rm -f $dummy.c && rmdir $tmpdir test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` rm -f $dummy.c && rmdir $tmpdir test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M68*:*:R3V[567]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) echo `uname -p`-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0 rm -f $dummy.c $dummy && rmdir $tmpdir # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: wml-2.0.12.orig/etc/config.sub0000755000175000017500000007167410343637563014161 0ustar abeabe#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002 Free Software Foundation, Inc. timestamp='2002-09-05' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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 2 of the License, 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | clipper \ | d10v | d30v | dlx | dsp16xx \ | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k \ | m32r | m68000 | m68k | m88k | mcore \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64vr | mips64vrel \ | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mipsisa32 | mipsisa32el \ | mipsisa64 | mipsisa64el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xscale | xstormy16 | xtensa \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ | clipper-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* \ | m32r-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64vr-* | mips64vrel-* \ | mips64orion-* | mips64orionel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39 | mipstx39el \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ | xtensa-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; c90) basic_machine=c90-cray os=-unicos ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; or32 | or32-*) basic_machine=or32-unknown os=-coff ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3d) basic_machine=alpha-cray os=-unicos ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic4x | c4x*) basic_machine=tic4x-unknown os=-coff ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; windows32) basic_machine=i386-pc os=-windows32-msvcrt ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) basic_machine=sh-unknown ;; sh64) basic_machine=sh64-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto*) os=-nto-qnx ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: wml-2.0.12.orig/etc/shtool0000755000175000017500000014546110343637563013430 0ustar abeabe#!/bin/sh ## ## GNU shtool -- The GNU Portable Shell Tool ## Copyright (c) 1994-2000 Ralf S. Engelschall ## ## See http://www.gnu.org/software/shtool/ for more information. ## See ftp://ftp.gnu.org/gnu/shtool/ for latest version. ## ## Version: 1.5.1 (29-Jul-2000) ## Contents: 7/17 available modules ## ## ## 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 2 of the License, 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, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ## USA, or contact Ralf S. Engelschall . ## ## Notice: Given that you include this file verbatim into your own ## source tree, you are justified in saying that it remains separate ## from your package, and that this way you are simply just using GNU ## shtool. So, in this situation, there is no requirement that your ## package itself is licensed under the GNU General Public License in ## order to take advantage of GNU shtool. ## ## ## Usage: shtool [] [ [] []] ## ## Available commands: ## echo Print string with optional construct expansion ## install Install a program, script or datafile ## mkdir Make one or more directories ## fixperm Fix file permissions inside a source tree ## tarball Roll distribution tarballs ## guessos Simple operating system guesser ## version Maintain a version information file ## ## Not available commands (because module was not built-in): ## mdate Pretty-print modification time of a file or dir ## table Pretty-print a field-separated list as a table ## prop Display progress with a running propeller ## move Move files with simultaneous substitution ## mkln Make link with calculation of relative paths ## mkshadow Make a shadow tree through symbolic links ## arx Extended archive command ## slo Separate linker options by library class ## scpp Sharing C Pre-Processor ## path Deal with program paths ## if [ $# -eq 0 ]; then echo "$0:Error: invalid command line" 1>&2 echo "$0:Hint: run \`$0 -h' for usage" 1>&2 exit 1 fi if [ ".$1" = ".-h" -o ".$1" = ".--help" ]; then echo "This is GNU shtool, version 1.5.1 (29-Jul-2000)" echo "Copyright (c) 1994-2000 Ralf S. Engelschall " echo "Report bugs to " echo '' echo "Usage: shtool [] [ [] []]" echo '' echo 'Available global :' echo ' -v, --version display shtool version information' echo ' -h, --help display shtool usage help page (this one)' echo ' -d, --debug display shell trace information' echo ' -r, --recreate recreate this shtool script via shtoolize' echo '' echo 'Available [] []:' echo ' echo [-n] [-e] [ ...]' echo ' install [-v] [-t] [-c] [-C] [-s] [-m] [-o] [-g]' echo ' [-e] [ ...] ' echo ' mkdir [-t] [-f] [-p] [-m] [ ...]' echo ' fixperm [-v] [-t] [ ...]' echo ' tarball [-t] [-v] [-o ] [-c ] [-d ] [-u' echo ' ] [-g ] [-e ] [ ...]' echo ' guessos ' echo ' version [-l] [-n] [-p] [-s] [-e]' echo ' [-i] [-d] ' echo '' echo 'Not available (because module was not built-in):' echo ' mdate [-n] [-z] [-s] [-d] [-f] [-o] ' echo ' table [-F] [-w] [-c] [-s] ...' echo ' prop [-p]' echo ' move [-v] [-t] [-e] [-p] ' echo ' mkln [-t] [-f] [-s] [ ...] ' echo ' mkshadow [-v] [-t] [-a] ' echo ' arx [-t] [-C] [ ...]' echo ' slo [-p] -- -L -l [-L -l ...]' echo ' scpp [-v] [-p] [-f] [-o] [-t] [-M]' echo ' [-D] [-C] [ ...]' echo ' path [-s] [-r] [-d] [-b] [-m] [-p] [ ...]' echo '' exit 0 fi if [ ".$1" = ".-v" -o ".$1" = ."--version" ]; then echo "GNU shtool 1.5.1 (29-Jul-2000)" exit 0 fi if [ ".$1" = ".-r" -o ".$1" = ."--recreate" ]; then shtoolize -oetc/shtool echo install mkdir fixperm tarball guessos version exit 0 fi if [ ".$1" = ".-d" -o ".$1" = ."--debug" ]; then shift set -x fi name=`echo "$0" | sed -e 's;.*/\([^/]*\)$;\1;' -e 's;-sh$;;' -e 's;\.sh$;;'` case "$name" in echo|install|mkdir|fixperm|tarball|guessos|version ) # implicit tool command selection tool="$name" ;; * ) # explicit tool command selection tool="$1" shift ;; esac arg_spec="" opt_spec="" gen_tmpfile=no ## ## DISPATCH INTO SCRIPT PROLOG ## case $tool in echo ) str_tool="echo" str_usage="[-n] [-e] [ ...]" arg_spec="0+" opt_spec="n.e." opt_n=no opt_e=no ;; install ) str_tool="install" str_usage="[-v] [-t] [-c] [-C] [-s] [-m] [-o] [-g] [-e] [ ...] " arg_spec="2+" opt_spec="v.t.c.C.s.m:o:g:e:" opt_v=no opt_t=no opt_c=no opt_C=no opt_s=no opt_m="" opt_o="" opt_g="" opt_e="" ;; mkdir ) str_tool="mkdir" str_usage="[-t] [-f] [-p] [-m] [ ...]" arg_spec="1+" opt_spec="t.f.p.m:" opt_t=no opt_f=no opt_p=no opt_m="" ;; fixperm ) str_tool="fixperm" str_usage="[-v] [-t] [ ...]" arg_spec="1+" opt_spec="v.t." opt_v=no opt_t=no ;; tarball ) str_tool="tarball" str_usage="[-t] [-v] [-o ] [-c ] [-d ] [-u ] [-g ] [-e ] [ ...]" gen_tmpfile=yes arg_spec="1+" opt_spec="t.v.o:c:d:u:g:e:" opt_t=no opt_v=no opt_o="" opt_c="" opt_d="" opt_u="" opt_g="" opt_e="CVS,\\.cvsignore,\\.[oa]\$" ;; guessos ) str_tool="guessos" str_usage="" arg_spec="0=" opt_spec="" ;; version ) str_tool="version" str_usage="[-l] [-n] [-p] [-s] [-e] [-i] [-d] " arg_spec="1=" opt_spec="l:n:p:s:i:e.d:" opt_l="txt" opt_n="unknown" opt_p="" opt_s="" opt_e="no" opt_i="" opt_d="short" ;; -* ) echo "$0:Error: unknown option \`$tool'" 2>&1 echo "$0:Hint: run \`$0 -h' for usage" 2>&1 exit 1 ;; * ) echo "$0:Error: unknown command \`$tool'" 2>&1 echo "$0:Hint: run \`$0 -h' for usage" 2>&1 exit 1 ;; esac ## ## COMMON UTILITY CODE ## # determine name of tool if [ ".$tool" != . ]; then # used inside shtool script toolcmd="$0 $tool" toolcmdhelp="shtool $tool" msgprefix="shtool:$tool" else # used as standalone script toolcmd="$0" toolcmdhelp="sh $0" msgprefix="$str_tool" fi # parse argument specification string eval `echo $arg_spec |\ sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'` # parse option specification string eval `echo h.$opt_spec |\ sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'` # interate over argument line opt_PREV='' while [ $# -gt 0 ]; do # special option stops processing if [ ".$1" = ".--" ]; then shift break fi # determine option and argument opt_ARG_OK=no if [ ".$opt_PREV" != . ]; then # merge previous seen option with argument opt_OPT="$opt_PREV" opt_ARG="$1" opt_ARG_OK=yes opt_PREV='' else # split argument into option and argument case "$1" in -[a-zA-Z0-9]*) eval `echo "x$1" |\ sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \ -e 's/";\(.*\)$/"; opt_ARG="\1"/'` ;; -[a-zA-Z0-9]) opt_OPT=`echo "x$1" | cut -c3-` opt_ARG='' ;; *) break ;; esac fi # eat up option shift # determine whether option needs an argument eval "opt_MODE=\$opt_MODE_${opt_OPT}" if [ ".$opt_ARG" = . -a ".$opt_ARG_OK" != .yes ]; then if [ ".$opt_MODE" = ".:" -o ".$opt_MODE" = ".+" ]; then opt_PREV="$opt_OPT" continue fi fi # process option case $opt_MODE in '.' ) # boolean option eval "opt_${opt_OPT}=yes" ;; ':' ) # option with argument (multiple occurances override) eval "opt_${opt_OPT}=\"\$opt_ARG\"" ;; '+' ) # option with argument (multiple occurances append) eval "opt_${opt_OPT}=\"\$opt_${opt_OPT} \$opt_ARG\"" ;; * ) echo "$msgprefix:Error: unknown option: \`-$opt_OPT'" 1>&2 echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 exit 1 ;; esac done if [ ".$opt_PREV" != . ]; then echo "$msgprefix:Error: missing argument to option \`-$opt_PREV'" 1>&2 echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 exit 1 fi # process help option if [ ".$opt_h" = .yes ]; then echo "Usage: $toolcmdhelp $str_usage" exit 0 fi # complain about incorrect number of arguments case $arg_MODE in '=' ) if [ $# -ne $arg_NUMS ]; then echo "$msgprefix:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2 echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 exit 1 fi ;; '+' ) if [ $# -lt $arg_NUMS ]; then echo "$msgprefix:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2 echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 exit 1 fi ;; esac # establish a temporary file on request if [ ".$gen_tmpfile" = .yes ]; then if [ ".$TMPDIR" != . ]; then tmpdir="$TMPDIR" elif [ ".$TEMPDIR" != . ]; then tmpdir="$TEMPDIR" else tmpdir="/tmp" fi tmpfile="$tmpdir/.shtool.$$" rm -f $tmpfile >/dev/null 2>&1 touch $tmpfile fi ## ## DISPATCH INTO SCRIPT BODY ## case $tool in echo ) ## ## echo -- Print string with optional construct expansion ## Copyright (c) 1998-2000 Ralf S. Engelschall ## Originally written for WML as buildinfo ## text="$*" # check for broken escape sequence expansion seo='' bytes=`echo '\1' | wc -c | awk '{ printf("%s", $1); }'` if [ ".$bytes" != .3 ]; then bytes=`echo -E '\1' | wc -c | awk '{ printf("%s", $1); }'` if [ ".$bytes" = .3 ]; then seo='-E' fi fi # check for existing -n option (to suppress newline) minusn='' bytes=`echo -n 123 2>/dev/null | wc -c | awk '{ printf("%s", $1); }'` if [ ".$bytes" = .3 ]; then minusn='-n' fi # determine terminal bold sequence term_bold='' term_norm='' if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[Bb]'`" != . ]; then case $TERM in # for the most important terminal types we directly know the sequences xterm|xterm*|vt220|vt220*) term_bold=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' /dev/null` term_norm=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' /dev/null` ;; vt100|vt100*) term_bold=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' /dev/null` term_norm=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' /dev/null` ;; # for all others, we try to use a possibly existing `tput' or `tcout' utility * ) paths=`echo $PATH | sed -e 's/:/ /g'` for tool in tput tcout; do for dir in $paths; do if [ -r "$dir/$tool" ]; then for seq in bold md smso; do # 'smso' is last bold="`$dir/$tool $seq 2>/dev/null`" if [ ".$bold" != . ]; then term_bold="$bold" break fi done if [ ".$term_bold" != . ]; then for seq in sgr0 me rmso reset; do # 'reset' is last norm="`$dir/$tool $seq 2>/dev/null`" if [ ".$norm" != . ]; then term_norm="$norm" break fi done fi break fi done if [ ".$term_bold" != . -a ".$term_norm" != . ]; then break; fi done ;; esac if [ ".$term_bold" = . -o ".$term_norm" = . ]; then echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2 fi fi # determine user name username='' if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[uU]'`" != . ]; then username="$LOGNAME" if [ ".$username" = . ]; then username="$USER" if [ ".$username" = . ]; then username="`(whoami) 2>/dev/null |\ awk '{ printf("%s", $1); }'`" if [ ".$username" = . ]; then username="`(who am i) 2>/dev/null |\ awk '{ printf("%s", $1); }'`" if [ ".$username" = . ]; then username='unknown' fi fi fi fi fi # determine user id userid='' if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%U'`" != . ]; then userid="`(id -u) 2>/dev/null`" if [ ".$userid" = . ]; then str="`(id) 2>/dev/null`" if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then userid=`echo $str | sed -e 's/^uid[ ]*=[ ]*//' -e 's/(.*//'` fi if [ ".$userid" = . ]; then userid=`egrep "^${username}:" /etc/passwd 2>/dev/null | \ sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` if [ ".$userid" = . ]; then userid=`(ypcat passwd) 2>/dev/null | egrep "^${username}:" | \ sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` if [ ".$userid" = . ]; then userid='?' fi fi fi fi fi # determine host name hostname='' if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%h'`" != . ]; then hostname="`(uname -n) 2>/dev/null |\ awk '{ printf("%s", $1); }'`" if [ ".$hostname" = . ]; then hostname="`(hostname) 2>/dev/null |\ awk '{ printf("%s", $1); }'`" if [ ".$hostname" = . ]; then hostname='unknown' fi fi case $hostname in *.* ) domainname=".`echo $hostname | cut -d. -f2-`" hostname="`echo $hostname | cut -d. -f1`" ;; esac fi # determine domain name domainname='' if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%d'`" != . ]; then if [ ".$domainname" = . ]; then if [ -f /etc/resolv.conf ]; then domainname="`egrep '^[ ]*domain' /etc/resolv.conf | head -1 |\ sed -e 's/.*domain//' \ -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ -e 's/^\.//' -e 's/^/./' |\ awk '{ printf("%s", $1); }'`" if [ ".$domainname" = . ]; then domainname="`egrep '^[ ]*search' /etc/resolv.conf | head -1 |\ sed -e 's/.*search//' \ -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ -e 's/ .*//' -e 's/ .*//' \ -e 's/^\.//' -e 's/^/./' |\ awk '{ printf("%s", $1); }'`" fi fi fi fi # determine current time time_day='' time_month='' time_year='' time_monthname='' if [ ".$opt_e" = .yes -a ".`echo $text | egrep '%[DMYm]'`" != . ]; then time_day=`date '+%d'` time_month=`date '+%m'` time_year=`date '+%Y' 2>/dev/null` if [ ".$time_year" = . ]; then time_year=`date '+%y'` case $time_year in [5-9][0-9]) time_year="19$time_year" ;; [0-4][0-9]) time_year="20$time_year" ;; esac fi case $time_month in 1|01) time_monthname='Jan' ;; 2|02) time_monthname='Feb' ;; 3|03) time_monthname='Mar' ;; 4|04) time_monthname='Apr' ;; 5|05) time_monthname='May' ;; 6|06) time_monthname='Jun' ;; 7|07) time_monthname='Jul' ;; 8|08) time_monthname='Aug' ;; 9|09) time_monthname='Sep' ;; 10) time_monthname='Oct' ;; 11) time_monthname='Nov' ;; 12) time_monthname='Dec' ;; esac fi # expand special ``%x'' constructs if [ ".$opt_e" = .yes ]; then text=`echo $seo "$text" |\ sed -e "s/%B/${term_bold}/g" \ -e "s/%b/${term_norm}/g" \ -e "s/%u/${username}/g" \ -e "s/%U/${userid}/g" \ -e "s/%h/${hostname}/g" \ -e "s/%d/${domainname}/g" \ -e "s/%D/${time_day}/g" \ -e "s/%M/${time_month}/g" \ -e "s/%Y/${time_year}/g" \ -e "s/%m/${time_monthname}/g" 2>/dev/null` fi # create output if [ .$opt_n = .no ]; then echo $seo "$text" else # the harder part: echo -n is best, because # awk may complain about some \xx sequences. if [ ".$minusn" != . ]; then echo $seo $minusn "$text" else echo dummy | awk '{ printf("%s", TEXT); }' TEXT="$text" fi fi ;; install ) ## ## install -- Install a program, script or datafile ## Copyright (c) 1997-2000 Ralf S. Engelschall ## Originally written for shtool ## # determine source(s) and destination argc=$# srcs="" while [ $# -gt 1 ]; do srcs="$srcs $1" shift done dstpath="$1" # type check for destination dstisdir=0 if [ -d $dstpath ]; then dstpath=`echo "$dstpath" | sed -e 's:/$::'` dstisdir=1 fi # consistency check for destination if [ $argc -gt 2 -a $dstisdir = 0 ]; then echo "$msgprefix:Error: multiple sources require destination to be directory" 1>&2 exit 1 fi # iterate over all source(s) for src in $srcs; do dst=$dstpath # If destination is a directory, append the input filename if [ $dstisdir = 1 ]; then dstfile=`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'` dst="$dst/$dstfile" fi # Add a possible extension to src and dst if [ ".$opt_e" != . ]; then src="$src$opt_e" dst="$dst$opt_e" fi # Check for correct arguments if [ ".$src" = ".$dst" ]; then echo "$msgprefix:Warning: source and destination are the same - skipped" 1>&2 continue fi if [ -d "$src" ]; then echo "$msgprefix:Warning: source \`$src' is a directory - skipped" 1>&2 continue fi # Make a temp file name in the destination directory dsttmp=`echo $dst |\ sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;' \ -e "s;\$;/#INST@$$#;"` # Verbosity if [ ".$opt_v" = .yes ]; then echo "$src -> $dst" 1>&2 fi # Copy or move the file name to the temp name # (because we might be not allowed to change the source) if [ ".$opt_C" = .yes ]; then opt_c=yes fi if [ ".$opt_c" = .yes ]; then if [ ".$opt_t" = .yes ]; then echo "cp $src $dsttmp" 1>&2 fi cp $src $dsttmp || exit $? else if [ ".$opt_t" = .yes ]; then echo "mv $src $dsttmp" 1>&2 fi mv $src $dsttmp || exit $? fi # Adjust the target file # (we do chmod last to preserve setuid bits) if [ ".$opt_s" = .yes ]; then if [ ".$opt_t" = .yes ]; then echo "strip $dsttmp" 1>&2 fi strip $dsttmp || exit $? fi if [ ".$opt_o" != . ]; then if [ ".$opt_t" = .yes ]; then echo "chown $opt_o $dsttmp" 1>&2 fi chown $opt_o $dsttmp || exit $? fi if [ ".$opt_g" != . ]; then if [ ".$opt_t" = .yes ]; then echo "chgrp $opt_g $dsttmp" 1>&2 fi chgrp $opt_g $dsttmp || exit $? fi if [ ".$opt_m" != . ]; then if [ ".$opt_t" = .yes ]; then echo "chmod $opt_m $dsttmp" 1>&2 fi chmod $opt_m $dsttmp || exit $? fi # Determine whether to do a quick install # (has to be done _after_ the strip was already done) quick=no if [ ".$opt_C" = .yes ]; then if [ -r $dst ]; then if cmp -s $src $dst; then quick=yes fi fi fi # Finally install the file to the real destination if [ $quick = yes ]; then if [ ".$opt_t" = .yes ]; then echo "rm -f $dsttmp" 1>&2 fi rm -f $dsttmp else if [ ".$opt_t" = .yes ]; then echo "rm -f $dst && mv $dsttmp $dst" 1>&2 fi rm -f $dst && mv $dsttmp $dst fi done ;; mkdir ) ## ## mkdir -- Make one or more directories ## Copyright (c) 1996-2000 Ralf S. Engelschall ## Originally written for public domain by Noah Friedman ## Cleaned up and enhanced for shtool ## errstatus=0 for p in ${1+"$@"}; do # if the directory already exists... if [ -d "$p" ]; then if [ ".$opt_f" = .no ] && [ ".$opt_p" = .no ]; then echo "$msgprefix:Error: directory already exists: $p" 1>&2 errstatus=1 break else continue fi fi # if the directory has to be created... if [ ".$opt_p" = .no ]; then if [ ".$opt_t" = .yes ]; then echo "mkdir $p" 1>&2 fi mkdir $p || errstatus=$? else # the smart situation set fnord `echo ":$p" |\ sed -e 's/^:\//%/' \ -e 's/^://' \ -e 's/\// /g' \ -e 's/^%/\//'` shift pathcomp='' for d in ${1+"$@"}; do pathcomp="$pathcomp$d" case "$pathcomp" in -* ) pathcomp="./$pathcomp" ;; esac if [ ! -d "$pathcomp" ]; then if [ ".$opt_t" = .yes ]; then echo "mkdir $pathcomp" 1>&2 fi mkdir $pathcomp || errstatus=$? if [ ".$opt_m" != . ]; then if [ ".$opt_t" = .yes ]; then echo "chmod $opt_m $pathcomp" 1>&2 fi chmod $opt_m $pathcomp || errstatus=$? fi fi pathcomp="$pathcomp/" done fi done exit $errstatus ;; fixperm ) ## ## fixperm -- Fix file permissions inside a source tree ## Copyright (c) 1996-2000 Ralf S. Engelschall ## Originally written for ePerl ## paths="$*" # check whether the test command supports the -x option if [ -x /bin/sh ] 2>/dev/null; then minusx="-x" else minusx="-r" fi # iterate over paths for p in $paths; do for file in `find $p -depth -print`; do if [ -f $file ]; then if [ $minusx $file ]; then if [ ".$opt_v" = .yes ]; then echo "-rwxrwxr-x $file" 2>&1 fi if [ ".$opt_t" = .yes ]; then echo "chmod 775 $file" 2>&1 fi chmod 775 $file else if [ ".$opt_v" = .yes ]; then echo "-rw-rw-r-- $file" 2>&1 fi if [ ".$opt_t" = .yes ]; then echo "chmod 664 $file" 2>&1 fi chmod 664 $file fi continue fi if [ -d $file ]; then if [ ".$opt_v" = .yes ]; then echo "drwxrwxr-x $file" 2>&1 fi if [ ".$opt_t" = .yes ]; then echo "chmod 775 $file" 2>&1 fi chmod 775 $file continue fi if [ ".$opt_v" = .yes ]; then echo "?????????? $file" 2>&1 fi done done ;; tarball ) ## ## tarball -- Roll distribution tarballs ## Copyright (c) 1999-2000 Ralf S. Engelschall ## Originally written for shtool ## srcs="$*" # check whether the test command supports the -x option if [ -x /bin/sh ] 2>/dev/null; then minusx="-x" else minusx="-r" fi # find the tools paths="`echo $PATH |\ sed -e 's%/*:%:%g' -e 's%/*$%%' \ -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \ -e 's/:/ /g'`" for spec in find:gfind,find tar:gtar,tar tardy:tardy,tarcust; do prg=`echo $spec | sed -e 's/:.*$//'` tools=`echo $spec | sed -e 's/^.*://'` eval "prg_${prg}=''" # iterate over tools for tool in `echo $tools | sed -e 's/,/ /g'`; do # iterate over paths for path in $paths; do if [ $minusx "$path/$tool" ] && [ ! -d "$path/$tool" ]; then eval "prg_${prg}=\"$path/$tool\"" break fi done eval "val=\$prg_${prg}" if [ ".$val" != . ]; then break fi done done # expand source paths exclude='' for pat in `echo $opt_e | sed 's/,/ /g'`; do exclude="$exclude | grep -v '$pat'" done if [ ".$opt_t" = .yes ]; then echo "cp /dev/null $tmpfile.lst" 1>&2 fi cp /dev/null $tmpfile.lst for src in $srcs; do if [ -d $src ]; then if [ ".$opt_t" = .yes ]; then echo "(cd $src && $prg_find . -type f -depth -print) | sed -e 's:^\\.\$::' -e 's:^\\./::' | cat $exclude >>$tmpfile.lst" 1>&2 fi (cd $src && find . -type f -depth -print) |\ sed -e 's:^\.$::' -e 's:^\./::' | eval cat $exclude >>$tmpfile.lst else if [ ".$opt_t" = .yes ]; then echo "echo $src >>$tmpfile.lst" 1>&2 fi echo $src >>$tmpfile.lst fi done sort <$tmpfile.lst >$tmpfile.lst.n mv $tmpfile.lst.n $tmpfile.lst if [ ".$opt_v" = .yes ]; then cat $tmpfile.lst | sed -e 's/^/ /' 1>&2 fi # determine tarball file and directory name if [ ".$opt_o" != . ]; then tarfile="$opt_o" if [ ".$opt_d" != . ]; then tarname="$opt_d" else tarname=`echo $tarfile | sed -e 's/\.tar.*$//' -e 's;.*/\([^/]*\)$;\1;'` fi else if [ ".$opt_d" != . ]; then tarname="$opt_d" elif [ -d "$from" ]; then tarname=`echo $from | sed -e 's;.*/\([^/]*\)$;\1;'` else tarname="out" fi tarfile="$tarname.tar" fi # roll the tarball compress='' if [ ".$opt_c" != . ]; then compress="| $opt_c" fi if [ ".$prg_tardy" != . ]; then # the elegant hackers way tardy_opt="--prefix=$tarname" tardy_opt="$tardy_opt --user_number=0 --group_number=0" # security! if [ ".$opt_u" != . ]; then tardy_opt="$tardy_opt --user_name=$opt_u" fi if [ ".$opt_g" != . ]; then tardy_opt="$tardy_opt --group_name=$opt_g" fi if [ ".$opt_t" = .yes ]; then echo "cat $tmpfile.lst | xargs $prg_tar cf - | $prg_tardy $tardy_opt | cat $compress >$tmpfile.out" 1>&2 fi cat $tmpfile.lst |\ xargs $prg_tar cf - |\ $prg_tardy $tardy_opt |\ eval cat $compress >$tmpfile.out if [ ".$opt_t" = .yes ]; then echo "cp $tmpfile.out $tarfile" 1>&2 fi cp $tmpfile.out $tarfile else # the portable standard way if [ ".$opt_t" = .yes ]; then echo "mkdir $tmpdir/$tarname" 1>&2 fi mkdir $tmpdir/$tarname || exit 1 if [ ".$opt_t" = .yes ]; then echo "cat $tmpfile.lst | xargs $prg_tar cf - | (cd $tmpdir/$tarname && $prg_tar xf -)" 1>&2 fi cat $tmpfile.lst |\ xargs $prg_tar cf - |\ (cd $tmpdir/$tarname && $prg_tar xf -) if [ ".$opt_u" != . ]; then if [ ".$opt_t" = .yes ]; then echo "chown -R $opt_u $tmpdir/$tarname >/dev/null 2>&1" 2>&1 fi chown -R $opt_u $tmpdir/$tarname >/dev/null 2>&1 ||\ echo "$msgprefix:Warning: cannot set user name \`$opt_u' (would require root priviledges)" fi if [ ".$opt_g" != . ]; then if [ ".$opt_t" = .yes ]; then echo "chgrp -R $opt_g $tmpdir/$tarname >/dev/null 2>&1" 2>&1 fi chgrp -R $opt_g $tmpdir/$tarname >/dev/null 2>&1 ||\ echo "$msgprefix:Warning: cannot set group name \`$opt_g' (would require root priviledges)" fi if [ ".$opt_t" = .yes ]; then echo "(cd $tmpdir && $prg_find $tarname -type f -depth -print | sort | xargs $prg_tar cf -) | cat $compress >$tmpfile.out" 1>&2 fi (cd $tmpdir && $prg_find $tarname -type f -depth -print | sort | xargs $prg_tar cf -) |\ eval cat $compress >$tmpfile.out if [ ".$opt_t" = .yes ]; then echo "cp $tmpfile.out $tarfile" 1>&2 fi cp $tmpfile.out $tarfile if [ ".$opt_t" = .yes ]; then echo "rm -rf $tmpdir/$tarname" 1>&2 fi rm -rf $tmpdir/$tarname fi # cleanup if [ ".$opt_t" = .yes ]; then echo "rm -f $tmpfile.lst $tmpfile.out" 1>&2 fi rm -f $tmpfile.lst $tmpfile.out ;; guessos ) ## ## guessos -- Simple operating system guesser ## Copyright (c) 1996-1999 The Apache Group, http://www.apache.org/ ## The Apache license applies (see http://www.apache.org/docs/LICENSE) ## Originally written for Apache ## MACHINE=`(uname -m) 2>/dev/null` || MACHINE=`(uname -p) 2>/dev/null` || MACHINE="unknown" RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown" SYSTEM=`(uname -s) 2>/dev/null` || SYSTEM="unknown" VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown" XREL=`(uname -X) 2>/dev/null | grep "^Release" | awk '{print $3}'` if [ "x$XREL" != "x" ]; then if [ -f /etc/kconfig ]; then case "$XREL" in 4.0|4.1) echo "${MACHINE}-whatever-isc4"; exit 0 ;; esac else case "$XREL" in 3.2v4.2) echo "whatever-whatever-sco3"; exit 0 ;; 3.2v5.0*) echo "whatever-whatever-sco5"; exit 0 ;; 4.2MP) if [ "x$VERSION" = "x2.1.1" ]; then echo "${MACHINE}-whatever-unixware211"; exit 0 elif [ "x$VERSION" = "x2.1.2" ]; then echo "${MACHINE}-whatever-unixware212"; exit 0 else echo "${MACHINE}-whatever-unixware2"; exit 0 fi ;; 4.2) echo "whatever-whatever-unixware1"; exit 0 ;; 5) case "$VERSION" in 7*) echo "${MACHINE}-whatever-unixware7"; exit 0 ;; esac ;; esac fi fi case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in MiNT:*) echo "m68k-atari-mint"; exit 0 ;; A/UX:*) echo "m68k-apple-aux3"; exit 0 ;; AIX:*) MACH=`echo $MACHINE | sed -e 's;[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F];;'` echo "${MACH}-ibm-aix${VERSION}.${RELEASE}"; exit 0 ;; dgux:*) echo "${MACHINE}-dg-dgux"; exit 0 ;; HI-UX:*) echo "${MACHINE}-hi-hiux"; exit 0 ;; HP-UX:*) HPUXVER=`echo ${RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo "${MACHINE}-hp-hpux${HPUXVER}"; exit 0 ;; IRIX:*) if [ -f /usr/lib32/mips4/libm.so ]; then echo "${MACHINE}/32-sgi-irix${RELEASE}"; exit 0 else echo "${MACHINE}-sgi-irix${RELEASE}"; exit 0 fi ;; IRIX64:*) echo "${MACHINE}/64-sgi-irix${RELEASE}"; exit 0 ;; Linux:*) V='whatever' case "$MACHINE" in i?86) V='pc' ;; esac R='' case "$RELEASE" in [1-9].*) R=`echo $RELEASE | cut -c1` ;; esac echo "${MACHINE}-${V}-linux-gnu${R}"; exit 0 ;; LynxOS:*) echo "${MACHINE}-lynx-lynxos"; exit 0 ;; BSD/386|BSD/OS:3.*) echo "${MACHINE}-whatever-bsdi3"; exit 0 ;; BSD/386:*:*:*486*|BSD/OS:*:*:*:*486*) echo "i486-whatever-bsdi"; exit 0 ;; BSD/386:*|BSD/OS:*) echo "${MACHINE}-whatever-bsdi"; exit 0 ;; FreeBSD:*) VERS=`echo ${RELEASE} | sed -e 's/[-(].*//'` MACH=`/sbin/sysctl -n hw.model` ARCH='whatever' case ${MACH} in *386* ) MACH="i386" ;; *486* ) MACH="i486" ;; Pentium\ II*) MACH="i686" ;; Pentium* ) MACH="i586" ;; Alpha* ) MACH="alpha" ;; * ) MACH="$MACHINE" ;; esac case ${MACH} in i[0-9]86 ) ARCH="pc" ;; esac echo "${MACH}-${ARCH}-freebsd${VERS}"; exit 0 ;; NetBSD:*:*:*486*) echo "i486-whatever-netbsd${RELEASE}"; exit 0 ;; NetBSD:*) echo "${MACHINE}-whatever-netbsd${RELEASE}"; exit 0 ;; OpenBSD:*) echo "${MACHINE}-whatever-openbsd"; exit 0 ;; OSF1:*:*:*alpha*) VERS=`echo $RELEASE | sed -e 's;^V;;'` echo "${MACHINE}-dec-osf${VERS}"; exit 0 ;; QNX:*) if [ "$VERSION" -gt 422 ]; then echo "${MACHINE}-qssl-qnx32" else echo "${MACHINE}-qssl-qnx" fi exit 0 ;; Paragon*:*:*:*) echo "i860-intel-osf1"; exit 0 ;; SunOS:5.*) VERSION=`echo $RELEASE | sed -e 's;^5\.;;'` echo "${MACHINE}-sun-solaris2.${VERSION}"; exit 0 ;; SunOS:*) echo "${MACHINE}-sun-sunos4"; exit 0 ;; UNIX_System_V:4.*:*) echo "${MACHINE}-whatever-sysv4"; exit 0 ;; unix:3.0.9*:*:88k) echo "${MACHINE}-encore-sysv4"; exit 0 ;; *:4*:R4*:m88k) echo "${MACHINE}-whatever-sysv4"; exit 0 ;; UnixWare:5:99*:*) # Gemini, beta release of next rev of unixware echo "${MACHINE}-whatever-unixware212"; exit 0 ;; DYNIX/ptx:4*:*) echo "${MACHINE}-whatever-sysv4"; exit 0 ;; *:4.0:3.0:[345][0-9]?? | *:4.0:3.0:3[34]??[/,]* | library:*) echo "x86-ncr-sysv4"; exit 0 ;; ULTRIX:*) echo "${MACHINE}-unknown-ultrix"; exit 0 ;; SINIX-?:* | ReliantUNIX-?:*) echo "${MACHINE}-siemens-sysv4"; exit 0 ;; POSIX*BS2000) echo "${MACHINE}-siemens-sysv4"; exit 0 ;; machten:*) echo "${MACHINE}-tenon-${SYSTEM}"; exit 0; ;; ConvexOS:*:11.*:*) echo "${MACHINE}-v11-${SYSTEM}"; exit 0; ;; UNIX_SV:*:*:maxion) echo "${MACHINE}-ccur-sysv4"; exit 0; ;; PowerMAX_OS:*:*:Night_Hawk) MACHINE=`uname -p` echo "${MACHINE}-concurrent-powermax"; exit 0; ;; UNIX_SV:*) if [ -d /usr/nec ];then echo "mips-nec-sysv4"; exit 0; fi ;; NonStop-UX:4.[02]*:[BC]*:*) echo "${MACHINE}-tandem-sysv4"; exit 0; ;; Rhapsody:*:*:*) case "${MACHINE}" in "Power Macintosh") MACHINE=powerpc ;; esac echo "${MACHINE}-apple-rhapsody${RELEASE}"; exit 0 ;; "Mac OS":*:*:*) MACHINE=`uname -p` echo "${MACHINE}-apple-macos${RELEASE}"; exit 0 ;; "RISC iX":*) echo "arm-whatever-riscix"; exit 0; ;; *:4.0:2:*) echo "whatever-unisys-sysv4"; exit 0; ;; *:*:dcosx:NILE*) echo "pyramid-pyramid-svr4"; exit 0; ;; *:*:*:"DRS 6000") echo "drs6000-whatever-whatever"; exit 0; ;; AmigaOS:*:*:* ) echo "${MACHINE}-whatever-${SYSTEM}${RELEASE}"; exit 0 ;; esac # Now NeXT ISNEXT=`(hostinfo) 2>/dev/null` case "$ISNEXT" in *NeXT*) # Swiped from a friendly uname clone for NEXT/OPEN Step. NEXTOSVER="`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`" if [ "$NEXTOSVER" -gt 3.3 ]; then NEXTOS="openstep" else NEXTOS="nextstep" fi NEXTREL="`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`" NEXTARCH=`arch` echo "${NEXTARCH}-next-${NEXTOS}${NEXTREL}" ; exit 0 ;; esac # Fallback echo "${MACHINE}-unknown-${SYSTEM}/${RELEASE}/${VERSION}" ;; version ) ## ## version -- Maintain a version information file ## Copyright (c) 1994-2000 Ralf S. Engelschall ## Originally written for ePerl, rewritten from scratch for shtool ## file="$1" # determine prefix and name name="$opt_n" prefix="$opt_p" # determine current version triple="$opt_s" if [ ".$triple" != . ]; then # use given triple if [ ".`echo $triple | grep '[0-9]*.[0-9]*[sabp.][0-9]*'`" = . ]; then echo "$msgprefix:Error: invalid argument to option \`-s': \`$opt_s'" 1>&2 exit 1 fi eval `echo $triple |\ sed -e 's%\([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\).*%\ ver="\1";rev="\2";typ="\3";lev="\4"%'` tim=calc elif [ -r $file ]; then # determine triple from given file eval `grep 'Version [0-9]*.[0-9]*[sabp.][0-9]* ([0-9]*-[a-zA-Z]*-[0-9]*)' $file |\ head -1 | sed -e 's%.*Version \([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\) (\([0-9]*-[a-zA-Z]*-[0-9]*\)).*%\ ver="\1";rev="\2";typ="\3";lev="\4";tim="\5"%'` else # intialise to first version ver=0 rev=1 typ=. lev=0 tim=calc fi # determine new version in batch if [ ".$opt_i" != . ]; then case $opt_i in v ) ver=`expr $ver + 1` rev=0 lev=0 ;; r ) rev=`expr $rev + 1` lev=0 ;; l ) lev=`expr $lev + 1` ;; * ) echo "$msgprefix:Error: invalid argument to option \`-i': \`$opt_i'" 1>&2 exit 1 ;; esac tim=calc fi # determine new version interactively if [ ".$opt_e" = .yes ]; then echo "old version: ${ver}.${rev}${typ}${lev}" while [ 1 ]; do echo dummy | awk '{ printf("new version: "); }' read triple case $triple in [0-9]*.[0-9]*[sabp.][0-9]* ) ;; * ) echo "$msgprefix:Error: invalid version string entered: \`$triple'" 1>&2 continue ;; esac break done eval `echo $triple |\ sed -e 's%^\([0-9]*\)\.\([0-9]*\)\([sabp.]\)\([0-9]*\)$%\ ver="\1";rev="\2";typ="\3";lev="\4"%'` tim=calc fi # determine hexadecimal and libtool value of version case $typ in a ) typnum=0; levnum=$lev ;; b ) typnum=1; levnum=$lev ;; p | . ) typnum=2; levnum=$lev ;; s ) typnum=15; levnum=255 ;; # snapshots are special esac hex=`echo "$ver:$rev:$typnum:$levnum" |\ awk -F: '{ printf("0x%x%02x%1x%02x", $1, $2, $3, $4); }' |\ tr 'abcdef' 'ABCDEF'` ltv=`echo "$ver:$rev:$typnum:$levnum" |\ awk -F: '{ printf("%d:%d", $1*10 + $2, $3*10 + $4); }'` # determine date if [ ".$tim" = .calc ]; then day=`date '+%d'` month=`date '+%m'` year=`date '+%Y' 2>/dev/null` if [ ".$time_year" = . ]; then year=`date '+%y'` case $year in [5-9][0-9]) year="19$year" ;; [0-4][0-9]) year="20$year" ;; esac fi case $month in 1|01) month='Jan' ;; 2|02) month='Feb' ;; 3|03) month='Mar' ;; 4|04) month='Apr' ;; 5|05) month='May' ;; 6|06) month='Jun' ;; 7|07) month='Jul' ;; 8|08) month='Aug' ;; 9|09) month='Sep' ;; 10) month='Oct' ;; 11) month='Nov' ;; 12) month='Dec' ;; esac tim="${day}-${month}-${year}" fi # perform result actions mode=show if [ ".$opt_i" != . ]; then mode=edit elif [ ".$opt_e" = .yes ]; then mode=edit elif [ ".$opt_s" != . ]; then mode=edit fi if [ ".$mode" = .show ]; then # just display the current version case $opt_d in short ) echo "${ver}.${rev}${typ}${lev}" ;; long ) echo "${ver}.${rev}${typ}${lev} ($tim)" ;; libtool ) echo "${ltv}" ;; hex ) echo "${hex}" ;; * ) echo "$msgprefix:Error: invalid argument to option \`-d': \`$opt_d'" 1>&2 exit 1 ;; esac else # update the version file # pre-generate various strings triple="${ver}.${rev}${typ}${lev}" vHex="$hex" vShort="${triple}" vLong="${triple} (${tim})" vTeX="This is ${name}, Version ${triple} (${tim})" vGNU="${name} ${triple} (${tim})" vWeb="${name}/${triple}" vSCCS="@(#)${name} ${triple} (${tim})" vRCS="\$Id: ${name} ${triple} (${tim}) \$" # determine string out of filename # (do NOT try to optimize this in any way because of portability) filestr=`echo $file |\ tr 'abcdefghijklmnopqrstuvwxyz./%+' \ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ____' | sed -e 's/-/_/g'` # generate uppercase prefix prefixupper=`echo $prefix |\ tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` # create the version file according the the selected language echo "new version: ${vLong}" cp /dev/null $file case $opt_l in txt ) echo >>$file "" echo >>$file " ${file} -- Version Information for ${name} (syntax: Text)" echo >>$file " [automatically generated and maintained by GNU shtool]" echo >>$file "" echo >>$file " $vTeX" echo >>$file "" ;; c ) echo >>$file "/*" echo >>$file "** ${file} -- Version Information for ${name} (syntax: C/C++)" echo >>$file "** [automatically generated and maintained by GNU shtool]" echo >>$file "*/" echo >>$file "" echo >>$file "#ifdef _${filestr}_AS_HEADER_" echo >>$file "" echo >>$file "#ifndef _${filestr}_" echo >>$file "#define _${filestr}_" echo >>$file "" echo >>$file "#define ${prefixupper}VERSION ${vHex}" echo >>$file "" echo >>$file "typedef struct {" echo >>$file " const int v_hex;" echo >>$file " const char *v_short;" echo >>$file " const char *v_long;" echo >>$file " const char *v_tex;" echo >>$file " const char *v_gnu;" echo >>$file " const char *v_web;" echo >>$file " const char *v_sccs;" echo >>$file " const char *v_rcs;" echo >>$file "} ${prefix}version_t;" echo >>$file "" echo >>$file "extern ${prefix}version_t ${prefix}version;" echo >>$file "" echo >>$file "#endif /* _${filestr}_ */" echo >>$file "" echo >>$file "#else /* _${filestr}_AS_HEADER_ */" echo >>$file "" echo >>$file "#define _${filestr}_AS_HEADER_" echo >>$file "#include \"${file}\"" echo >>$file "#undef _${filestr}_AS_HEADER_" echo >>$file "" echo >>$file "${prefix}version_t ${prefix}version = {" echo >>$file " ${vHex}," echo >>$file " \"${vShort}\"," echo >>$file " \"${vLong}\"," echo >>$file " \"${vTeX}\"," echo >>$file " \"${vGNU}\"," echo >>$file " \"${vWeb}\"," echo >>$file " \"${vSCCS}\"," echo >>$file " \"${vRCS}\"" echo >>$file "};" echo >>$file "" echo >>$file "#endif /* _${filestr}_AS_HEADER_ */" echo >>$file "" ;; perl ) echo >>$file "##" echo >>$file "## ${file} -- Version Information for ${name} (syntax: Perl)" echo >>$file "## [automatically generated and maintained by GNU shtool]" echo >>$file "##" echo >>$file "" echo >>$file "my \$${prefix}version = {" echo >>$file " 'v_hex' => ${vHex}," echo >>$file " 'v_short' => \"${vShort}\"," echo >>$file " 'v_long' => \"${vLong}\"," echo >>$file " 'v_tex' => \"${vTeX}\"," echo >>$file " 'v_gnu' => \"${vGNU}\"," echo >>$file " 'v_web' => \"${vWeb}\"," echo >>$file " 'v_sccs' => \"${vSCCS}\"," echo >>$file " 'v_rcs' => \"\\${vRCS}/\"" echo >>$file "};" echo >>$file "" echo >>$file "1;" echo >>$file "" ;; python ) echo >>$file "##" echo >>$file "## ${file} -- Version Information for ${name} (syntax: Python)" echo >>$file "## [automatically generated and maintained by GNU shtool]" echo >>$file "##" echo >>$file "" echo >>$file "class ${prefix}version:" echo >>$file " v_hex = ${vHex}" echo >>$file " v_short = \"${vShort}\"" echo >>$file " v_long = \"${vLong}\"" echo >>$file " v_tex = \"${vTeX}\"" echo >>$file " v_gnu = \"${vGNU}\"" echo >>$file " v_web = \"${vWeb}\"" echo >>$file " v_sccs = \"${vSCCS}\"" echo >>$file " v_rcs = \"${vRCS}\"" echo >>$file "" ;; * ) echo "$msgprefix:Error: invalid argument to option \`-l': \`$opt_l'" 1>&2 exit 1 ;; esac fi ;; esac exit 0 ##EOF## wml-2.0.12.orig/wml_backend/0000755000175000017500000000000011613525002013633 5ustar abeabewml-2.0.12.orig/wml_backend/p1_ipp/0000755000175000017500000000000011613524774015042 5ustar abeabewml-2.0.12.orig/wml_backend/p1_ipp/ipp.src0000644000175000017500000007444311001451276016342 0ustar abeabe#!@PATH_PERL@ eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}' if $running_under_some_shell; ## ## IPP -- Include Pre-Processor ## Copyright (c) 1997,1998,1999 Ralf S. Engelschall, All Rights Reserved. ## Copyright (c) 2000 Denis Barbier, All Rights Reserved. ## require 5.003; BEGIN { $^W = 0; } # get rid of nasty warnings use lib "@INSTALLPRIVLIB@"; use lib "@INSTALLARCHLIB@"; use Getopt::Long 2.13; use IO::Handle 1.15; use IO::File 1.06; use File::Temp; # # help functions # sub verbose { my ($level, $str) = @_; if ($opt_v) { print STDERR ' ' x ($level*2) . "$str\n"; } } sub error { my ($str) = @_; print STDERR "** IPP:Error: $str\n"; exit(1); } sub warning { my ($str) = @_; print STDERR "** IPP:Warning: $str\n"; } # # process command line # sub usage { print STDERR "Usage: ipp [options] file ...\n"; print STDERR "\n"; print STDERR "Options:\n"; print STDERR " -D, --define== define a variable\n"; print STDERR " -S, --sysincludedir= add system include directory\n"; print STDERR " -I, --includedir= add user include directory\n"; print STDERR " -s, --sysincludefile= pre-include system include file\n"; print STDERR " -i, --includefile= pre-include user include file\n"; print STDERR " -M, --depend= dump dependencies as gcc does\n"; print STDERR " -P, --prolog= specify one or more prolog filters\n"; print STDERR " -m, --mapfile= use include file mapping table\n"; print STDERR " -N, --nosynclines do not output sync lines\n"; print STDERR " -n, --inputfile= set input file name printed by sync lines\n"; print STDERR " -o, --outputfile= set output file instead of stdout\n"; print STDERR " -v, --verbose verbosity\n"; exit(1); } $opt_v = 0; $opt_M = '-'; @opt_I = (); @opt_D = (); @opt_S = (); @opt_i = (); @opt_s = (); @opt_P = (); @opt_m = (); $opt_N = 0; $opt_n = ''; $opt_o = '-'; $Getopt::Long::bundling = 1; $Getopt::Long::getopt_compat = 0; if (not Getopt::Long::GetOptions( "v|verbose", "S|sysincludedir=s@", "D|define=s@", "I|includedir=s@", "s|sysincludefile=s@", "i|includefile=s@", "M|depend:s" , "P|prolog=s@", "m|mapfile=s@", "N|nosynclines", "n|inputfile=s", "o|outputfile=s" )) { &usage; } # Adjust the -M flags if ($opt_M !~ m%^(-|[MD]*)$% && $#ARGV == -1) { push(@ARGV,$opt_M); $opt_M = ''; } &usage if ($#ARGV == -1); push(@opt_I, '.'); # # read mapfiles # sub read_mapfile { my ($MAP, $mapfile) = @_; local (*FP); open(FP, "<$mapfile") || error("cannot load $mapfile: $!"); while () { next if (m|^\s*$|); next if (m|^\s*#.*$|); if (($given, $replace, $actiontype, $actiontext) = m|^(\S+)\s+(\S+)\s+\[\s*([SWE])\s*:\s*(.+?)\s*\].*$|) { if ($given =~ m|,|) { @given = split(/,/, $given); } else { @given = ($given); } foreach $given (@given) { $MAP->{$given} = {}; $MAP->{$given}->{REPLACE} = $replace; $MAP->{$given}->{ACTIONTYPE} = $actiontype; $MAP->{$given}->{ACTIONTEXT} = $actiontext; } } } close(FP) || error("cannot close $mapfile"); } $MAP = {}; foreach $file (@opt_m) { &read_mapfile($MAP, $file); } # # iterate over the input files # %INCLUDES = (); $outbuf = ''; sub setargs { my ($arg, $str) = @_; return if ($str eq ''); while ($str) { $str =~ s|^\s+||; last if ($str eq ''); if ($str =~ s|^([a-zA-Z][a-zA-Z0-9_]*)="([^"]*)"||) { $arg->{$1} = $2; } elsif ($str =~ s|^([a-zA-Z][a-zA-Z0-9_]*)=(\S+)||) { $arg->{$1} = $2; } elsif ($str =~ s|^([a-zA-Z][a-zA-Z0-9_]*)=\s+||) { $arg->{$1} = ''; } elsif ($str =~ s|^([a-zA-Z][a-zA-Z0-9_]*)||) { $arg->{$1} = 1; } else { $str = substr($str, 1); # make sure the loop terminates } } } sub mapfile { my ($file) = @_; my ($replace, $type, $text); if ($replace = $MAP->{$file}->{REPLACE}) { $type = $MAP->{$file}->{ACTIONTYPE}; $text = $MAP->{$file}->{ACTIONTEXT}; if ($type eq 'S') { $file = $replace; } elsif ($type eq 'W') { &warning("$file: $text"); $file = $replace; } else { &error("$file: $text"); } } return $file; } sub CanonPath { my ($path) = @_; $pathL = ''; while ($path ne $pathL) { $pathL = $path; $path =~ s|//|/|g; $path =~ s|/\./|/|g; $path =~ s|/\.$|/|g; $path =~ s|^\./(.)|$1|g; $path =~ s|([^/.][^/.]*)/\.\.||; } return $path; } sub PatternProcess { my ($mode, $delimiter, $dirname, $pattern, $ext, $level, $noid, %arg) = @_; my ($dir, $found, $out, $test, @ls); $out = ''; if ($ext eq '') { $test = '-f "$dir/$dirname/$_"'; } else { $test = '-d "$dir/$dirname"'; } if ($delimiter eq '<') { $found = 0; foreach $dir (reverse @opt_S) { opendir(DIR, "$dir/$dirname") || next; @ls = grep { /^$pattern$/ && eval $test } readdir(DIR); closedir DIR; foreach (@ls) { next if (m|/\.+$| or m|^\.+$|); $out .= &ProcessFile($mode, $delimiter, "$dirname/$_$ext", "", $level, $noid, %arg); $found = 1; } last if $found; } } if ($delimiter eq '<' or $delimiter eq '"') { $found = 0; foreach $dir (reverse @opt_I) { opendir(DIR, "$dir/$dirname") || next; @ls = grep { /^$pattern$/ && eval $test } readdir(DIR); closedir DIR; foreach (@ls) { next if (m|/\.+$| or m|^\.+$|); $out .= &ProcessFile($mode, $delimiter, "$dirname/$_$ext", "", $level, $noid, %arg); $found = 1; } last if $found; } } if ($delimiter eq '<' or $delimiter eq '"' or $delimiter eq "'") { $dir = '.'; if (-d $dirname) { opendir(DIR, "$dirname"); @ls = grep { /^$pattern$/ && eval $test } readdir(DIR); closedir DIR; # Sort list of files my $criterion = $arg{'IPP_SORT'} || $arg{'IPP_REVERSE'}; if ($criterion eq 'date') { @ls = sort {-M $a <=> -M $b} @ls; } elsif ($criterion eq 'numeric') { @ls = sort {$a <=> $b} @ls; } elsif ($criterion) { @ls = sort @ls; } @ls = reverse @ls if ($arg{'IPP_REVERSE'}); # and truncate it if ($arg{'IPP_MAX'} =~ m/^\d+$/ and $arg{'IPP_MAX'} < $#ls + 1) { splice (@ls, $arg{'IPP_MAX'} - $#ls - 1); } push (@ls, ""); $arg{'IPP_NEXT'} = ''; $arg{'IPP_THIS'} = ''; foreach (@ls) { next if (m|/\.+$| or m|^\.+$|); # set IPP_PREV, IPP_THIS, IPP_NEXT $arg{'IPP_PREV'} = $arg{'IPP_THIS'}; $arg{'IPP_THIS'} = $arg{'IPP_NEXT'}; $arg{'IPP_NEXT'} = ($_ eq '' ? '' : $dirname . "/$_$ext"); next if $arg{'IPP_THIS'} eq ''; $out .= &ProcessFile($mode, $delimiter, $arg{'IPP_THIS'}, "", $level, $noid, %arg); } delete $arg{'IPP_NEXT'}; delete $arg{'IPP_THIS'}; delete $arg{'IPP_PREV'}; } } return $out; } sub ProcessFile { my ($mode, $delimiter, $file, $realname, $level, $noid, %arg) = @_; my ($in, $found, $line, $incfile, $type, %argO, $out, $store); my ($dirname, $pattern, $ext); # # first check whether this is a filename pattern in which case # we must expand it # if (($dirname, $pattern, $ext) = ($file =~ m/^(.*?)(?=[?*\]])([?*]|\[[^\]]*\])(.*)$/)) { if ($dirname =~ m|^(.*)/(.*?)$|) { $dirname = $1; $pattern = $2.$pattern; } else { $pattern = $dirname.$pattern; $dirname = '.'; } if ($ext =~ m|^(.*?)(/.*)$|) { $pattern .= $1; $ext = $2; } else { $pattern .= $ext; $ext = ''; } # # replace filename patterns by regular expressions # $pattern =~ s/\./\\./g; $pattern =~ s/\*/.*/g; $pattern =~ s/\?/./g; return &PatternProcess($mode, $delimiter, $dirname, $pattern, $ext, $level, $noid, %arg); } # # this is a regular file # $found = 0; if ($delimiter eq '<') { foreach $dir (reverse @opt_S) { if (-f "$dir/$file") { $file = "$dir/$file"; $found = 1; last; } } } if ($delimiter eq '<' or $delimiter eq '"') { foreach $dir (reverse @opt_I) { if (-f "$dir/$file") { $file = "$dir/$file"; $found = 1; last; } } } if ($delimiter eq '<' or $delimiter eq '"' or $delimiter eq "'") { if (-f $file) { $found = 1; } } &error("file not found: $file") if not $found; # # stop if file was still included some time before # if (not $noid) { $id = &CanonPath($file); if ($mode eq 'use') { return '' if (exists $INCLUDES{$id}); } if ($delimiter eq '<') { $INCLUDES{$id} = 1; } else { $INCLUDES{$id} = 2; } } # # stop if just want to check dependency # return '' if $mode eq 'depends'; # # process the file # $realname = $file if $realname eq ''; $in = new IO::File; &verbose($level, "|"); &verbose($level, "+-- $file"); $in->open("<$file") || error("cannot load $file: $!"); $line = 0; $out = ''; $out = "<__file__ $realname /><__line__ 0 />" . "<:# line $line \"$realname\":>\n" if not $opt_N and not $arg{'IPP_NOSYNCLINES'}; $store = ''; while ($l = <$in>) { $line++; # EOL-comments next if $l =~ m/^\s*#(?!use|include|depends)/; # Line-Continuation Support $l =~ s|^\s+|| if $store ne ''; next if $l =~ m|^\\\s*\n$|; if ($l =~ m|^(.*[^\\])\\\s*\n$|) { $store .= $1; next; } if ($l =~ m|^(.*\\)\\(\s*\n)$|) { $l = $1.$2; } $l = $store.$l; $store = ''; # # Variable Interpolation # # Substitutions are performed from left to right and from # inner to outer, all operators have same precedence. { if ($l =~ m/((?!\\).|^)\$\(([a-zA-Z0-9_]+)((=|:[-=?+*])([^()]*))?\)/) { my ($name, $op, $str) = ($2, $4, $5); if (not defined ($op)) { # Normal Value $l =~ s/((?!\\).|^)\$\($name\)/exists $arg{$name} ? $1.$arg{$name} : $1/e; redo; } # Escape special characters $op =~ s/([?+*])/\\$1/; my $subst = '((?!\\\\).|^)\\$\\(' . $name . $op . '(?:[^()]*)\\)'; if ($op eq '=') { # Assign $l =~ s/$subst/$1/; if ($str eq '') { delete $arg{$name} if exists $arg{$name}; } else { $arg{$name} = $str; } } elsif ($op eq ':\?') { # Indicate Error if Unset $l =~ s/$subst/exists $arg{$name} ? $1.$arg{$name} : $1.&error($str)/e; } elsif ($op eq ':-') { # Use Default Values $l =~ s/$subst/exists $arg{$name} ? $1.$arg{$name} : $1.$str/e; } elsif ($op eq ':=') { # Use Default Values And Assign $l =~ s/$subst/exists $arg{$name} ? $1.$arg{$name} : $1.$str/e; if ($str eq '') { delete $arg{$name} if exists $arg{$name}; } else { $arg{$name} = $str; } } elsif ($op eq ':\+') { # Use Alternative Value $l =~ s/$subst/exists $arg{$name} ? $1.$str : $1/e; } elsif ($op eq ':\*') { # Use Negative Alternative Value $l =~ s/$subst/exists $arg{$name} ? $1 : $1.$str/e; } else { # There is an error in these statements die "Internal error when expanding variables"; } redo; } } # EOL-comments again next if $l =~ m/^\s*#(?!use|include|depends)/; # Implicit Variables $l =~ s|__LINE__|$line|g; if ($level == 0 and $arg{'IPP_SRC_REALNAME'} ne '') { $arg{'IPP_SRC_REALNAME'} = './' . $arg{'IPP_SRC_REALNAME'} if $arg{'IPP_SRC_REALNAME'} !~ m|/|; $l =~ s|__FILE__|$arg{'IPP_SRC_REALNAME'}|g; } else { $l =~ s|__FILE__|$file|g; } # remove one preceding backslash $l =~ s/\\(\$\([a-zA-Z0-9_]+(:[-=?+*][^()]*)?\))/$1/g; # # ``#include'', ``#use'' and ``#depends'' directives # if (($cmd, $incfile, $args) = ($l =~ m/^#(use|include|depends)\s+(\S+)(.*)$/)) { # set arguments %argO = %arg; &setargs(\%arg, $args); # do possible argument mapping $incfile = &mapfile($incfile); # determine raw filename and type if ($incfile =~ m|^(\S+?)::(\S+)$|) { $type = '<'; $incfile = "$2.$1"; $incfile =~ s|::|/|g; } elsif ($incfile =~ m|^(['"<])([^'">]+)['">]$|) { $type = $1; $incfile = $2; } else { &error("Unknown file-argument syntax: ``$incfile''"); } # now recurse down $out .= &ProcessFile($cmd, $type, $incfile, "", $level+1, 0, %arg); $out .= "<__file__ $realname /><__line__ $line />" . "<:# line $line \"$realname\":>\n" if not $opt_N and not $arg{'IPP_NOSYNCLINES'}; # reset arguments %arg = %argO; } # # ``__END__'' feature # elsif ($l =~ m|^\s*__END__\s*\n?$|) { last; } # # plain text # else { $out .= $l; } } $out .= $store; $in->close() || error("cannot close $file: $!"); return $out; } # # create initial argument vector # %arg = (); foreach $str (@opt_D) { $str =~ s|^(['"])(.*)\1$|$2|; if ($str =~ m|^([a-zA-Z][a-zA-Z0-9_]*)="(.*)"$|) { $arg{$1} = $2; } elsif ($str =~ m|^([a-zA-Z][a-zA-Z0-9_]*)=(['"]['"])?$|) { $arg{$1} = ''; } elsif ($str =~ m|^([a-zA-Z][a-zA-Z0-9_]*)=(.+)$|) { $arg{$1} = $2; } elsif ($str =~ m|^([a-zA-Z][a-zA-Z0-9_]*)$|) { $arg{$1} = 1; } else { &error("Bad argument to option `D': $str"); } } # # process the pre-loaded include files # $tmpdir = $ENV{'TMPDIR'} || '/tmp'; my $tmpldir = ($ENV{'TMPDIR'} || '/tmp') . '/ipp.XXXXXX'; $tmpdir = mkdtemp($tmpldir) or die "Unable to create temporary directory: $!\n"; $tmpfile = $tmpdir . "/ipp.$$.tmp"; unlink($tmpfile); $tmp = new IO::File; $tmp->open(">$tmpfile") || error("cannot write into $tmpfile: $!"); foreach $file (@opt_s) { if ($file =~ m|^(\S+?)::(\S+)(.*)\n$|) { $file = "$2.$1"; $file =~ s|::|/|g; } $tmp->print("#include <$file>\n") || error("cannot write into $tmpfile: $!"); } foreach $file (@opt_i) { if ($file =~ m|^(\S+?)::(\S+)(.*)$|) { $tmp->print("#use $file\n") || error("cannot write into $tmpfile: $!"); } else { $tmp->print("#include \"$file\"\n") || error("cannot write into $tmpfile: $!"); } } $tmp->close() || error("cannot close $tmpfile: $!"); $outbuf .= &ProcessFile('include', "'", $tmpfile, "", 0, 1, %arg); unlink($tmpfile); # # process real files # foreach $file (@ARGV) { # read input file if ($file eq '-') { $in = new IO::Handle; $in->fdopen(fileno(STDIN), 'r') || error("cannot load STDIN: $!"); local ($/) = undef; $inbuf = <$in>; $in->close() || error("cannot close STDIN: $!"); } else { $in = new IO::File; $in->open($file) || error("cannot load $file: $!"); local ($/) = undef; $inbuf = <$in>; $in->close() || error("cannot close $file: $!"); } # create temporary working file $tmp = new IO::File; $tmp->open(">$tmpfile") || error("cannot write into $tmpfile: $!"); $tmp->print($inbuf) || error("cannot write into $tmpfile: $!"); $tmp->close() || error("cannot close $tmpfile: $!"); # apply prolog filters foreach $p (@opt_P) { $rc = system("$p <$tmpfile >$tmpfile.f && mv $tmpfile.f $tmpfile 2>/dev/null"); &error("Prolog Filter `$p' failed") if ($rc != 0); } # process file via IPP filter $outbuf .= &ProcessFile('include', "'", $tmpfile, ($opt_n eq '' ? $file : $opt_n), 0, 1, %arg); # cleanup unlink($tmpfile); } if ($opt_M ne '-' && $opt_o ne '-') { # Write dependencies if ($opt_M =~ m|D|) { if ($opt_o =~ m|(.*?)\.|) { $depfile = $1 . '.d'; } else { $depfile = $opt_o . '.d'; } $depout = new IO::File; $depout->open(">$depfile") || error("cannot write into $depfile: $!"); } else { $depfile = 'STDOUT'; $depout = new IO::Handle; $depout->fdopen(fileno(STDOUT), "w") || error("cannot write into $depfile: $!"); } # Write the target $depout->print($opt_o . ": \\\n") || error("cannot write into $depfile: $!"); @deps = @ARGV; foreach (keys(%INCLUDES)) { push(@deps,$_) if $INCLUDES{$_} != 1 or $opt_M !~ m|M|; } # and its dependencies $depout->print("\t" . join(" \\\n\t",@deps) . "\n") || error("cannot write into $depfile: $!"); $depout->close() || error("cannot close $depfile: $!"); } else { # # create output file # if ($opt_o eq '-') { $out = new IO::Handle; $out->fdopen(fileno(STDOUT), "w") || error("cannot write into STDOUT: $!"); } else { $out = new IO::File; $out->open(">$opt_o") || error("cannot write into $opt_o: $!"); } $out->print($outbuf) || error("cannot write into $opt_o: $!"); $out->close() || error("cannot close $opt_o: $!"); } # die gracefully exit(0); ##EOF## __END__ =head1 NAME ipp - Include Pre-Processor =head1 SYNOPSIS B [B<-D> IB<=>I] [B<-S> I] [B<-I> I] [B<-s> I] [B<-i> I] [B<-M> I] [B<-P> I] [B<-m> I] [B<-N> I] [B<-o> I] [B<-v>] I ... =head1 DESCRIPTION The F program reads all Is and recursively expands all #include 'file' #include "file" #include directives by substituting the directive with the contents of the file. The output is send to F or to I. The files are searched according to the following scheme: =over =item B<#include 'file'> The file is searched in the current working directory B. Use this to force the loading of a local file. =item B<#include "file"> The file is searched in all directories given by the B<-I> option in the right-to-left order they are specified on the command line. Note that a B<-I .> implicit option is automatically appended to command-line options, then files are first searched in current directory. =item B<#include EfileE> First the file is searched in the system wide C include directory specified with the B<-S> option. Second if it was not not found there it is searched for in all directories given by the B<-I> option. =back And it provides eight additional features: =head2 B These characters have a special meaning in filenames: =over 4 =item C<*> Matches any string, including the null string. =item C Matches any single character. =item C<[...]> Like bracketed expressions in regexps, matches any of the enclosed characters. =back If you want to include all your templates, you may write #include "*.tmpl" With the following parameters you can control the order and the number of included files using the B<#include 'pattern'> directive: =over 4 =item C> Specify a sort criterion to include files. There are actually 3 different criteria : date (files are sorted according to their last modification time), name (this is the default) and numeric (filenames are sorted numerically). =item C> As above, but resulting list of filenames is sorted in reverse order. =item C> Only I files are included. =back If you want to include the 5 newest include files of the news directory with file names like C<20000131.inc>, you may write: #include 'news/*.inc' IPP_REVERSE IPP_MAX=5 In the files included with the C<#include 'pattern'> directive, the following variables are set and can be read using C<$(name)>: =over 4 =item C the full name of the included source file including path and extension =item C the full name of the previous included file, unset in the first file =item C the full name of the next included file, unset in the last file =back Keep in mind that a directive without wildcards does not set these variables. =head2 B In analogon to Perl's C statement, F provides a special variant of C<#include>: #use type::category::file This internally is equivalent to the directive #include plus the special semantic that the include file is included (=used) only once, i.e. multiple inclusion is automatically avoided. In other words #include 'file' #include 'file' #use 'file' #use 'file' results in three inclusions of 'file'. Two from the C<#include>'s and only once from the C<#use> directives. =head2 B You can easily write fragments of Makefiles with the B<-M> flag (see below) to keep tracks of which files the output file depends on, When C is invoked as a piece of C, the final output file may depend on other files. You can tell C about these hidden dependencies by using the C<#depends> variant , e.g. #depends 'foo.dat' #depends "*/*.dat" #depends The contents of the file is not inserted, only informations about dependencies are updated. =head2 B All include commands insert some special stuff to help C keeping track of input line numbers. This feature may be disabled by appending the string C to the C<#include> (or its variants) command. See also the C<-N> flag. =head2 B You can add name[=value] pairs at the end of C<#include> (and C<#use>) directives to let C<$(name)> interpolate to C (or C<1> if C<=value> is missing) in this include file and all its recursively included files. There are the following forms of the C<$(name)> syntax, similar to the functionality any Bourne Shell provides: =over 4 =item o B> `Use Only Value': The standard interpolation. if (exists(name)) expandto(valueof(name)) else expandto("") =item o B> `Assign Value': Set a variable. name := string =item o B> `Use Default String': The standard interpolation with a default value. if (exists(name)) expandto(valueof(name)) else expandto(string) =item o B> `Use Default String and Assign': The standard interpolation with a default value and additional assignment for later use. if (exists(name)) expandto(valueof(name)) else expandto(string) name := string =item o B> `Use Alternate String'. The replacement interpolation. if (exists(name)) expandto(string) else expandto("") =item o B> `Use Negative Alternate String'. The replacement interpolation with negated logic. if (exists(name)) expandto("") else expandto(string) =item o B> `Indicate Error If Unset'. The error message interpolation. This can also be used in conjunction with the above variants. if (exists(name)) expandto(valueof(name)) else Error(string) =back Previous constructs may be nested when variable expansion contains no parenthesis. You may for instance need these forms: `Set a variable if unset'. $(var=$(var:-string)) `Redefine a variable if it is already set.' $(var=$(var:+string)) Notice that nested expressions are not handled as shells do. In shells expressions are treated from left to right, whereas C treat inner expressions first. With this example below $(foo=bar) $(foo:-$(foo=quux)) Bourne shells will show C whereas C will print C. It is also possible to undefine a variable. To do so, assign an empty value to this variable, e.g. $(foo=) Notice the possibility to do simple If-Then-Else constructs: $(foo:+string_when_set)$(foo:*string_when_not_set) This is equivalent to the following pseudo-code: if (exists(foo)) expandto(string_when_set) else expandto(string_when_not_set) =head2 B The strings C<__FILE__> and C<__LINE__> are always substituted by the currently processed include file and the current line number. =head2 B IPP provides support for up-to-end-of-line comments. This type of comment is like the one found in Bourne-Shell or Perl, i.e. any line which starts with a sharp symbol (`C<#>') is entirely (i.e. including the newline at the end) removed from the input. Additionally these lines can have whitespaces in front of the sharp symbol. When you really need a sharp symbol at the start of a line you can use C<\#>, i.e. prefix it with an escaping backslash. =head2 B It stops processing the current include file when a line containing just __END__ occurs. Use this to append POD documents to include files for documentation purposes as in Perl. You can use C<__END__> in constructs like C<$(SHORTENING:+__END__)>, so that the processing is only stopped when the variable SHORTENING is set. =head2 B It removes all occurences of the pattern \** Use this to let one or more lines to be concatenated. =head1 OPTIONS =over =item B<-D> IB<=>I Defines a variable the for the initial I the same way you define ones with the B<#include> for include files. The variable can be interpolated via C<$(name)> in all files. =item B<-S> I Adds a system wide include directory. You can use this option more than once. The files are searched in right-to-left order. =item B<-I> I This adds an entry to the include path where include files are searched for. You can use this option more than once. The files are searched in right-to-left order. The current working directory is always appended as the last directory to this list, and so is searched first. =item B<-s> I Pre-load a particular include file, i.e. virtually adds a #include in front of I. Use this to automatically load default system include files. You can also use the syntax C which leads to a virtually added #include =item B<-i> I Pre-loads a particular include file, i.e. virtually adds a #include "includefile" in front of I. Use this to automatically load default user include files. You can also use the syntax C which leads to a virtually added #include "category/file.type" =item B<-M> I Output a rule suitable for `make' describing the dependencies of each output file, as `gcc' does. It has only sense when the B<-o> option is used. The B flag option writes the rule to a dependency file. The name of this file is obtained by replacing the suffix of the output file by ".d". The B flag option deletes the system files from the list of dependencies. =item B<-P> I This sets up one or more prolog program I which are applied to each single input file just before real processing starts. Use this to pre-process the data. Each program receives the data to act on as STDIN and has to produce the filtered data on STDOUT. =item B<-m> I This adds an entry to the list of mapfiles where a mapping between obsolete include file names and current ones can be found. You can use this option more than once. The mapfiles can contain the following lines: # comment line [,] \[S|W|E: \] Example: ,wml::std::headfoot wml::OBSOLETE::std::headfoot [S] =item B<-N> I By default, WML inserts some instructions to synchronize line numbers, which are then interpreted in passes 2 and 3. This option disables this feature. =item B<-o> I This redirects the output to I. Usually the output will be send to C if no such option is specified or I is "C<->". =item B<-v> This sets verbose mode where some processing information will be given on the console. =back =head1 AUTHORS Ralf S. Engelschall rse@engelschall.com www.engelschall.com Denis Barbier barbier@engelschall.com =cut ##EOF## wml-2.0.12.orig/wml_backend/p1_ipp/Makefile.in0000644000175000017500000000265210343637520017105 0ustar abeabe## ## wml_p1_ipp/Makefile ## Copyright (c) 1997-2001 Ralf S. Engelschall, ## Copyright (c) 2000-2001 Denis Barbier ## @SET_MAKE@ SHELL = /bin/sh top_srcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s INSTALL_DATA = $(top_srcdir)/etc/shtool install -c -m 644 prefix = @prefix@ exec_prefix = $(prefix) bindir = $(prefix)/bin libsubdir = @libsubdir@ libdir = $(prefix)/lib$(libsubdir) mandir = $(prefix)/man PATH_PERL = @PATH_PERL@ INSTALLPRIVLIB = @INSTALLPRIVLIB@ INSTALLARCHLIB = @INSTALLARCHLIB@ SRC_FILES = ipp.src MAN_FILES = $(SRC_FILES:.src=.1) EXE_FILES = $(SRC_FILES:.src=.pl) .SUFFIXES: .SUFFIXES: .pl .1 .src .src.pl: sed -e '/^=head1/,/^=cut/d' \ -e '/^__END__/,$$d' \ -e 's|\@PATH_PERL\@|$(PATH_PERL)|g' \ -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \ -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \ <$< >$@ && chmod a+x $@ .src.1: cp $< $*.pod pod2man --section=1 --center="EN Tools" --release="EN Tools" $*.pod |\ sed -e 's/^.ds N" """""/.ds N" ""/g' \ -e 's/^.ds T" """""/.ds T" ""/g' >$@ rm -f $*.pod all: $(EXE_FILES) $(MAN_FILES) clean: -rm -f $(EXE_FILES) $(MAN_FILES) distclean: clean -rm -f Makefile realclean: distclean ##EOF## wml-2.0.12.orig/wml_backend/p5_divert/0000755000175000017500000000000011613524774015553 5ustar abeabewml-2.0.12.orig/wml_backend/p5_divert/divert.src0000644000175000017500000003347310343637516017571 0ustar abeabe#!@PATH_PERL@ -w eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}' if $running_under_some_shell; ## ## divert -- Diversion Filter ## Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. ## Copyright (c) 1999-2001 Denis Barbier, All Rights Reserved. ## require 5.003; BEGIN { $^W = 0; } # get rid of nasty warnings use lib "@INSTALLPRIVLIB@"; use lib "@INSTALLARCHLIB@"; use Getopt::Long 2.13; use IO::Handle 1.15; use IO::File 1.06; # # process command line # sub usage { print STDERR "Usage: divert [options] [file]\n"; print STDERR "\n"; print STDERR "Options:\n"; print STDERR " -o, --outputfile= set output file instead of stdout\n"; print STDERR " -q, --quiet quiet mode (no warnings)\n"; print STDERR " -v, --verbose verbose mode\n"; exit(1); } $opt_v = 0; $opt_q = 0; $opt_o = '-'; $Getopt::Long::bundling = 1; $Getopt::Long::getopt_compat = 0; if (not Getopt::Long::GetOptions( "v|verbose", "q|quiet", "o|outputfile=s")) { usage(); } sub verbose { my ($str) = @_; if ($opt_v) { print STDERR "** Divert:Verbose: $str\n"; } } sub error { my ($str) = @_; print STDERR "** Divert:Error: $str\n"; exit(1); } sub warning { my ($file, $line, $str) = @_; if (not $opt_q) { print STDERR "** Divert:Warning: $file:$line: $str\n"; } } # # open input file and read into buffer # my $file; my $in; if (($#ARGV == 0 and $ARGV[0] eq '-') or $#ARGV == -1) { $in = new IO::Handle; $file = 'STDIN'; $in->fdopen(fileno(STDIN), "r") || error("cannot load STDIN: $!"); } elsif ($#ARGV == 0) { $in = new IO::File; $file = $ARGV[0]; $in->open($file) || error("cannot load $file: $!"); } else { usage(); } ## ## Pass 1: Parse the input data into disjunct location buffers ## Each location buffer contains plain text blocks and ## location pointers. ## my $location = 'main'; # currently active location my @LOCSTACK = ('null'); # stack of remembered locations my %BUFFER = ('null' => [], 'main' => []); # the location buffers my %OVRWRITE = (); # the overwrite flags my $line = 0; my $remain; while (<$in>) { $remain = $_; $line++; while ($remain) { if ( $remain =~ s|^<<([a-zA-Z][a-zA-Z0-9_]*)>>|| or $remain =~ s|^{#([a-zA-Z][a-zA-Z0-9_]*)#}||) { ## ## Tag: dump location ## # initialize new location buffer $BUFFER{$1} = [] if (not exists($BUFFER{$1})); # insert location pointer into current location if ($BUFFER{$location} == $BUFFER{$1}) { warning($file, $line, "self-reference of location ``$location'' - ignoring"); } else { push(@{$BUFFER{$location}}, $BUFFER{$1}); } } elsif ( $remain =~ s|^\.\.(\!?[a-zA-Z][a-zA-Z0-9_]*\!?)>>|| or $remain =~ s|^{#(\!?[a-zA-Z][a-zA-Z0-9_]*\!?)#:||) { ## ## Tag: enter location ## # remember old location on stack push(@LOCSTACK, $location); # determine location and optional # qualifies, then enter this location $location = $1; my $rewind_now = 0; my $rewind_next = 0; if ($location =~ m|^\!(.*)$|) { # location should be rewinded now $location = $1; $rewind_now = 1; } if ($location =~ m|^(.*)\!$|) { # location should be rewinded next time $location = $1; $rewind_next = 1; } # initialize location buffer $BUFFER{$location} = [] if (not exists($BUFFER{$location})); # is a "rewind now" forced by a "rewind next" from last time? if ($OVRWRITE{$location}) { $rewind_now = 1; $OVRWRITE{$location} = 0; } # remember a "rewind next" for next time $OVRWRITE{$location} = 1 if ($rewind_next); # execute a "rewind now" by clearing the location buffer if ($rewind_now == 1) { while ($#{$BUFFER{$location}} > -1) { shift(@{$BUFFER{$location}}); } } } elsif ( $remain =~ s|^<<([a-zA-Z][a-zA-Z0-9_]*)?\.\.|| or $remain =~ s|^:#([a-zA-Z][a-zA-Z0-9_]*)?#}||) { ## ## Tag: leave location ## if ($#LOCSTACK == -1) { warning($file, $line, "already in ``null'' location -- ignoring leave"); } else { my $loc = $1; if ($loc eq 'null') { warning($file, $line, "cannot leave ``null'' location -- ignoring named leave"); } elsif ($loc ne '' and $loc ne $location) { # leave the named location and all locations # on the stack above it. my $n = -1; for (my $i = $#LOCSTACK; $i >= 0; $i--) { if ($LOCSTACK[$i] eq $loc) { $n = $i; last; } } if ($n == -1) { warning($file, $line, "no such currently entered location ``$loc'' -- ignoring named leave"); } else { splice(@LOCSTACK, $n); $location = pop(@LOCSTACK); } } else { # leave just the current location $location = pop(@LOCSTACK); } } } else { ## ## Plain text ## # calculate the minimum amount of plain characters we can skip my $l = length($remain); my $i1 = index($remain, '<<'); $i1 = $l if $i1 == -1; # Skip ../ which is often used in URLs my $i2 = -1; do { $i2 = index($remain, '..', $i2+1); } while ($i2 > -1 and $i2+2 < $l and substr($remain, $i2+2, 1) eq '/'); $i2 = $l if $i2 == -1; my $i3 = index($remain, '{#'); $i3 = $l if $i3 == -1; #} my $i4 = index($remain, ':#'); $i4 = $l if $i4 == -1; my $i = $i1; $i = $i2 if $i > $i2; $i = $i3 if $i > $i3; $i = $i4 if $i > $i4; # skip at least 2 characters if we are sitting # on just a "<<", "..", "{#" or ":#" $i = 1 if ($i == 0); # append plain text to remembered data and adjust $remain # variable if ($i == $l) { push(@{$BUFFER{$location}}, $remain); $remain = ''; } else { # substr with 4 arguments was introduced in perl 5.005 push(@{$BUFFER{$location}}, substr($remain, 0, $i)); substr($remain, 0, $i) = ''; } } } } $in->close(); ## ## Pass 2: Recursively expand the location structure ## by starting from the main location buffer ## @LOCSTACK = (); sub ExpandDiversion { my ($loc) = @_; my ($data, $locseen, $name, $n, $el); # check for recursion by making sure # the current location has not already been seen. foreach $locseen (@LOCSTACK) { if ($locseen == $loc) { # find name of location via location pointer # for human readable warning message $name = 'unknown'; foreach $n (keys(%BUFFER)) { if ($BUFFER{$n} == $loc) { $name = $n; last; } } warning($file, $line, "recursion through location ``$name'' - break"); return ''; } } # ok, location still not seen, # but remember it for recursive calls. push(@LOCSTACK, $loc); # recursively expand the location # by stepping through its list elements $data = ''; foreach $el (@{$loc}) { if (ref($el)) { # element is a location pointer, so # recurse into the expansion of it $data .= ExpandDiversion($el); } else { # element is just a plain text block $data .= $el; } } # we can remove the location from # the stack because we are back from recursive calls. pop(@LOCSTACK); # return expanded buffer return $data; } # # create output file # my $out; if ($opt_o eq '-') { $out = new IO::Handle; $out->fdopen(fileno(STDOUT), "w") || error("cannot write into STDOUT: $!"); } else { $out = new IO::File; $out->open(">$opt_o") || error("cannot write into $opt_o: $!"); } $out->print(ExpandDiversion($BUFFER{'main'})) || error("cannot write into $opt_o: $!"); $out->close() || error("cannot close $opt_o: $!"); # # die gracefully # exit(0); ##EOF## __END__ =head1 NAME Divert - Text Diversion Filter =head1 SYNOPSIS B [B<-o> I] [B<-q>] [B<-v>] [I] =head1 DESCRIPTION The F program reads I or from C and applies a 2-pass diversion filter to its contents. In pass 1 all diversion locations are accumulated and in pass 2 these locations are recursively expanded at their dump positions. The diversion filter is controlled by directives found in the input data: =over 4 =item B<{#>IB<#}> (or BE>IBE>) This defines the dump position of the location I. All accumulated data which I has to been diverted to I is inserted at this data position. Notice: the final data of a location I has not to be known at this point, because the expansion of such location dumps are done in pass 2. You can also dump a location more than once, but the contents is always the same, independent of the data position where the location dump tag stays. The I can be any symbolic name matching C<[a-zA-Z][a-zA-Z0-9_]*>. =item B<{#>[B]I[B]B<#:> (or B<..>[B]I[B]BE>) This enters the location I (or I the data flow to it, hence the name for this filter). In other words: the data flow now goes on at location I. All following data (up to end of file or the next location leave tag) gets appended to location I. You can nest diversions by entering other locations at any point, because the locations are remembered on a stack. The default entered location is named ``C
''. The top most location is named ``C'' which neither can be entered nor leaved explicitly. But of course the ``C'' diversion can be manually dumped, for instance when using it for error messages. There are two special features for diverting data which are controlled by the "C" characters preceding or following the I identifier: =over 4 =item BI This sets the data flow position to the I of location I, i.e. it actually discards the current (already diverted) contents of location I before entering it. Use this to overwrite a locations contents. =item IB This marks this location entry as I, i.e. it enters location I but when the corresponding leave tag is found, the data-flow position for I gets automatically reset to its begin. Use this if you want to set the default contents for a location which only gets used if no other diversions occur to it (because any following diversions to this location will be overwrite the contents). This feature is usually used for a template scheme. =item BIB Just the combination of the above two features. Use this to both discard the current contents of location I and set a new default for it. =back =item B<:#>[I]B<#}> (or BE>[I]B<..>) This leaves the current location, i.e. enters again the location which was active when this location was entered. There is no need to leave all locations at the end of the input data. All still entered locations are automatically left at end of file because this is essential for a template scheme. =back Notice that there are two ways of using (and thinking) about the filtering mechanism this program provides: =over 4 =item B This is the "predefined" way of thinking here. Use it like this: FOO {#BAR#} QUUX {#BAR#: BAZ :##} Here you are thinking of the mechanism as a macro mechanism where you I a macro at one data position while you define it via I and I tags. =item B This is the alternative way of thinking. Use it like this: FOO <> QUUX ..BAR>> BAZ <<.. In other words: You are thinking of the mechanism as a diversion mechanism where you I a location at one data position while you divert to it by I end I the location (here B) at other positions. =back You can even intermix both ways because both are just alternative syntax variants which are treated the same. =head1 EXAMPLE {#HEAD#} {#BODY#} {#FOOT#} {#FOOT#: Quux :##} {#BODY#: Bar :##} {#HEAD#: Foo :##} =head1 OPTIONS =over =item B<-o> I This redirects the output to I. Usually the output will be send to F if no such option is specified or I is ``C<->''. =item B<-q> This sets quiet mode where warnings are suppressed. =item B<-v> This sets verbose mode where some processing information will be given on F. =back =head1 AUTHORS Ralf S. Engelschall rse@engelschall.com www.engelschall.com Denis Barbier barbier@engelschall.com =cut wml-2.0.12.orig/wml_backend/p5_divert/Makefile.in0000644000175000017500000000253110343637516017617 0ustar abeabe## ## wml_p5_divert/Makefile ## Copyright (c) 1997-2001 Ralf S. Engelschall, ## Copyright (c) 2000-2001 Denis Barbier ## @SET_MAKE@ SHELL = /bin/sh top_srcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s INSTALL_DATA = $(top_srcdir)/etc/shtool install -c -m 644 prefix = @prefix@ exec_prefix = $(prefix) bindir = $(prefix)/bin libsubdir = @libsubdir@ libdir = $(prefix)/lib$(libsubdir) mandir = $(prefix)/man PATH_PERL = @PATH_PERL@ INSTALLPRIVLIB = @INSTALLPRIVLIB@ INSTALLARCHLIB = @INSTALLARCHLIB@ SRC_FILES = divert.src MAN_FILES = $(SRC_FILES:.src=.1) EXE_FILES = $(SRC_FILES:.src=.pl) .SUFFIXES: .SUFFIXES: .pl .1 .src .src.pl: sed -e '/^=head1/,/^=cut/d' \ -e '/^__END__/,$$d' \ -e 's|\@PATH_PERL\@|$(PATH_PERL)|g' \ -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \ -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \ <$< >$@ && chmod a+x $@ .src.1: cp $< $*.pod pod2man --section=1 --center="EN Tools" --release="EN Tools" $*.pod >$@ rm -f $*.pod all: $(EXE_FILES) $(MAN_FILES) clean: -rm -f $(EXE_FILES) $(MAN_FILES) distclean: clean -rm -f Makefile realclean: distclean ##EOF## wml-2.0.12.orig/wml_backend/p6_asubst/0000755000175000017500000000000011613524774015560 5ustar abeabewml-2.0.12.orig/wml_backend/p6_asubst/Makefile.in0000644000175000017500000000253110343637516017624 0ustar abeabe## ## wml_p6_asubst/Makefile ## Copyright (c) 1997-2001 Ralf S. Engelschall, ## Copyright (c) 2000-2001 Denis Barbier ## @SET_MAKE@ SHELL = /bin/sh top_srcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s INSTALL_DATA = $(top_srcdir)/etc/shtool install -c -m 644 prefix = @prefix@ exec_prefix = $(prefix) bindir = $(prefix)/bin libsubdir = @libsubdir@ libdir = $(prefix)/lib$(libsubdir) mandir = $(prefix)/man PATH_PERL = @PATH_PERL@ INSTALLPRIVLIB = @INSTALLPRIVLIB@ INSTALLARCHLIB = @INSTALLARCHLIB@ SRC_FILES = asubst.src MAN_FILES = $(SRC_FILES:.src=.1) EXE_FILES = $(SRC_FILES:.src=.pl) .SUFFIXES: .SUFFIXES: .pl .1 .src .src.pl: sed -e '/^=head1/,/^=cut/d' \ -e '/^__END__/,$$d' \ -e 's|\@PATH_PERL\@|$(PATH_PERL)|g' \ -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \ -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \ <$< >$@ && chmod a+x $@ .src.1: cp $< $*.pod pod2man --section=1 --center="EN Tools" --release="EN Tools" $*.pod >$@ rm -f $*.pod all: $(EXE_FILES) $(MAN_FILES) clean: -rm -f $(EXE_FILES) $(MAN_FILES) distclean: clean -rm -f Makefile realclean: distclean ##EOF## wml-2.0.12.orig/wml_backend/p6_asubst/asubst.src0000644000175000017500000002004010343637516017564 0ustar abeabe#!@PATH_PERL@ eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}' if $running_under_some_shell; ## ## asubst -- Area Substitution ## Copyright (c) 1997,1998,1999 Ralf S. Engelschall, All Rights Reserved. ## require 5.003; BEGIN { $^W = 0; } # get rid of nasty warnings use lib "@INSTALLPRIVLIB@"; use lib "@INSTALLARCHLIB@"; use Getopt::Long 2.13; use IO::Handle 1.15; use IO::File 1.06; # # process command line # sub usage { print STDERR "Usage: asubst [options] [file]\n"; print STDERR "\n"; print STDERR "Options:\n"; print STDERR " -o, --outputfile= set output file instead of stdout\n"; print STDERR " -v, --verbose verbose mode\n"; exit(1); } $opt_v = 0; $opt_o = '-'; $Getopt::Long::bundling = 1; $Getopt::Long::getopt_compat = 0; if (not Getopt::Long::GetOptions( "v|verbose", "o|outputfile=s")) { &usage; } sub verbose { my ($str) = @_; if ($opt_v) { print STDERR "** ASubst:Verbose: $str\n"; } } sub error { my ($str) = @_; print STDERR "** ASubst:Error: $str\n"; exit(1); } # # open input file and read into buffer # if (($#ARGV == 0 and $ARGV[0] eq '-') or $#ARGV == -1) { $in = new IO::Handle; $in->fdopen(fileno(STDIN), 'r') || error("cannot load STDIN: $!"); local ($/) = undef; $buffer = <$in>; $in->close() || error("cannot close STDIN: $!"); } elsif ($#ARGV == 0) { $in = new IO::File; $in->open($ARGV[0]) || error("cannot load $ARGV[0]: $!"); local ($/) = undef; $buffer = <$in>; $in->close() || error("cannot close $ARGV[0]: $!"); } else { &usage; } # # processing loop # # ExpandBlock -- expand a delimited and perhaps nested block structure # # ($rc, $buffer) = ExpandBlock($buffer, \&cnvpre, $startdel, \&cnvin, $enddel, \&cnvpost, $level); # sub ExpandBlock { return &ExpandBlockMore(@_); } # This subvariant is used to split the input into # segments which only contain one block, but this # itself can be still nested. # input: ... < < > > ... < > < < > < > > ... # inputs for ExpandBlockOne: "... < < > > ...", "< >", "< < > < > > ...", # ... # sub ExpandBlockMore { local ($buffer, $cnvpre, $opendel, $cnvin, $closedel, $cnvpost, $level) = @_; local ($rc, $opened, $offset, @segment, $del, $openidx, $closeidx); local ($bufferN, $s, $e, $i, $data); # # first, check for corresponding delimiters # and determine (nested) block segment positions # $opened = 0; $offset = 0; @segment = (0); while (1) { $openidx = index($buffer, $opendel, $offset); $closeidx = index($buffer, $closedel, $offset); &Dbg(1, "buffer=<>, off=$offset, o=$openidx, c=$closeidx\n"); if ($openidx == -1 && $closeidx == -1) { # both not found, stop now push(@segment, length($buffer)); last; } if ($openidx != -1 && $closeidx != -1) { # both found, take closer one ($offset, $del, $opened) = ($openidx < $closeidx ? ($openidx, $opendel, $opened+1) : ($closeidx, $closedel, $opened-1) ); } else { # one not found, take other one ($offset, $del, $opened) = ($openidx != -1 ? ($openidx, $opendel, $opened+1) : ($closeidx, $closedel, $opened-1) ); } $offset = $offset+length($del); # still reached a complete segment if ($opened == 0) { push(@segment, $offset); } } if ($opened != 0) { return (1, "invalid number of opening and closing delimiters"); } # # now process each segment # $bufferN = ''; for ($i = 0; $i < $#segment; ) { $s = $segment[$i]; $e = $segment[$i+1]; $i++; $data = substr($buffer, $s, ($e-$s)); ($rc, $data) = &ExpandBlockOne($data, $cnvpre, $opendel, $cnvin, $closedel, $cnvpost, $level); if ($rc != 0) { return ($rc, $data); } $bufferN .= $data; } return (0, $bufferN); } # This subvariant operates only on a buffer which # contains one block (which can be still nested). # input: "... < < > > ... " # sub ExpandBlockOne { local ($buffer, $cnvpre, $startdel, $cnvin, $enddel, $cnvpost, $level) = @_; local ($openidx, $closeidx, $prefix, $postfix, $inner, $rc, $data); $openidx = index($buffer, $opendel); $closeidx = rindex($buffer, $closedel); # either both exist or both not exist if ($openidx == -1 && $closeidx == -1) { if ($level == 0) { $data = &$cnvpre($buffer, $level); # could also be cnvpost.. } else { $data = $buffer; } return (0, $data); } else { # convert prefix $prefix = &$cnvpre(substr($buffer, 0, $openidx), $level); Dbg($level, "ExpandBlockOne::prefix", $prefix); # recursive into the body $inner = substr($buffer, $openidx+length($opendel), $closeidx-($openidx+length($opendel))); Dbg($level, "ExpandBlockOne::inner", $inner); ($rc, $inner) = &ExpandBlockMore($inner, $cnvpre, $opendel, $cnvin, $closedel, $cnvpost, $level+1); Dbg($level, "ExpandBlockOne::inner", $inner); $inner = &$cnvin($inner, $level+1); Dbg($level, "ExpandBlockOne::inner", $inner); # convert postfix $postfix = &$cnvpost(substr($buffer, $closeidx+length($closedel), length($buffer)-($closeidx+length($closedel))), $level); Dbg($level, "ExpandBlockOne::postfix", $postfix); return ($rc, $prefix . $inner . $postfix); } } $debug = 0; # A debugging function sub Dbg { my ($level, $name, $str) = @_; my (@o, $l); return if ($debug == 0); push(@o, " " x $level . "### $name =\n"); if ($str eq '') { push(@o, " " x $level . " ||\n"); } else { foreach $l (split('\n', $str)) { push(@o, " " x $level . " |$l|\n"); } } print STDERR @o; } sub cnvpre { my ($str, $level) = @_; return '' if $str eq ''; return $str; } sub cnvin { my ($str, $level) = @_; return '' if $str eq ''; @SCMD = (); $str =~ s|\[\[(s(.)[^\2]+?\2[^\2]*?\2[igosme]*?)\]\]|push(@SCMD, $1), ''|sge; $str =~ s|\[\[(tr(.)[^\2]+?\2[^\2]+?\2[igosme]*?)\]\]|push(@SCMD, $1), ''|sge; foreach $scmd (@SCMD) { eval "\$str =~ $scmd;"; } return $str; } sub cnvpost { my ($str, $level) = @_; return '' if $str eq ''; return $str; } if (index($buffer, '{:') != -1) { ($rc, $buffer) = ExpandBlock($buffer, \&cnvpre, '{:', \&cnvin, ':}', \&cnvpost, 0); } if ($rc) { print STDERR "aSubst:Error: $buffer\n"; exit(1); } # # write to output file # if ($opt_o eq '-') { $out = new IO::Handle; $out->fdopen(fileno(STDOUT), 'w') || error("cannot write into STDOUT: $!"); } else { $out = new IO::File; $out->open(">$opt_o") || error("cannot write into $opt_o: $!"); } $out->print($buffer) || error("cannot write into $opt_o: $!"); $out->close() || error("cannot close $opt_o: $!"); exit(0); ##EOF## __END__ =head1 NAME asubst - Area Substitution =head1 SYNOPSIS B [B<-o> I] [B<-v>] [I] =head1 DESCRIPTION The F program reads I or from C and performs the following action: Characters and substrings are substituted according to Perl-like substitution commands enclosed by surrounding area delimiters. The substitution commands recognized are [[s/pattern/string/options]] [[tr/input/output/options]] and the areas are defined by blocks delimited via {: ... :} =head1 EXAMPLE {: [[s/ä/ä/]] [[s/ü/ü/]] Foo Bar Baz Quux with Umlauts ä and ü :} =head1 OPTIONS =over =item B<-o> I This redirects the output to I. Usually the output will be send to C if no such option is specified or I is "C<->". =item B<-v> This sets verbose mode where some processing information will be given on the console. =back =head1 AUTHOR Ralf S. Engelschall rse@engelschall.com www.engelschall.com =cut ##EOF## wml-2.0.12.orig/wml_backend/Makefile.in0000644000175000017500000000252710343637537015726 0ustar abeabe## ## wml_backend/Makefile ## Copyright (c) 1997-2001 Ralf S. Engelschall ## @SET_MAKE@ # ------------------------------------------------ # DEFINITIONS # ------------------------------------------------ SHELL = /bin/sh top_srcdir = @top_srcdir@ srcdir = @srcdir@ VPATH = @srcdir@ SUBDIRS = \ p1_ipp \ p2_mp4h \ p3_eperl \ p4_gm4 \ p5_divert \ p6_asubst \ p7_htmlfix \ p8_htmlstrip \ p9_slice # ------------------------------------------------ # THE DEFAULT TARGETS # ------------------------------------------------ all: @set -e; \ set dummy $(MAKEFLAGS); amf=$$2; \ for dir in $(SUBDIRS); do \ echo "===> wml_backend/$$dir ($@)"; \ (cd $$dir && $(MAKE) SDP="wml_backend/$$dir/") \ || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ echo "<=== wml_backend/$$dir"; \ done && test -z "$$fail" clean: -@for dir in $(SUBDIRS); do \ echo "===> wml_backend/$$dir ($@)"; \ (cd $$dir && $(MAKE) SDP="wml_backend/$$dir/" clean); \ echo "<=== wml_backend/$$dir"; \ done distclean: -@for dir in $(SUBDIRS); do \ echo "===> wml_backend/$$dir ($@)"; \ (cd $$dir && $(MAKE) SDP="wml_backend/$$dir/" distclean); \ echo "<=== wml_backend/$$dir"; \ done -rm -f Makefile realclean: distclean ##EOF## wml-2.0.12.orig/wml_backend/p8_htmlstrip/0000755000175000017500000000000011613524774016307 5ustar abeabewml-2.0.12.orig/wml_backend/p8_htmlstrip/htmlstrip.src0000644000175000017500000003363310343637537021057 0ustar abeabe#!@PATH_PERL@ eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}' if $running_under_some_shell; ## ## htmlstrip -- Strip HTML markup code ## Copyright (c) 1997-2000 Ralf S. Engelschall, All Rights Reserved. ## Copyright (c) 2000 Denis Barbier ## require 5.003; BEGIN { $^W = 0; } # get rid of nasty warnings use lib "@INSTALLPRIVLIB@"; use lib "@INSTALLARCHLIB@"; use Getopt::Long 2.13; use IO::Handle 1.15; use IO::File 1.06; # # process command line # sub usage { print STDERR "Usage: htmlstrip [options] [file]\n"; print STDERR "\n"; print STDERR "Options:\n"; print STDERR " -o, --outputfile= set output file instead of stdout\n"; print STDERR " -O, --optimize= set optimization/crunch level\n"; print STDERR " -v, --verbose verbose mode\n"; exit(1); } $opt_v = 0; $opt_o = '-'; $opt_O = 2; $opt_b = 16384; $Getopt::Long::bundling = 1; $Getopt::Long::getopt_compat = 0; if (not Getopt::Long::GetOptions( "v|verbose", "O|optimize=i", "b|blocksize=i", "o|outputfile=s")) { &usage; } $opt_b = 32766 if $opt_b > 32766; $opt_b = 1024 if $opt_b > 0 and $opt_b < 1024; sub verbose { my ($str) = @_; if ($opt_v) { print STDERR "** HTMLstrip:Verbose: $str\n"; } } sub error { my ($str) = @_; print STDERR "** HTMLstrip:Error: $str\n"; exit(1); } # # read input file # &verbose("Reading input file"); if (($#ARGV == 0 and $ARGV[0] eq '-') or $#ARGV == -1) { $in = new IO::Handle; $in->fdopen(fileno(STDIN), 'r') || error("cannot load STDIN: $!"); local ($/) = undef; $INPUT = <$in>; $in->close() || error("cannot close STDIN: $!"); } elsif ($#ARGV == 0) { $in = new IO::File; $in->open($ARGV[0]) || error("cannot load $ARGV[0]: $!"); local ($/) = undef; $INPUT = <$in>; $in->close() || error("cannot close $ARGV[0]: $!"); } else { &usage; } # # global initial stripping # &verbose("Strip sharp-like comments"); # strip sharp-like comments #$INPUT =~ s|^\s*#.*$||mg; 1 while ($INPUT =~ s/^([ \t]*)#[^\n]*\n//s); # special case: at begin $INPUT =~ s/\n[ \t]*#[^\n]*(?=\n)//sg; # standard case: in the middle $INPUT =~ s/\n[ \t]*#[^\n]*\n?$/\n/s; # special case: at end $INPUT =~ s/^([ \t]*)\\(#)/$1$2/mg; # remove escaping backslash # # stripping functions for particular areas # # Strip Plain Text, i.e. outside of any # preformatted area and outside any HTML tag. sub StripPlainText { my ($buf) = @_; # Level 0 #if ($opt_O >= 0) { #} # Level 1 if ($opt_O >= 1) { # strip empty lines $buf =~ s|\n\s*\n|\n|sg; } # Level 2 if ($opt_O >= 2) { # strip multiple whitespaces to single one $buf =~ s|(\S+)[ \t]{2,}|$1 |sg; # strip trailing whitespaces $buf =~ s|\s+\n|\n|sg; } # Level 3 if ($opt_O >= 3) { # strip leading whitespaces $buf =~ s|\n\s+|\n|sg; } # Level 4 if ($opt_O >= 4) { # strip empty lines again $buf =~ s|^\s*$||mg; $buf =~ s|\n\n|\n|sg; } # Level 5 if ($opt_O >= 5) { # concatenate all lines $buf =~ s|\n| |sg; # $from = $buf; $line = ''; $buf = ''; sub nexttoken { my ($buf) = @_; my ($token, $bufN); if ($buf =~ m|^([^<]+?)(<.+)$|s) { $token = $1; $bufN = $2; } elsif ($buf =~ m|^(<[^>]+>)(.*)$|s) { $token = $1; $bufN = $2; } else { $token = $buf; $bufN = ''; } if (length($token) > 80) { $x = substr($token, 0, 80); $i = rindex($x, ' '); $bufN = substr($token, $i) . $bufN; $token = substr($token, 0, $i); } return ($token, $bufN); } while (length($from) > 0) { ($token, $from) = &nexttoken($from); if ((length($line) + length($token)) < 80) { $line .= $token; } else { $buf .= $line . "\n"; $line = $token; } } $buf =~ s|^\s+||mg; $buf =~ s|\s+$||mg; } return $buf; } # Strip HTML Tag, i.e. outside of any # preformatted area but inside a HTML tag. sub StripHTMLTag { my ($buf) = @_; # Level 0 #if ($opt_O >= 0) { #} # Level 1 #if ($opt_O >= 1) { #} # Level 2 if ($opt_O >= 2) { # strip multiple whitespaces to single one $buf =~ s|(\S+)[ \t]{2,}|$1 |mg; # strip trailing whitespaces at end of line $buf =~ s|\s+\n|\n|sg; # strip whitespaces between attribute name and value $buf =~ s|([ \t]+[a-zA-Z][a-zA-Z0-9_]*)\s*=\s*|$1=|sg; # strip whitespaces before tag end $buf =~ s|[ \t]+>$|>|sg; } # Level 3 #if ($opt_O >= 3) { #} # Level 4 if ($opt_O >= 4) { # strip HTML comments $buf =~ s|||sg; # strip newlines before tag end $buf =~ s|\n>$|>|sg; } # Level 5 #if ($opt_O >= 5) { #} return $buf; } # Strip Preformatted Areas, i.e. inside #
,  and <nostrip> container tags.
sub StripPreformatted {
    my ($buf) = @_;

    #   Level 0
    #if ($opt_O >= 0) {
    #}
    #   Level 1
    #if ($opt_O >= 1) {
    #}
    #   Level 2
    if ($opt_O >= 2) {
        #   strip trailing whitespaces on non-empty lines
        $buf =~ s|([^\s]+)[ \t]+\n|$1\n|sg;
    }
    #   Level 3
    #if ($opt_O >= 3) {
    #}
    #   Level 4
    #if ($opt_O >= 4) {
    #}
    #   Level 5
    #if ($opt_O >= 5) {
    #}

    return $buf;
}

#
#   Processing Loop
#
%TAGS = (
  "nostrip" => 1,
  "pre"     => 0,
  "xmp"     => 0,
);

$OUTPUT = '';

sub StripNonPreformatted {
    my ($I) = @_;
    my ($O);

    $O = '';
    while ($I =~ s|^(.*?)(<.+?>)||s) {
        $O .= &StripPlainText($1);
        $O .= &StripHTMLTag($2);
    }
    $O .= &StripPlainText($I);
    return $O;
}

#   On large files, benchmarking show that most of the time is spent
#   here because of the complicated regexps.  To minimize memory usage
#   and CPU time, input is splitted into small chunks whose size may
#   be changed by the -b flag.

&verbose("Main processing");
$chunksize = $opt_b;
$loc = 0;
do {
    $NEXT = '';
    if ($chunksize > 0 && $chunksize < 32767 && length($INPUT) > $chunksize) {
        ($INPUT, $NEXT) = ($INPUT =~ m|^(.{$chunksize})(.*)$|s);
    }
    while (1) {
        #   look for a begin tag
        $len = length($INPUT);
        $pos = $len;
        foreach $tag (keys(%TAGS)) {
            if ($INPUT =~ m|^(.*?)(<$tag(?:\s+[^>]*)?>)(.*)$|is) {
                $n = length($1);
                if ($n < $pos) {
                    $pos = $n;
                    $prolog = $1;
                    $curtag = $2;
                    $epilog = $3;
                    $tagname = $tag;
                }
            }
        }
        if ($pos < $len) {
            $str = sprintf "found $curtag at position %d", $loc+$pos;
            &verbose($str);
            $o = &StripNonPreformatted($prolog);
            $o =~ s|^\n||s if $OUTPUT =~ m|\n$|s;
            $OUTPUT .= $o;

            #   if end tag not found, extend string
            if ($epilog =~ s|^(.*?)(</$tagname>)||is) {
                $body   = $1;
                $endtag = $2;
            }
            else {
                $INPUT = $curtag . $epilog . $NEXT;
                $chunksize += $opt_b;
                last;
            }

            $str = sprintf "found $endtag at position %d",
                $loc+$pos+length($body);
            &verbose($str);
            $OUTPUT .= $curtag if (not $TAGS{$tagname});
            $OUTPUT .= &StripPreformatted($body);
            $OUTPUT .= $endtag if (not $TAGS{$tagname});
            $loc  += $pos + length($body) + length($curtag);
            $INPUT = $epilog;
            next;
        }
        else {
            if ($INPUT =~ m|^(.+)(<.*)$|s) {
                $loc += length($1);
                $INPUT = $2;
                $o = &StripNonPreformatted($1);
                $o =~ s|^\n||s if $OUTPUT =~ m|\n$|s;
                $OUTPUT .= $o;
            }
            if ($NEXT) {
                if (length($INPUT) < $chunksize) {
                    $chunksize = $opt_b;
                }
                else {
                    $chunksize += $opt_b;
                }
                $INPUT .= $NEXT;
            }
            else {
                $o = &StripNonPreformatted($INPUT);
                $o =~ s|^\n||s if $OUTPUT =~ m|\n$|s;
                $OUTPUT .= $o;
                $INPUT = '';
            }
            last;
        }
    }
    if ($NEXT eq '') {
        $OUTPUT .= $INPUT;
        $INPUT = '';
    }
} while ($INPUT);

#
#   global final stripping
#
&verbose("Fix <suck> special command");
$OUTPUT =~ s|\s*<suck(\s*/)?>\s*||isg;
$OUTPUT =~ s|^\n||s;

#
#   write to output file
#
if ($opt_o eq '-') {
    $out = new IO::Handle;
    $out->fdopen(fileno(STDOUT), "w") || error("cannot write into STDOUT: $!");
}
else {
    $out = new IO::File;
    $out->open(">$opt_o") || error("cannot write into $opt_o: $!");
}
$out->print($OUTPUT) || error("cannot write into $opt_o: $!");
$out->close() || error("cannot close $opt_o: $!");

exit(0);

##EOF##
__END__

=head1 NAME

htmlstrip - Strip HTML markup code

=head1 SYNOPSIS

B<htmlstrip>
[B<-o> I<outputfile>]
[B<-O> I<level>]
[B<-b> I<blocksize>]
[B<-v>]
[I<inputfile>]

=head1 DESCRIPTION

HTMLstrip reads I<inputfile> or from C<stdin> and strips the contained HTML
markup. Use this program to shrink and compactify your HTML files in a safe
way.  

=head2 Recognized Content Types

There are three disjunct types of content which are recognized by
HTMLstrip while parsing:

=over 4

=item HTML Tag (tag)

This is just a single HTML tag, i.e. a string beginning with a opening angle
bracket directly followed by an identifier, optionally followed by attributes
and ending with a closing angle bracket.

=item Preformatted (pre)

This is any contents enclosed in one of the following container tags:
 
  1. <nostrip>
  2. <pre>
  3. <xmp>

The non-HTML-3.2-conforming C<E<lt>nostripE<gt>> tag is special here: It acts
like C<E<lt>preE<gt>> as a protection container for HTMLstrip but is also
stripped from the output.  Use this as a pseudo-block which just preserves its
body for the HTMLstrip processing but itself is removed from the output.  

=item Plain Text (txt)

This is anything not falling into one of the two other categories, i.e any
content both outside of preformatted areas and outside of HTML tags.

=back

=head2 Supported Stripping Levels

The amount of stripping can be controlled by a optimization level, specified
via option B<-O> (see below). Higher levels also include all of the lower
levels. The following stripping is done on each level:

=over 4

=item B<Level 0:>

No real stripping, just removing the sharp/comment-lines (C<#...>) [txt,tag].
Such lines are a standard feature of WML, so this is always done.

=item B<Level 1:>

Minimal stripping: Same as level 0 plus stripping of blank and empty lines
[txt].

=item B<Level 2:>

Good stripping: Same as level 1 plus compression of multiple whitespaces (more
then one in sequence) to single whitespaces [txt,tag] and stripping of
trailing whitespaces at the of of a line [txt,tag,pre]. 

B<This level is the default> because while providing good optimization the
HTML markup is not destroyed and remains human readable.

=item B<Level 3:>

Best stripping: Same as level 2 plus stripping of leading whitespaces on a
line [txt]. This can also be recommended when you still want to make sure that
the HTML markup is not destroyed in any case. But the resulting code is a
little bit ugly because of the removed whitespaces.

=item B<Level 4:>

Expert stripping:  Same as level 3 plus stripping of HTML comment lines
(``C<E<lt>!-- ... --E<gt>>'') and crunching of HTML tag endsi [tag]. B<BE
CAREFUL HERE:> Comment lines are widely used for hiding some Java or
JavaScript code for browsers which are not capable of ignoring those stuff.
When using this optimization level make sure all your JavaScript code is hided
correctly by adding HTMLstrip's C<E<lt>nostripE<gt>> tags around the comment
delimiters.

=item B<Level 5:>

Crazy stripping: Same as level 4 plus wrapping lines around to fit in an 80
column view window. This saves some newlines but both leads to really
unreadable markup code and opens the window for a lot of problems when this
code is used to layout the page in a browser. B<Use with care. This is only
experimental!> 

=back

Additionally the following global strippings are done:

=over 4

=item C<^\n>:

A leading newline is always stripped.

=item C<E<lt>suckE<gt>>:

The C<E<lt>suckE<gt>> tag just absorbs itself and all whitespaces around it.
This is like the backslash for line-continuation, but is done in Pass 8, i.e.
really at the end. Use this inside HTML tag definitions to absorb whitespaces,
for instance around C<%body> when used inside C<E<lt>tableE<gt>> structures
which at some point are newline-sensitive in Netscape Navigator.

=back

=head1 OPTIONS

=over

=item B<-o> I<outputfile>

This redirects the output to I<outputfile>. Usually the output will be send to
C<stdout> if no such option is specified or I<outputfile> is "C<->".

=item B<-O> I<level>

This sets the optimization/stripping level, i.e. how much HTMLstrip should
compress the contents.

=item B<-b> I<blocksize>

For efficiency reasons, input is divided into blocks of 16384 chars.  If
you have some performance problems, you may try to change this value.
Any value between C<1024> and C<32766> is allowed.  With a value of
C<0>, input is not divided into blocks.

=item B<-v>

This sets verbose mode where some
processing information will be given on the console.

=back

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=cut

##EOF##
�����������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_backend/p8_htmlstrip/Makefile.in������������������������������������������������0000644�0001750�0001750�00000002537�10343637537�020364� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_p8_htmlstrip/Makefile
##  Copyright (c) 1997-2001 Ralf S. Engelschall, <rse@engelschall.com>
##  Copyright (c) 2000-2001 Denis Barbier <barbier@engelschall.com>
##

@SET_MAKE@
SHELL           = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s
INSTALL_DATA    = $(top_srcdir)/etc/shtool install -c -m 644

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man

PATH_PERL       = @PATH_PERL@
INSTALLPRIVLIB  = @INSTALLPRIVLIB@
INSTALLARCHLIB  = @INSTALLARCHLIB@

SRC_FILES       = htmlstrip.src

MAN_FILES       = $(SRC_FILES:.src=.1)
EXE_FILES       = $(SRC_FILES:.src=.pl)

.SUFFIXES:
.SUFFIXES: .pl .1 .src

.src.pl:
	sed -e '/^=head1/,/^=cut/d' \
        -e '/^__END__/,$$d' \
	-e 's|\@PATH_PERL\@|$(PATH_PERL)|g' \
        -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \
        -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \
          <$< >$@ && chmod a+x $@

.src.1:
	cp $< $*.pod
	pod2man --section=1 --center="EN Tools" --release="EN Tools" $*.pod >$@
	rm -f $*.pod

all: $(EXE_FILES) $(MAN_FILES)

clean: 
	-rm -f $(EXE_FILES) $(MAN_FILES)

distclean: clean
	-rm -f Makefile

realclean: distclean

##EOF##
�����������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_backend/p7_htmlfix/�������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�015733� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_backend/p7_htmlfix/htmlfix.src��������������������������������������������������0000644�0001750�0001750�00000041532�10343637516�020122� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@PATH_PERL@
eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  htmlfix -- Fixup HTML markup code
##  Copyright (c) 1997-2000 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 2000 Denis Barbier
##

require 5.003;

BEGIN { $^W = 0; } # get rid of nasty warnings

use lib "@INSTALLPRIVLIB@";
use lib "@INSTALLARCHLIB@";

use Getopt::Long 2.13;
use Image::Size;
use IO::File 1.06;

#
#   process command line
#
sub usage {
    print STDERR "Usage: htmlfix [options] [file]\n";
    print STDERR "\n";
    print STDERR "Options:\n";
    print STDERR "  -o, --outputfile=<file>  set output file instead of stdout\n";
    print STDERR "  -F, --fix=<fixes>        select which fix to apply\n";
    print STDERR "  -S, --skip=<fixes>       skip specified fixes\n";
    print STDERR "  -v, --verbose            verbose mode\n\n";
    print STDERR "Fixes are a comma separated list of (default is to process them all)\n";
    print STDERR "  imgalt : add ALT attributes to IMG tags\n";
    print STDERR "  imgsize: add WIDTH/HEIGHT attributes to IMG tags\n";
    print STDERR "  summary: add SUMMARY attribute to TABLE tags\n";
    print STDERR "  center : change proprietary CENTER tag to standard DIV tag\n";
    print STDERR "  space  : fix trailing spaces in tags\n";
    print STDERR "  quotes : add missing quotes for attributes and missing '#' character\n           to color attributes\n";
    print STDERR "  indent : indent paragraphs\n";
    print STDERR "  comment: out-comment tags\n";
    print STDERR "  tagcase: perform tag case-conversion\n";
    exit(1);
}
$opt_v = 0;
$opt_o = '-';
$opt_F = 'imgalt,imgsize,summary,center,space,quotes,indent,comment,tagcase';
$opt_S = '';
$Getopt::Long::bundling = 1;
$Getopt::Long::getopt_compat = 0;
if (not Getopt::Long::GetOptions(
    "v|verbose",
    "F|fix=s",
    "S|skip=s",
    "o|outputfile=s")) {
    &usage;
}

sub verbose {
    my ($str) = @_;
    if ($opt_v) {
        print STDERR "** HTMLfix:Verbose: $str\n";
    }
}
sub error {
    my ($str) = @_;
    print STDERR "** HTMLfix:Error: $str\n";
    exit(1);
}
sub warning {
    my ($str) = @_;
    if (not $opt_q) {
        print STDERR "** HTMLfix:Warning: $str\n";
    }
}

#
#   read input file
#
if (($#ARGV == 0 and $ARGV[0] eq '-') or $#ARGV == -1) {
    $in = new IO::Handle;
    $in->fdopen(fileno(STDIN), 'r') || error("cannot load STDIN: $!");
    local ($/) = undef;
    $buffer = <$in>;
    $in->close() || error("cannot close STDIN: $!");
}
elsif ($#ARGV == 0) {
    $in = new IO::File;
    $in->open($ARGV[0]) || error("cannot load $ARGV[0]: $!");
    local ($/) = undef;
    $buffer = <$in>;
    $in->close() || error("cannot close $ARGV[0]: $!");
}
else {
    &usage;
}

#
#   processing loop
#
$bytes = 0;

#
#   Definitions of fixups
#   Some attention has been paid for efficiency in regular expressions,
#   this is why they appear more complicated than needed.
#

#
#   FIXUP 1: add WIDTH/HEIGHT/ALT attributes to <img>-tags
#
sub ProcessImgTag {
    my ($attr) = @_;
    my ($image, $width, $height, $scale);
    my ($Nwidth, $Nheight, $Pwidth, $Pheight);

    if (   $attr =~ m|SRC\s*=\s*"([^"]*)"|is
        or $attr =~ m|SRC\s*=\s*(\S+)|is    ) {
        $image = $1;

        ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
         $atime,$mtime,$ctime,$blksize,$blocks) = stat($image);
        $bytes += $size;

        #   add WIDTH and HEIGHT to speed up display
        $width  = -1;
        $height = -1;
        $scale  =  1;
        if (   $attr =~ m/WIDTH\s*=\s*([0-9%]+|\*)/is
            or $attr =~ m/WIDTH\s*=\s*"([0-9%]+|\*)"/is) {
            $width = $1;
        }
        if (   $attr =~ m/HEIGHT\s*=\s*([0-9%]+|\*)/is
            or $attr =~ m/HEIGHT\s*=\s*"([0-9%]+|\*)"/is) {
            $height = $1;
        }
        if (   $attr =~ s/SCALE\s*=\s*([0-9]+)%//is
            or $attr =~ s/SCALE\s*=\s*"([0-9]+)%"//is) {
            $scale = $1 / 100;
        }
        if (   $attr =~ s/SCALE\s*=\s*([0-9.]+)//is
            or $attr =~ s/SCALE\s*=\s*"([0-9.]+)"//is) {
            $scale = $1;
        }
        if ($width  eq '*' or $width  == -1 or
            $height eq '*' or $height == -1   ) {
            if (-f $image) {
                ($Pwidth, $Pheight) = Image::Size::imgsize($image);

                #    width given, height needs completed
                if ((not ($width  eq '*' or $width  == -1)) and 
                         ($height eq '*' or $height == -1)     ) {
                    if ($width == $Pwidth) {
                        $Nheight = $Pheight;
                    }
                    else {
                        $Nheight = int(($Pheight/$Pwidth)*$width);
                    }
                }
                #   height given, width needs completed
                elsif ((not ($height eq '*' or $height == -1)) and 
                            ($width  eq '*' or $width  == -1)     ) {
                    if ($height == $Pheight) {
                        $Nwidth = $Pwidth;
                    }
                    else {
                        $Nwidth = int(($Pwidth/$Pheight)*$height);
                    }
                }
                #   both width and height needs completed
                elsif (($height eq '*' or $height == -1) and 
                       ($width  eq '*' or $width  == -1)    ) {
                    $Nwidth  = $Pwidth;
                    $Nheight = $Pheight;
                }

                #   optionally scale the dimensions
                if ($scale != 1) {
                    $Nwidth  = int($Nwidth  * $scale);
                    $Nheight = int($Nheight * $scale);
                }

                #   now set the new values
                if ($width eq '*') {
                    $attr =~ s|(WIDTH\s*=\s*)\S+|$1$Nwidth|is;
                    &verbose("substituting width for $image: ``width=$Nwidth''");
                }
                elsif ($width == -1) {
                    $attr .= " width=$Nwidth";
                    &verbose("adding width for $image: ``width=$Nwidth''");
                }
                if ($height eq '*') {
                    $attr =~ s|(HEIGHT\s*=\s*)\S+|$1$Nheight|is;
                    &verbose("substituting height for $image: ``height=$Nheight''");
                }
                elsif ($height == -1) {
                    $attr .= " height=$Nheight";
                    &verbose("adding height for $image: ``height=$Nheight''");
                }
            }
            else {
                #   complain
                &verbose("cannot complete size of $image: file not found");
                #   and make sure the =* placeholder constructs are removed
                $attr =~ s|WIDTH\s*=\s*\*||is;
                $attr =~ s|HEIGHT\s*=\s*\*||is;
            }
        }
    }

    return $attr;
}
sub Fixup_imgalt {
    $bufferN = '';
    while ($buffer =~ s|^(.*?)(<[iI][mM][gG]\s+)([^>]+?)(/?>)||s) {
        ($pre, $tag, $attr, $end) = ($1, $2, $3, $4);
        if (    $attr !~ m|ALT\s*=\s*"[^"]*"|is
            and $attr !~ m|ALT\s*=\s*\S+|is) {
            &verbose("adding ALT for $image");
            $attr .= ' alt=""';
        }
        $bufferN .= $pre . $tag . $attr . $end;
    }
    $buffer = $bufferN . $buffer;
}
sub Fixup_imgsize {
    $bufferN = '';
    while ($buffer =~ s|^(.*?)(<[iI][mM][gG]\s+)([^>]+?)(/?>)||s) {
        ($pre, $tag, $attr, $end) = ($1, $2, $3, $4);
        $bufferN .= $pre . $tag . &ProcessImgTag($attr) . $end;
    }
    $buffer = $bufferN . $buffer;
}

#
#   FIXUP 2: add summary attribute to <table>-tags
#
sub Fixup_summary {
    &verbose("adding summary attribute to <table>");

    my $last = 0;
    $bufferN = '';
    while ($buffer =~ m|\G(.*?)(<[tT][aA][bB][lL][eE])([^>]*?)(/?>)|gs) {
        $last = pos($buffer);
        ($pre, $begin, $attr, $end) = ($1, $2, $3, $4);

        #   add a SUMMARY="" tag to make HTML lints happy
        if ($attr !~ m|SUMMARY\s*=|i) {
            $attr .= ' summary=""';
        }
        $bufferN .= $pre . $begin . $attr . $end;
    }
    $buffer = $bufferN . substr($buffer, $last);
}

#
#   FIXUP 3: change <center>..</center> to <div align=center>..</div>
#
sub Fixup_center {
    &verbose("replacing <center>..</center> by <div align=center>..</div>");

    $buffer =~ s|<[cC][eE][nN][tT][eE][rR](\s[^>]*)?>|<div align="center"$1>|g;
    $buffer =~ s|</[cC][eE][nN][tT][eE][rR]>|</div>|g;
}

#
#   FIXUP 4: fix trailing space in tags
#
sub Fixup_space {
    &verbose("trailing space in tags");

    #   Only space characters are removed, neither tabs nor newlines
    $buffer =~ s| +>|>|g;
    $buffer =~ s|([^\s])/>|$1 />|g;
}

#
#   FIXUP 5: add quotations to attribute values and
#            add missing '#' char to color attributes 
#
sub Fixup_quotes {
    &verbose("add quotes to attributes");

    my $last = 0;
    $bufferN = '';
    while ($buffer =~ m|\G(.*?)(<[a-zA-Z_][^>]*>)|sg) {
        $last = pos($buffer);
        ($prolog, $tag) = ($1, $2);
        $tag =~ s@([A-Za-z_-]+=)([^\s\"\'><\[]+)(\s|/?>)@$1"$2"$3@sg;
        $tag =~ s|([A-Za-z_-]+=")([0-9A-Fa-f]{6}"[\s/>])|$1#$2|sg;
        $bufferN .= $prolog.$tag;
    }   
    $buffer = $bufferN . substr($buffer, $last);
}


#
#   FIXUP 6: paragraph indentation 
#
sub ProcessIndentContainer {
    my ($attr, $data) = @_;
    my ($num, $size, $pad, $prefix);
    
    #   determine amount of padding
    $num  = 0;
    $size = 4;
    $attr =~ s/num\s*=\s*"?(\d+)"?/$num = $1, ''/ige;
    $attr =~ s/size\s*=\s*"?(\d+)"?/$size = $1, ''/ige;

    #   pad the data
    if ($num > 0) {
        $pad = ' ' x ($num * $size);
        $data =~ s/^/$pad/mg;
    }
    elsif ($num == 0) {
        ($prefix) = ($data =~ m|^\n*([ \t]+)|s);
        if (length($prefix) > 0) {
            $data =~ s/^$prefix//mg;
        }
    }
    return $data;
}
sub Fixup_indent {
    &verbose("paragraph indentation");

    if ($buffer =~ m|<[iI][nN][dD][eE][nN][tT][\s>]|) {
        $bufferN = '';
        while ($buffer =~ s|^(.*?)<indent([^>]*)>(.*?)</indent>||is) {
            ($pre, $attr, $data) = ($1, $2, $3);
            $bufferN .= $pre . &ProcessIndentContainer($attr, $data);
        }
        $buffer = $bufferN . $buffer;
    }
}

#
#   FIXUP 7: out-commenting tags
#
sub Fixup_comment {
    &verbose("remove commenting tags");
    $buffer =~ s|<[a-zA-Z_][a-zA-Z0-9-]*#.*?>||sg;
    $buffer =~ s|</[a-zA-Z_][a-zA-Z0-9-]*#>||sg;
}

#
#   FIXUP 8: tag case translation
#
sub doit_upper {
    ($prefix, $body) = @_;
    $prefix =~ s/^(.+)$/\U$1\E/;
    $body =~ s/(\s+[a-zA-Z][a-zA-Z0-9_-]*)(\s*=\s*[^"\s]+|\s*=\s*"[^"]*"|\/?>|\s)/\U$1\E$2/sg;
    return $prefix.$body;
}
sub doit_lower {
    ($prefix, $body) = @_;
    $prefix =~ s/^(.+)$/\L$1\E/;
    $body =~ s/(\s+[a-zA-Z][a-zA-Z0-9_-]*)(\s*=\s*[^"\s]+|\s*=\s*"[^"]*"|\/?>|\s)/\L$1\E$2/sg;
    return $prefix.$body;
}
sub ProcessTagConv {
    my ($attr, $data) = @_;
    my ($case);
    
    #   determine case translation type
    $case = 'upper';
    $attr =~ s/case\s*=\s*"?(upper|lower)"?/$case = lc($1), ''/ige;

    #   and then translate the data
    if ($case eq 'upper') {
        $data =~ s|(<[a-zA-Z][a-zA-Z0-9_-]*\s*/?>)|\U$1\E|sg;
        $data =~ s|(<[a-zA-Z][a-zA-Z0-9_-]*)(\s+.*?/?>)|&doit_upper($1,$2)|sge;
        $data =~ s|(<\/[a-zA-Z][a-zA-Z0-9_-]*\s*/?>)|\U$1\E|sg;
    }
    else {
        $data =~ s|(<[a-zA-Z][a-zA-Z0-9_-]*\s*/?>)|\L$1\E|sg;
        $data =~ s|(<[a-zA-Z][a-zA-Z0-9_-]*)(\s+.*?>)|&doit_lower($1,$2)|sge;
        $data =~ s|(<\/[a-zA-Z][a-zA-Z0-9_-]*\s*/?>)|\L$1\E|sg;
    }
    return $data;
}
sub Fixup_tagcase {
    &verbose("tag case translation");

    if ($buffer =~ m|<[tT][aA][gG][cC][oO][nN][vV][\s>]|) {
        $bufferN = '';
        while ($buffer =~ s|^(.*?)<tagconv([^>]*)>(.*?)</tagconv>||is) {
            ($pre, $attr, $data) = ($1, $2, $3);
            $bufferN .= $pre . &ProcessTagConv($attr, $data);
        }
        $buffer = $bufferN . $buffer;
    }
}

#
#   process all required fixups
#
foreach (split(',', $opt_S)) {
    $opt_F =~ s/\b$_\b//;
}
foreach (split(',', $opt_F)) {
    $fixup = 'Fixup_' . $_;
    &$fixup if defined (&$fixup);
}

#
#   statistic
#
&verbose("Total amount of images: $bytes bytes");

#
#   write to output file
#
if ($opt_o eq '-') {
    $out = new IO::Handle;
    $out->fdopen(fileno(STDOUT), "w") || error("cannot write into STDOUT: $!");
}
else {
    $out = new IO::File;
    $out->open(">$opt_o") || error("cannot write into $opt_o: $!");
}
$out->print($buffer) || error("cannot write into $opt_o: $!");
$out->close() || error("cannot close $opt_o: $!");

exit(0);

##EOF##
__END__

=head1 NAME

htmlfix - Fixup HTML markup code

=head1 SYNOPSIS

B<htmlfix>
[B<-o> I<outputfile>]
[B<-F> I<fixes>]
[B<-S> I<fixes>]
[B<-v>]
[I<inputfile>]

=head1 DESCRIPTION

The F<htmlfix> program reads I<inputfile> or from C<stdin> and performs the
following actions (name of each fixup is within parentheses):

=over 4

=item (B<imgsize>) : B<Adding WIDTH and HEIGHT attributes to IMG tags>

For all C<IMG> tags which don't already have both C<WIDTH> and C<HEIGHT>
attributes (matched case insensitive), the size of the image (taken from the
C<SRC> attribute) is determined and the missing ``C<width=X>'' and/or
``C<height=Y>'' is added to the list of attributes. The intention is to
speedup the layouting of the final webpage.

Don't intermix this with a size checker: F<htmlfix> will only I<add> missing
width/height attributes and don't adjust ones with wrong dimensions. This is
because else the user wouln't be able to scale images (used a lot by
webdesigners via 1pt dot-images).

There is a special case: When the C<WIDTH> or C<HEIGHT> attribute already
exists and has a value of ``C<*>'' this asterisk is replaced by the physical
value instead of appending a new attribute. Use when you want the attributes
at a certain position, i.e. use this variant as a placeholder.

HTMLfix supports one additionl feature in conjunction with C<WIDTH> and
C<HEIGHT>: C<SCALE=>I<factor> and C<SCALE=>I<percent>C<%>. This can be used to
scale the given or determined width and height values by multiplying with
I<factor> or multiplying with I<percent>/100.

=item (B<imgalt>) : B<Adding ALT attribute to IMG tags>

For all C<IMG> tags which don't already have a C<ALT> tag an C<ALT="">
attribute is added. The intention is to both make HTML checkers like
weblint(1) happy and to demystify the final webpage for lynx(1) users.

=item (B<summary>) : B<Adding SUMMARY attribute to TABLE tags>

This attribute helps non-visual rendering of tables by adding a hint on
its contents, and it makes tidy(1) quiet.

=item (B<center>) : B<Changing proprietary CENTER tag to standard DIV tag>

All proprietary (Netscape) C<CENTER> tags are replaced by the HTML 3.2
conforming construct ``C<E<lt>DIV ALIGN=CENTERE<gt>>''.

=item (B<space>) : B<Fix trailing spaces in tags>

Appendix C of the XHTML Specification recommands putting a space before
closing simple tags to help rendering by old browsers.  This space is
automatically added when this fixup is used.  On the other hand, all
spaces before a right-angle bracker are suppressed.

=item (B<quotes>) : B<Adding missing quotes for attributes>

All attributes of the form ``C<...=xyz>'' are replaced by ``C<...="xyz">''.
Furthermore all (color) attributes of the form ``C<...="XXYYZZ">''
(XX,YY,ZZ elements of set {0,..,9,a,..,f} are fixed to
``C<...="#XXYYZZ">''.

=item (B<indent>) : B<Indenting paragraphs>

Paragraphs enclosed in C<E<lt>indent [num=N]
[size=S]E<gt>>...C<E<lt>/indentE<gt>> containers are indented by N*S spaces.
When N=0 then the whitespace block in front of the paragraph is removed.
Default is a 4 space indentation (N=1, S=4).

=item (B<comment>) : B<Out-commenting tags>

Sometimes it is useful to temporarily out-comment a tag instead of completely
removing it. This can be done by just adding a sharp (``C<#>'') character
directly to the end of the tagname. The result is that the complete tag is
commented out. For container-tags you have to comment out the end-tag
explicitly, too. Example: ``E<lt>C<a# href="...">E<gt>''.

=item (B<tagcase>) : B<Markup-code case-conversion>

Some people like their HTML markup code either to be all uppercase or all
lowercase. This tag case-conversion is supported by the internal
C<E<lt>tagconv case=...E<gt>>...C<E<lt>/tagconvE<gt>> container tag from
HTMLfix. Use C<case=upper> to translate the HTML tags in its body to uppercase
(default) or C<case=lower> to translate them to lowercase.

=back

=head1 OPTIONS

=over

=item B<-o> I<outputfile>

This redirects the output to I<outputfile>. Usually the output will be send to
C<stdout> if no such option is specified or I<outputfile> is "C<->".

=item B<-F> I<fixes>

This option specifies which specifix fixups are performed.  Its argument
is a comma separated list of fixup names, and by default all fixups are
performed.

=item B<-S> I<fixes>

This option does the inverse job, it skips specified fixups.

=item B<-v>

This sets verbose mode where some processing information will be given on the
console.

=back

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=cut

##EOF##
����������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_backend/p7_htmlfix/Makefile.in��������������������������������������������������0000644�0001750�0001750�00000002533�10343637516�020001� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_p7_htmlfix/Makefile
##  Copyright (c) 1997-2001 Ralf S. Engelschall, <rse@engelschall.com>
##  Copyright (c) 2000-2001 Denis Barbier <barbier@engelschall.com>
##

@SET_MAKE@
SHELL           = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s
INSTALL_DATA    = $(top_srcdir)/etc/shtool install -c -m 644

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man

PATH_PERL       = @PATH_PERL@
INSTALLPRIVLIB  = @INSTALLPRIVLIB@
INSTALLARCHLIB  = @INSTALLARCHLIB@

SRC_FILES       = htmlfix.src

MAN_FILES       = $(SRC_FILES:.src=.1)
EXE_FILES       = $(SRC_FILES:.src=.pl)

.SUFFIXES:
.SUFFIXES: .pl .1 .src

.src.pl:
	sed -e '/^=head1/,/^=cut/d' \
        -e '/^__END__/,$$d' \
	-e 's|\@PATH_PERL\@|$(PATH_PERL)|g' \
        -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \
        -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \
          <$< >$@ && chmod a+x $@

.src.1:
	cp $< $*.pod
	pod2man --section=1 --center="EN Tools" --release="EN Tools" $*.pod >$@
	rm -f $*.pod

all: $(EXE_FILES) $(MAN_FILES)

clean: 
	-rm -f $(EXE_FILES) $(MAN_FILES)

distclean: clean
	-rm -f Makefile

realclean: distclean

##EOF##
���������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/README������������������������������������������������������������������������������0000644�0001750�0001750�00000002451�11001445004�012241� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������  __        ___  __ _     
  \ \      / / \/  | |    
   \ \ /\ / / |\/| | |    
    \ V  V /| |  | | |___   ``WML is the Unix toolkit for getting
     \_/\_/ |_|  |_|_____|    your webdesigner's HTML job done.''

  Website META Language, Version 2.0.12 (19-Aug-2006)

  Copyright (c) 1996-2000 Ralf S. Engelschall
  Copyright (c) 1999-2000 Denis Barbier

  WML is a free and extensible Webdesigner's off-line HTML generation
  toolkit for Unix, distributed under the GNU General Public License
  (GPL v2). It is written in ANSI C and Perl 5, built via a GNU Autoconf
  based source tree and runs out-of-the-box on all major Unix derivates.
  It can be used free of charge both in educational and commercial
  environments.
  
  WML consists of a control frontend driving up to nine backends in a
  sequential pass-oriented filtering scheme. Each backend provides one
  particular core language. For maximum power WML additionally ships
  with a well-suited set of include files which provide higher-level
  features build on top of the backends core languages. While not
  trivial and idiot proof WML provides most of the core features real
  hackers always wanted for HTML generation.

                               http://www.engelschall.com/sw/wml/
                                ftp://ftp.engelschall.com/sw/wml/

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/VERSION.HISTORY���������������������������������������������������������������������0000644�0001750�0001750�00000003245�10343637577�013625� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  V E R S I O N S
  ===============

  This file lists all WML versions and their corresponding
  release date.  Take this list for detailed reference about the
  release history of WML.

  2.0.8  20011030
  2.1a2  20010621
  2.0.7  20010621
  2.0.6  20001025
  2.0.5  20001023
  2.0.4  20000919
  2.0.3  20000904
  2.0.2  20000622
  2.0.1  20000523
  2.0.0  20000511
  1.99.8 20000417
  1.99.7 20000405
  1.99.6 20000402
  1.99.5 20000401
  1.99.4 20000328
  1.99.3 20000319
  1.99.2 20000319
  1.99.1 20000316
  1.99.0 20000314
  1.7.4  19991006
  1.7.3  19990930
  1.7.2  19990628
  1.7.1  19990605
  1.7.0  19990603
  1.6.8  19990114
  1.6.7  19980802
  1.6.6  19980625
  1.6.5  19980616
  1.6.4  19980323
  1.6.3  19980305
  1.6.2  19980219
  1.6.1  19980215
  1.6.0  19980209
  1.5.1  19980116
  1.5.0  19980111
  1.4.11 19971231
  1.4.10 19971230
  1.4.9  19971227
  1.4.8  19971223
  1.4.7  19971219
  1.4.6  19971215
  1.4.5  19971209
  1.4.4  19971201
  1.4.3  19971130
  1.4.2  19971129
  1.4.1  19971124
  1.4.0  19971123
  1.3.5  19971114
  1.3.4  19971110
  1.3.3  19971107
  1.3.2  19971103
  1.3.1  19971027
  1.3.0  19971015
  1.2.3  19971005
  1.2.2  19970908
  1.2.1  19970830
  1.2.0  19970825
  1.1.0  19970819
  1.0.4  19970817
  1.0.3  19970814
  1.0.2  19970814
  1.0.1  19970811
  1.0.0  19970808
  1.0b18 19970623
  1.0b17 19970520
  1.0b16 19970502
  1.0b15 19970427
  1.0b14 19970423
  1.0b13 19970423
  1.0b12 19970416
  1.0b11 19970410
  1.0b10 19970409
  1.0b9  19970408
  1.0b8  19970407
  1.0b7  19970406
  1.0b6  19970403
  1.0b5  19970402
  1.0b4  19970402
  1.0b3  19970330
  1.0b2  19970330
  1.0b1  19970323
  1.0b0  19970323
  0.5.9  19970221
  0.5.0  19970201
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/INSTALL�����������������������������������������������������������������������������0000644�0001750�0001750�00000014640�10466445307�012441� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
 INSTALLATION
 ============

[Note: Cygwin users see INSTALL.CYGWIN.]

 1. Overview for the impatient
    --------------------------

    $ ./configure --prefix=/path/to/wml
    $ make
    $ make test
    $ make install

 2. Requirements
    ------------

    The following requirements exist for building WML:

    o  Disk Space: 
       Make sure you have 8 MB of temporary free disk space.  After
       installation WML occupies approximately 3 MB of disk space.

    o  Perl Interpreter: 
       Make sure you have Perl 5.003 (works, but perhaps problems can occur),
       Perl 5.005 (works best) or later already installed on your system. You
       can find the homepage of Perl on <URL:http://www.perl.com/> and the
       Perl distribution on <URL:http://language.perl.com/info/software.html>.

    o  ANSI-C Compiler: 
       Make sure you have an ANSI-C compiler installed.  The GNU C compiler
       (GCC) from the Free Software Foundation (FSF) is recommended. You
       can find the homepage of GNU on <URL:http://gcc.gnu.org/> and the
       GCC distribution on <URL:ftp://gcc.gnu.org/pub/gcc/>.
    
    o  SVr4 compatible Curses library: 
       Make sure you have a SVr4-like Curses library installed. If your
       systems Curses library is not of this time, then you have to install
       one of these free variants:
           - GNU NCurses, Version 4.2 or 5.0 recommended:
             <URL:ftp://ftp.clark.net/pub/dickey/ncurses/>
             (works best, so this is recommended to use)
           - S-Lang, Version 1.4 recommended:
             <URL:http://www.s-lang.org/>
             <URL:ftp://space.mit.edu/pub/davis/slang/>
             (works ok, but a little bit restricted)
       ATTENTION! The standard `old' BSD Curses library does _not_ work. So,
       under SunOS and other old BSD-based systems you really need NCurses or
       S-Lang installed. The modern BSD-variants like FreeBSD and NetBSD
       already have NCurses, of course.

 3. Configuring the source tree
    ---------------------------

    The next step is to configure the WML source tree for your particular
    system/platform. The important information here is to set a location
    prefix where WML is to be installed later, because WML has to be
    configured for this location to work correctly.

        $ ./configure --prefix=/path/to/wml/
                     [--with-perl=/path/to/bin/perl]
                     [--with-perl-opts=string]
                     [--with-cc=/path/to/bin/cc]
                     [--with-forced-cc=/path/to/bin/cc]
                     [--with-openworld]

    Use the --with-perl option to configure WML to use a particular Perl
    interpreter on your system. Usually WML will use the latest one it is able
    to found.

    Use the --with-cc option to configure WML to use a particular C compiler
    for building C language sources, except for ePerl, because this package
    usually checks its own for a suitable compiler.  It needs to be
    compiled with the same compiler the Perl system was compiled on your
    system.

    Use the --with-forced-cc option to configure WML to globally use a
    particular C compiler for building C language sources, including sources
    in the ePerl package.

    Use the --with-openworld option to let WML's configure script test for
    already existing Perl modules in your Perl system.  This way WML can use
    the already installed versions of those modules if present.  Per default
    WML installs private copies of the used Perl modules to be maximum
    independed of the underlaying system and to avoid problems when the Perl
    system is upgraded.

 3. Building the toolkit
    --------------------
    
    Now you can build the programs, manpages and include files which form the
    WML toolkit by running the command

       $ make 

    Please be patient, this takes approximately 2 minutes to complete on a
    Pentium-II/400 platform. 

 4. Testing the toolkit
    -------------------

    Now you can partially test the toolkit by running a small test suite via:

       $ make test

 5. Installing the toolkit
    ----------------------
    
    Now its time to install the toolkit's programs in $prefix/bin, the
    manpages in $prefix/man and auxiliary, include and Perl-Module files in
    $prefix/lib/ (or $prefix/lib/wml/ if $prefix does not already contain the
    string `wml'!):

       $ make install

    For the paranoid hackers under us: The above command really installs under
    $prefix _only_, i.e. no other stuff from your system is touched. I say
    this explicitly here, because I hate "make install"'s which destroy parts
    of my system, too. But the amount of installation steps is too huge to do
    it manually, really!

    One special case for package maintainers: If you want to install the stuff
    inside a different location than the pre-configured one (for instance when
    creating system packages via dpkg under Debian GNU/Linux or RPM under
    RedHat Linux, etc), you can alternatively use

       $ make install prefix=/somewhere/tmp

    This will install the toolkit inside /somewhere/tmp for rolling the
    package tarball, although the toolkit is still configured for the correct
    prefix (specified at point 3).

 6. Additional programs
    -------------------

    While the WML toolkit itself is a self-contained all-in-one package which
    comes with all parts it needs under runtime, there are some include files
    (see wml::all(3)) which need third-party programs to be able to provide
    their full functionality:

    o wml::fmt::sdf 

      To use this include file you need the Simple Document Format (SDF)
      package. You can find the package at <URL:http://www.mincom.com/mtr/sdf/>.

    o wml::des::gfont
      
      To use this include file you need at least the gFONT program from
      Ralf S. Engelschall which can be found at
      <URL:http://www.engelschall.com/sw/gfont/>.
      And because this program makes use of an underlaying TeX installation,
      you should be sure that TeX is already installed on your system. If not
      I recommend you to install teTeX which can be found at
      <URL:http://www.tex.ac.uk/tex-archive/systems/unix/teTeX/> or any CTAN
      mirror.

      Additionally when you want to use the `crop' attribute of the <gfont>
      tag (which crops empty edges of the generated image) then you also
      have to install the ImageMagick package which can be found at
      <URL:http://www.wizards.dupont.com/cristy/ImageMagick.html>.

������������������������������������������������������������������������������������������������wml-2.0.12.orig/README.mp4h�������������������������������������������������������������������������0000644�0001750�0001750�00000022507�10343637577�013146� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������  __        ___  __ _     
  \ \      / / \/  | |    
   \ \ /\ / / |\/| | |    
    \ V  V /| |  | | |___   ``WML is the Unix toolkit for getting
     \_/\_/ |_|  |_|_____|    your webdesigner's HTML job done.''

  Website META Language,

                   CHANGES INTRODUCED BY MP4H
                         22 May 2000

  Denis Barbier <barbier@engelschall.com>

  Introduction
  ============

    This document describes implications of the replacement of Meta-HTML
    by mp4h for macro expansion.  I tried to minimize this impact, but
    some issues can not be handled automagically and will be discussed
    below.
    If you followed recommendations on good WML writing, all macros
    definitions are grouped into templates files, and those files only
    need attention.  So again i believe this change has very limited
    consequences.

  How to update without breaking everything?
  ==========================================

    After reading next paragraphs, you may fear that upgrading templates
    will break everything.  Fortunately, there is a solution to write
    templates which are compatible both  with WML 1.x and WML 2.0.

    In WML 1.x, the -I and -S option flags are read from left to right
    on command line, whereas they are read from right to left in WML 2.0
    Thus if your templates reside in a directory called `templates',
    create a directory named `templates-2.0' and replace in top .wmlrc
      -I templates
    by
      -I templates
      -I templates-2.0
      -i wml::sys::compat1

    and create an empty file templates/sys/compat1.wml.
    So your site may be built with WML 1.x, and when you want to try
    to use WML 2.x, you just have to check which templates have to be
    modified, copy these files into templates-2.0 and perform
    appropriate changes.

  What was wrong with Meta-HTML?
  ==============================

    There were several points which decided me to give it away.  One
    important point was its license.  Meta-HTML is undoubtedly free
    software, but its license restricts hacking, which i do not like, and
    make this license incompatible with the GNU GPL (do not ask me why
    a program supported by the GNU project has a licence incompatible with
    the GNU GPL).  Ralf and i were contacted in summer 1999 by the FSF to
    include WML into the GNU project, so this legal issue was quite
    important IMHO.

    There are technical reasons too.  I was asked several times how to
    pass attributes with expressions like <foo name=<get-var name>>
    With WML 1.x, the ``name'' attribute has an empty value.  This is
    not a bug in Meta-HTML, but a problem with our modified version.
    I could not let it work without breaking backward compatibility.

    Any person who wrote macros to show examples of WML code know that
    this is a painful task.  I wanted a syntax which is elegant and
    clear.

  So what has changed?
  ====================

      a. Functions

            MACRO DEFINITION
    Mp4h provides only one tag for macro definition : <define-tag>
    Here is how to transform Meta-HTML tags within mp4h.
             Meta-HTML            mp4h
           define-container     define-tag endtag=required
           defmacro             define-tag endtag=required
           defsubst             define-tag

    NOTE: the define-function and defun tags are not supported, but it
          is fairly easy to replace them by define-tag. The defweakmacro
          is not supported and will never unless someone points me to its
          advantages.

            ARITHMETIC OPERATORS
    Meta-HTML defines the <div> tag for arithmetic division. This is
    a very bad idea since this tag is already defined in HTML 4.0.
    The following arithmetic operators have been changed:
          Meta-HTML    mp4h
            div        divide
            sub        substract
            mul        multiply
            mod        modulo

             GROUPING
    The <prog> and <concat> tags are replaced by <group>. In Meta-HTML,
    <group> is a synonym for <prog>.
    But there is an important difference between Meta-HTML and mp4h
    about the <group> tag.  With Meta-HTML, all spaces were preserved
    (including tabulations and newlines), but mp4h gobbles them.

             EVALUATION
    The <%%eval> tag is obsolete, because expansion scheme is different
    in Meta-HTML and mp4h. You may safely remove this tag.

    NOTE: the wml::sys::compat1 module provides backward compatibility with
          WML 1.x.  This module defines the tags which have been removed
          and listed above, except for defun, define-function, div and
          %%eval.

             PACKAGES AND ASSOCIATIVE LISTS
    Mp4h does not contain any support for packages and associative lists.
    As WML never uses these features, they have been removed.

             ARRAYS
    The <array-append> tag has been renamed into <array-push>.
    Arguments of <array-append> (a.k.a array-push), <array-add-unique>,
    <array-member> and <array-shift> are not handled the same way with
    Meta-HTML and mp4h.  Within mp4h, first argument is always the name
    of the variable containing the array this tag acts on.

             MISCELLANEOUS
    The <real?> and <integer?> tags have been removed too.  They are
    easy to implement, and i will if there is demand.
    The <set-output-radix> has been renamed into <mp4h-output-radix>.

      b. Special strings

    In replacement text, some strings have a special meaning. Meta-HTML
    uses the following strings: %body, %qbody, %xbody, %attributes.
    In mp4h, the %qbody and %xbody are obsolete, but are still recognized
    for compatibility reason.

    Documentation explains that %body must be escaped in nested definitions,
    like
      <define-container foo>
          foo body: %body
          <define-container bar>bar body:%\body</define-container>
      </define-container>
    With mp4h, it is more intuitive, percent signs are escaped with %, so
    example above becomes
      <define-tag foo endtag=required>
          foo body: %body
          <define-tag bar endtag=required>bar body:%%body</define-tag>
      </define-tag>

    Meta-HTML use special &<key> expressions when defining new tags.
    These expressions are _not_ supported by mp4h, and macros that are
    defined with these expressions have to be rewritten. The &unevalled
    key is replaced by ``attributes=verbatim'', and expressions for named
    parameters (&optional, &key, &body) are replaced by the
    <preserve>/<restore> mechanism.

      c. Implicit variables

    There are two cases where ``<get-var i>'' could be replaced by ``i''
    with Meta-HTML: inside arithmetic expression (e.g. <add i j 10>)
    and array indices (e.g. <get-var foo[i]>).
    Mp4h implements the latter for compatibility reasons, but its use is
    discouraged.

      d. Input expansion

    How tokens are read and expanded is completely different in Meta-HTML
    and mp4h. I will not explain what this scheme is with Meta-HTML, since
    i had no clear idea about it. But i will focus on some problems i
    encounter when migrating to mp4h.

      e. Trailing slash in attributes

    Mp4h recognizes a trailing slash in attributes to conform to XHTML
    syntax.

             ESCAPED QUOTES
    Double quotes within strings must be escaped with Meta-HTML, like in
     <subst-in-string
       "== <subst-in-string \"Q W E R T Y\" \"Q \" \"A \"> =="
       "W " "Z ">

    With mp4h, escaped double quotes are used only when this sign must appear
    on output. You do not have to escape them in the previous example, because
    tokens are expanded from inner to outer.
    So one may write with mp4h:
     <subst-in-string
       "== <subst-in-string "Q W E R T Y" "Q " "A "> =="
       "W " "Z ">

    Another example:
      <define-tag foo>Arg1:%1 Attrs:%attributes!!</define-tag>
      <foo "x <foo \"1\" \"2\">" y>
    gives
      Arg1:y Attrs "x Arg1:"2" Attrs \"1\" \"2\"!!" y!!

    Quotes are removed in %<digit> expressions, but not in %attributes!?

    With mp4h, 
      <define-tag foo>Arg1:%1 Attrs:%attributes!!</define-tag>
      <foo "x <foo "1" "2">" y>
    gives 
      Arg1:y Attrs:x Arg1:2 Attrs:1 2!! y!!

    In one word, unescape all double quotes when quotes are used to group
    characters into expressions.

             UNKNOWN TAGS
    Meta-HTML is smart enough to allow expressions like
      <ifeq 0 0 <img src="foo.png" alt="">>
    or even
      <ifeq 0 0 <: print "Ok"; :>>
    The ``<: ... :>'' tag is considered as a single expression. But 
    consider now
      <ifeq 0 0 <: print "Ok" if $value > 0; :>>
      <ifeq 0 0 <: print $var->{"name"}; :>>
      <ifeq 0 0 <: print $var->  {"name"}; :>>
    Give it a try and you will conclude that this is more complicated that
    it looks.

    In mp4h, unknown tags are handled in a different way.  When a left
    angle bracket is followed by an invalid name (i.e. characters which
    can not produce a valid name), it is considered like normal text. So
      <ifeq 0 0 <: print "img src=\"foo.png\""; :>>
    will only print
      <:>
    after pass 2 and thus cause an error in pass 3.
    On the other hand, unknown tags which are valid (i.e. whose name
    allow them to be defined) are treated like single tags, and their
    attributes are expanded (note: with -X flag, it is possible to
    define unknown tags as being complex).
    So
      <ifeq 0 0 <img src="foo.png" alt="">>
    will give the desired output.
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/config/�����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524776�012653� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/config/Makefile���������������������������������������������������������������������0000644�0001750�0001750�00000001225�10744212734�014303� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MP4H_DIR = ../wml_backend/p2_mp4h
MP4H_min = $(MP4H_DIR)/Makefile.in
MP4H_cfg = $(MP4H_DIR)/configure

all: run_modules_file $(MP4H_min) $(MP4H_cfg) ../configure noautocache 

../configure: configure.ac aclocal.m4
	rm -f ../configure
	autoconf configure.ac >../configure
	./configure.fixit ../configure
	chmod a+x ../configure

$(MP4H_min): $(MP4H_DIR)/Makefile.am
	cd $(MP4H_DIR) && automake

$(MP4H_cfg): $(MP4H_DIR)/configure.ac
	cd $(MP4H_DIR) && autoconf

clean:

distclean:
	-rm -f ../config.status ../config.cache ../config.log

realclean: distclean
	-rm -f ../configure

noautocache:
	rm -fr autom4te.cache

run_modules_file:
	sh prep_modules_files.sh

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/���������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�013216� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-php.gif���������������������������������������������������������������0000644�0001750�0001750�00000006265�10343637563�015443� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a_�2�÷ÿ����ØÖàÉÆÖPOUŒ‹”àßçTS^gfvÑÐݳ²Æ%%+\\jbbnEEM99>tt|„„ŠÜÜã••™ììñ}}òòõÎÎÑžž @@AêêìÆÆÈ½½¿xxyûûüúúûøøùááâÖÖ×——˜’’“”•±wxŠ‘£¼½ÍZ\tfhšœ¹HIU°²É©ª¹ÁÂÎ^a|ƒ¥‹°jm†x{”ž¡»§ªÅ›¯µ·ÊØÙâ\aƒ`dƒlpim‹‡‹§€ƒ›45=®±ÅÃÅÕÒÔ⯰·äåì
ls›`fŠdiˆNRhËÍÚÎÐÜÆÈÓZg¥ao°[h¥_l¨;Beiv²eq©dp§$(<^iœcn£_h–y…¼is£]f‘U]„[c‹ƒŽÁy‚²ƒŒ¹u|¡•¼©±×´»Ý®µÖ¬²Ñ°¶Ô¯µÒ¯µÑÀÅÞÃÈߺ¾Ó½ÁÕ	K[N^ Q`£Q`¡Ra¢Ra¡Tc¤Tc£Sb¢Sb¡Ud¤Ud£Wf¦Ve¤Xg¦Wf¤Vd£[jª[j©Zi¨\kªZh¦Yh¥Yg¥/7W^m­\j©!^l«[i¦\j§VcœYf Q]’JU…[h¢ao«\i¢cq­ft±Zf›HR|Wb’Ze–mzµU_‹iu«q~¶uƒºnz®}Š¿en—DJe†’Ä‹—ÈŽ™ÉЕĔžËœ¦Ï¦¯Ø£¬Òª³Ø©±Ñ­´Ò¯¶Ò³¹ÔÊÐèÅËãßäùÙÞòº¼Å²´¼¥¦ª+Œ¿–™¤ÙÝì×Û霞¥¶¹Ã«¬®§¨ª£¤¥ö÷ø›œœÀÀÀklk�	$$"''%<<9--+QQN||yKKI‚‚\\Zqqo443òòðssriih,+'CB>@?;JIEPOK€{Šˆ‚"!21/986©§£ZYWXWUedb}|zpom©¨¦EDC`_^xwvTSSþþþüüü´´´‡‡‡„„„ÿÿÿ���!ù��Æ�,����_�2�@ÿ�	H° Áƒï}°@¡H´ÁÑ"ˆ‹Ap´²dHŠI¡…%	Ô�eŸBbÊœIS¦!K(ÊØ	€D©>5ƒ
¥)¨Ñ¦ð“PÒ˜bªÀê„
s<³jÍêŽMVǶŠå‰®‰YÅÆŽUÆPš‰"éwA —MP†ÊœS†ZVtnMmTÈ›nY³ËZŽƒ–·îÄò–uš,ʲê3µg& -Áe=êPENt0ö!†—JB}
V/+»wï¨Q{gM.[h¾èé3ÇÕ:ݺ㩪#óÎÈw¿¨…-k3z¹u¿Û7ÂE‹T–îèÿÉH®¹#—ÐÐáå
'-ðáS2=¾þÐB”@Å׉¾ýDŒd¢š34e HÑ„'Ð0ƒ
0¤�;ìDHd¨a…;L˜0ÀˆíÌÓÁùˆ@Ì,øH#j¤…ÜG|âÄ`ö
5H#PTr;¤ÐÀ�£A‹IP‚`@áGMàaÇ–\v‰;ú׈±D“7ªÀÁ%˜wüá„LNÌÑåœ[‚¹‡˜1)BH&œƒA‘…}w !m®ÌáÇ¢ÀÁÊ;Zq°OÊØbÉü±%ÀdÆS´“Õ2·LÑ£wرF:Y=3dp©ÿ¶A]`2Þ§è“U2û`àk1ûÌãŒVÝ,±V<ésJg1á¡Ê6Y#Dfò”Í0¾b@=Ùl…
*z蕈$�´C?è0(œ„¸qNVÔ¨‚GôîÕJ<Y)ã!õÎÄ#ˆ�pN]P#Á
=è°WÀ6d¿פ#„@Ò…˜sŽ=ùì±@÷€ÀCÀ„DAÔ0Fa€J(žxBUÔ\38_qÅ&štÒIHôðÃ
Àä°âÇPR€�aCTÜq'CB…)§d}Ê.ŽPMï ‚@qÅ 2@�Á[À
+€ÑH^÷{G*üDë!oF¬—"Štÿâ€4ö -Ò1Ä@Å•AÑÁ
9ß4îøãòØO1(°¢H²¡OÏDã¸7ÕÌSA0n|ǨhÎã¬;ÔàÂÊ'âÁ‰jÛTÄGt­ ¦U?¸ÜBÄ-Á`@
:Ze³ÆïòtM0¸T?Ïh…M+@cÇ	ó0£  >“#Œ¨Œ15tÛx‡Lq‹ù<a 
¬s×ÍS=ù¨ÖN°Q†9Èd¹Ê—-hÁެx#µ“	™�i¼J(å@FÁ…¼èå”óx²
UÄ¡€¨D±iOîÈŠ<b¡‡©ðDHFV&@]ñÄ(  ÿúp‡90¢¸X†Á5EbÌð€kæ'”>ÄBj;š°‹]'Î@%'Da	#Ü	7jÁÚdÑ:úHEò&”нÁO2†?jÐ…uѬ€GVºÑ9Ì¡ˆ¬C›ðô‡D&O…Àƒ#ã`‰"DOœˆƒ#Ã7‰%"`Ñ8šA<° ¡ƒèÃF•q�c
xÒ[M…^„#+ßøú¥ˆ'DbÌ#‹Špƒ$è€a”¥2õBˆDL"V¨M56€´‘x AðAÂLÉ…,4,/ƒ§Þ!ˆ@"lÐD”À‚¤CöØ,PÍz‚l!
‘�– ÿ€  6¨A
VP‚)ù pbàÝ(ºP1È 8`‚BbO{zÀ(‚F%0„6Ø``ðDá‡>ì¡<ZÔ!
ÁÒ–ºôaP€Â$®. A0P	~ñaVt$ (�€%Ø€%} æè”Cìá©OD'õN±q`À&€žŸ
„K@
Z0O˜4–z)„G°¶òƒ¨ˆ ÞÀ6	/¤`D”î�¸ m†˜£,ù�
\ŒªTh•%97¡„ÈCÚ`‘j0%*ðaªõR\yâ
4Èu™5!Ä$Htp $Kð<ñ,…âiPƒlg+Û4ÿ¤Áªø‚%ð`šª\E3²8ƒlaqV¤ƒèLU\Ú:W
®`Å)¦ ‡?Ô$X€2:pƒä@QQ_MúÐV½q'çà,1Søð¼ÈP\á`†
œw'Ë�.¾ðÙFĘ$(HްÌú‡›ãI2ìÆ­£g�Ç}³2‚RÔ",ŒY°ÅòŒ"™2y‚�PîÂ/XÀl#‡áHƒ
œˆñ{Tñï)øh0�‚qÜø¬"ÞÉ1d±%æOSˆñ'JQ†b$XƒaØåuÉ¥|aõq#ÚpI�T rÝCð´’$Æ
­m„f£ã_ÐÂÿvÃÛLæáh]0("@Ä 	¥À@V˜ñJ1՛݉2ò1,žCy‰â¸Ñ*6Á…<á+è0-»¡2Œòi ñsp¡ƒã)f1¬T#
óÚ‹)›•
|q'Í`Â˸eP“DÈJ=‚ñ	ëÆ„|¹F+}ð?Ë5ªñA'&1>|‚AÞñ*ôS
V°aX?ºÅ“clZ&€žÀ oA‹D ²€(NQ†!è£Ñ;)/.‘ØFâ
€†°‰ñhvÂ<ÆRá‚»Ø2ÁƒnÉyÌBÈB8=TqY½<!`Å0Æú8ßf<‹Îÿ‡0Öð	GÍ#+Òhdú�
ûf%´`åy™Žc¸àv`*ž†,á˜FÅ­ Œ%”­ˆú*R¡KèY|+¢uVPÁ?fL×£Ž
_H˜'ÕXÔ£NUˆb
ƒ¸ÇÓK+�€!†HN“B}'íp§A”=”âFÞ‰	8!tz53`è`ÊA,P‚cί~·È¶þŒMxšäaâ°s¸ –HØ="(	>\°ƒö�BȆіvž&†PĈ {"„¢ßAI¤�°Ã§M±@xpLLðáù�>á‘©ês~o�’„Ý‘áŽÔWó`ÆDB’v{YNŒš …úQŽjtÌ«)B~`L/0¬à,?Qô¤(l¢¤�ÏðÀz	Q/pÒ!¦„ݤ3øS3N15	“€	\à]ì”90"@QXM  ð·p'ð& Pƒ5Ø�8ˆƒ°$P<Ä`bð�;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-php3.gif��������������������������������������������������������������0000644�0001750�0001750�00000005745�10343637563�015530� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a`�2�÷��ÿÿÿ)))111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒœœœ¥¥¥­­­µµµ÷÷÷RJJJBB��ÿ÷R{{sZZRccZRRJBB9991ZZJŒŒs))!ssZkkR!!­­sœœcµµkµµc­­ZÞÞsççsÎÎc½½ZÆÆZµµR½½RÎÎZÆÆRççZïïZÞÞRBBZZ!œœ9÷÷ZÎÎJççRÿÿZ½½B¥¥9ÖÖJïïRcc!{{)””1­­9÷÷R11JJÿÿRkk!RR!!))��½Ækµ½c½Æ{­µkŒ”R­µ„s{J”œs„ŒcksJœ¥{s{Z”œ„{„ss{sŒ””ïÿÿ{„„ckkœ¥­{„ŒZckï÷ÿ­µ½µ½Æ”œ¥RZcµÆÞÎÞ÷œ¥µ!1ÆÎÞ¥­½ÎÞÿµÆç­½Þ¥µÖ”¥Æ!)99Jk1Bcµ½Î­µÆks„½Î÷œ­Ö”¥ÎŒœÆs„­9Js1Bk½ÆÞ½Îÿ”¥Ö{Œ½ZkœRc”9J{!9ÆÎçµ½Ö­µÎ¥­Æck„RZsŒœÎœ­ç„”Æ{ŒÆk{­s„½cs¥19RZk¥JZŒRcœ!)BBR„9J„½Æçœ¥Æ­½÷„”Îk{µ9Bccs­JZ”Rc¥µ½Þ­µÖ¥­Î„Œ­œ¥Îs{œRZ{csµ19Z9Bk)1R!)JBR”!J¥­Ö”œÆksœBJs19c)1ZJZ¥!)Rœ¥Ö”œÎŒ”Æ„Œ½{„½RZŒZcœJR„BJ{µ½÷”œÖŒ”΄ŒÆs{µ{„Æks­RZ”Zc¥JRŒBJ„s{½ksµck­RZœBJŒççïïï÷ÆÆÎÖÖÞµµ½¥¥­­­µ½½ÆŒŒ”””œœœ¥„„Œ{{„ÎÎÞcckÆÆÖ­­½µµÆ½½Î¥¥µZZcœœ­ŒŒœÖÖïÆÆÞ½½ÖµµÎ¥¥½­­ÆÎÎïµµÖ­­Î¥¥Æ11R!!9))J11Z���,����`�2�@ÿ�9	H° Áƒ*\Ȱ 4iœ®54(M•©e•–eÒtâÄùÄ‘9cî› UJ‹†,Y²izr$!Ò#‡›Cxüû'ÈL?ŒzE¨ÊÒ;žªbõa§Ó§P´ú%ìÔ«N-@ºÖçÖ«$¼òD¨&I~¨]KÄg’˜õ›…L`§NªÊôí©¸f(9U\Åà)„mœ^hXU¢OÜsðtœ)
5u*&SÞ‚×:õëwʓă׎ñ¢Õé4Q}œx¤ª¶íÚo×þÌI·*>&œ"˜ê›7ji³âô«%4%AihͪŜW4i×\;ß>0;'OÉf}ÿjôiy­YÉ’r_ÚõCOð£EKu÷n*ùÑàw쮽ÿ…× ‚Š&Š(rÌ"‹À§ßC=t|‹Ds2 €‚2DƒRe¢Š;4$V$&¡A
ad“ÌPz¡â�n ¢Þs¾Ýfœ*¯ àÔ�|ô¶Û5Ú–×5Ñ�SB3ADC‘QüD0B6Ì
…ÊFÆ¤Š 8…Ö`¦J$Áí�7ä<å@ ÒÀSl¬rS&<rGª\ÃŽ�N�‰GžLCM( tbÌ4¡02Ër³ð2ã5à!Ó¥`¨¬ÁWWq Ç5­è¸“�}¸vM=8•€(ðpzÕ´)ÿt
2Ÿ|R!—:„Ì)³¢¡. @ôJ®Ü©Ò
ÂzÐ&´'/Ÿ(G-‹ügD+BK/þP7šy³ìA/É 3M†¶+a'-­ÖË£µæQëhÔ·/Ó$­¶ÿIó „ón}ß…|ý‹Ð€©€2	eLJ6waÇÝC×8SL1¦hÂÉ1û1ôÐÉÛ=¯K ôQv¼ØÀD<8±ÃÍ;1’?HB
!3RäØt##²
ISŒUNÀDâÂ’D$уK8áÿ8AS•VÜÒk`‚]óâX7â´ívÛb3$€A„
€îD€oÿc†=¯ R›.°ý¶ÛqÏÑŠ‡œÐ²I
3õ DMT®ÄNA yÃ.´ôCKRÒ”BŠ)A;dÍ;O)ÀΑÌÑÎiî”�+€'8päÇyï$"æ<U¬ÏaF½ÿÀ0ªD§G
7ˆXb8T1(ÔÑ5ÐÇ4øHl;]À
ÙÍÑû�Ú¸ãT�ëÈÒð#±ºNª;)Àü@Ò˜âM”;}ÀB×HÆrz±¢ƒÀ«t¹É…œ‚vcºh…<Ä<ˆbO1G"“£õ­ÃàûÎ!Aƒéx�ýv2“(„åij¢®.©b”	”v‚$ ß%ÿjsu�(€T“ˆo� (À7V±@§`‡;<��y<MVÈà‡­fÁ¢…DçÓÀŸ)Ìà¦ûL ªhB†b m[žHŽ­j!)îDƒ³˜Å)¨á‰Û¼Ñ!¾aˆD¢Ñ‹jí=ü'!|í£¼@†' ’‡M¤“ñD'xA/1š§:x9dJ¸å‰T C^ÓÉ׸fIËqå+{‚¤ÅKò£Ê^~ädÀÜ–''ò l¤â˜‹Ð˜/ò wáGBÏ”OÂ.DÍeh“ñ�Á‰dxa9PÒd°ddC“ÃLƒ®
S@CØSò hL£%ÉhÙu"2ÿhH£
9˜JPª!Öù¥4Pq	JX¢¨ Ù*«AÑL˜‚=Ò%(\‚Œh@#W@šp•'ä LXÁ4t¹”,ãʰÄwæi:6:…€ {&é‹HI= (~ … JLÐB6fŠƒÔæixC"
韢Ã)PÃe 
\dj=è bª1A©dÐú�°‚ª1E">F׺VCpd“Æ÷œòCd‚®½†*ò’‰¹Öµ®¦,J<á‹T
¨B%ê?xà–/„"KDq�t
½ä¢0®Š&°ŠÞðÅU;qä`
UàÃ�¨
ÀÂŒæÿù‚$)Tžp$%Ø / "
Y¢ $¼â8×XùF1ZQÅõ`…OùÆ3Ø�•çn
*Ðj4
qŠ %¬èE’^à
j\K=×`F3"‰¿¥UÆ”"Àñ”Ì£+L€$ ;ÌÉ)â°C˜voT#¿v€ŒS@�	”Dƒ„ˆ…¨�L¡°À!ò•ŒÏ(‚¾D	žôä¥QÄ.�Ý`ÚNÈQŒÆ°ÂÍ­Ç<FÀ×ÿuoª0AtÌhÐ<{@'A䃬…®º;iÀ+ȦŠjôÅ)¨�lw2‚GàÏÞX!VÑ&§8àTž²�7nkÿ£ù\´à…,UTå)ï…m®‘‹	<E�Üÿþ±�öFÞÉ8‘€æªC±}Z…ŒÿQ€yÈ
1,#AˆT@u>ÂvÂV.»,àÁHô?ȱÕÞ I6†˜Ã
 ê yÿxÀørŒMØês	y¥¦½TŒ2£–�`…`é;à#0Ò¨†±ÿaAUsÊ�ÈÅž2‹F,§.
¡$¸sóŠF«)¯Ð…ºñ aC°!Æ(Ô­‹Qø³;õV÷(ˆ‰-ÿcr ·.ØM	Ïèt[Ñè?„‹4"Ñ‚5 1ŸS8p‡ƒû'ûsʆaq�y¢q㸲«S¤G°ÍÊGej¬Jv'ï(“sÑSh܉Î,¨ÒÛŽ½”4®gÌS"Ȩ?ò°œ}ôÑ?à™×,h¡I~.ó#Ù-ÆSžkMƒ¦™d%Ï£ËhtO›W÷Î"(©pSf©¼º@
U–Xfï™ìD‚ʾû] *{å)jñ‰<Ø_ç1y*ÀÞKOD„à•¸jiË[Öb\µÊ|­løóôB—ÓØ§Ü/îø•­†§è…ÔÉú@ªþ´ GSŸÑÛ4·_O@��;���������������������������wml-2.0.12.orig/wml_misc/logo-apache.info�����������������������������������������������������������0000644�0001750�0001750�00000000067�10343637563�016255� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Apache
Apache Webserver Project
http://www.apache.org/
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-freebsd.png�����������������������������������������������������������0000644�0001750�0001750�00000011630�10343637563�016275� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���«���@��%²Gü��ôPLTE¾¾¾�!*%4%#�P$$0%�R% )&)'�U(0A*�Y*"4+S+N+'9,�[-�^000001)=2T2@26E3/@45$36)?8(78F\90@90H:3J:6D<H<+
<=O=0#>5H>>&?8J@IC6IC9MD=VD>DD>NEHEEZF3:G:HEHHOJ?WJHaJc„K+:L"?L(?MD]MMbMS`OZoP@Q?MQI\QnR7GS#=U'@W/DW33WJTWM`WRYX|¡Z+=ZB%___a‡§g1=h]Nhigk5Al=LqETqNVsrZt(2u&w9ExH-yœ©zV||]}0;‚‡F@ˆ;F‰]M‰…yŠPBŠ`gEŽŽˆmD”‰—<F—e
˜|™X3™˜Œšp›L�›]�››� i£££¤"-ª08«cR«v­¬«®®˜2¯FN°‰°£O°¶¹²:B²±±¼¼¼���¿„�Àº~ÅÃ@Æ…Ê‹ËʶÌ)1Ì;BÌ„ÍmHÐ3:ÐПÖLO×DG×–ÙâwÛ¦â×#æÈêµ	êÉ�ë=AëEDí¦ñ¦ñé€ôMK÷DC÷TQ÷ñ÷üêøåü¿�üøýûýýþþÿZWÿkeÿ°�ÿ±�ÿ²�ÿ³�ÿ´�ÿµ�ÿ¶�ÿ·�ÿ¸�ÿ¹�ÿº�ÿ»�ÿ¼�ÿ½�ÿ¿�ÿÀ�ÿÁ�ÿÂ�ÿÃ�ÿÄ�ÿÅ�ÿÆ�ÿÈ�ÿÉ�ÿÊ�ÿË�ÿÌ�ÿÍ�ÿÎ�ÿÏ�ÿÐ�ÿÑ�ÿÒ�ÿÓ�ÿÔ�ÿÕ�ÿÖ�ÿ×�ÿØ�ÿÙ�ÿÚ�ÿÛ�ÿÜ�ÿÝ�ÿÞ�ÿß�ÿà�ÿá�ÿâ�ÿã�ÿä�ÿå�ÿæ�ÿç�ÿè�ÿé�ÿê�ÿë�ÿì�ÿí�ÿî�ÿï�ÿð�ÿñ�ÿò�ÿó�ÿó#ÿõ�ÿö�ÿù�ÿý�ÿþðÿÿ�ÿÿd£¬”���tRNS�@æØf���tEXtSoftware�gif2png 1.2.0,–¿Þ��/IDATxœíZ{<TûÚŸr]\rÉÌ©„fpªaöΰ±í¢&ƒ°CjpìÍ«Mïaä‰Yö4É–rL"Çe(ÚË¥’R**äÖÅ5¹¹„îøçý­AÄ´M¥³÷ûù¼ß™Åò[ÏúÎw=ëùýžçYƒ
Ê¢v‚†y[¥&÷~òˆ9#9·ë[³§«Œ Ã‡ Pyu3äîÜlz 
¸÷zk‡Ûñ~¸ðJyMSçÀë1YgÒz&Œ|G
…“à¿=wÔw—ÜÄÓ£Þ^w;úíR&ÕñÅ]¼YÛý4;(eìý¨"„/­¨iììù
—7¶T|ʶ¸¬²¡­gømæwkÏäÍVlD]ç"„RØD…»(W×ýnGÕgÁ0Ì€a,cà™W¼GELÝøáéÈ4Š.•]¯¨ª½ßü¨ËÝ{d‰Š¥äØÞÛ’°J>Ë|€ðUô ¥ÖûüÅ9Bæú\[>ò/p®Þ¸UP×’Ýûìù‹7ïr3¨2äð¼¬M¯ÜΙ³°ÒVÀ`¼ÉáÙeDÒòS`,¼©µÄ7’ÌF¡lCxGTRVekûͿ㷮dL(Ãp £ˆ
n1,5㞆Hòb—ÎŒreŒÔ6šˆ¦GL!,ê‘ã¡YYû ¹½‹=èINÝoõám›ºvóÎ݆ÆÖާAC/ÕMÖ²çØB“¶çãJ!¨*j	é┚±q®-	¡ ÈJÞS:I¾­Ã¤8k­DŠž¡@Þ`q¿Â¹A¢Ôa¡öî‘A;zf+åP;[«Ùzã
/^¹VQUs²ñÑãÁá×oÇRi:ñ«²Æ~$̹¶üó%¥7oU×?hyÜ
Bòí»Ÿ]$È䕹hŒÑ¡ú,Œµ.õ·Í†l޵¢ÛaŠ‚i¯&«`±†ç¬RÚsPY8Vÿ=!Q!;ÔU	ŒÀ­¥F«väW#j³­­ä’%‚¼!¢:faŽO€e,¡²˜gkI“a
´Qöµó‡áåË׋®ƒáq¿åëÖÁãð8xû±ámãð¯s^Ú¿~±Y÷¯YÇfPGC
Š
Šü4†OCÒ’ÐX>T|Ú#çzyEMuuMý½-m;»ŸÚù
°Õ#ÒÓ£,-
‰ÛÇfa¦d”Í"‘ð‰3SA
"á5nVÈÓH\ <	O:ÕÙÍ´}•½ý­Ç*šÓŠÙ¤siÑiìæ1”P4„Cr¸À®^ÇVJ'U×ÖßÃ6·>z,íÞÓ×÷bäe„NÌÀÍÙ™®#íDAäI[”4HJtýÞ¤²ªÞj”¬]øð¾ç#/ß¼2Xí•y\ËœN?;?mø¡xA°îqî‰PppÚaˆãޝ–=Ð ÛÝLð“íé¬oß¾;!cHtØ£5µ&æ…†ârÒÎ@AÑÅK—K¯Þ(¯¸]u·¶áþæÖöÇ]O{û‡^ðYÇÜã#Réd*Q[]gõ&ËÎú˜Ú٬׮O°Ößolnmï�¬ý@kVddÖ»Ü
;¨’¹cYÖdÉMäísÂ§àˆ½
•njjÁ�“‹¥«îbF°ø\ªÙ8¤fdãËä²·7·W[(Òÿƒðý
œ*“¥¤àõë³µrj×2@¬Œî*ƒEŽ`7jñB‘2ÏÉ…„ÄjkÁ,Iÿ••&Ãvîfî<´ßÁÍ)%^·@¤–+o²ç;‡Í8ñ…beþÊÛÍuõ߬*·à�X¾vh%ùQl]Œcá…„ì J
¼W0†a·±„a&cÄ•Á_LX°ŠÀÖ"‚“nt†ÄN1&ÖME}‘ÀO…•‰x|ݸÇ6uðºåìuã0ø=Îöƒpd8,(Ý:DdúëEuSÕ‘œu(hR+ØØ0"#£¹Wó´&ƒßšï-ähîKºƒf°‡ÙÖ¸«ß/ÓicDjjбúz«±ô^/‹
2kQQ~þ14Ó 1ü7Èá1Å—àœk7Ê«êªjjëL®ßÞg†tÕÒS:Ñ´6‰ÏÎ^Ó¬˜ñÙi†OZx¡8&æjÙÍŠ[wîÖÖÝ{ؤvus½ƒ¸#/³¤TUõæÎfû¢@öž‘j<±(¡<€‚Ç&P 
E>øi7·÷äïۇ䞒TÑrМ	øMàÓR‹ÎË––yBÉUÕ”ú�“¦Ö6E“îl÷߸Ù.çg­;‘’A†5
Iü6@q×�½ƒ­|Ò%ÙÒkœ�ùªšº{Á&-mí'¡ÁgýCÃ/"=Wˆ©Ó¼èÎtËHŠHgKuA>T˜†½,»…‚¨”… ‡& Øè”îá´-¹ˆôxu3ýÙ! Hëa~³ŒD’F°$’lŽlÙdéʪ»§¤‚MÚÚ;º¥‡û‡_¼~C”ÔÊHw0£Óç”q‚üÊg•ñ•/}©¤´TöúÍ
ÙäúÚz¥&?PÑNU0c8+SÂjœÜ”ÖÜU.VÖÛ°zjL²ºA¶*ipHeÒ8Ë’jœ<èÞ죑pðo Ø~ùú
(`¶*èk+Ä˨Oi´Îtâþq¼¦Å%&•–^¡ZYœP}¯ùÑãö®þ>~Yôúí»wc2™ûõe¼tåvs³òò¸«Ì<;ß,È/8_\råjÙŠ[•Õ �Ðʸ½óÉÓg|¯©»Ï¹ð§êèêàÖ6®Áeqóæ[SµÖÍŠ;ü
nb®>é}_æž‹R[±ÄLX»V×å,J˜7ÿŒ-<±¤tb®©
šøËJ*õ%×ÈRVÕ'då±W+(¬µQøH´=äò´#úü�ÊnCòš/O‡¾<5*]Ÿ`ŽRm´20#›Ó¿˜ÀÞÂÞÔ”JÆDõu¦“m„{Ä2?ò@1kcco¾@¤�èåÛÛÛ©1®ú|!XLÕÅa3Â>fùg#ÐÕkIà‡CaûW}~àKöM¼Ôbk Ø@œÈxÿÔÑq¿¡îŸ©J X®þ2DÜæ{hÆkÕ×V‹¢÷Ÿ%µQŽ1ïÉÿa„EÅïô	u
9ª­ºƒf©§ºt•k|,¨°pÏÈ,ÖVÏÍõÇqÛá�º ÿX×ÍR+ÅÿrËrõõÞÉãáíÚ»ÇÖÖXe©¤‚Ü’•‹ç?@€(ôU*óKÙú³¤2]õÅþaiaÀãñì]ãC¶n¦q*K¤`e!Ó4Ú5,†#“ŰÃ0íÐÍÃt´İìô:k™ŽŽ|Kô$_;ß
=CX|ï ¡ºU\âo ¬cc½œh:kÅþ ]œ£UDY†™06ÌØ 68ZR„­Gðc Þ�.ÇÚvÄ'µÂÑâp40'ûIÆ'¼Ž†lU]ÌäñŒB⣼l—ªÕ	øZð£Z'®ËfŒ#š¢ÈrMØCl¬pÖD.zÀ{Áî1MøtþÿÀhûkæ{À19¢Û–oË)É)»~ãfyEÅí;UUwkjëêïÝ{𰱩¹¥íQ{GGWWwvϳ¾žÍçŽ{EwVs
	‰ˆŠ?êµSE]O'•õnN+ô±‚pR+‹~tÙçc`Ñ‚¢4M0°¨í>QôØi0²
\_+ÙW\ü,š“k–kÂÕ?Á1“R€Ô¦¦æÖÖööŽN õ;ôgîÀH–·¿¾æÑãé©'RRODíQU§oZ#ÉþC¥+^ö³‚QPpþâ…‹W<`8)çê5¾Wo¡^­®©©oh¸¤6·´¢^íìêîbGfJðá>Š\´""jÿ	uš6Q·t{î<RçÓzø=ÒKÍ/,:Ÿx˜Ãáãp’øp+ù`pÀáS5u	S8ÕÖŽ@÷“'ìÝ¿‡zs‡G^‚¶êŒŠ¨ƒƒ±öJ­%âsÛëO÷«„öt‰žù“Zt¾ð°4TZ– }W~Û
­©þ`]ÍÏ¥­­íd‚³,dy
„ª_øOAŽ¿G²Ã}âcE‚¸§V©:¹øGŦz¯0§½þt­X~W›–(PiAaáùÅ% õêµ¥"2©¬ª¾[s ®þ¡dÒØÜÒÒÒÚü³´ôÁ'=Oz³_q³AS9²[×IWfCÐ
׌Ԍ”ã'¢¬¾'¾Z ­–!qßJcÝ!,„$áwÄ(aƒ‘|O|pÜ–e—P­îËH	·«8ŠÞ=8!¹¾þÞ}?iÐöñW�dÙÓÓ××?ø|hxäuöŽséÚ2:ZþÇOìÁ©‘µôèTõùf–Z!J\\œ›<ØUÄ‚˜ML”þìÇIc‘-Ðá¢ó¶@¥@kNNY²:p§æ€¥’¬,Dºß
ü
¦Uû㎮
Ö½÷Yÿ�úÄj–¥îÆM	±¨Œé)^fT*u“µê—Î- õ»©PD¿.˜—ˆ(bƒ9qNÚå«ilÙõ›åå4,�5µµµ§d¡„&?¬	X€Ôî“Òò`]|>Ì—úæÍÛ³¹Ü
"2GY©Èf:Z¦Zá³¥åäò·O‹WdJ+’¨ð#qÂâÓŠ/•”$_~EתYùêRrMm}#
xØbõjg¯;ä3Ø`hhdäú`à]ÞÙõ2«õôÈ:
rbD=ƒ¬YZÙ?üvt¿—³‚_®PZãlñJ´`þî%üwT¤§Ò2<Þ³°‰#ÉâñΕdŠ’‰‚§WWU&P”4(”𶦦ðeJJ
oâwª«·¯€«/§¤¿9d¦¸É¬P_I\a¼?Å@O%2+o†ÔÜHSvîth|f.ÈG€‹Å—._.-½v­ŒŸnÝAW€ÚÚúÚÚûh^mm}ÖU°¬>íéE`è}�ð¥Žív«@úQº¹Y,c©»‚`¸v
y='§"‡Ã-%š¯áŽÍÿ™ZÁbU4%u2Y€«uõ
Ó%�€÷RŸñïÿ¤Ô<®Ã¹ŒMj¦ýÍMÉQGOÁÀj#ƒ¾›ÍîÌ=3{²}–Ö‚‚"¾WK®ð½z}F^­kàW+ ¯¯>îD½Ú‹Àói©ïP©v¦g:›­Ñãf±
t¨fä%KדÍ	çæ}‚µý÷¼ø'úšÆÞîÛ^Óøeß/Óšx~=ÂÝþ_¸PK1NA<<h»—;Yj“µÌÍÌ¦Ææ@ Ö¯æ(a¿Ëžú[hh¨“žš½…ãûcºÎέèT5dêšO¨c¿"¢lvÙÛQM©tª©áþƒ–0©’Æ4gG*ÙÔžþ5þGå3ÁbYYX™SÔ¢1ÿÀŒŽŽò0»v™Ó©T#{ý?[ž bZ˜›cE3}-ÔŒŒŒl�ÌÍÿâ1™Œ]fó/®ósð¿$@Àš~7����IEND®B`‚��������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-linux.info������������������������������������������������������������0000644�0001750�0001750�00000000063�10343637563�016167� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Linux
Linux Operating System
http://www.linux.org/
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-php3.info�������������������������������������������������������������0000644�0001750�0001750�00000000066�10343637563�015705� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������php3
PHP3 Hypertext Preprocessor 
http://www.php.net/
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-apache.png������������������������������������������������������������0000644�0001750�0001750�00000004542�10343637563�016110� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR����� ��VGÝC���PLTEÎÎÎÿÿÿ¥¥¥„„„ssskkkZZZ!ÿBÿ1�½RÞ­„ïœBÿ„�ÿÎÿÎ�ÎÎÆ½½Æ1�ÿc�ÿœ�ÿï�ÿçJïÞ{ÞÖ¥Îÿ�œïJŒÿ�c焜ïRcÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Mû�3���tRNS�@æØf���tEXtSoftware�gif2png 1.2.0,–¿Þ��íIDATxœíYz£*å‚Ý®IRÞÿ-Ù3ƒšØ$mÚÍÞýùzÚ¦ŠŠ3‡aæ@„xF¦­Ö:g«Euý–賩~³›6åâ.;眆 ’H
]¸Ã~I#¬0&h{ý†ìº˜®_›ÐÀ†vÂ;Ñ‘
!‰£hDóê6y§IW ³ó!èTgØ*sôS>îFcºLp^uŠ\r{/Ä�£Ùð}"%!^’hÈøæ~ÿWÈõÉxµBňø`2FœÿóçÝ]€¾.„œŒQ4¢Ê=˜ŒnìxuóɨhR=¦w}[²Ìc0Å<˜“ÿx0ñýÕhÚºIIÊSh—Õà½ó¥ãÞëáo‡¡i…œG“KYm%’%&‹¬ )?ÙŠ$+‰+úÑV¨¬•ïBŒ!¥Ôd‹qFqËh¦KiÑ"xÎ#k¾™Ž>«7Á;¥ÓÚ#ž0KrjÚúVöÍ?‘ÌÞ°"¥ˆ$Õw޳”sÞw¾ë»H­}v~_†nŸ¿pØÆ4ã (z¥¹áÜö½qÅŽó"¦P€Ž½×yJín·%KFš){žq¯L•h(F$J§š3œLx‡a•©ëh2�‚ìvö÷ÎOn:Ç&,„0NWèè°°p\œ¿ÂÂóÛf|á÷BÊ[ù‰ÿýB
r¹Û9@
¥#¥‘­U¢B*$«*´©UÞPrŸ
ì/䬨’J39@ç*K£4N+­+´2ÉɇZ ,Þ!‘…:2"Ñ{rU!ël’²1B))%“’¤Äc
$þX-t=j„ÉI#/©4n…x'ªCf²/RWÂO¹°ó:5¶¾ñ"ûx
¬µ±ï»“8aƒ$êíËá
(äÞ€QðyÑÎ÷Œ Q·×YÜ͹Yœ*CÉÉaIÎKZ¦
1Îiù©,iùim‚ÕMÂzE‰†a²ÃQlt(’M»îC]rÎÎLÿi„’°Ô‡¹6¥4^³à&R'ˆªÉ\ñj]†Šc»ÛN
ã¥0†p8·€1®«£¸JÀ‰	EEšÁ„ÐÐ@È*XÐjIúÀyþ߆0ãå'88Ùam«1’%1™•’'çA…Û¯,XôI9º/þ1Ýý…/ü<N‰³ðꦈöõª§®A)ÿÀò ¨?Y)+jÎ$Mݶ!à€$DÅ2‚•‚’´í–
¹H$ípFd+ªRVøÙRb­Eé®ßãá}PÆ(ûßfS	‚¾BAÐÄDÓ6u-9H¨åŠü“	I’“Óm«Ñ[“¾Ä¤£Vq�çAÂNƒ†r”DÐOuš¸@{ªë–-ýòRÑÈÒðÊŠ€öC$i=Íó8€â”M¿vƒ•ÀF¹E±j…RëBìB…B
ùÚ|«[¹]¥õ*JÞ”•ú/ �€ðØCML0Þ‘tt…·�ž'miro÷ƒùã(°Â"#FR†—.“vŸd³ëÀ®x{R„Ò°®¼µ¸™€‡‡uKw‰a<¿aدºy>œ¶gÊNÕüÈxVâ÷‰„ñÜòý·”2óÐ*VʬØû"Ú½Ë'8J¼ßBzºÜmJtÔµŠ×Èp¬¯ÝÊ£²6œÀ§ËåEyŸóRÜ^ðr¤ó²E+‚t¼à`þ^…7¯žÖxƒÆˆ¦P¬ØÓf#!}·qYçàbATm‹…Åî|­iiy!x#ÎùSû[Œä<kfù?c<ŒK4×qÎÁ=ðX?i¢+9d€È„Ä0ÇÇÏ™Þ^àñwu\ZtÛN4ŒžWYt8=Üœ§Õ׌Ã
Çã<
%>Ê0_r0À§ö1‘,U­¸Ï4­*cW(‰ô
	ˆ!’ÀΆâ`l™ƒfÁ0‚>FúÅ
'†Ëw1üȄü}w.4«o/ç…ÀæÂC`)Äí¶‘Æ×pëE#9<.G+ÌcúL^­º{>wôé
àáþ%ü�‡½Ø;ÃK»#����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-wml.png���������������������������������������������������������������0000644�0001750�0001750�00000003402�10343637563�015460� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���d���2���뎌���ÀPLTEÿÿÿ™™™ÿ��ÌÌÌÌ��™™�™™ÌfffÌÌ�33fff™���ffÌ™��ÿÿ™ÿÿÌÿÿ�™™f™ÌÌf™™f™�™™3ÌÌfÌ™™ÌÌÿÿfff™3ÌÌ3������Ì™�ÿÿ3ÌÌ™Ìÿÿ���Ìÿ�������3f™���ÿÌÌ3333ff3f�Ì3�������ff���33�����3f3ff3™33���Ì33���f3�33�™ffÿ33Ìff������.oÛ½���tEXtSoftware�gif2png 1.2.0,–¿Þ���tEXtComment�GIF SmartSaver Ver1.1aØí<:��°IDATxœ½—oÛ6€y:Ë´?â$JœX]Âe€:Ôa.ÿÿ¿Ú½(É’ÝnëV¶D‰âÇ{òèÒOhî'CÀ9)¡ã–Òˤƒzñ)ïl�7l.Ç_ËEÿÆt<§a!ð¨À/	 =”ïéG7yZúÉò„ÀãAæW ,E�H–âò²¥‡à„él¶$ê,£Láõ× ¬/p¼@êÚ¬Ús ÊQâõMÂuÝÚ.ªh8éƒObHd*’U£ñü|7_6ÙDΑáQ�=Ãwn ¡`«.ö…žá“ÑQDw	òÿµŸéÚÓ£{*¾>¾Ý‹=Z‘¶V7¨7ÿºAï¾Èíx,ìù¬„ýnVï÷7åAl‰ï_ŸŠ^ó_Öä­3i«ÕêC³ý :÷„›Ü‹_Ëe|)®gû”¼ÓX’Ï4Mþå\SiyʈsPDYîÈW6)Ež,\�ž?A^Š>B)“_fŸˆÀ>߬Ic¾à\�DÓ¥ƒg¢<qúò"yÖå€R¥µUJqõýZòbÒ”R›l1çá0ðØ¾º¾¶‚,—-eïòRãRܤ9…’‰J 	½§.rò¦;fyç³FÏ!ïï9ÅOrz5Iv›!5ëÔlMå‘^2s
Ò7›p
„‘(yÏY†
n‹™ò{Ö-9¦š¦h’åÛÉ
ò2ŒðN]GƒD^”û²ÌVi˜Ð4ÍJ
ùßr&dÝÊîeñ‹l’ žqkI$}5¤ûTór×,ÅšXLCjK [A]Xl‚—mÒ:pœÊ³y½'Æ|ºE6êaU’q­»Bß’#?–ÞЉrœd»aAÄ&b§²ŒsI'¸ÙàCù�›ýæÀ@Ìq⤯½Kê‚,Ê)Üù?²I&ËæÞV…qW³›í([þ­|ŒýQ
yl~Ù‹“××ûÆvÆmR7£4sÓH Jt›cik·GP?„ô"Ú:Q,d[9˜›Â5žû±¥•»É9åÈÔ%A¢zJh2¤Ô¼ÅÅMïÒêÆæ. âă,|Н<s€U2Av-„+''Þä|oÑ)C>ô9CŠI»¡Ø¶u²ÄÕÄ›²…Ü”R¶I0Hö’â5ØÊ[5žm‚w¾¿1*Cz³¦›hسI¯òT³ÀB˜"Kûï—r̨	r˜nu¥ã
Ü:u‰k¥N_ÄýéïŽÅò­˜ø·¢Ú|šÍ.	"Ž©ê µ[]9°	ïœ#Òˆûèßîn'oÏÏ·`;ïÁ±ä(±rÒú2\€°ÎnéÑbqëêCÝaêÕz-EÅáÐL{Ÿ!휉$H_”dZM§jô_íZiö>ÖkfL]NórBAç/@¼‰ÚP@HŠEE/
‘º‹³/éªnFþaw'ÍéCÌy«Í_Cu-ž«J)¾<øÚ ‘ ÔÃó¼7j×ÞŽÔUUóÏŸçD©ÜÖmY]iÖS³(Ÿ‚ø§m%ª;;(XJá“T—$Ï![d�CX±e3Åú¹„”#–Z¸|àY á"ÅKãƒljƒù×DB‡S·Ÿ‹UH´~<l»DdÁÎ;aÞäµ+W`Åþ`gØ1¤z&Èœ+^†Ìçí« ‚û¬)W-¸[H°|¶„®n9Wª(^›îB@kW$ñZô™$œÿ1ûÙÈ…Õ¹ªéÂ÷^кÁËé»SëÆlÂyÒšGù1Ì_‚ …	Edoû<?òÙ!ZÂ1´Áz	ÖÅ~Ý2€wqÀ/Ø:½Ài‚ªÓ¨6qž­æµ|§õ@]>q#Ý­|þ÷W"žF±=<Tþ›q'óì'ÇVh„þÞ;†¸5«lΫùnå#
	£aa\Þ+1QÅ÷�ÿ¬ëmôà[øÚŸÕT.ßÌ����IEND®B`‚��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-openbsd.png�����������������������������������������������������������0000644�0001750�0001750�00000003021�10343637563�016310� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���������&rmz���gAMA��±üa���ÕPLTE��„��ŒŒŒ��””��œ��­��µœ¥µ­��½½½��ÆÑ��Þ��çÞ��ï��÷÷÷��ÿÿ!!Œ%%˜55 //µBBœMM°hhµ''Ñ&&í!!ÿ55ýssÁ``ãJJÿffÿ„„½ŒŒÊ””Î¥¥Î„„Ö„„ÿŒŒÿ””ÿ§§Þµµî©©ÿµµÿÆÆÞÎÎçÎÎïÆÆ÷ÆÆÿÎÎÿÞÞÞçççÖÖïççïÖÖ÷ïï÷ÿÿ÷ÖÖÿççÿïïÿÿÿÿ¾'_¼���8tEXtSoftware�XV Version 3.10a  Rev: 12/29/94 (PNG patch 1.2)Ý.I��IDATxœÍ—}{šHÀ—hÔëÁi°˜¬bA‚¢¨GL6æIC÷û¤Î̲ Ÿçž\síä–Ù‘ù1ol˜ø„ýj€ŠÒd7sŸs>^ßý¸ð@VI©_¹
Æî:}
«VËäðç%M¶àüÒÓ[=�Z¼—fvÎPº~†—IJÚ§cú…Ùk²³‹€¦°Fæ–@M<伯5fIâÎÕ{q¢.ú1üù´E3„Ÿm>wT¼buÝ„Åø¥Fsf£:»„õÅ{qòÈ(�¨Æpµd¸Ï%Mi%^?!ô×
M�¼ÝŒs¼™üWÒ*)^­ŒvÓ#ñ‚Ëfv@“Aš¸ÅÖòÒéÏ¡‰¤¦'Ý	÷ˆFÌpÝ= Yÿ‘8 1Ãì~1ßC,C>\äOƒÆ›Â®¿€¾#ƒt¿°(ýظ܈-•¬›ô1Ü
šWtϵ°Bó…”<ØÈëÕ“Üòëqî/sƒïs¹¸ÞWü¬qÑcƒÜ1g@ÏG4‚v?47œ•VhÆ[­ONþf^»XTàx ¹/8–þzHÈÀò§^Ë*Jü´ƒÕ„1­7¾ª”I »£|‚8t³S4ôr=[¥~J·NJú>sÿØeV(9{=YaJèöxàOXáGŠáE2{v©³ÓS47ŠfHî‹.¢ÛÎL_A®-2¼´B¹¡-%w¯‘|#L«¤éÀ[´±sóÁæ•8Ú×4‘¢áÊ‹¨VµýLE‹É²„†S[ žaWü<ÁUþŠ›‹¶ÂéfÿŠF
hô	JåÒÖylàÕÑg_‹!?ý&ŽƒÂ@mV{kªÞ@¬©þãE¤Eu²ë™ò+4ˆÖXäáOs\s$©Ó�?Nòê'ƒM´ªGG—í(â€pü
?ÆŸÍâfG®ñÑsÉ€]‰q%k8áªÚd° z}æÕé°kU‘4èxf…k%
I‹¹y5wp哚bèUå1%*§NC0#‡i‡ÝªÓŒI4².doȳ½eÑw£5ÊQ›`|RPÐŒ°FCï̬ÆÍ§|’ãä1çʪ©Ð´ø\”4O]cÊo9C;ÏX›ma€uÄ»hèÛöKY-+¸Ã6¡J
Ä‹„aŒç4fðhÑãB
Ä�ThßËaŠ…Žü(ò©]Ü}QMƒ`0VS~Q,ùàž>ÞS¨dµPs
üÛÄa‡Ò¤a6zŒá0ÄM“×Ï•6g:mD•F,ÿì™æµ×mÊvQÅк€Áßa£­Ômu°2;M6àç ÙjÊj¹5ŒŽƒ6ñú¦’>j!Eiào®ŒÎ¶í™ÜÇúH¼ÏÊÈâþ|ó]Ôi ´3Çqf¡úZɪX&“±3YVâ¬ÜÜh›$I~NJ—á•ñ®üSÇëÏ7ð½ŸF±ÔìJ«LÈéÿ¨Ñ´ÛºúÛÉüAþ†¨¶Þ¿¹û!’Óv,tjç\ÏÞÚü 9©‚øþ#3S—S4å1%9añÒüù½h~�?ƒoÚ®Èd���tIMEÐ!í„­—����IEND®B`‚���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-netbsd.png������������������������������������������������������������0000644�0001750�0001750�00000017050�10343637563�016144� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���ì���5���u<÷Á���gAMA��±üa��÷PLTE“…
z 'A;
tRLØÄ?4‘„l_X¨PPµ¥	wMgJ;a?!D¬U=_yhb# ”ƒ>z38´¤8[L^^-DÜʤ„vb@/RtiLV|^ 2¤“;$ðÝ	”ƶ	Œ~œ¢´[L‚®/&lX\‘nl¤”+FO0QäÑtj“dX‰™3-w)1œ’hgA^õ;£–@*ŒNd}hM;Mxœ…=O'Dy4+Ph:@È „„¤t^bTB{¬–6É´#eQ{ˆ+-¹¤(a,7D0q<"k~oatCQ½¬;4dlddLXׯ+w_ƒI?1iY4B<lèääŒvJáÐ!œŒR—($¬l^i-tb1O%8”‹i±&ZD]‰24®DB4#PL6svp—„sLŒ|d\R„ϼ{G§l^„j|„y%=h^‹y.5J*8œŽ
viw±¥U”>0®œ8gRY¤) u_OMGlc@6Vl%-üêΤüö´¤Z\ÜÒ¬Àº¸¬žd20¬z|’¬üþüÈ4$`OA¨œ¹M</&´²¤ÄbTxh$ÜÔÐÆ(ÄB4Ͻ§GKo„>DwUp¬77ŒŒ¦ä¼¬–+ŠŒLL$4¼Š„¼j\¸˜˜Ë¼8äîôF4.)1%4l^$(*¤:<4D`6PË»ZjÀ¬&”„T¢”V¤”&¹Y_£ `F@èܰ~o*ìÞÔœŽf„ZtTB>œnTœ—¡C#:=5dX v6FƒxxìÖ
”9>}yœÔ"l-7kWLL;w¼',PžŽ"»¬	GD_B(K Œ;?(lÜμŒ}(”Ž”Ô¢œwo±œ,L:$Ž„~jYo|qxôâÜ‘‹–?F¬N„Vt¼:,T64Ô¾”ŠDBÜʤVdb&6,&DM6Y„nH•.-Œ:DTNDR|ˆFPl6DœR\T,4ôììl.Dlb$tbclj”¢÷Y���8tEXtSoftware�XV Version 3.10a  Rev: 12/29/94 (PNG patch 1.2)Ý.I��…IDATxœmZ}`S×u	J(µ'aµ)î+™pgË"Ð9þhà!¡H.–…S×6Ø3Èõ³‘•E¢1±PcÞº­4M·.c)[½:í"“„4£l")ª‹_
±^“Õ‹¼„´$Z0J?²tµÿØ9çÞû$'9O–üžô>~÷w>﹦~!“°H5Ê¢ßu:öPȲ“Èvù¢áˆ¢x½^Äçó5ûšA|øßãßá…ù¯˜è>}©À…nÀo†wÕh“e|¬;ÏuFñq™DQà¾
±‡™ú«a«€ó`ûûýÕ~:~ï¶ÛZ€‹ˆnM %¬Ö׬ 3pù
À‹£Bo:~êÍ–áõÂF/DK@+‚ÔømeBBA€ÄMˆ°â^¦wùÇìÖ_½HÌ‹#�¼úùÙlpä –à"±^…x¥çÜrÞt_~ÏÀ*†_z³Á,`-äT`†ËÃKÃÍ`–A¥aw36[[Ù§€ëüÑ›y¥´X?býfqü\[ÁêñBý¥(±#l.øß'TYÀÎÿœŸc°š§–˜¸šW`Ífh‘[PäÌ­\£î¨¿àÖÿøò`«ý‹ˆ—A]Â,òÊ ä$–óÜ2=Êóʱ6ûHó2Íô1¸yöÌxÕ…±úuF-»žW(2E yj9\}ŠlZÞ`|:m›×þ¨÷WŸ·¼W¿óKQgÑ¢¢›Ð`·“¹è«€Kc¬r°šád¢•óŠ@}yþ{‚4Á Ú×ñEÑJÚAhé•7ZM16ƒ_î¢ìðˆkLk¯¿ûR}ͧÏnÜsö‰=_o%pÝÈ,y¨*ò"˜ó¬Ì£y-.QÓ¼Þ%ŽX7<­a¦ytˆeß2x¨¾ey°„•£õò…`R…“ËM–\”ÛR¼úi0ÚÍŽô^º´ÿ‘/ýÁ½ßùا7¾I‡6Sÿ"™ê¥Áœ;ôµ3çÎùýçæ8±†sÒ˜7Ô´ÐBH¦Â-°êzÐŸ‡¿yA$‡Œx|ÂqÀp46[ 6úGã¶Ê°zƒ¹žDbGΆûM CZf{E¦b{¦"³o¿0äD¸�ÉR_¿çKÿóÆÁƒ;{W?ñÏ_üÛGþæØ?önk]™­	Y„M`p«÷m¹õ⾎QÿÐè>ghhÇ9o0 åR*•r¤Ž8ó#¾æ€€¤¤ºfÃ=‘árË4¼ªosóælŠ�çÀõ®ô”îZ¬”8TUʦTձætI°\y0ÅnËÎRY×™&4K÷LñÚg÷öö®>ü‹Ÿ;öß|ûØ·EÁ„¹(SÞÿ.ñOý£‡À’×l©¦àsõ€Ý~\8Þ¼$\*I6ÈxõY<): ]‹:aRVU˜Z’qû|óÏÌÎò3³³³Dÿ¦…ªšˆƒžÄÓ)5T×ÀaKù®?ÇåY³+‹çH»†À2åââúKkVï|÷§÷»cÇŽýç?;öWnŠDö€]’AUî¾fÛY=t±Ëy u¦É-Û›JíwGËd¥ËL·M(D,ló'aw0`ø^ž8œ’zÆc!*NÛéË`	íÌ2¬
`MÃ?}Ó‘È=	ö…޶ÛVJ?+!«Ítûjª¬¶¨oæ–úžwÞþì#ö±{÷‡Öê¦XÂÕxòÃĂܡ¦]ôûïHÝáìT¯–:ÝÃáY7¡—¤P˜W¼Ý+è¶ê2®›>_äŠ*}¶eڗϹgb¼Æ	¯á¦"/Ò~Ý2ÖÒ’li¹.—£1É©ªGÑ+ÇL(›¶Âñ5•ÉJ¸±~3QûÒX÷ØXw÷Ø‹§‘Ü3€683>Þ÷ÎÁw	ìѡϼúòÚ,ºj0lGhdO‹Ì?-‚Ѧ$ékþ¹ìUçœÔ8=j×Ãè	©F)7ÉU•~Ïbl³Þ½BÝKOgš.Œ@Ä,÷;95FΘ¼Hþ<#i2­¢ë­¤¬	Œ$§·ÀáHeedlÓUum2]‡1n|ÑA„§$ᤇh÷�¸¡àüxñ;5½ÏþâߎËØ>ÿ^Õ-ÇÈiw35žžÉˆ:˜=õ¿ûFSsþÝWCÖ5HìÒ(;Õ+z}*ÅÍö<ñ
¯)u>D¤ ž6A‡ϰš(ó5z¹æ?,q°•˜”mÀ½Ó7àËXJ•b�%‚ìÌ=õJÒÔ‡ágJâ`ÛŠ´¶¢ÆÛp×Ñ…üM¯¯éÝøÓï;ö§‘ž›Ö_ÚøC$–9(iAØhÔ°å5pP
Ù6uÀîtméÚãI’Ê^Rb%¡Ý0¢³ì).m¬Í<îÙKZ›CõL'+Y"íóÅXú~ž|žyS‹®×¿7™º){BS½Œ`¯£Ë¨Hq°<ÎvÑ5î@Áâ™úK·o|öÏÿåØ_ޝßsöð³¶ŠÐ4Ù_¸ñT±Ú?çí÷û÷mòg	¬µ´sP–CVa²Ïi¼qiöE椞ÑYªW‡“Ȇ^—”
)phݦiž†è6Ùˆ”k¤ÆIS¥&«^Ùd*cE�¼*Ô
p†º­KZ
Ö=HÚuì÷ÙÙ»qOëÏ«Zßûè³gïzZd€¦-ž4J€E=£WÏœÙu«_vË\Ôµ«ÓZ3w‰¨#°ê’§ûmf·/0WOv›*y
b‰Å,U”ûYË,üÔƒ`kãf}º8{ÕÉMï}‘—w˜+Î.ƒaDCZàÌ&Y¶n·¯¡'xðºÝ>F{ðÝûÏÞXÓsä‰={öÿ3fL£L“$…vKj\}Ññܾ9¿ÿâ‰9§bF¯´4ÃC-Ž3+Gà‰<Ý&æB¥‡ÙuÀòTÞv9$)5X¤èã­HgIM×­{%Þ©%`Ûqg/XêÇíð”Ú4QðŒ€eã?\X«ô÷·´Ùç§‹ëknô'?¹ëѳ5;A~{"ŠÅ€Ó2Òi1Vþª'Ÿ‹"‡ó6%yÆL•ÌlÍçÑØi–ØÖ‚RJž`‡ÙZÔ4æPó"UP&ÂÔømëkŒãÞÚdBfçüw©Áòp×qʇ»M§ð›=Ϊ·	úåéMOÊ¡²ññžšÞ‡÷£ìyïD¾r3M
´“"¯€¢êö(gôCh?vÚršn¶rÄËÁö±ƒy^\×ËJàÓ
È,—Ó³4,·Ývùd:Haj¼î¡›c±¤SŽÄK,pé<Ý`€àÖzò:¦«V)¯Æ$¥ìG«’²=P6^ÿþ¥»/õöî9üÄÚ¥w7Wc€Ú0ÙÀm–ñŠ(óhiªÓcQ©ë<'šB5Žè3Ê^a`#`³`jä3ëôéî±–•,§ÄR‚¿Žôøà:1©U–+ÖÍS1†þ,W€ x §¡j+Ï,Ÿ„`'¯2ÀÎüÌÌÚK5GŽùü	·kxËfªèØm‡FGÚò5‚‹X«¯^Ì‹ÌÒLæÇ2÷OÜÓêˑو®¿Àžø[^…1‹Õ0u>‰Q÷ç8¤
ç,ɨ:»÷¾e—Ÿ9éÈæ­`¿-¬öû•B´ª¹‹—ìyfí…ÌØëXÚ÷Ô¯}禛jà¹[ÿaãf·;DšÌ™Ý¶»c[Ã룓4Gá÷Ïm9ç4Ð.1Za²>>cÌêÞûévއ+1‘ã¤z°&§)ŒlxÁÞÙÅÜ'Ùíj¡£Óó¤å+¿y
ÍØW–. ×ìfS†7æ&+—
fOam;S³gg
Á›öÿˆÏ4†LÛ˜ïÞÝÐ?ùºtˆM>ñªÛk,•>”SˆÚÌlv‹(õQ7	f•r•Â8T‚±
…ù#Tc^—{
oœlAü[	T‰·/iZõöº½à4+Ø­Þ¸€Yó&S7”sîªÏ>¼ÿ§½î3¸þ‰7gÀì6ôûw©
ý
çú쫞»u¨úÖ[/F/Þ
q§³Ór59K;3ŒZtO¢x‹q5†Äˆ‚Šú–UZ1]‡!!gj¾ï¾eå'wI¿D­åÌV*<TO¹qÒÔ’4}“.ãñúô¢"ø¹¯ÕýÆCî%¼§Ëh¶d¨@Á!ËÜC.Ò
å€íÒþý‡7~w³e¾çýÃ_oåhMÛµ£¶·zñŽŽC‡¤[Ï¥Îøw¥:£çv—%öM$†Bå©«åÙQ»pÆÆ\øhÏì&ŠÝPV#åÅñk¿‚ÙJÊŠ@*³lf£r/ö¼®ï�—wâUémLÔ5bh-ðÆlff˜îýsˆX!·Ó²vOÍÚÕ·ï¿kOÏxñúÕ'„=r5ž$f'GÕ†þÝ£vÍUw\õÏ¥Î9œ	r…ì»Ö؇¤aù@jÔ˜|1¯Ê¶Á*¯p]f,%~Wn¾ù¥…ÚÚx<þë›7™Æ–0˸5Ԙ͢úÒt§ôYu€e.¾Ênôr˜¨I7'Û�ÝPAnLhYÁúÄÓ™úšúúÞýþdÏw߯r·:£Ìn`vwÌUïÞ&;Ôq5êß2è?3=0áÚeJ5Ù­Ž!®Æl‚…ycš"óZXn¡Îž25ÂÏÜf#3O”õ!;-PÌ`3¶%Ì&Y+ÀWÇIjžU^1K®÷Uv߸‚Ìš®ËÞ¸
e¹›Á6gúÀÿjÿ]w=ûîSNw¾²DR[ú«³»¢Qÿ"0ë<ÐquÂé4¯éêrÐ&¹É±€žŸ´XÌ/1f!áL§å÷“kä 6$MFk€Õ²ƒ[Âl³~’1kÇüR„åØìý$sA…`ÙÔµ}@k*zÀ–A‚ܳsÏ£ûotµ¦Émw´°Žv4øý‡`üŽ«ð>š²:CWGö¡`Ö*[]&Ëæ âª+B`±EÁUò-2—ŒÌ4v*[å÷®Ü©äØl,åQ
Õ˜1Û<O5”c•)	Ø6Ü0ê	(ˆ\tbw[Þs5¶ïÆsîÃÑ´°÷«ÊÆ‹‹ëï^}d½›Z^<ª˜ë¶Cà—¶ly­¿ÿŽìè9¿ÿLÇ–‹Ngç®h(”Yãéœè
¥å™òŽ´çOF¯î¤šú/²Y6	ñÛ‡µ‰wnc©»–ɪ8ue0; ¦)úòÌbìn§]¬ÿ‘âûût£~‚a’n†D´«Ë°YÔc;3̨¯V¿å—‹Aêë«Þi
9ó‚`A^}Ûk¯7`ªx$ꟛ»8Dä»!j55Eíö…®.{&SÁý“Q©b²°òFÄ'ÀRnOzpaÀ‘¾RIXÍêœÜ¦Éh^æU¦2—ZQ™¬ÄŠ˜?8&d^–!®ÜÄÁª[Y
ê]ÄÖÁa¬X±Â”«²7‘ÛßJ™š
°úå[Þïy¿ç–â—·:Yg$J…Àãè¡DÁƒ©"ëyð®‡Ñóãš’+ñ°X¾,®ˆ™^í
c+P¥I˺*¬å)µ\ÖÑ”K(^Þ·AÝ¡WnúVI˜•þ§\÷Jø•:ÊL÷ÝÀ?©J붪ْ€RµbάJ%ep¼/œî4Î)éfuû�¸'xúêùâ=.€Õî¿ë‡€Õ½”Y0Ú†‚u*YßÃèÊÕeM¬“ªLòyFôp™íÚWÑÎo%ãJIj6,Ë^SŽÉ|²ÙcñvsI¦"9\u/’3‹Ìª%¦äº¬š2»\×@I\qo%:>|Jg¦O9Bbýzz@‰W¿»ñ®¬M=ÌP™eÁ§¿[FóŽw­]¡L—ÓèÛ_¢¾ór¹ÚÚÚï­X±âUùIá‡W<„…Æ¥-òк·Vn\3á–µ‘ŠHJð••YóÞ4EOÞȵärßZ’ù“˜e&·¯==ƒÉÓƒ35
âóºªZ)„QØ9áÒ.{Û
ŠÝh¿ß}áÂÌø…µ½g÷Ÿ}:ÄÚË„ÖM`·TÞñgÅs®q]­î:Ìf…ÓðùÆÇY~™nöŠv?¨1qëÃŒÿI¯&·5&!Dâ5Ú”M«ÀÙVöµ`‚¬÷O³ðŸžŸŽ°Ž¡Ïóah6™ž,
Zð~}8Õ¨´¡Û(kdç<Ù6Ò6RvŠFgã©ß?TuÝSqÏúõë[R;½³°È-MT0°Ü`K¤R9cÎÚ©—Åz“Þ<Üæ|í6Znò#¦ó#§Ø³%)±«\(bú›¦ª
‘ˆ3[º#‘nœAž¦Å…¡›}´4Úœ¤Ãþªžâ™â÷¿¼¾çý÷žàs!Z*`_Í£åÅ;™,+Ë¥)H$ÒªU3ð"õµÀ†¯±H¾s\ÖÝ
žŠÔ�´yäT’å)Eh‡¦UÒ#⤷rìCáËt_²ÃQ„JFtòÜ�åûÝݧº¿ªûÔ©Æ6ô¸ˆÕ,ʸËf.õÞtwͽ÷ñ%vrÊ�öqÃl'Ù¬ŒX6B>8Œ`=wìÀ€ÛVZ«)‚Yá¦XÄ5"¿h¥â4zÍ’¶‘¾ðÃh5V62¿Î/ÄÛ€kgxo
½¹2R9-úï¢-‹©El¼;Ÿƒõ;mÇm­þÌó5üûò_>ñÀgZqÞ°BEo7Àr'5É™õ3°22[gM.@œ4Ûd×Í+QÙ¨:æçMƒ­Æh«<´6¾´EÎl—ùÑ6á×Úüº!ÑË/°ðÆšt]k­]æÝh>iŒ&I)¡½Èj…‡·=µúà|îÈMÿxïÓ'Ø*	Àê6}üh-õ#µÌbájíR:^S.+éÙ2SX'€Ã
îÈ&‚zÐe.±ðï)³GÇ)te6¡`]Yv'HpÎl…Ì3f©-Bçûš6µðÔàðå\9<…­<=0ìr³õPÆŠ
lælÑ͉¾<2ò¹ƒ7í|âï›ûêW?ñ(ª11{ô¨àÖðÈÌh´†BCòYnZfK*%¥Ý¬.èYuŠ)´î›7»t} Ö«”¤YW(¿Ü„ÿ_®nGÜCžíš®`Ìz9³_r"–Hñ’G÷&²AoÀ1¬¤]šfuÄèÚmb©ŒÓˆÙl]Q6ý»¸xüå²²ª»W´½úý?øÁ‰à`
«ÝƘ¥i™¨`”bs$¥Ü®€¸Á;/Lra5mÉyÔ˜ˆYâAŸw0¡ÇÍåA­¢¢Í‹ðºÙåLi¦Â*k™Ò&YN§¬MÛe9fµ)ál¸H×jã
èñTmP·$OUÅbzpù|óæåóSŸ¯mcïuð1›Š•K-ggzÌÖ·…Üw»iu¡…ØùÜ/ßùrYÑÈËŸ<þÜ7>ñØkÂ!#Ø£…á‡1Ksè”5MHVM«“Š▆Yè,@;P{íZE|‡óKñ¸tÙç½æQ<ª«"h¾&ãó”˜Ëå‡ËãˆM¸&²kä´4ìrl×ÒÒ�T÷³‹+]2<¯xvÔ9â9Õ\kI˜Ÿ*‘–ûÂRz012üLnûa5ïiuÀíP¥ÁvÞG´vw`µÁúœY\ûóÉãwþ¶;3÷ê7ªu`œY–·ÿdo6—‡K†Û${ç5æsÛÝi)+5ΩñùÔ°¯˜ÍI^Ð;›µn¢¢n—Õ±[–³Ö°Õá‘]ÃZ§j­«hRÛ½i©�äjSíêT`0nqÌúš/§¼5Þü°:;oWÛ§aÖ[®h‰DJ²*ÜF4Ùý˵ÿ‡Éï›'±€tTÙßõIÛñÌs<aÀÀƒí¶Ðj™Í2f+ºÜÛA{•XL³™êáñÎ{»-®š!W�Â)oê¤O¿–Ðk¥œÅë1ë\®‰Ä@öš,›ÁÔš �ï™–Ü]R‡IKPƒp¼=8†0?cq<3¯×eg�¬ïùTØÉwI¼=†S’êe�ëIJ‚ظ/a„ìóßïÙì>ñæßøakT0ëÝØœF^aØ,÷ÈdµÕ‹4 öüò�Û9˜ŽSÇ#¨W,š®“ÍÙ£æ¼`UqÕ£[²×ªâR].àJ¹5‹“Ì™ìn›=evknÇ -6 «µMê­]­ó–�«@Þ||>'•ÌoŸ²8<µÁ°ºŽ7ÇÕË>ßrµ®lŠÚ_is`>î(ñ®	j1×õôHÏ*ù©[n¹¥¦÷öýß?n%vý…"ª2›%¨"Eæî8ŸT´¶p…Â2cÊXl_H$*ÚâW:èuµ_ö—'<6;±€'.Y‘‡Ãu.«Õµ+lѬ‰3áŒmØ•®sí–¸ÒŠ%1Ðë<áèi¢=7ï+qåôóO|e]U.q2ÐÜœƒ/çÑÏÏ´§Ã;rº×…ëºÈm0´Á_~ö³çm/e¢­­Ä¤Ÿ:Ü1ç[sXՈЃ›PãEžT"‹eOŠ(xpÖs#æÙÊXrVó<Ô‚¾Ísÿß@B-L“mdj¼q!¥JÁ^;ÈÞ«°€Ÿ)H,fªX¬õù¼–zkAæ/ˆ[Ðc{0h·»QÑ›ŒâBSDÅ<?{ôñ%z\½È¨=nçk{1ÏÕ8§ÌZ™±åu"a.HyÒ¨(†uñZXŒŽ®ç_(K°R°Å´±ÙHEYid|y5_Zé1c·ÀzÙ(8¼ñã…Ôúm~­[2€5Á+½”BXã‘ò‹¿5¾œyrc%ñG€+<UØK­½| ªªxô‘íb¦‰qkлÈkšŠÀi™£þxr[a¤5Ì6o¹9ã%Ë~µ‚È«Âx^„‡Û±À’ÁT–ŒKáøèbq”X[È­®+7ù˜ne–0ÜFY«ŠQë÷ýæÌÅü˜ˆÝÖÀ˜]¤ŸÓ"8¹Ð'sEÖ¼Z¡ˆØË§¡\N-÷ÜÑ42a^9óÃT¸X·ÙX°œ·
-wQ²¡ÆN¶Vž©1üµبßè3Gÿ-ïÒ#û¦J���tIMEÐ.+a€����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-php.png���������������������������������������������������������������0000644�0001750�0001750�00000006053�10343637563�015455� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���_���2���
ø÷C���gAMA��±üa��ýPLTE���ØÖàÉÆÖPOUŒ‹”àßçTS^gfvÑÐݳ²Æ%%+\\jbbnEEM99>tt|„„ŠÜÜã••™ììñ}}òòõÎÎÑžž @@AêêìÆÆÈ½½¿xxyûûüúúûøøùááâÖÖ×——˜’’“”•±wxŠ‘£¼½ÍZ\tfhšœ¹HIU°²É©ª¹ÁÂÎ^a|ƒ¥‹°jm†x{”ž¡»§ªÅ›¯µ·ÊØÙâ\aƒ`dƒlpim‹‡‹§€ƒ›45=®±ÅÃÅÕÒÔ⯰·äåì
ls›`fŠdiˆNRhËÍÚÎÐÜÆÈÓZg¥ao°[h¥_l¨;Beiv²eq©dp§$(<^iœcn£_h–y…¼is£]f‘U]„[c‹ƒŽÁy‚²ƒŒ¹u|¡•¼©±×´»Ý®µÖ¬²Ñ°¶Ô¯µÒ¯µÑÀÅÞÃÈߺ¾Ó½ÁÕ	K[N^ Q`£Q`¡Ra¢Ra¡Tc¤Tc£Sb¢Sb¡Ud¤Ud£Wf¦Ve¤Xg¦Wf¤Vd£[jª[j©Zi¨\kªZh¦Yh¥Yg¥/7W^m­\j©!^l«[i¦\j§VcœYf Q]’JU…[h¢ao«\i¢cq­ft±Zf›HR|Wb’Ze–mzµU_‹iu«q~¶uƒºnz®}Š¿en—DJe†’Ä‹—ÈŽ™ÉЕĔžËœ¦Ï¦¯Ø£¬Òª³Ø©±Ñ­´Ò¯¶Ò³¹ÔÊÐèÅËãßäùÙÞòº¼Å²´¼¥¦ª+Œ¿–™¤ÙÝì×Û霞¥¶¹Ã«¬®§¨ª£¤¥ö÷ø›œœÀÀÀklk�	$$"''%<<9--+QQN||yKKI‚‚\\Zqqo443òòðssriih,+'CB>@?;JIEPOK€{Šˆ‚"!21/986©§£ZYWXWUedb}|zpom©¨¦EDC`_^xwvTSSþþþüüü´´´‡‡‡„„„ÿÿÿ„?ß���bKGD�ˆH���	pHYs����ÒÝ~ü���tIMEÐF™Ý��¤IDATxœ•X{\SG¾JQXѶ!¼D,Håa4¬X„4
Ah6<„R_@u&%¹	%Hš¸X«ò¦òŠÅ’ÕËOÁJ±ÕJ­Ý.‚,JŠåa~{gB’›€~ÿLfræ;gÎ9sfæ"ÊW€“µÙtƒÙüÔõk‚üüü‚Ö§n¦“­^a*273ÁŒ2ßËÍÜÏ××ÃÕum Obhè�‰k}×o³›]Ë,üËÕ¦ó¶ÍO
òMÚ³'¡ªª¼<:z'À®]»h´’See±a7ù+7¼6ÿ2k;2™LNõKJ(<ÆC9(ÊåñD9¤R*µ€¶›Fò^½Jée÷êüNV¦S‚Ù†„è忆çHA ¥Ñ¡4¤b&ÿrS3³y¿„H4…k™D€,ª*áma±ÐrÅœüVóæÏßì·'šÅé2‰¢kë0\<fp-‚l*-ÀbÅ6³ò[QÜÜÖ$•£‘>AÚ¼rrrrÊ¡žeÌSÙqî&&KmŒò[SÌÍ}"9<&æ»õ!\jP£±fKKÜ—,™"æ7óóôHÈEÃ
NåV*�ýµÖ¨KÓÑ]²õÍ‘‰fò[›{x$HQc™Âj˜üýiBÃú5‹Ë–tÙèóÛùº®æÏÃtùSÀÿ`Ÿ1÷k!,8}뱃.?Áum•§úŸÏ>¢;B‡d6ßü½²CØh:›ÅËgj%±AuVˆ…'õñü”ÀÀruTùU_î?0ýû›dñÅl‘4¼ÐíàŸ8»÷À¯öÊ*l°iß
šäuQ™|G^Ù¢NÇ~ŠO4Oë‰ÿþ¤ÁÈØ¯ínr1*ªéÓu|pgti[Z<›UÿÃC­èá…¼bÚ}yÇ/ ÷Õüwjè¥hêcDýS)ÅÌÚ	ÝÁ«ƒõ‡>²×¼öP¯Qðâ¢â·LÜ©
¬Úx<M9,¿¢?8°w¶]°ó›JT­àƒ—6MèŸpyÃ+Uyéèèx®žv¹fïC}*deÍy•Ò>LT=Øå! ªˆ"v w^`üäÐP|Mɪur/­!­mÄž8ëÞAJ?h¿oS(Ä©.8x·Ñôh‡BZC.£×áè[•Ó®>&¹€�û}wï§}ºÊÝ)¥è2/HÑac×ÒÖPI§ÓÏ´As¯œµ¿Z¢,ª´´¢&¹®Ûvwš)ïsdðwÄ*t·Îî`íF51y<ÿ|Zåнûu1‡Ïç^ê½¥-—aP[£PL’uä Ì‹®$MÊ»€Ø#›4<}¸$zbiLŽÊ[ȸ#tSØ$¼Š6¸˜¶|uÉ`ªBÔ¯åÇ"àˆø–áùEQ­ÐÄj(6]vžÃÝ{7™	tÖM¨Ó2Úͪ”œÞáÝZ~ÉqÄI<EÅógÕÔõKª:™¡*;ã7AÓ.ûF¨:"…Ü
Ú^yºjái7@wDã©8ÿãG£D‡Ÿ™Ü¤Ò²AÐsxi?BÇ@÷÷9Ðm¬æ ÷íYg†‰Z4ŒÞvF½RSÀÅá„ÁÀóçpÏ}¤îìgCmµ°ê#Kanl+Ì…‚†Þo	®k«�E‡ËLþt	Œ êð¡Ã/*†_vÍÊ`WS ^:C/4gb‹â–†Àô´laxä&ÌBYLI²&ëH}¦†L,úì:XV€ãçV8ÀÉmg*é5òûAhþå=Ø@OgÕXµ¶@¥·ÏÒéÕuÉÁ0B}ßüU{¾	ÿò‡[HPì	?K•“D"±}rÎA~¤PTŹxš-»óp3æË½Ë˜¨Ë3h�–a8óÁ{‚ÂJpüÓÇ”ny5xöi=Íþègèˆs„uy&ÃG‘vd™On Íƒús†¶_¼Ã{Ó
†7’#Ô{ÞṞä‰üí@˜ÿ±ÒQzÅjÄŒâ|óç¬8$¿»SAv¢•ª¢ÿvËJÉëW<ãàÌ|PßœpMoý¡áážžáï&_ï‹ÏD™MÿëÁð›,D(Þt†½Îß…6?½É•žkŠuÎ~Éñ­�õŸBb¨Ç²ê¡':)É666ži gb!åVɱ^£<¤Fxdè4Öÿã!½sH~(«Ž°rñôâˆdJu>új<Ä–ÿ
&õÏÌ,¾*ÙøªNü>\L†u°·ô0èb·Ý»8ï(¢9ßÕ
Xû QOšÒ¥s€Sc÷ÓªRƒ÷-!F?@Pó[m"AáÂ4hTŒ=?³ñ7èÉ@¡¡%’£H¿öþcíJbÁâw/±š?ÿ'çþwYR¦?óòc{ÎøûÛ2RX‘�‡9÷Ë¥Ù/±r#ÿwÙOñÜÿ‰#°»‰­îýówÏ€8ZVµ=¶Ù‰—SsŒ_D§ùÅÁ!@4¤j†%yÔC†Ôo%íýœ²ŽG+¥Îe>–E…ध—êKæIN^@nZºÿ[ý‘Ä8ÁårùsÓc±âC茉ó$ŸÇ WŸ:|_(•dÿ-$j„q.ó
NÆ<G”öxJ½÷Ó¶»{v¾&ÄÉ©Ó1/û”㺄3Þ§ÿ¤�íµTˆ%ÂüØ‹õëÓx_“Í7m!Åa*¨¯ #[,SKbO¿ßÕe;¥ÿ85Ìí†
AI¤0Æn¨D`PMvö§ŸfSóOÅn}÷Íǃc“Ö†¨Œ}ßxAöò_÷^€7)hÁÔPaاuQ©'q±î[ßµµsT:ûŠ2Û÷'òvÏwÖ½·ÚÛÝÛ; `Ë–0ˆ€€�oow‹LLLžŒ:ZŽ;ÏB1×÷¥r¹Ý<¯Vÿw6­Z½`1€Åâ…o½m©hµYñïsLÿ?©TùËùqÁ0����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-gimp.png��������������������������������������������������������������0000644�0001750�0001750�00000007311�10343637563�015620� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���Z���$��ñåŠr���tRNS�’�Š�t~ªX’���bKGD���‡jøh��
YIDATxÚíš1H£ÙÇeY¶X¶d
ŸL!b!®…d,ĵ_$¤±¬EnH‚<$ä=BH$EA,‚X„`ÄBÄBd
Y,dØb¶†)†e¶X–åýÎ÷ÿ¼sM2úÞÛ}ì<xpø¸ù¾ûÝ{îÿžsîÿœ/µJîAøå—_¯®¾C./¿{öìâüüâììôää´Õj¶£ÑëÄãb±äzðøêò‚û™å¹¹Èü|Щm>,ŒŒ"ŒÑé­­Æ“k±µµåññ‰¥¥eë¤ñƧÒh쮬,#µZÝ:=¬µSùêò4Ðé”Q‹[)†D6RË<ëZÑÌÌì£G_d2߯£³¦/Ï:Ýꢩ\‰.´jõdr}måë•øÂÜôD¡p¯2æA­Ž¦,{s3·¸Ëfs{{»kêäúYûá=@-ô}üx6èó“6Ó
ºXÕ\asµnfÓ,4º+_‡økÅg€º·ËÚxÁ‰ Ÿ›cé‘ՕÁ
ŠÎ?šš�þx<f£4€i¬%ØH^æÚ,䉛Ú24ÚØHƒçäähr-Ê##£kk‰mÞâßù~¥˜xõêµp•­8“°F·ÁÍF©ZÝf]2 N§]ØJc¸6D³¹¯!x§\.!Ø2hñ2÷r°_.¤µ5Éåd,¹é7o^»É™ÁŸY`u5ñÓO?á÷ß?çå¨ùUPM^ÃN››¹Û÷O¹2³ÛZFYŒ.le¿a~ÞϤ–—ggf"èh¶üÃ/µlF9(—ä1Åoì7‹%–ÀT[[ù¥øWfT«ñÉñÑù9Þeh”
‡à}äüìëp~,bu˜,–:66ŒÕ.Fg—–bCCƒx*˜¿0„¿r÷¾¼€e¥²;
’L&ˆ=D‰Ïåþ«2ðÛo¿þüó;öëAyûö>Á<œ�/–Èî¶ûOù)áQcg›.óæ°¾÷Z{`vmgöÎþ0lÃß·)lÇNm»VÎaNÙlØÙm
Ž‹ùlf
ðl<<#ЃÉèH<…¸Ä|:8˜ŒÆä¤]™UÑA~ÄriÀLæ–Íý››wÀÜÜ)ÝÜüÈvÈTK:ÁÄØj|qC§A
àôè �½Ò	ª�ñ3	Ú¦t³ŽØöôtäää?á´ ~r`ÌÍ|966
ÄÅßçºæ&‚yf–Æ¡©ùY[Mп‘IË/ð&ãÈÁ;Ñ&•Œmf¾a_¸f7–å©ÌÎrEž<ùþ†´ðÄõõpKg&æãÎq«­¹i‡Ñ°X⩦Gß9Ù;‹LóO	Nv:3=1>6:=5d7hÀO”à¨A	Ü¿}¯‡3=f²ævrä7ý‚éÒÓÁÎó$x²blhdd˜Sa#ÀŒ]�3ð#"¡ÆDOAÄÙ©©ïЃð‚vŠ3jpu¢û½Âvð.¢vÇrYwWn‡î‚®ôûhâØŸ®ÁÇ¢ezüáA9nÕê/^¼D°¿¾A!ðãAN¾æè
ê]¡½—ÑxæTáNh?9âÔØ©æ 
çŽï¸XÇ·â
›`5}•pªôNïS”ÀÏ/º¦Ù«åуåâÃx&þ¬óÅíí¾P$npœ(Ôg“Áá¡+ΰåoºã†;4ø©YY7ÅY}=ŒWWK;ƒÄ˜[@ÞhdlbÑ"· 0êÁ¡ÀÒ™�=ˆ†ÜanJ°tÌǵÄYú ©Ôº9!YÈh[»ð
Bå›W/‰ñ`eé¯á9Ç5ˆOÄÓCû6A˜cn‘ÓÞ£®k#Øi®àGtª–ÿ†Ò`@œ@ËãNµòwô@	‚=|�?3g
ñèk‰½ôR
§
°	W…KL³8;n	p~þùôÁ&Ìâ_ÍÏMpÞ’x�ÚãMüÅéÑâÔI®»ƒ÷ö¼í¯èc‰
ÈŒÈ1Of-Ö+Å4¨\_?ßkÔqÕ¥…Åùˆ;oÁ	ÃBBѺQ¿™ÍiVCalU¸Oªì+ÁM)m–M`aÈŒKþ×ÚÌ&ˆQˆÒ>XÛÀ°™xzŒÓC4¤}ab†–BåéHHÞÏÃ6ÌUhsâ3½|«OÕ`#PæÁÐdÎðäZè$žÆ}æØ…ev%Bò‘2¯&QõÐô䤭rÉ!¡$‚D3!¤%b!´ËƯlzrщÝÁ3q„ù[òAƒ,Âÿ3+P‚ŒðPšd¿C;û"H˜ö%Ê£d†›¦D±Ô9اáôPç.þa1ª‡t1Y0̃Tke`–Ñ	†††Q"¨Ã1Ñ&Ôã½G$è{ÔÒÍ0ù“[äBµ2%ÜU82HÿàcûB2Û‡)ƒÚÚÊÝÑC³žßÕÀ…HMÿ>KÛÛõaèâcRƒÅ--]4¢DƒŸ¸7�ˆÒ“­÷…7eêѽ‹}ù
Ÿ}u‘±{øˆ‰I`|2ÆS úóùÇG%ÿ‡Ã„#øŽÎá>dóv§VR¾ÂCOöéë&®ÔqÏÓ‰cÔ½7¸'6Ä»ÙÈתùÚ6L„I‡¹„n½òâÅŸ××öŠq¦jI…ñCf]ƒCü­—œHº˜¼Î¥¾„Ú˜]tª«è¥Õç=56¿LyÐØnTsPš­Íu8ƒ
<­VXãqÞWþ±¼»læ	º2¨€±è‚Q1àÀ4¼Ìùã¤/
W—§]�©zäà«î[Årˆ¨˜tÓôN×#±N–ÔlîÖ*y’€jÑÊ·VòÚˆV6].æ9»9Õ œ[
ì¨R)qz©WüB! `‡V8>ùäSUÉ8ö`ÛÊ!”OÐF¤(§›*ñF£6Ë£Í8>µn4ê®.­„Èt°fŒìŸð>Ó­	Ò‘ç×W͆U�¥Qû„œ›ÈÉq°¶B˜lÙì*`ƒFWãný9ƒ‰1FË1àh–¸øp°ÿ¢º €–ð¡ Ý–	d³9”¦ÍUêÁJ¯Ð›+w˜€þtƒ„¨Íš•vѼ”|éS
WýDE€¥ð
w:6zÒêR«mÓ”·o^«ð«t¯¿¹yg9çVJ& õ+_ƒ.ÃQÉðgPp"cÁ:ÄPB8\ɲ7Ãï-_J”ëu%Xý‚Bÿ°‹êY\x/ëø?ar°#Û˜•©)æçgŸ}ÊUEj€°Šl­Ž›°ž‘€¬³rI+c™û¿(Q€$+kššœÀØ!€€ºÖqë,€êWpÝú¹ž‘lZî„X|qk&½pyÞÝèpz>
]HPŠ6ECuCnÚ7´BiÙùRbÁÈå³¥ Èò´C*Õë;vAÎærGenc#Ã$o|êXÇÌ/Õ‡ ôüŠü­²í[ÄÉaû™gü„®ÓëÎ">˜„ûߎn¯v
 "æàH´;öŒ¤’äËËVœÊ(aI¥NM¤\H“¾©¤bî`ùkD¥dÃbÚ²zÕŽA™õ3d–°¸ï¬ÃÙ)lW]WòÉVe{/›•�”ûªa	àt!Ãt™1N«­•«iñ^&Múµ³–ÐW.—é4€PžèŠÒ¬“È·º²@DdÁì?ÐX¼Ô‘™Œ…§æjœ,ÞJÕ„	¢Ã\hr2¹‘'–E‚2e_TŠV˦¡Ãå=¾à,ɹ�›O¢K~‹w©VðùO•%Üʼµíö3ø,(‹°þ;uÁ¡Yë·òUÓžêÓ¡_A$™o	%1'‚REÁþ	v:¬xgD|Á"”•0hØw„̺¾j=²|Vv!,pIÕõ™E‡K‡ûÚa†ˆv’`á@9nµuë ó=lì
Wއ;u¬ÀÆ!?9ÅÔÖÊõ¨‘Iû5U?;ÆRÀ7™Ÿ›ÅáÙXËÒŸ=|ü(ǃCCƒäíS“£DJ¼ƒxAlÇbÁÌ—ÓSöƒ>¼(ÔQ¢/mœPÁ7ƒã޳x]îkVÑCõ(÷¨o\t
ÅW4*Ó�A«V N:GÞ÷ô÷Ö"r°Op…³T*Ûö11›K%ÃCQ†@ ˜µ"ßÔÄŒ¥íÁê*LA…Ãú`¼" dqè¾÷ ‚#¥ŽðÔCÅÉ^ºDpø¥tÁÑeâÔÎ@D¬ˆÂ~¢·’ZYÀÛý/L®–á>/¹�Ä+¼Èi…1× ÜÒ°5‚ÏÒâ
~*BãIë#żÊ5üŸ¾ ¥kt‰b‡±ì¬‰ê«öµ„*Ö®ðã‹ûŽ'.Gg^ÞÅ:Gº+Ý‹‹�?]iaZ}GDp¶É€®¸c¶vCwÔpâv¦÷§Úºãï­ÿ%ÑU±\-˵QLWQ[®í‹î»ÎºªáCÏ¡!BÌð?™V§
éÀõ›���EzTXtSoftware��xÚsÐPÖôÌMLOõMLÏLÎV0Ñ3Ð3Q°´Ð70Ñ70TH.Ê,.©t(®Ì-H,ÉLÎ×Ë/J�|jùxöÂ���3zTXtSignature��xÚKN42MJI2LJ2M113623³435O513H5LLN1�–ÛìêA]���zTXtDelay��xÚ34���”�bŠVó���zTXtPage��xÚ³4¨06Ó6Ð6��
Ô…O Q���7zTXtComment��xÚÏÌIJ-R(O,VHÉÏKU(Ï,ÉPÉHUpÏÌ-PTÐ/ÉLO-*�Â
`?Ÿd®����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-php3.png��������������������������������������������������������������0000644�0001750�0001750�00000006551�10343637563�015543� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���`���2��ã`���PLTEÿÿÿ)))111999BBBJJJRRRZZZccckkksss{{{„„„ŒŒŒœœœ¥¥¥­­­µµµ÷÷÷RJJJBB��ÿ÷R{{sZZRccZRRJBB9991ZZJŒŒs))!ssZkkR!!­­sœœcµµkµµc­­ZÞÞsççsÎÎc½½ZÆÆZµµR½½RÎÎZÆÆRççZïïZÞÞRBBZZ!œœ9÷÷ZÎÎJççRÿÿZ½½B¥¥9ÖÖJïïRcc!{{)””1­­9÷÷R11JJÿÿRkk!RR!!))��½Ækµ½c½Æ{­µkŒ”R­µ„s{J”œs„ŒcksJœ¥{s{Z”œ„{„ss{sŒ””ïÿÿ{„„ckkœ¥­{„ŒZckï÷ÿ­µ½µ½Æ”œ¥RZcµÆÞÎÞ÷œ¥µ!1ÆÎÞ¥­½ÎÞÿµÆç­½Þ¥µÖ”¥Æ!)99Jk1Bcµ½Î­µÆks„½Î÷œ­Ö”¥ÎŒœÆs„­9Js1Bk½ÆÞ½Îÿ”¥Ö{Œ½ZkœRc”9J{!9ÆÎçµ½Ö­µÎ¥­Æck„RZsŒœÎœ­ç„”Æ{ŒÆk{­s„½cs¥19RZk¥JZŒRcœ!)BBR„9J„½Æçœ¥Æ­½÷„”Îk{µ9Bccs­JZ”Rc¥µ½Þ­µÖ¥­Î„Œ­œ¥Îs{œRZ{csµ19Z9Bk)1R!)JBR”!J¥­Ö”œÆksœBJs19c)1ZJZ¥!)Rœ¥Ö”œÎŒ”Æ„Œ½{„½RZŒZcœJR„BJ{µ½÷”œÖŒ”΄ŒÆs{µ{„Æks­RZ”Zc¥JRŒBJ„s{½ksµck­RZœBJŒççïïï÷ÆÆÎÖÖÞµµ½¥¥­­­µ½½ÆŒŒ”””œœœ¥„„Œ{{„ÎÎÞcckÆÆÖ­­½µµÆ½½Î¥¥µZZcœœ­ŒŒœÖÖïÆÆÞ½½ÖµµÎ¥¥½­­ÆÎÎïµµÖ­­Î¥¥Æ11R!!9))J11Z���܆EÆ���bKGD�ˆH��	fIDATxÚ•	xWy’ÂQT°b‰FSoëQk„%iY±£Š÷}`E¥µQ”jãJ–’`‘šôÍìRt³û’ef´Ä]*¡Ûƒ™YÂ#Z	„ˆµ(X­šõ÷oö˜„M”ÿKfß{óßçq‡vBîÄ•¹¢7n„Þz	7#Øëˆ‚ Ä¦üÁitAÌB‚‚eå¸å€£Eð·—Òòݞπ~xÀkê3œ[×R"Oœ´RJ¶SÎÕCd[›j–›-+nÖÑ”Â9Œi£ôiþ‚ë,( T¾°¤ºÛ†=¸#Í€J©h%¥5ä@:£x¾XŒvn†å#Ë0¬“z£Y濘?ãz^¸õŸŒjZAY…ô8›l°XîÛäÚÛAÃÀÍ›¥ëMþÂþnŠ¿üç۸׷ü–‡D£èatCåêôrÿJhLx(òXŠJöpMþ—¤ú†ïŒ
¤¶î£Ð6;-ïV‰Gæ°a>Иd' ÅÔÊD‚`Ežå¿èÂÐB“É¿€ûÿAåNÞdq;ìÀuK²vQ/·šmÒ²–«Y/8Ò•‚K4]×ÒAËT·fT…Lð#JL¶ìéUNL)AË’9X–BòˆáÏ?4,³Í’’Êmì½l†ÆÞâ[³lÙJé;‡€~ã¨âÊÏy�¤Z“¤UkÞ½Æ×øÓ�0ǦçFÖ5
ØÑR(=ÿ÷(}žsÔN‘|o_ýNðÝ¢iòƒˆàr
`VS2÷¶œÝ¸±à€ß55aΡÚ+%Izë·tŒ	:b[ºQZ)ÌxJV5±T‰¬…¥TÔ‚n
/NfÁâþ¾ËÈ3÷%½�Ë ¬¹ÿ%�Í%±ÅéÈ1€šŠjïÈ>z±º¼‡Ð‘êò.€òŠŠ%g³0Bj.ZšØë…x7Ðó�ÉüNÙ¤Ç]¨')Bš;bV‹99Ò†ªÿ;î
­ÀdJ<3žÑrálbj(†¦êzÆ]×U-­L’[¼ ‹]œÀV”à“²“|J!¥¢±‡>½ÉMíÀWRšR,9lÈ”[ÕþZºyØreë‰dG“µÀZ1Ì4añÆåË–­òÕŸT²ôøñŽÒèçFÜ>¶Ìt¿nÅJ¸MúzBØ-_ŽÐIàü„ °Ç|~߻րßÿ•ò†¹çʼnÅŽi´ÝYeØÏ}~ÿʺµ·ú_¡cs²÷ôò—Éù<ùÇÚ°a¬]ßKûœ£ªÝì¿mõj¸UúöX²‹Û
Ì{|^vÕ¶#»¸NI4Ö××û¥×°ìï‹XÚ—�žÞûçZ¬Šr¨Ý¸©F/ n{×cÆ÷Ë÷ÞÒ(IïëñD;?͆µ§ˆ½à)€¹”Üp÷"¨e„>²ˆr2üä•'¬'å´
»¡kš�~¥cól+Y8ÙÎ`c¾Ê$DegQ;ª€mqÀo8]�ðt/ÎìÊíA'N:FŽõ¬Cu°nZ­„’�¿oîFc:Q	%Dò)¢¦í»²YÂ*¡”VÞ¿d^äà¡€ `q¢¹�K«.S6³b%-åÕ#³øÑ̹—|6®[Nz§4Tb‡ NM柵Pùx¡LÕL"Wr'6áË	0�pg>Øšm÷"ùÕê«ôî°'ôTÞ°=_V¡ŒtUœ¥v*Wu
;¯IlÒss#[¶¦',FŠSÔ3ù&S¨8§P°™›
7²Š-I»´Í×4³Ã	l0ú¶¸!ƒAÙˆ'2!T]ß–ž Ñݘ‹'òm	qÕNÓš¬âä6Ãx£Á³”!E̺†Fæ@Þ¼) ¥œŽÅbÁüÜ^�Žà aÙr~88Ñ%Š æ'ÞTç÷׿ñ£Æ°¡°¢PG6ìèØ•R{zéVÚ0ÍpÚ²…oí/Ö5úø$ÿ§†ãÖd¶}xßþd4•šÌŒ


µGŠ»iXƒ±6J
«Š»£Î×øê´fºPrüþ_ì'Å´¶O­çTs¾IÉT G^"I~¿° þ=p{ƒ¿ñ#Ãj8'€ÒÞ/|©E™‚=öäÿÂ
‘©]ƬÇ>Œ~ñùÞ&,X…ëÆWŰĜ‹û«§;ÇÝŽ´$s0õf·–!ÑÒíxÔab´°ð„åˆ×ï²`yƒ$}ò�$@ïñôÎk{x`mõÂ.BÛG\Gðº9›#ô¹
×IÉ¢sG©|äeR.w¼Ã'I:Í‹'Ï¡û¿â—¬íFÁ!K>’ì™åð))ÉýênÈb-ÎÊØ±¾Ýù†FÉ'@ºþõ?<‰wT>mÙ/ÜäTç÷3Æ=pV|]ÙÁ{·°h4º¥Šn™ÍÍ;3ı¶,àGÕ8­Ý¿ô}7ÝôÞÿèt�o(¦-²h—ûšB{*»¶U	=XË•û­9–äÿî¸âÏ^©áAéacÛqøAM›Ø¤‚±˜eòF³Í©4¼èY®Ü°£wqÏTõŠ>?$|?óùÜß5­"_Ïpc*»Æø‹¹¬þù|3»?Ÿ‚,ÉhJ¶Âñ«Ìp	 ýBÛK‡°]³Ãùºô©sk9ƒfn@¿ðÐù=^nÇŸÇêåW\)9SV`–»eÚ­å½Òëõ.ªÑ›ÝzT0ãE@÷òòMÜŽRDòÎ,uîÝ®J=âáÍY@Œx^M޹Êt3ú7δú9ä`9®y´jVÅÂÃÌ]‚|æ¤ €ZnK{¹í%çzûúú¾Öߟd\¯'âîà gÁúp}ð‰6”Í}k_»ín�ÌÊŒ»‡”Gœišs9fMÜâ%_ºçˆR?#‚r¬S›BºjN²½Èèì4FFE“Ó
 ½¢Ö/ºº3d¯ÜyŸï¦²¦&Ì]ǸÙÉiÇ�±9R߉‰XŒúøÖŒø‚ Å`Ç5ªª
aäÚ€1¿ïä#_KOV®Ø×ˆª™Vjš±ëfM‚†–çÌÕ€\Äô«g²’$P
¿Tð+‰3w'—xQéÔC[·†²÷Ø~bè+V8ÐYø´r¾®t±9ðçƒ+¡™ikº˜M«°ñÊc˜qMëL`|²HtjœÂ1E!ÿþß{ѵ>ÿ!Ð{‘nG^���EzTXtSoftware��xÚsÐPÖôÌMLOõMLÏLÎV0Ñ3Ð3Q°´Ð70Ñ70TH.Ê,.©t(®Ì-H,ÉLÎ×Ë/J�|jùxöÂ���3zTXtSignature��xÚ34LL2NK5MJµ´0H4LK35L17MN³H5347N´��š	%Žg¥Ù���zTXtPage��xÚ³4«05ÐB�
òkž-(����IEND®B`‚�������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/README���������������������������������������������������������������������0000644�0001750�0001750�00000000214�10343637563�014073� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
 These are so-called "powered-by" logos.
 The file logo-xxx.gif can be included into a webpage via
 #use wml::std::logo
 <logo src="xxx">

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-htdig.info������������������������������������������������������������0000644�0001750�0001750�00000000066�10343637563�016132� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ht://Dig
Internet search engine
http://www.htdig.org/
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-apache.gif������������������������������������������������������������0000644�0001750�0001750�00000004426�10343637563�016072� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a �÷��ÿÿÿÎÎÎ¥¥¥„„„ssskkkZZZ!ÿBÿ1�½RÞ­„ïœBÿ„�ÿÎÿÎ�ÎÎÆ½½Æ1�ÿc�ÿœ�ÿï�ÿçJïÞ{ÞÖ¥Îÿ�œïJŒÿ�c焜ïRcÿ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!ù���,���� �Gÿ�H° Áƒ*\Ȱ¡Ã‡#JœH±¢E†0°À€l0°!Ã(Q&XÙÀA„þý3ó_™hþ; ¦2	ø°3€™=e%03PpêüWèL«¬Þ´y±«×¯`Ã|IvƒÙ
*P 0aÂ?	J㾕@wÛµ2PÈ0!ƒI¿Pþ;™._Š]̸±ãÇb#Dh0�Aƒ•	R
Nùσfý†ö+Úd^½¥Ófð uëÌü'€£Àu'HhÛ–îîݺ%\0xaíÚá/^μy
5{XØA3†‚0¯d¸@{‚ƒˆÿo�ù«€óçË/Œž ûêãËŸïðåy¹oç¶]›!oß½L•’(PSQÅST´	$ÀPÅ´ @L)’SrU×Fʤ} †8_°Rg •dÚrT`×ZnY…Ÿ\pýö[¨5À^�˜À�-¹ÔPºµ€¿MðáAÅGÁBN"‡ÝrÃY°Üu	I·Öaçw_Þx"–iæ™h¦©æšl¶é¦A.9Ðy(æ€�
àÙPMXÅ‘Q`ßO/�•SE€  €Sð	@�|E@@V2iøÏ�ŽÐg¢žúæ¨eUP í÷_*J§RMnÿU…’)õNEzIMÔè=*S¢Viêé°È('©Ìª÷èO�_ÁÑ8—p—‹¨M0a	 È’x†!°¬|[QÚìº"•’Y¡©ÕŸ‹lÁ5c~¾õ¶½x¡6Ò_&ÖÀ¹å;
5éäÂ‡%B4÷pB¸j±«”f€©xã…,òÈ<†§‰š
†’Ф±ÌœqjÝ5ÁOnÙ;#P
Ûk­9 ¤ÆENP’ENLÂ
'½–ÑÊ‘&åmËe|–mìÝÕXcòÈ"—<ªdHfT!p�)àÁ��ÚÛðš…ÒqåÀ�wª{d¾Fÿ„Ap <ÒO7Ä\ß~>7ŽRÇ^~¼Pw’4&ט‹»œwîùç ‡.ú褗Î9ÁaƒMÑÈŠX,A¯›.;D¦ê-)£hk–€e#TÓ±ÿL*—°›eÓ¯É*lRVñtà/U—¦Êoe�ó³goÐ�	
@@…Z˜4RJ,í~ëÀ?«L’â$!üj”)ŸÏîd?°2q»@¯óÉV|¢½DF·ª‹“ü“šÏx@)0ÌÀjBA�ÂOW׳ž¤œ·“9
ëSIÉìðã]Ï€([€b�ØL)¾‘�ŒŒã¯½�\X‰,ƒÕ%„=yTWÿX˜BŠ=/éVo^Ã|ÉÐ.}éVÜ4ãÀ6 \zƒÌrRÄ.V*l¹ë‘_ò2öÜk.7z"Û¢ÒÜ\™)ê(R—Â%Dix¼�â
røQp
�縔p�qè€";à5…Pn%$&IÉJZ²’‘´ÈdÜö.—¦E0b"~jd£ýàH-1£@äV°Í\ÉÍo�™¤Qà¸Ì¥.	—çøe‘Î ‡ILh :)ÙA¬æÈ92L–Ù¦IÍjZ“1w»LW𴍿49B¥]
�Q&Àá
oÚ&žØÀæg!pB´Ý Î–»Ìg”4Fó¥Á])KšY‰È¬ôj[Ï%'™IõŒÍD+ÙJHÂÍn.ç4ýñË^ÈØ¢¾ÄÌ�3»U\~b�ñÀS K’:y“$ÄÙÆÑ#}IS©„j	á€"©1ï“Ö|¤ÖÄ$Í .@™i’Lm\麪Ge¥þB’¨¨�í„k|ö!Ü�Gk�ÂJÖ,±p¼ŒHÓüV²º5¬Xt"ÌŸó˜šA*J¡™¡~‡¨ã¡¤Q¯éEÚérŽî9ì@0 K`úM—è0'&Y»ZV¯@5+ÍVó ƒ
-5KÚÒšö´¨=@�;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-openbsd.info����������������������������������������������������������0000644�0001750�0001750�00000000072�10343637563�016462� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������openbsd
Open BSD Operating System
http://www.openbsd.org/
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-htdig.gif�������������������������������������������������������������0000644�0001750�0001750�00000003436�10343637563�015750� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF87aQ�6�Ä��ÿÿÿµµµ{ss„{{B99µssµJJµ))­½½��­��„��J��΄s{cZ”R1ÿÆ¥91çïïJRJckcŒœ9csZ{ŒRs„Œ¥µBk„ÎÖÞRRZ���,����Q�6��ÿà%Ždižhª®,™½p,Ït‰š7i£íÿ0ÎHôi0˜c¹$ ‹Ðàð¥áX56$†CÄv:ÂÒ`p|U«U;ͤ9X¢ð%Ø'Сl<@vJvvvCuwrS“�y3�…ƒŸŽŽ:\–t°›2”?“¦§¹«¬•´º@s˜š4¸ÉYƒ�aÀŒ�ŽŽ‘<n5O³³µä1У Tq0¢ŸÀíŽì�/´Ä£pC�€Ì.!ËTÑ8Grµ{gEÆ>�*L�&áµßö4"À¥
<*HŽÿL˜fà\BX$’äQŒš7;*ôPÀAƒ€1q¯Ñ71bX¸¡RXv(´Lˆ®&)Å$…Pa܇,ë Â�cÓ¥öÔW¦
k~XFw!…i„nˆŠÊ§k£* ]¶°™„/p ñhRÀp‘u˜°’”ª™&$ýংÄ�àÑÊ•áÃXÅb}¢-v±Ñ¶� ÃZi‡€æFS©¾¤´9àçHn–NÌñbX·vðú±ÎÙ{3.ôÀE7¦�~óf`‡}ˆˆ2ˆ[/ì3±ØåÍÿ>·³6Æì]^‡ÏyûgÚ5ΠÆ1ÑX©¥÷ÈzÝ´Áÿw| fØõf%#(A@œךa‰­åX#oÁRÁ6QEUŸ|EØH}ÜéÔ4`€}e^qç
ð^,UË«C]žÐçÛšUð>lpA'�pµkøG^GáåDdvXàdY—¢‘¶³ØV–a¦‰õD�|�emX@gGF
…I$o+	�¦"L•VC©FÜØt¹—î̶J�ãTrÙn£éÏ †zà$8å@¨¦çœÕ´È&³áå›Î'¡ «|@#X@ÈìJÆ˜‡«Dò
{=ÊêÉ&t%¥¢vÛMšMÿ5DÐÍ Z0Á·à×@w6ÒÁ–œ~‚Œ&IeãÒÞ‘3B<Gˆ°84*Kiî·�ö÷áÀ«˜mÜp/-aàÙ"ïFa‘hLÐÀ|ðo5ÃhL¬Ä/ìõ	Ç@¦Ë€lÃ= Á°{�ó‰PäÙ��mÂ*Ó°†˜B,šÁ‚k€ o3¨šêÖs�{ "¾lœ›Êtàä$ Ü×`‡M¥ÿúBÀÔ,öÚ…ýôÓ×
xÍöÜÊåmÙºš"s¸§Ñíw^À@$Pø0€@àŽøà€�ä	@vÙ<Ð.gì-Z$ž¸ÿäW^¸è†^Àä‚xê:á$`øí	p�âð”�‘ßÍ·ìXðáÁê@Àï«ó¤ú캰;O…í®\Üa|ä‡ï.·âÚP¹ä’+ЀÕüüwwà‘Öb„ÞøäÒ/î=ð·‡5ùõßÿ½öbÿ2€†ô­�ÀƒšŒinä?×ÕŽuˆc\â*§¸*Žu´S€ð&@€ìO1Þ:ƒð
$a€
l[àÄ'¸°Ž²{ î´·ºÅ…îž
 €ÕQé|Ä2 	ùð	¦{µKÜü§8ÉÎv…¡àî4ø/¤l˜�/ƒ\ <)Ta±(#ÿp‹Š)ã·Îà‡
@�_ëÜäAÖˆO9­c®)éO‰ŠcÕ¿�€‘5¹‹"#91®NzÒKÝà�‰¸ØpÒÛX›·;@ò°�iK608Ón‚Ücb�¼æµÂ…‰“DðpÁÂH¯w¡cdØ®Fð–JÌÝ./WàXåà¾F¸Þå®uýƒeØòÈ60@pü¤È`£¹-nnH¬cýl'=f.³‚ÈñÉ €¶Rrýü8FGrÏqË\eì`8ËeFî�gƒæl—»V&5eX‚LjDF2‰À+œïšÉD`hgâBÇ;9Ê£i(Ùl 4ë9žÿrn¬º¦qBJ·pbrrÔ›Ûï „%ÀµSLM¯9Fx-5è-w×È®2zºË.wê�K †Ë”%&eÇÔ1¬St˜<%8å&ÉV®Ž|Ï»eXzרÏz0$Gµç¹¯ c€t9Á ÖsC»JKÿˆñ¤å®#
#aÀÒ·þõ®Åq›bËØÆ:ö±¬d�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-gimp.gif��������������������������������������������������������������0000644�0001750�0001750�00000006103�10343637563�015577� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aZ�$�ç��Š‚lBB4¼fbL¢¢œ–’„všbdŠFD""RRLvr\²²¬ââ䢂„22,¦’”ŠŠ„¶ª”ZZTnjTÒÒÌNJ<¢š|~zl::4ªª¤ºº´**$òòì’ŠtŽ‚lJB4ÎʼjbLª¢”ZRDbZLž’|~vdrjT†~d¦šŒÚÚÔB>,’’Œrrlº²´êêìRJ<šš”zzt‚‚|šŽt:6,¶®”¾´2.$FF<ÒÆ¬bb\F>4’Z\*&$VVLŽŽŒ^^T>>4’Ž|ª¦”"žrtÊÆÄ¦¦¤&&êæÜŠŠŒjjl..$úúüJF4ÒÎÄjfTZVDb^Lrnd®šœâÞÜš–ŒŠ†„BBDÆÆÄ¢¢¤RRTzvd¶¶´ª†„664®–”²¦¤ZZ\ÚÒÄNNL¢žŒ‚~l::<®®¬¾¾¼ކxÎÎÌÞÞÜ––”vvtº¶¬RN=žžœ‚~t††„ffdª¦¤¢~|JFD†64~"$šnlªŠŒ

’NL²®¤òîìš^\ŽJLææäÖÖÔööô¢–„~~|nnk²ª¬¦†„ª–”îîì–^\¢vtþþü²žœº®¬¦ž„†:<~&$JJLªª¬ÊÊÌ®¢¤’Ž„b^\¢šŒB><FB5ÆÂĦ¢˜š’€&"VREzr]¶²¬æâÜ62,ŽŠ^ZN‚zf>:-®ªœ¾º´.*$–ŠtÞÚÔ–’Œvrlžš”†‚|>6,ƾ´fb\–ŽtNF<nfT^VGf^Lvn]’†tVND¦‚„ª’”‚vd¾²´®¦”¢rtŽŠŒ²šœ¾¶¬®¦¤žnl®ŠŒ¶ª¬Š‚tÂÂÄfbT""$²²´224nj\ÒÒÔ¢š„ºº¼**,òòô’Š|ÎÊÄjbTrj\†~lÚÚÜB>4’’”rrtššœzz|‚‚„:64¾¼2.,FFDbbdVVT^^\>><&&$êæä..,JF<jf\ZVLb^Tÿ�ÿ!þ&Wilber was done with The Gimp! /tigert�!ù
� �,����Z�$�@þ�AH° Áƒ*\ÈáJæHœH‘â§‹3~¦£Ç×®
9òœ“(á|£õ­‹·`±baâé6mdrêÔ©­Á›7ë2¬°R–y÷¦ÌP”qŽÆ‹íÞÑVÌ5!³š„³5¥ÊoëÄ|ó”¦^=7áÖÈ!·(M¸s(1šò©Î—G‹½ªPî„*a¥€¨3"K�¼/bìÕûâF)Oò
ÐË$]KhÀ@[à8;�(Ùƒ@œ¾}KHšj2(û–SÛÅô¹sKdİÅr1d¥l)BA/_9<d	çF?GOêØóű֔ñRþ~;©ú+mÚdÎé¦û›?Ýÿôä‰Ižvëž8²…^Y1kt"àbÔ“Æ|°ãÎ;O¬ÓN;yäFÛÝÓÐ…^èC†
YcŒ@JE4Ç<aP´ÇÌ‘Ç#i€‡ìñF_ìÆï„Ç`,öWpÄqO8ïÐë¨D^mõ…‚Ã-èĢ”ËÄ$å.Ü”C‚$@@Q'œ@Ìý,ÖDÙ  À–€IG×@“HH\
€RW㡤ڟ†q�
àÆbôsÎ*ÄÂB,Ü1Ç"ÝÀË0ÅÀb
"”"‹²@0Ýõ@ák$5Y•Èeþ‰lr"pÄO ˆ ’ÈWÉ‚†j~^–%òjd¼ßžä±Î©=4BÄ¡€ì3„(þ, Žt(˜“>ntbOŽQ„îˆa!‡ðÆ+/†—0Â%øæ«ï¾üæ;ÿ�,°ÀŠl°Á`LàM3‹¤C‡Ãt8pðÁTl±t,ÒÅ9ÔÓ=!V$2FNAv
´êQHV‘ž@zõUNoè’Â1±¬rNOHHÓOó1›Ç
h±BÇXÀÒÏó46CDŸè“Ç's|ÁÎ{|òd1ä8U8{H¥OïÄ’'uxÇu\ãI8p0w8bðñÕOé‘Fþ:âÌÀˆ"ÌòÁ%SÞJ(«ð•ôªàÇÐàø¢pgFˆO©édVµªUV2“§äxjSw²¸¡Ï=ÜÐBÆ×DS‚"ì!f|ÃA™"ƒG)/<'‹ø˜1OPØÓ´cEs€3_ÕrH‰p2@¬ÎHšÌÆÁÉg‚ —“#ú˜qO'õØÅ#E0Œ1¬bÌüC“)
²ìÓòôŸCpÃLE„p‡yÁÄÊp­¼ªVHF50ºÌç�øgòF† ¢6ÉÒÆÂðnœà¥PJÁÂæÀB‚+Ð~œã²ÈP…Õ•ÊþÙiG…¼£•„g�z
xàÀóüi'ß8€È œ„0„"œ}òãˆУpÃ6Âd!
ÈF6ðQ>7Ì#1pÄ¡0Ø ÷ Yô±{¸áó˜Ä� Bh„DäÉÈN0ò‘‹P'Hò_¸‡Ý`†Nn㓞ì¤ÜðÇ{dÒ”˜Lå6ð‘y¹ò•°Œ¥,g™UÐò– 0Äfi�c¬�D÷º˜0‡IL:D¬˜ÆL¦2Ó±d23”jŽ 2PmÝÈf^¶™pÓsøF(´0Œ.aJaÊSÖY²“©‰sX¡Ë`&®ð‰tdþ`Bp€10`y`Â⣬,6ËÆàKQˆAŒåQBÚx„DÑ”‹Œ@#'✰R’k|t¡S
¾!ÂŒã!PÎŒ±‹^aëjGt!;œÃç8	°@˜@U'�>‘}„£FúøÄ$m$`«ÊËê�­Ô õ0Iîq’pl5H£{âò@TaÇ*háÜacXÅÑì&ãøÔªP2DQ\î¡T#ƒ>¾Ž4(ÕF'bGlgTm¼£רÃÈ&€/ÄÁ•½‡Úê�€p„#Ië�€J˜`¹£>
 ø�JT!õrþÀ"f 0Ä¢œ=}`D ‚Cöp×™p‘vžži‡<繕ïtEtß`¾áŽ4„	Pc?f±ˆmDb‹ Ã\ÖA„{dƒsC9°`dP¡F�•,äaÄ|‘1˜;®š˜a‰B"–g‘”$fK$Ýk€˜w8BÛpÃúцQ ÁrÃf�†4˜A¹]À1ð°ô/‡©àèaztBU¸èɨq�j|$¦`Y&0Q'œä¹~ú•‚u§;hc
ÔÑäíÁl¬Àcˆ‰
Ú ‡P„Ü � ÷^ Èâ9BÈÂ6:Áâ=@á€O3þF³2«HbJÈÄf0gÒ�"–!
$Tó*NLÕ8@ÄÇ„Tu"1P°7TqX¸o+àË—’F3”b^þ”,ð‘}½X;€¢"YÆ&Q†Ñ”a�œØ•UAÕ á�“Ð`"^ó
P`'o ‚tc‡Ѐ
Tø	®àS½†Ê²è‡`¡ià"cN;Þá wô×0…)^e‰¬TãUJˆÇ˜ŒôéµþF°ü°)æ$X‚°b™Å"ð©HB’…ZÔ"(P�Œpbða…+ÀCê¬ÁWƒA;
Юî¬ês!Ù‚®þáŒjÈLÁ*ùUz¾‘ÚÂÊH@QEŠP„}C
žpv�Ã]ð€l!WÀCúÈBx˜
!ôñâºiP;†v%Et�]GCŠr@ñz'/çIA³Èï0àgî`‚‹NŠ’”¦<4“Ù!G˜æ¡�T·úè�‡:H l{xˆð„ÂþðXK|â{xÀ¿kïˆ|ä1yGXÞòî°ƒØÁ(ôÇe	$D Ùƒ|X;6Ïz<nƒ	ôØFf¿F|„£š4ÜIÉûQöþ÷¾ç¤ðE)Êmxò“ÆG>z{æ{Ö³úˆþ6–ÏÇOò1æ0G@��;�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-wml.gif���������������������������������������������������������������0000644�0001750�0001750�00000003457�10343637563�015453� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89ad�2�Õ��ÿÿÿ™™™ÿ��ÌÌÌÌ��™™�™™ÌfffÌÌ�33fff™™Ì�ffÌ™��ÿÿ™ÿÿÌÿÿ�™™f™ÌÌf™™f™�™™3ÌÌfÌ™™ÌÌÿÿfff™3ÌÌ3™Ì™f™fÌ™�ÿÿ3ÌÌ™ÌÿÿÌ™3Ìÿ�ÿÌ�™Ìf3f™fÌ™ÿÌÌ3333ff3f�Ì3��333�fff���33��f3f3f3ff3™333�3Ì333™ff3�33�™ffÿ33ÌffÌ3f���!þGIF SmartSaver Ver1.1a�,����d�2��þÀŸpH,ȤrÉl:ŸÐ¨tJ
�®áàÊýB@ÊËý’¹a
.³Ýãò¸xÕ¾Ùmê6:ˆ[?)sWqa`ƒ‡vv`‚[„c‰^kxDVaYu‚›R�Y‚ V\km¤_£‡–˜§^C�it”x›_ŸS¹dYV’^ª^¿X›[ÈB­“ű³—W·]R{)Viif·ÄÛÝ ²Ã€–²}ãÜtéwÛfÕ\£]óx[eÀvËfÿÊt+…$"r?–QYȰ¡Ã‡#zrS&Ã�ô¸ÀC@�((p°Ï„’ûDª\ɲ¥Ë{"Èœ9óÆ
0¯ (�Äþ@€€PÀ¥Ñ£Hݘ£È£GFšPeâ2X³:Øúᆤ`Ê\ê&*³gi¸é¡€…¬Y?ŒÑñ�!~vQ×rŒ²b±¤äòT�ÚÃig kf9øAˆŽBœ”žZ9ÆÜf±€Q¨ELZ±#v>^Ý(‚±ðX'ÀŸäEËU)UΗ)˜Ù€tiš«“p „†¥ „™“Ɉ;@ÔceOŠ»‡Lã
Š#&®ƒ‚r·c^°ÑQ¹¢,k²lSÓè@š5üøE쇟ûH‘ÅQG†–ƒ)èÃx2å°ÂyU¦C/H÷Be³@^mþ ’á>!"Û†g�w¢Õ@

 
:0(�Ј?T€Çþ1K4ÓAŽg¦Xw`7¥x–r1ƒx‰ÉôBr/TÉÜÑá(Ä]èpÁ—4XD"'®p—’wJpM@9œa:<X�‚äHÝ<ó@$f\ƒWö¡sߘØù×g€ûŒ†–”€›ß­`	€A~³Ðà@\ÒõŠ ™~YòiBˆ^qÛˆå0ĈŠ<¦C_ÕAXàV�€`Áº}±GpÜÜ“YÉ‚X�Š˜ÂÄ�éw
¼@ªe Ã¬¶Á¸@
˜Kÿ˜»WJD{XxnF¹‚¤<š‹Áçez¡öö)BEŒ*¤%y©TÆ‘†bæÐ%è/Vk†z†Å�!p,ÿ®Ø�¼™&iIÊÔ@ÃÂ1¥rŽßû¤ñ#*ÅvÅ3¯ëšß%LÓ+¬\�‚æ(ðƒÄÊý´“Ë¡p«E?Ö¼^|l®afEùsÃTêàµÐÉ)MÔOWâÔjP—’Íì|樹 UÖ0\ãÝJ#P¥ã(âÙ$GÜc3!öX-Ò�ßÍ-Õp}·r(Mƒ¥¶‘
Hé¢P0µQs^›ô¦”ºWìpÀ75Pƒa¬®@©©öxØþY¬—|qŒµH±ÒÇ3†«ôÑ5L 5˜`‚46»¸úÚèejèµ;E±mÌíèèJ€x_
Àu^<€'\4ÐðB£•wò—æFC†öêö'¤»a€0�øÀ@( oŽY
 ƒ
Ô+“ÃÅôÐ1‡-Ì	öCL*¨³–`€
¡@ˆÀÆ\‰.X€Ž·t§….Œa=Òe,uѰƒ,�L B‚ï� ÁÊgBÑEˆî1Ö¹X¸Dܨä!L�`€�_Á@±â�U~ÙiÅ*1*}üA!dÀª¨c;Á´;T@®þÁ+¶ˆs2À�*p’¹X%ÒÀ_;t@2%@åˆÎpo% T@®�‚*‚0ð�
0P5ÍÀ‚~éPÚàÈhDB›�E2JÄ?–(À”c^`I$ ý+è@Ê:}ñ…Æìð5~ƉÑa,WËðŠ3†ªœAlQLQóŒ�’*ñÀ¾í%±ì!�Ð$h^c>¨ê(å§Q&¤>½D'”QÊhz©Ý_ @r¶¤	`2¤è§5®A™ƒÆ7[Çê–
Àgnò§!>¤€6ÿ™eE—ÆmpÂ}Èç@„*b„‡óèm¹?
”s‰¼sÄõþÉÈœ¯%ˆ†-É"Ñ%~ê¢I	£Q~ó’—Âô¨Hõ7<ʹ¦:5L}ªT§JÕªZõªXM�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-gimp.info�������������������������������������������������������������0000644�0001750�0001750�00000000071�10343637563�015763� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gimp
GNU Image Manipulation Program
http://www.gimp.org/
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/Makefile.in����������������������������������������������������������������0000644�0001750�0001750�00000002213�10343637563�015261� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_misc/Makefile
##  Copyright (c) 1997-2001 Ralf S. Engelschall.
##

# ------------------------------------------------
#   DEFINITIONS
# ------------------------------------------------

@SET_MAKE@
SHELL = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

PATH_PERL       = @PATH_PERL@
INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s
INSTALL_DATA    = $(top_srcdir)/etc/shtool install -c -m 644
MKDIR           = $(top_srcdir)/etc/shtool mkdir -f -p -m 755

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man

# ------------------------------------------------
#   TARGETS
# ------------------------------------------------

all: 

install:
	$(MKDIR) $(libdir)/data/logos
	@set -e; \
	files=`echo logo-*`; \
	for file in $$files; do \
          echo "$(INSTALL_DATA) $$file $(libdir)/data/logos/$$file"; \
          $(INSTALL_DATA) $$file $(libdir)/data/logos/$$file; \
	done

clean:

distclean: clean
	-rm -f Makefile

realclean: distclean

##EOF##
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-xemacs.info�����������������������������������������������������������0000644�0001750�0001750�00000000054�10343637563�016310� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������xemacs
XEmacs Editor
http://www.xemacs.org/
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-freebsd.info����������������������������������������������������������0000644�0001750�0001750�00000000071�10343637563�016441� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������FreeBSD
FreeBSD Operating System
http://www.freebsd.org/
�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-linux.gif�������������������������������������������������������������0000644�0001750�0001750�00000005230�10343637563�016002� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a}�=�ö��ÿÿÿ!!!999JJJZZZsss„„„”””­­­µµµ½½½ÆÆÆÎÎÎÞÞÞïïï÷÷÷Ö)!ÞZBç{c÷½­çsR÷ÞÖΜŒ­„sµ{cs9!ÿε÷¥{µ{Zµ­¥ZRJ91)9!�”„kœs1sJœ„ZïÆ{œkcB¥k�½¥s„k9­ŒJÎ¥RÞ­J„c!R9Ö”J1�cB�{R�”c�­s�ÆŒŒcÆŒ„Z�œk�µ¥{ïÖ”½”)„c½ŒΔÖœç¥9)�ç­÷½ïµµ„�ÞÖ½ïÞ¥ZJïÎBÿν­cïÎ)ε!Þ½ïÎ½991kkZB�Î9Æ�!”�œ�s�s)1­Æ���������������������������������������������������������������������������������������!þ(Comment: By Kevin Hughes, kevinh@eit.com�,����}�=��þ€�‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥’c©ª
¦°¤ª³ª¯±¹´©©·ºÄ˜½¾"¼c
ÃÅÏ’ȽÐØ¨Ó³ÎÙáˆÛ##ª"æª!ÖâY	©ó³	
×ïý�ÌD0��¦Ò÷À_?i!$àØ˜T%`�—ÃpÆ @
*7� 
Á7±9#ÁH’*RžT¡‚d–àbB;¦I•*O¨T±RDB- 0…;F¦*VxP!2fÄ2í¤£@Æ<Œ,iá À˜þXÆØUl,·úL°`1¤€c
ɵKA4pÐÌ�·©°LxT„T8`àÀ•g´t®‹eAÇ�¿zeZ#åL–-¨SD°Ô¸<{þ×1mK33xÀðEDG±3Z‹�áÖ«ÄŠ/Ó–ƒ�X²kƒZPÅ\¸h	P]ÓíèÌ$}ÜDS5À­Ú1ƨ–¥RðÚ,`\÷2†áqÑÅÂüF‰H
(&!¯ˆ��T‡¤"ÀôѧÚ_ ¡1²� @˜C{$Ø…Œ¶É¸ø"ŒÀß.ð¢þÀa!
tušn"ê²¢‘?ò²$�ch¡E_hÑU"p@Tàæ›p®9H›oŽ‘…?š3ó €�/	|9/ŠØ‘”ô%W=å!²¥^äLhà”˜_äÈØAÇ	"€€ôHØ@HÎ|ª@"Á#àVŸ‘"�V§ƒ€FPj‚¸Òéjõy¨ŠzýiÉ"ž^N*�‚	fª€‹ŒP€3Ô½¨§©ø¶’/žƒç‹¼<ðÀ‹`ÀF”e$@�¸ávh”¸úª
–‹lùcÅrl‚a|‘…?0‚=®|
#/Øf+iÀ/$’‹~&`€-0`eðþÒy Êkn޹«?‰È›çÁƒÜ^¾ðûc¸\#0½cL`¬%L–�XlKoܾ5k]ñ�¢”×Ôe*ú½å—"vI²§Èrá…¾Ëή°£ž?¦¥6/°§Ÿ>ð"2D[Ð	l,åÛ¯ŒAQ>ßÄ;¬æ|i²ÔÊ6¼r�
¼Lp×dö²×Уß/J<@ ýpDG,n®¼âŠÚÜÄG®Ý\J+©½QO½o
¤dØF*ó~ÃŒ*PÇ€§‹¼Èª£!ÔDPB”»a€R­p	.ÑzˆÈ=ë]º²	:øU0׃U³Áþß@€ŠÎŠ«}h4 ‘„ú@üÛ�(Q…Sª$a…KÁдŸõ–<ýéÀ^ä¢Tc`1#–À#¯uP̪z¶œB`A5ÐM~w“®àê}`€ŒàƒT€U(ÂOò=˜I/ASKYõ0‚–Me£Í®ÕÀ1ÔM�#øÖ¼&�€‚�:P‚9X…›Ô@nÇAs`#-DPÂï„·»ç
kUyÇÞLÇ/
çzGr‘Œ~D¯á[³{€4  ²†á.f �ÔÇÄ›4
ªÐ”"Ѐ%T±FÐâï�¸`µ0Œ#õ4_ÜfÀÍŽþ!Dq„<Bà¼$Ö Adä «ÀƒT`Q0äSù»”Ò‹-ãÓVò?~•–œ——~„Šj€&ó G �[øIbÚy@†�TÒ2•UhA®Ò…‹D‘}lb˜ñš&mÓK„`×Ȇ8�ȸoÈx3Æm͸¨æ5S©"Dq7	²ø;q¦R¤ÍþoYônéåÁò�TÀl=kßü$6!¢*"Þ—�¬tɸTpÖ\dC›¨„"Ø€ƒx€â3†A‹â'N �Š•“ECÔ™9ÒéË�°£9nI]ÏÆ°þRŽÔa
;€IYº8†m-ˆq£"©H>&¡8àÆlðSZ"ai#—D¿èÏ‘]@L˜Ê‚¼"$ç<€À�Ì13¤ �Uj‰â’I/‰„@qÑD�"Ø‘HÀ	;@ˆP„ßQA-=P«
x0Ö"!zÑRäE•]u^æ�E [ZÀ+DŠAÀ€ÂÒB”)˜Ä°°,Ž€j+n H`;`ÁYx ‚<‘ªÙ	 F�° K8\]ÔNßüf‚Mï`[Žö>nˆ?
o'õ�(€góÝŒk祀<V°åxP `¡f©×Jt¹‚þìu÷=¸A
�R~Ê—_€îz@‚"R¬1YŠ@›KâÃZÏzñä­¨# 
·ZÌ=pû€Í,xœy€D€Xø8eË!°`@d" AÌñc°,uü+íd±€°€Ö@µ\s¨¼�3àË]îò—s{@àPÅ{1sÎ̱3»yÆ0V€œ»œ"Ü6`Î]V€Øvå
%ë7ò-)š™gžÉÄŽHòEmÑ(®«+DT o¡FÑŒ^¤)]i4Kº9-vNšq‘7FQs—Sw â>YèÎ!.Ãä3oZÓ®À‚^óHˆ·Ùn~åÑ`€Ùe‰, ”µ!D`Ñh5KaÐu¼ÅêB%3fÀìjÃØÎŸ Þø€:h!PŒ¸ŸUc?eùšq?•mRóì݈ˆÀv`­EØŽßâ“·Ræâ%¦ßŠ	*jìí\Ŭ`@3xmˆ·�<K‚¨91þ³½„d±P¥cçhù¢¢x¯ï3eq³¼Þ$5ÂI^ã™#¢9JV’.é‹ò<WÍ93Ìó]ã¡ççÇ4ÇiLæ+›äˆbü´%©G]Ëž¦zÖ;Áq±t4`?D ��;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-xemacs.gif������������������������������������������������������������0000644�0001750�0001750�00000011026�10343637563�016123� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89ad�$�÷��Rt‚|¾Ç±ŒDEY·åÓÁ…… £¦áÅÆC4TftXãäá,œ{„ºæóâÔ¿ÄÛAE•盎' §ÐàÕ×33ŸpV˜ÜF,bf³GS™ÁÖÝûæá”Šº=4ªè© fQúÙÔœˆ„¢µ¸MJ”(1a³
øøàãåóµ$+ĨÔ=4ÅT:Ðg'ÀØÈ~fbƒ’—àÕé­«°Š–»ÒÔÜpx³<<^ÑÌÙ¯´Õ˜fŒéŽ™–•¶dJ4‘5>‘ßÅñ¿µ¹±loÒ×öJXzACÃMEÈøôö™šÞ°IR̤À’ŽŸ¦¾‰…é23ºèëàùëôÆ)(êôô@<¦úÚë02‚éìó‚…ŽÍãÔA<ÅùÇÅlv¿ÈôAD«²àÜî{ŒŒcd‘(8hcØ|thßÜÙ±¶£†ŠºXT½é¸²´¸ïùüùÒæíÈ ­ªÖœ›’•˜ÑÛÙxuÚØ—¤t2;¢MI¬½¼Ö˜œ¼êü÷¤Xh1'ÆÌlX‘ws´2À}ŒüZl€'ïmiÑWW¯VYYPÌ>TT2$¹rgØ~„œ~Œä
(„^Œx4(tnœÙ«¬ä8Wçš¡"&tEH~=5„üÎäÙ¸³tTP‹”àΈ†CFù¦¦ŸiaYZ`ù¸µälpÀVLˆl—‰áÐ×Ç(*Lf\º±,xxŸ8/¼eVÀHF°›’ tbÔ¾äüxˆ°6? 	ffiž$ok´YY¢±Š‡¼®ü}{³ Ę¢ßZi.(¡1;_ (3¾ÅÃÇ$É©¸³	 Ì'>%Ê4&13;Å4;‚”^”gùœ™¼Š LX’il±¶¼è¼ÌÔn|¡YWh:0ü®ÄYYŒz¼j.)vHNP°+1äÍã‚DNÜRKÆŠŒ×Œ‘dl¢ªèÀÒôÍË÷ÎÊÈ:EÀjv¾»ø|FLŸ«¥áÌͰ»Ô¿½¹ÂœŒÒëÙ´olÏ{{pV]¸|{Ѿ|tA=†´141j¤žì„:DŽ
ÁÌÛAL•!þVCREATOR: XV Version 3.10a  Rev: 12/29/94 (PNG patch 1.2)  Quality = 75, Smoothing = 0
�,����d�$��þ�¯¤8ƒ£›Y
(,আ©‡PjÔ(¯Ý–3¦æ¸yaŠA»vdœ9—%Þ‹32ºu³ÀÒŽ9`^f™3ÇB
(fáÀ/hÖ1´[»4³0¨ã¤4…²4åÒ”)dl·$ÃrD.=‡ãÊ¥DœáÀ!‹©3"b¶³€1KíVJ”xƬnn‚Á´ ÍBæ8´ðQ]{k„%:çE
0,Ï@ú¶†…9Ñf0`€ä
$mÚDé¥J”(m:t(½g›(HD ÞÓæÊW`?@AEÔm¦¤î}zuê[¬ÁÞ3åtíã[¤Ož|σãªQþ—Æ=e
õêHP a0ËÛåP:ˆxí:
$ª cÉj×D˜—Úkëñ†B" �EmH˜÷Ýløµq 0²PÛk\'B:†€°\
mijnþ5—Úi©ñvboqÐ2—µ—_kö±Fù!›z§]œ|ôæFÜì"Âm`ÕŒmˆ áp"“0uœa"oôBÌ(Ö,)ž„øÍ'áþ‘ç ‰ÈAK¥I(B÷P3Ì0¸íÀ	t‘#›[À3&A"	'颟jļÑIú·F$0±#
ðÜsÌ1A`nú=ð�±CŒ,;„‚tLdÒA3”¬‘âiþþ¥x"gˆAKPË©‚1ÙŽ5[(1K-a0“H&[´2aÔbH‚²ÁÍ*ÙÔQE'Â42Kïœ%̆ñ0±„Þœ L6МÃÀr6S1³Ì"˳JP»0ÈòN<Ÿª†[mdž–‚ ¸
©œàÇ=ds%¢H1,+‡¼2Ä'ÒŠ<?„²Å'dÀÍ脲ƒ$|1<Ý\Û!­ü°Ë‚¼ñC+Ǩ06¥\mP4“O½RЉ'Í�3�"ùqÈ/ăæŒb€blM~‘Ï+¤€�Â=Š4Cl'Šâ'œÆ ý„'Rœ0lþèð
øqˆ+LÔNýø€L6À#Å*¬ôRË$0DRE·uÏ¡pÃLä€<RM&¡#L*È|bFIPøWY—˜‚­t¶µôó	<[(	ͬB!¼TQÅ»ÌRˆ!€„ñ
5õf�È.Þà²EÞ£¼2¡ ³‹
¢¤“@'ÜÈÓ	+… 3ÉkDÏU`"a3¸�!²,Ðás::¯pE<ⱚÕ0à
{àÑÖlu`à7¼Ád­Âµ4p�i�c*¨Eý˜ )|A³Ø…1p!‚^œ‰0C(1Q僸ˆÄ!j¡‚YôƒþÕ@ÀÚ°‡D>ø1€¡‚¨
"xÃ1úÁFœãVcM®ð�gv´˜ƒ·pƒ‚vÜ£A ƒÛ†A
%dƒfˆFpÒ-
<"¸0\~°
c ƒBÅ4êÖ9Ì ù81tg4 ÀÞȇø¡‰('Q€Bp0tDÌ+Á¶PŒc�ãðÀ�…×Œ7%âÚšº¢( @™p†‡¿tc#
"Ð91!q�þäŒ?0BËð�d0W¸‚� Ã;˜À‹g@#�ô8G–àŒgÁÀÅëÞ!ÃíA \Èa‹þP$„hX€4W1Mƒ”ƒž­aaM@Q àu¨÷!Â^€ƒôæ5	üAÜ€¡lÀˆPŽrÀ
yXÂÎ60ôÁ@ijp…#ïÁåîÃ�7 Á¥™èÆ9ÚŒL¤£‹\‡Fsš3˜†:\üÔid™…?H
lŽMìƒ<Ì$„ÃØ@B
ȱ‰p8Á­›°A)JñV8`®‘wj�…wf
C´’„ÆJÖ†©`ÀÍfcàâ´€S…3ÍA¦‘ÐmU€,éBm 	Šp‡;VøE
€€e(—ÈþA4`|˜öÿ°‚6.¡Œx¡h
æÀ”t@)�C<8àbRY A_Îq�(Ìá�ïØ¢@fàÒ°#â`Ú`ÌÐÄ7ÊiŽAi¡0õn-lÀJ»‰äÀWÀG	t4ÈÁlPC2Jû&¨¢	<°ðwt+)Æä ƒ(D#s~Α&œCìñ/;¢á­h¼cÁ†ƒßq�˜¤`¦XB
Üq`¥
28GréFS$§D¨™lq-ÜÁzˆ�Ø€�è3@ÃÌñdXÙqÔ
	ˆA¦@R�Ë^æ
PpþÚ�(\È¥i›5Ìa¸[sê„l((h4Wpˆb2 Y*æ8°jÎØ`#K 8Ð�>š€1Ìà¤!B‘LƒÔ`
XI‚6ÄÀŽ+Ô�ª.m3
ÀJ2CÕ÷ÙÚK㣬瀽aÀÎð€)ØÇ–lFà�Ù¼žÒ0°Éá‘bÕê*$Ã
9pÇ%ìàŽhÄÈ…/’a„¨BHhB
|ÄáÍB#‚j𦚃(`øŽ@ʤä&¿¶NÁnœtg
WP7«“ÿ4,Ç!¬r…<Á^ø‡%à�1 8ÈC
Ì-lÛâ�þàpƒ`˜Z˜N(ƒna]°Á°MöQ
_”�ÁØu#P|
N8B	ðAƒ¸¡4္	¨P†(”%eðÂ)~a[€"HW°UXÒ£ðÓ�v
·(²,�"Àaï�C
j‚ ‚
ð‚2Є\ÜïðM4à€_°€
VP‡.Á‚#|@tðE¨ 4`e`HÂ-ð`‡2á—0¸AÍe|\Ã	-ð…9R@sÁH>`†­É’(H
ÈDØ)ìÃOx‚’�‡w¬²•X	<އ[|@
ø@Þ…–®u-Ð*4à€.°€à˜‡6Ìþáq_XÂs Â&.qk°!å}8ØA‚rÌÃøøEÒÐpœ")ÀÃX„&lp�˜¦uÈVêpA^ Zp	º îRf–óðZ@•p	—ð-Ðy€€9m`^ÀO`§àIÐ}P%PD@|•@D@TpƒMÀIp¨�1ÀQTpøÀM°E�<`Zð4@`P<p�`pj"æ !SpEPÀQXá��§yç€hp(Öÿp, · 
Ð�Øp�ïD0& Op�P$Ðq 
6Àþ Tà• 1 z
ði ] Gà–ìPp�< y A˜‰Ê‘3p`+O±5m0Pàcî@m àZà `(ðïp}T€
X ¹€¾�	ì‘àÐ,pEÀ4ðw@E� Z`& î^pÊ`	$°ˆV@iàTpˆàm �q )`wqE@X¡c²äÀÑ&½qá c@F°mxp�àkÈ5àÉp‹z¸q
b
ÁðiX‘…W	iPeðA�4x‚
àã°EþÉÐF`›@tàqZ1àW°g°£vöàg²ˆI`„(rã•°id1vj‡@4`ZP	p�ßñ�ãVÛàn@kx{¨&w6@e°„^à�MPg
�ŽDpkˆz@ØZ`àå‘\ FzõÀm�%KMÁf¯¡IP–@îÐA—`Ž×
)àÿàf	<AIzöPãÐþ°	×§
1I7XŽÚ¸Tà4 ›P“T0âPõðT`c@]àzI\@m@ ûa)0nðŽjp	‰Õ¶þÒ
°jx@`!Тi•€
ê€D°äPß0`cy€¼¡x€åàp-ð¿ twðã@îpZðlã`tðGðá 6p^€V`¿^Ð�,`�5P pø  ¢7¨
Á�PEštö°zj MÐklð
F`Zx`¸ápæáVHT�¸˜z`xÅ™ó`‚™xR‡}�ÀÀø
…WVàÂIx�~9°×WH*¾‡pp	jÐå€
à 
ª0	•ukr©Ñ0t6F%PZþûˆÀ0Ê`ÿ %p
c€Šèxàdž¨—@iÀæ0|Z0ì`rF�^ /àz|Tp	åÀˆB‘ªÂX[#a
3€ø€¨x 
ã pPPpP5`%á‘$yÐzð ¢V9ÐìB WPMà�â B�g@y�Ÿ`kpàb€‘ùȪ Gwæà�“¸‰)º0ßvvº 
b Á€àãp
g
¦ÐJ`€y`0`@³
ahv® †ä˜Vp�q�®hþ
ì àÊ3
B
®Ñp¯@Ö¥–,—i®h@S)°ùJ‡gq°‘FÑP±rp�BÀvW@3€],vi£1a´p'vûeb€_&YÛµZ‹µ`‹µôàµ]ûeA¶\»µaûµgûefðµ_öµ\›¶`›¶Å¨µX µW«&Û`†<
 @‚;¸„[¸„¸†›¸ŠKˆË¸Ž;¸€¸‚k¸0ูŒ›¹ƒ’˸Û�;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-netbsd.gif������������������������������������������������������������0000644�0001750�0001750�00000020507�10343637563�016126� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF87aì�5�÷��“…
z 'A;
tRLØÄ?4‘„l_X¨PPµ¥	wMgJ;a?!D¬U=_yhb# ”ƒ>z38´¤8[L^^-DÜʤ„vb@/RtiLV|^ 2¤“;$ðÝ	”ƶ	Œ~œ¢´[L‚®/&lX\‘nl¤”+FO0QäÑtj“dX‰™3-w)1œ’hgA^õ;£–@*ŒNd}hM;Mxœ…=O'Dy4+Ph:@È „„¤t^bTB{¬–6É´#eQ{ˆ+-¹¤(a,7D0q<"k~oatCQ½¬;4dlddLXׯ+w_ƒI?1iY4B<lèääŒvJáÐ!œŒR—($¬l^i-tb1O%8”‹i±&ZD]‰24®DB4#PL6svp—„sLŒ|d\R„ϼ{G§l^„j|„y%=h^‹y.5J*8œŽ
viw±¥U”>0®œ8gRY¤) u_OMGlc@6Vl%-üêΤüö´¤Z\ÜÒ¬Àº¸¬žd20¬z|’¬üþüÈ4$`OA¨œ¹M</&´²¤ÄbTxh$ÜÔÐÆ(ÄB4Ͻ§GKo„>DwUp¬77ŒŒ¦ä¼¬–+ŠŒLL$4¼Š„¼j\¸˜˜Ë¼8äîôF4.)1%4LBl^$(*¤:<4D`6PË»ZjÀ¬&”„T¢”V¤”&¹Y_£ `F@èܰ~o*ìÞÔœŽf„ZtTB>œnTœ—¡C#:=5dX v6FƒxxìÖ
”9>}yœÔ"l-7kWLL;w¼',PžŽ"»¬	GD_B(K Œ;?(lÜμŒ}(”Ž”Ô¢œwo±œ,L:$Ž„~jYo|qxôâÜ‘‹–?F¬NÔ&„Vt¼:,T64Ô¾”ŠDBÜʤVdb&6,&DM6Y„nH•.-Œ:DTN´RLDR|ˆFPl6DœR\T,4ôììl.Dlb$tbclj”,����ì�5��þ�Ï80Ùƒ
dÁá?'Nâ´˜HBšŠ$2jB"ˆÇ Ciö±™ÉffÌ YY­eµ$0›$iBS&Í™8mδ©3æÎž<wâ„™s(Q˜/]*]êr%’”(SJ…zr¤G’X?j¬HDÍÄãHüJ¬X±_Õtµ¸µâÿà2TˆPáÂ3ÿÎ8amµjÛnÌè±caŽ%¯–Œê‰Ë™ÕtÞœ<ÙgÐÊ<+ÿ¼<Tg䘑“ŠnZÍqé–N§B¥jÕ¤Õ«$µV´hñkœˆiÉŽ½íMJÚÀ[/¾»7ïÁƒë&ŒË"ıÿ²%ÜѰÈëŠGžT©R©LÈ–kþjNòr3æÍ9ú$žhh¦KM“~ú”;Êû'³j
²:‘²-Há[Y^ÙöU1å°u‘`$èÅ—\tÙ5\{õå×D€
fØ%Øñ—X~)9¥Ôzß}gÞxâµ×Yz%’¸¢{£Áç˜|¥¥†D3Oá—_~¯yÈQFuÕ‚7âHmDÜæ›D: “	pnõ–=X@ÊÄ_Ï]ˆa[i…XHúebcÞ×’dæfâOEU”zì•wTy<¬©š§ÍˆZô™±Ž®ñèá%ÕVàâLtd2XPÌó,ñ�>:A†D^D›r1TWb™PC\öe!YQvÄauþ eUæ~R‰¨'yBõ”+œ-Õâ›r®øYhM„ãˆMÍè§iÌ6¶Ò}‚FKèŽýmõ	 s!	:±Œ0€pK	ZÜ≋ø˜§$Ñ CrÅ¡BÿÈûMD«bØjH^W¨b'9;¢eå]&ÞœÁE^K¾Æ„²'‘ÁÂÈÖè²€^¼ZTø	Z¨kb&ä
L�Ë€2óÇË,†#d8ÐÆ(	€PB9Ò±ë)^¨Îej–2Ä‹†ÌÂ/ñòMZƒù‹ÕÓͨáTsá	DØÊpKbT Æ×¸|-Æ;.¦hSRÁ¾GñQÅ~
…PTPÁÛrÇ÷Üb4³çþÅÊŠFÄ‹ñTИþ„ØŒ7@˜p5W3^5þÔæÒ= ƒZÁŽ8rÈQÄx"Š“8‰"V$ å@y÷³©
±�Æ¤8Q)`üU‡?†Y·ßÇ;vðÁ1ЯpÌ
+ìqÚcM@!ýôÔKÿAfSvRźG1²<ɰôÜwÏ>ôÏO?5Ìô©lifH° €|°>ÿ+BÌÀ…;AXÃû¤·=øãyëÂ,”�¤vM£(Â-ô0†N@æ°†"GpBœ˜Ç—Ø¥	áhÉ)ìð 
Ì€KcG2Ò/¨íè‡þhˆÅøGD@¬CaØŒpŒ"ö{ÐUø “”b͇%hûÎ;h±m4±ˆˆEP€€‘Êb	ÄþÅbbÛ5š¸6¬pÊ:À„X|‘ˆ‚(À„u˜‘`B�„4@Ë&Py8£û¡"²Š"â?Ñ“”\xR²€Q0†¼²À‚:ƒ-HÃ1&HŽ($�‘⤲À‰±0öpòŽNq
Pà‹„‚”óñmy(˜‹öpHþ]aOb@5±
4=¥€@£cÊð8Àa
àä_7k”’*``›¨J¼‘…ýñïYþÊ0
èàíÃjáˆLŽÐmØÇ!…ÿx¥‚ÁAC‚Ä�ÇXƒŒ‘#-È Æ²`Ã6ˆ�"“ª>*é¶	ˆ�,WI€C4úWƒ'øÔ§Ï`zîtE$äa±OÃr:ŒmÒã	§ði0|ú'ÆÃYñàß«‘‚S�à«_u
ˆH#Ü©Æ�þbœ¢§x+\‡ñ
@Î"Hb˜F+ZQ†€Êƒ MDN€
iÔv¹VuJYä,‡ ðÚÝ?`'|cãhÁ7V°CPƒ¹Œ õR…H%Áhª?Ð5A¦X2þÄÀ
ÖgH‘M¢IãJ²‹ë‘Ã`+hŒ¯F`›
蓆ˆxTã	_
R8œÂ;Ä\��wH…ð'ÿèÖ`˜÷«‡/ Òà.5Œ­
hÆPsìb„Þ¨Àð¡,€,í’’c)ÊX-
‡TÝHqŒ{E!³uàlF†°6‘	&¡
ŽLk£j0ƒ­ü[‡/ІSfÔ´¼pH˜¯tE15"€ˆÅÄx T›0b›Ã@
Ö„„ ˆ¯€‡KòÐÄ䡸�€ƒ³0)ì/Å-C´ÌÀ§~•U`@3²Ìq\XPžÑ�Ì·ÎÅþÝ�‡/€Ë(A/À$­8ö8wÎ]¨v0ƒn<hëHƒÜ‚:c‡-Â¸P äaPÑ¢¤Ub‚0*À‰!ðÃKÊ×jÒ ºVdXÂJ4š4V`FxÆY]ò¦<àø«¤ysùW�<¡%78d?¾Ú…•pÇ×f€  Ü]Å™€­ä@ÈHPÀ"ÒA#bhÀ4 ù‚Ôb¥PD!ZÁré¡”ÐC52`<›{9¢Ú,)ôâ„ÝÕÁ	˜-ô¡!€,¬Á#j€À L‹£%#šÛÆ/‹HV»d€ÀCq•L#;ËD¤©†ŒàÆ.�à4B
^Œ<¹Äè(¢þŠ›‚jd•Ñàn¸Ãò§˜�! y´ªÐl"&{ÙD¸#×1…8ò¹¤`
K¨€c D-náX0Üç.÷©˜#CRŒc³`ÂÚ½Ž|#C`B  
à
làÂ]êïjTÚ]PMuáL„wÂâ)ðS‡<<@CIÊŒ°
"äãA\]Ä'±lí¯«AM"naÀ®Õ}¶€…sÌÈ@0SPÀ‰}pGFô_9È£aØ`	`�ôsi!÷pTÎHŒÞû>ꌅC8j^€á^N0Fd±4'È¢!0àÖ,D4r5áþ€ª‚‘¤Aø6ð~±–<€
CXÁž·	ˆÁ|H05ÖQÄh@× ø˜*7Ö[sE´Hv
Õ�y_fP.%-&á_•øáÕôä5zˆ±ãàDtðU@ï@fàò” Êà”p0P,X÷	hq&¥¿×{æ4qñ αƒgA û+Û¡5JQeFàU)piõ7b5"~‡qjT
7rýcBÀ\ëpÕàqGåD\ø&°5Õ°qE¤�˜<°â•Ü5yïN€”Qv—à1$aq  WD7‡(m!Nô
.€
A °W_0_þE a°ˆ‹¨ø�ƒ^¾—”8QR%Ñ%gуÐ1„„(!„.A„^õPW"çNÁ„�PXõEÕÓ �Iñ�Ð@
…GD "�
@
b@#ŒGDpÐwñàE€€TÄ@[÷•Ç…D‡þ ÕîP(`e(àDÇ£GPPˆ: Ëà-¤zà	à
e!_A“8‰g°ɰ¹S!Λȉú"f†¡K,ÑL£h@ÕÀê×°ŠÜ:–ÇFD9P
Ï�WO€„G†bðGŸ–deP’eޱx4eFÛô=ïàU`uþ
Har4EÇ`,Õ~ð/yhs_õ#m-�àñÓ0
°0ðN¹™ðKÒ ºq?`¤0Cv0†Àá,0Æœ]±ý²<ýöîA�äUY
º°Z’ð¬(e*Ñét¾€d¢§
Dt
Káâ5’Ðh€ŽQŒü³o�Ð@0,Y�4cOp6-AÙEõ§vÿݨ‡¢”[Ž`D”ª—-Ð�_ Ð �00D šP2@]q$÷˜?Xð;ÀƒÍaY3Àfa–>&°‘aNá+Ÿ¡’Ü7—H@Nþ´Œ`0‘:ƹFD¯€dÁð&GD!€
J1"Y^æ½ÖŒ	Ã&‚»È?
`
7±§Àð
5Y,õAГã%z|&��
@¢Ó�ZP0¡0�Jb �aP̓?pgQÀÉ`Aør–` u¦–°iné+¤-Á�?VD!À�y)PDˆ™wÕ@‹�s†Õ4’Jf?+áD”cSŸÁ0V¼ø~¥VÅê [J
 㣉HXmš¼È]]à)D Ö¦Šèc $bÀž ù½7¢Ça¢±þX€ùÈg`Àßp�uÀÐ;q`Ð|YN u -PoÕ"r"MàjE˜d¨@E”ÝH¹‚â†ðÙ ê¥ÁpDFD#‰Vþöaÿ]�ðÅõªªUH@À�§‘ÐVðp}°Ûô
ðRÞø#A€(á‡"W\oªà2¤% ò ð_ z.}Ú?0¢“ˆJu€`1€v`p�¼0KNÀø¼P±�²‹ÔÇ0° *a
C9º¤+Ñ«
ÙŠ®¡sˆ´~*»²°þäUrH †üó«-ç•6¬¿’[�F¸ÐBð‘,ÑUÐ�ê0pÍx<pgº ØA�cE¤
¼¦TiZ�0/> _�_0اø:‰‚Š%¤�ü¤Lð
,€ã`YÇÀœipWv0Á@ÜŠA Kר[0)’Wªp`E¾v
Ôèª&KRˆr0�Äà7p{°¹ô0�Üu
‹ùžá)iN!¥ü“cÃ0ÔàD�
ÕPxh}I]�˜r‡HUð†FšÊ&¦çDd¡Ñ1m0°9c%¨¦ *p›!ê÷
œ¾w¶ùþ(œp3ðu ··1kà³Pq°m+aç·Ç@A°u�ªJep©¸£GHXDÛ�
�À'á†N:
YX
P´õ+Ñ«3f_»7;¥¢Çiå‘N$µMPxIÕp¦Q´Ùµ‡Ð]±´€p»j¬€0rWöÓP¯ióÀµ>Pòà
&e›8Ó›¯Q0¨Ç0o±L T"·NKr+Q�Àh°Dí«A +à…R¸‘q04‘¸r‰NÑ€ŠDDW'1¤ê	˜C[^¥À€ð«Í°kð�QŸ¨»5ÅbLE„��p
þ»HO*zW
|\k�Ð#Ü­ÙAh ¼`Å�¶0Ó¬÷E ”z`•eœ=œ¤`¨ùXÊ;��{N°ãp1¤�&u€ê¢	f´‚EáA7™bõ»±¦épe†pDÂ
p�Í ª
S0]ܤHdÔÇ|ŸÜï`´ÍH”ÁÀÇ! d
§Ë•À‰|ÂKk?$À¯DôåEfá¼…èHÝ2À]!$1z$÷НYY¨;}&1€±H#¾X0Æ0YPÄá
`Y aF
+ÐÞÐX@
¹ÄûþËÆtÜd¡æ,uIDÉl²PAqD$:¦#Þ@X,pü«ŒF}"³§ûU8U,W°M�V|tP}ÂŒ÷ðU§à\zÊvÂá¿kØ]fá sàHþ¬*Ј%£_qÐáðÝ`ÉÆp×eiYß`–c&ÅJ qSÃ$à
WC¸X$jGqr+)–,¡ü³ÔÝf°…ˆÄhuÞðK² U@ÉZ�D™Cdf•wÿfe�àHÈõÕMÇøÅÂ�Ì•`u‡&ñ DäÇÁ€$ (Ç€`ÄN ñúþÐ�°z .^Q cá›0½Ä‰ƒþhÄõª/¢<«ÅŒ`Ó¼�{ L.VÍ]3­—ÜÁÉúÀ&�0<€Æ&¤üó
oðcBÀU. 	Àä¯ÐøÇ×=
@o�åeL cµ�fæ¿ô`Ul@
Yá®xpÜë€_½¿aÍï@Ý_ ÂàšEÀµ½P  n]¶`ù
ñÿè× c˜ý„¬VÛNô‘QíŒ@–Æ0Õ¾@ø@FÄ¢A0k†gÇ]ðê™ý³CÃ�þpPx z@ÇP�C0è`OC°H`%içw>Yà
×ÛjÀÜN _ðþ<¯ç%ðk‘Ý¿ÑÝÞý{üX;¢‰Bµaæ
°D&VQ+
|SPñ¹7 
ÐëT ñÑŒ€�!žÖNpp
k@²PK:	]ü›abp
°°º€Ùñphã.	½~ë^àwÓ@‘Ä•W@
Ó ­}@FÑ3?{ð-d)h€v�oîçŽ�²Pðl€†]ÞÛ`/N@B®WÂ`cp±¤n›¦îÖ¿7!S’* L$€þ0ãx€\�Š‚BºQí–{“`¶¥wÁè_¥—¦"0i^¨p#AP<P\î@+U`.æœe�]OZ
eÐ
ªÆçTÿTo]‰jI�VÑŠ
 vì\úUp`£ŠPôЈ
UàoŸú[^~МQ*0äfíšÐ÷ê¢ñ¡ñj°	?ÊÑä<ó%Ú„óT�ëÐYŒ}SÈMÀÆÐ8ŸËâ0	¬½d~0÷1y
HVí´Ò:Ÿ˜,áîmÜú1T AÀ¦
Hö]`N]­ç9ÍÀ®O¬Ðø<Paí*Àé¤sÀñŠrþ	¢ñMøØ°äøx*QŸˆÇ€ÅͰºú¶<¿&"äÿQuþè
ƒ|=3’]Ðò}õñ€ p^Ñ
f°:bV´Åp¥ÑU�qJà@‚Âi’$a“„Õ’ëâP!œ`�,^§3›5ËÐEäÈU"AuYu(UÔ´h'Žš-Ä0ðF$ôecѦM˜/a¶ ÑBÍK5›œnú5ÙdU«žÁÊâ'2ã%6H6Çü}4²‚Hž4hˆTÀp£™$uín¬»±ÚÞ½Iü6äX¯]Žt›q¬bfîDZͪøñ£¸YÉ•?^þÈ#Žyñ"þѺïB¿*¬Ö¤ïêÔ©SÀIñì3]Å’1OK"ˆî°$–´³f…K¤8ñ†ãŒ;¿œót焘D^&
‹´éÓ¨R©^M†õWš]Áê‹áXÔÖœõV @… C„¦Køn]Ä4ãë1Ä�M°jÈCŒÏ8ú¨°ÛÆ‚Ð1ÊpƒÐ &dl¬Äò*p°½
4!ÒD<
°$Ü(% °K1nÐí#Û Üm7ß|;*¦8H`à5Ž£‰GW&ãŽ;zøC€OÚ€%“£®ÓŽˆD6™ªî¦O<'¶2O)5Ä늨‰‡
:Âj°âYòèŒ#ýîþCˆubQPŒ!
àÀüª†™ŒØH1޶‰e1ÌhŒpѱˆˆe(£,ž Xì=Ë/@J¨DUÔ@$ÄÀšx:@ÓŒ
: 
<† ¢#(â’ÞŒ"Ô€Š8¼)&i ëAŠð%,Dù
)k}K¤J§º“ê*ñX ¯K±.‹Î2c@¨iFŒu$0Îò›“°+
�ÄŸjLXf;1‰w
b/4nàHvoŵ1J3„°@€À¬#(6ƒ
D»+´$ ˆGÄPE^°ùB"–u„b<Ôâ#VÈc.ɪ`´·ˆ€"
*þàb¦b·üçi2È@…#ˆ¬�` !$—\PPªj£²ÕöJ©Î+.»új)0ƒPÝ
Vˆ¥£
Ðx®*ꢭ^$Ê\÷xŒ�$j Ø£Ç=ÄH‰5b©f:øÏÞ΋4êÐÍ¼1Ê$Wb,jŽ@‰ƒÈ‚
2^‡
ªiæ†=èÚˆ™| –X\Q!½Å à&dÈ(NÜã†*NV7‡·9&>Šfâ!AFGmTƒˆˆ "&…¦‰+lÁAšð3`Ài6¸Ä–F.°¤›'­ÆºJn¿óv<òdRjì dù�Ófrø�:B„à?qŠÛœþ†t˜`BÈðð=ìáÐ:Œ`¼
Áb(�:Òt™
‡‚?V0„´äACÅ:(jp+ X
Ñt�bPxÀ¨!<¼ƒƒBÈÁ
ö@à±+€+$ð$
cœð@‹xlCA{a ØÀj�Â-+�ÄÖp›Ù&C½‚Âv–½™ghÞûúp`=â`ßÀF#X£ªÁkO±Ò•º&.UëKè!ðp86ñ
¶’à%ç%§Â¦#W B
c¡<Uƒ‰{xÇ1ð„Δ@C]TVä@&Èf…±¬`ÃÌŒþPf/ZW3”�ˆ+ ¡†+c<n°f\Á_PXð‚m(Ç@�±‡&0Â‡ÌØƒ5¯ÀŒŒŒbüÄÐÐ(È"Çè_mf4"œÃüÈLÊ‘	™Üñÿ 	B¹°âxÃ`{ßov¦†C"r~VùVyÂ66p&�‚	lf;²ŒŽ0øÁœlu…
¨«�Í(ãÆâñf á8:wƒÄãH0Bă!
öDÃ:D‚}d™hªQ
‰À…ä ]°tæ ÀA1¦SÛÈ[5Þ1mÒBS9XÇ4Ň$àâlPH'�!têm/â„Æ‡Œpþ(H€@HÈÃ
$à‘}hÅd@„L”âè…¸×='„kh3©#!™bÈlqg[ŠäZVŠ?¤ §1·éHÖ@ÕÉi.H8La«<䀩ÃÄ[<P<uêJUs(áDhÆš‘‡ÀëˆBHpŒ —+XCò°C<�â˼5s€	�Bšê|*g*w�Û4ÂëÂH€ò†L]L�‘ƒ0ã‹{¡F ^Á
ŽÿÉÃüa7ŽÅ†0aŒá¬È‡
$Ë=„ÍÃÕ¬R:î\T<öñ#M{›¹T@cá¤aTª(þÈÎWðÇŒ DmcW€†p#ŒQy€‚b°Žk`Q!�!0
Ê…@,fÁoT`VÔ ªÄ !š!v?¬FŒÀ†x€1WˆÇ;’@æ6ûÂF؃r ‚xÄ¢P`ÈÝØ¬©¾Lã
Ô`ƒÚœ±(G™psÐe‚ †sÔ ¾¨€4p)³å!eJ¯²(RÒ‰HŒzM£Eyäi-##LÒ+¶ˆ±M®m'»º/'úÐ;êÕʘAÖ‹ª€Í¤—À©Àzy‡¯Å*m”¦Ó¨2jû×Høé``+z¹V2”"Á€ÂBGüþy¥ æ¸^mj/Ø)Ym×ÀõÒ~IW³Œ¡RšR•3ú|m¹E#Ð4¼E»®¤>/ˆsªC(Âø¯µíQ©F5­	ŒÃ4ãS(,FÑÞW
úé{O£*'-gS½-V×ïå^ÒÀÞ¢ºFQ?—^ë…ñé‡6wãb*Îë…7=ãž*
CDµñÓŒáâw'YŒÞ <GîÆìdËÓaó¨\GU£REKL•ï|ë~ÕÊ_Î1tCÁÖAIg19É!”õ}S*EBbc^—ûâO?™‡4.uÒ€JÛ 9Êö³ ü(ÝQ»"¤Ù½Bj°+\¥v÷Qâ7¥)­Jš[;°ùhAÜ›5jç2–ñÖóxŽtÊâ}ç9Å·²Î@Ç=ßïP™FT$ûKȳžuÀ3ŒF'7uµV®Qš�é~e»L�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-openbsd.gif�����������������������������������������������������������0000644�0001750�0001750�00000004254�10343637563�016302� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a��÷��������!��!!!)��)))1��1119��B��J��R��Z��c��k��s��{��BBBss{JJJRRRekksss„��Œ��œ��„”Œ”%%¥��­��µ��½��Æ��µµÀ¥Œ�­”�± �µ­�µ ”^^³llµµ�½µ�½½�½Æ�½·
ÆÆ�¿»"¾²H��„��ŒŒŒ��””��œ��­��µœ¥µ­��½½½��ÆÑ��Þ��çÞ��ï��÷÷÷��ÿÿ!!Œ%%˜55 //µBBœMM°„„„hhµ''Ñ&&í!!ÿ55ýssÁ``ãJJÿffÿ„„½°’’¯­­ŒŒÊ””Î¥¥Î½½½„„Ö„„ÿŒŒÿ””ÿ§§Þµµî©©ÿµµÿÎ��Ö��Þ��ç��ï��÷��ÿ��÷ÿÖÞ÷ÿï÷ÿÿ!!ç))ÿ))ÿ11ÆÎ�ÎÎ�ÆÎÎÆ-ÎÎÎÎÎÎ1ÎÖ�ÖÖ�ÖÖÎÖÖÖÿBBÿJJÿZZâgg΄„ÿccÿkkÎÆ9ÎÖ9ÒÎJÐÌkç””ÿ””Я—ÆÆÆÎÎÎÖ­­ÞµµçÆÆ÷­­ÿÎÎÆÆÞÎÎçÎÎïÆÆ÷ÆÆÿÎÎÿÎÞ�ÖÞÞÞÖÞ)ÖÞBÚÞVÖÞkÞÞkÞÖsÞÖ{ÎÖŒïïŒÞç”çïœÞÞ¥Þç¥çç¥ï÷¥çÞ­çç­ÞÞµçÞµïçµï÷µïç½ïïÆïïÎÖÖÖçÖÖïçÖïïÖ÷ÖÖ÷÷ÖÿÖÖÞÞÞçÞÞïÞÞ÷÷ÞÿÿÞççç÷çç÷÷çÖÖïÖïïççïïïï÷ïï÷÷ïÿïïÿÿïÖÖ÷ïï÷÷÷÷ÿ÷÷ÿÿ÷ÖÖÿççÿïïÿïÿÿÿÿÿ������������������������������������������������������!ù��í�,�������þ�Û	H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹ÕÅ)¦ŠÇ2pÒa‰É“(M²a¥
—<xüàÒÆ74Sê\Ã’¢:3§|A"„‰Ç*fH*8&Ḩ? ñÕ‹·‚Ü®ÄDÒÄ	 <|À„#Ó§2¥ÂŒÉ¥çC;V<>éñc+V_ŽRYºÎ´I”#íu¹­R¥ŒXr<­2Ð/`ÁbÀ€™¥œÃ:G¥ðÀâY º)G›ðUÊ
0ÙvêÎÆü20ËÓ(I	ž¥<°õÓ$¯Û¥3ÕC;G«ùQz`™ä^VôxNÀvÚyC1Áí<xþ¤ÎÃúÀrhxG¨.®Ç(<Ú„“<ÉUéÉ›o‡Æu;òL¬7á¤_pÖ
uTWDßQN ¡NfˆQF¥cF\V˜!à@‰qTfˆ†f'P,ft∄ZRÄÑN+hñÀÅ}‰Ø›ñˆ‚¥“\=à4_rNh±ddÈ1%ÜG\`d!ÄQS¼Ë”d¬óÜ’`dc ‘m õ„Þ­…Ö5
DŽxÿIPP GrðIЄ9‘E+=<‘o”—ÜÍ)E\”Ó‘GJ¼ÂJ¢GE†_tk>5lxSLHa…Šþüõ8'ÕXЀÁrЙ1B&ÅÄWñú„Ô´ƒÚ{NÊÄj[Eh\å`R Em‘¥ÊZÝpŒx£¸1a!hž¿!Ù®¿éh{½Fw½U1†@—Vá«sÉýªNrB8Ùok$í³¬ Ó¡ð…Ër
•[}îªÆ
Ù®AðVçn;K|’É5)PrCì«ð·ËhY|Ë.·Óo¿z,²@äh–½ÉÑ„Åâ.±ž­…\ÞÈ%c<ÍrñprGõ Ÿ@¼FÜï\v8øX[cí‘Ö¦œ3»?$'d´ÓF–…}t=Ç´þÛnÊ[P¿U!õËG	‘…@[=”.)…dhÌCnýùžâíXyïít€[ A7AvÑc>?]zhUAÎA×>8,PrÎ5…Í2$S(Óh°ÑÜí…æÞεN€+ñ~ï®` ¤àd©3ßh9úA´?8¸´ðñ.½Dˆóåò¾EAê×oùí¼þò¾í¸ö@«AÔ}Y=’¶‰É—\´«N9i š«|° &ØÌIí)\¨#aˆÎÀ
wÀúp<zÂwìÐaD±Š‰Ê:" H„<ø’0¾#
2„žðÊbþ­0BC†Çl)X M«`;~uŠtЕ@Tõ”Ä­0ŒÉ›ÔQBAPЉ‰Qbq´Ä­Ü "Œ2Ã…|aˆUàp©±ù¨‰È�‹3ElyŨ¦4”,¨‰PÉ#]r¤†9°ÂiB«^ÅŸ0¡1Bæ„*pè]ZÙ˜0I9<d
G`‚œ�†/,,”3È΄ЄO}<¸BÒ
R®Ò	D�‹H2�A@˜ß@æ„$“êÂË~IÍU*ª1åˆ7È9PÁ™EHâ:â
Õüå¨#‡uD‹cØ‚<ÇP­ƒlÐ#BŽà‰²°/°A!tˆç¸PÏ"Ý…ûÎа =æ¡°€èc`eA‘#8XDô£E¡tºw¶9@ÄaøI)_¦ÄR–"®S<PSKgJÓšÚô¦8ÍéM²±ž¶.ÉAbzJÔ¢õ¨HM*RG2ÓOªô©PÅyz4¸¨ZõªXͪV·ÊÕ®:$ �;����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-php.info��������������������������������������������������������������0000644�0001750�0001750�00000000064�10343637563�015620� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������php
PHP Hypertext Preprocessor 
http://www.php.net/
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-vim.info��������������������������������������������������������������0000644�0001750�0001750�00000000044�10343637563�015622� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������VIM
Vi Improved
http://www.vim.org/
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-vim.png���������������������������������������������������������������0000644�0001750�0001750�00000000722�10343637563�015456� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���X�����æá'E���PLTE”””BBB!!!5ÿÿÿÿàD5���tEXtSoftware�gif2png 1.2.0,–¿Þ��[IDATxœ•T‰‘ƒ0t˜k -ŒUÀEÚþk:­lž3ÜE˜Aì¬×ú ¥fKÎ"´­õÁ7>ºe]ùVÔjýN9¯ž[ú*@Y+–-ŠUª‰œ£Î?»ïÊõ•JöÍ»ŸQ6Žºï’çdoóã¬ü>ð7™ÂÕ…‹0ü(3D
òSDÄL^Gj8‘ŸDr»Ï,Mív©C$Á‚†ÉmÎ/E¬]
fêÊ4¢„YƒQDqmõ–pÙ`¡*ËjBX7˜Ò†*¡ýŽ;Úθ1Ÿ$?ÀÓrŸÔ{n÷>©£šz´²ÕžÜþ<#GÉÄ&«z2çp ³š®)­a°KeÖ8Æ·w7Èðù@â¦éE‚Îâ<y¾-Ö¹@‘ÿA¶ˆd ó#«ûB÷‚Üê0MDZ¹%Ò<©?Ô}wþ�ÎÈŸ¶{JžOãÔ~�ôÙù}Çäˆ����IEND®B`‚����������������������������������������������wml-2.0.12.orig/wml_misc/logo-xemacs.png������������������������������������������������������������0000644�0001750�0001750�00000022422�10343637563�016144� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���d���$���ðØo���gAMA��±üa���8tEXtSoftware�XV Version 3.10a  Rev: 12/29/94 (PNG patch 1.2)Ý.I�� �IDATxœezg”eGunU:ùœ›óíp;L÷Ìôä¨Ñhf4IHˆ a‹›lcÌó–ï™ØÆØl,„…m–,Y(	¥™ÑäØ=¡s÷íî{ûæprªz?ƒ×zûG­³êœS{ßùή½ö*¸R©Sx±ZºŠ^�:l[
\B¾ŽxäH2
j¬¹2'‰6%(͵+¾Í’†TO)RhÆÊŠ‚Á·J®k©£‚u›sÕã"kÔtö:–Jê–í
Œp® º:É€¬äqn]ã$ìKÈ¡6ãˆÙ®OAŠa¾¸ºŒ2Ê#äÈòD
"ŠZkÖ¸t´èiHà$—2º#(±dûºk¹=¡Åv#!Ç€Ç`$@„¡°žµâòÔAË22Án×€v †Bc+’ø�QH>�ø��Û%‚$kšæû>óÅ/	�(°" ”ánu=Wk¶ê©t¹ W͹u˜ž!1Yr4[oÙÊñžl¥[®GLõ'bćª²"0¡TbK¢ku
ØV4Óâ8%¬Qk±s¢pØ$n�àh�}IR<ÓêVëñx”ðr©(s8!ˆQ+0ÊU^àÏv0BHVÀÀ%àx‹81…ÏvtãyJ¡då€)¥>¢€ÄìjŒ„D3Èñü€,Ïù€B�($P��Q
�À,O((—ËårN­Ì³€‹IIß'‚ÊWSD|è¶ë0—tM
H Ï+t[Ä¢(™i€„A›žÖêDQÀêèéÓ1pX �Ю›*GD^èv€@,Î7º«Xd%Vð}/p\UR};ðXÅ¥��`Â`; 6iÁV‹m¾&'£AàÂr-vA­nÛ8¿ÁQÛtòT[E˰aÏF–ï_¾î"*lödÕ¡Ôw`Hà[¦$®kk}Xf=pØÖºsœ¬¸–¥›6ÇpÅ
	¢€¡‚("�5Û'NLOO3ŸøØG�3©$ÃbʃV»ª�Ï\^âÅ(fd †Åƒv³*«ð\§ÓÅ‘øj¥Ê°rRFaF¢†Îúnàºò+
/�¬(³"ÃÙ&$–gWV¤hLàd¿Õ–5oë€gªZ†"|�<G÷P×sô¸÷š†¡€	l_C<p-c…Ýû¡¥çd‘	õçE5܀שßÑ»"
0d!aWë§¿ÿãÉWÞÄ2N®ÀŽ#‹B©TŠÆb³õb.”p:u‘@àø˜Bc׳ßeI–$±˜�3ˆAÃ`„X„YÈp¢ä¸îÄÄÄÌÌŽz��ú¾iÛ€R)"\ iÐv@Sñ|×1hÀ�èFÈXèWIP
ñ6oÒA¾Ù
¥%à0%ÛŒ©^@µ¦Ç¢€†`wXÇîÉ/´Ñ©­óý§Þþ@­¼üñ“/‘ÂЮµDâ…X‹phÖÙxL+ÕBšW•åîr!”³KCÃRý©¿ú»ƒ¾•¾ã@¬§¨ö¥8,à"H ĪzéÕSU
ˆcöî$è‰)Ô×6
"gu(�  aÏ™SY‹.ô¡cxº-`"àcà1„@€	>ð)`�´m[×u˲pÀ‚�„ø”¸+HŒèO_rèõüxjjyÿ;Þcba÷‘[@.3þÐ?§³ù}GíF­T\µfϾÛ@:Ê×A·öæÕ)>ß·qŽË‰ðœë/>oÎÏåÉÞôáOö¤" ™M=4µœÇ ûêk憡ÄM9–%šZ½züØÊâb­¬Ë‚¼ÿÃïÓó|r@½ð£„gl§-C¶º´Øi7žgÚn˜ºÕ*/%ۖνŠ0::\{ùµâK¯5ŠsÞ{?·®OØ·2п6wþÜ…ä`ïÈ–Ú«ç:šNFóùý;xI6¨Ë:*K @�"ÊÈ€�L�‡C€é”RB!ÏqžŠñ€$D0ãTêOýÖçøŽv™j3Õ†}e	É¡~¦
™òó/Ξ:qá¾_"ö5×𳙯÷‘í+_˜>{FKç+]ãF,‘Ú0zÏ·¿’ñKßûÞÌgÆÖoÐ9á¡ï|ç3ùõ­·~è3_ÜfÁ‚Ê?ó‡ŸoîZ¿óKžÚäøÜc¯>ýý?qÚ•®#Å#™…þÇûÞ}/:¸ïÉ?ù¢V3Š«{iÚRB-Î=W¼!t÷$Âá°
R>¬(X"$�
±tte¡Ò¸0þÄÄìÎ-Fÿc÷ÿѽüÍ¿¯Ë7ç>ÿÙϾð“ÿjWÜ¿yíævlÁ¢(Pp°€Š@�€G   �cŽã8!!„ùÌÿ�x "†ËB,a?ÿg+jÆ–ݽñÐM­©bue9ÖgÚ•œgsÝneq9Ž8z•Õåš¶tæ¢÷Æ!ÝÚ}èpL•åNs~æúÈþ=g¾õí@6®ï׺
‰KÅ•­ûv÷ò¼zõF«1Õ–¼%à$·ìŒ'zc¦ðó¿ýŽqõÌg?ôYM,/,+~0}ìÔF“¶¯^«™í›öíeM×p9+¹ä-ŽÈ²j¸ÄrÖ£<Ǹ˜±%åâäÅ×_¯‘ð`*{åÒe7†û
WOžâ—9ŸµZ:•9Ü›fóIU$%¤P::Ã�À€…>	‚Bž�`@€å:ããã+++Ì×?úy΢¢–¢ª\n¹tõG?aBxvKdN	~û÷í>xË|}qµ2¿mÇú—^©ÉKÑ
›…l¡wpKB-Øó•`ü:Ç¡õêŠk4ÊËg‡ÖÛ‘¹2êÔ/—W|Nk,ùÑÔ�íS׿ŠOþ„@Syïål:–5Ê
°2?uúÆÂÜÙññ2‹ªÈ[l­¦’qýâ5ijí
I~(·¾gørqáŒÕŒöõmJ
gb¿7±X­ô2*gÚ%³»íˆœ8óÊs§½Õ½÷Ý5Ò?hRrÃm>}éÔØÑC·¾½ú³—¹…†‰Q‰ØÊhaºSÛ|ó^Ûñ¢X’y	Žmmß&,B,†°^€( �”œ={Ö4M} 0¼�9ä�@#!ߘ¿Ögoß’,¤ó}/Ÿ}qã®ÀjƒÀbqŽ£P
g6lÞväÀáçÅÈÉŸõLëöÃw,jõ¦ÀÍ7«…Dlzr&˜[ælrèžÑ©rjêòÜ\´Z;7Za¹£ÕAÇÈõõ«"784²¼R½ZHäÓ¡ðÖÛîYòíWÏú7¹vàÙÄÀ-ÓVâI²ÚNÅSŠ$±ªÔÒ:élÊoÀÀëï{½aÛ(¹2?¿uÃÁ�ቹÅÄÍ›ë2“²‚lN¬ØËMöõbYÚ°a8$‡×�Ú¦%p�¾ïûÈgx€†Áq}þÛ˜üÑç	Ç&¤°=Ì@8‹õÅÕÕrvÉõO-þû÷~rîòõC÷ß—ÍöüË׿½te&DÅR[[
«òÆÑ@Š<{íõWÝfƒšNkµª!oÙ·nºëh{ÍS|Poiíºí¶Ã¢ž·ŒlÜæÛKÓE¦­Í]½ñäåŽsè®woí™ô‰a-¼^^X=×ZÚõ‘û†ï=2Q-Ù¿Ð]¾¶°T«»œ°Ôîî»ÿh•8©\V�ˆ¸¾ÇÃ¥nU0ÝúŸâŽ
’ BóÊbUë®×ìP^NÇ·ôM=ö"‚Ì
à†¶nàûsû¶GsYß'aV$nÀ³\� ÇAÀbÌb"Ž G¨çû.\h·Û̧¾ðyЄ~�D°4ž…•ÐÔkæ—½›ïþÈÇËié®Þ²2=ý“+
F†…¾lÿP6“ê‹˼qñ8‹VBBßýl4=TX??1{qzÖŒDq¦¯¢C£‘
>¯lÞµòâ±³§WlKݶupïîr»»¾0P<y†!°ã"p
ï¹óšÛQ×
8|Ç+=ß.µB©\ÿ¶m]‘Wúòb&µqÇVžá´FK–+pÃéXy~¶Ƕ`k«–f×Y4p×A È½r´Ÿ	ë/Ÿî¶µJ&Ân(ìÜžèÔõ	0F,€ÁòóÆ%È|ß§z~ð+²þô㟮¯Ä¢6üÀ	år½½ýá}{åÝ·hñÞk£oãM±¾õc·ÝQ8¼OÙÙ'Œ¢cÕš)²²£P{÷l+ØY‰ðé;ï|k¾¼ÿÐ=]¼ûÁßw›ñ¦]Jf‡Ø³ÅÎõ•�‰m\· Àð¡ù;n?va¼Z­ŠqÅ~x@Þ¿ë"c
·/„[àm¹yxds|ÏÖðŽ-¥®.öõÔ#|¤¿Wõ™Ñ|¿Ø×'¯/ÍÌ”L.ÎJÑp~ýð-Gï±Þtð`|ÏŽôþ=
‰Šåת—ÿïCù†×6ÍæúÞNOüÀÛïÆ’¨È!†2¶á²Ïða‘Ï@$R
ýš,ìS×£Ôç!…Ðößry,ƒ|“¢bÞÚ´]Å~„çÄx/“`a•‹ìÚ½ÉZÏy½Íš¿w÷°k�˜é•8 ´¦Ü-ÛÊ®ðàþ¦°Ú»C0¬þcT´ºqð]ƒŽª*hP0m×[ÑþíûެÎN~õ«[Îç{T††ßU])ß¶wsSïôŒÄKÃë··MËïíÛ4¶-™ò,»/ña°¥w€eÙD*9`šý¹áZ³&3‰W.¾ûλÛË¥C‡Br¨îXLHJ͈n¯ž¸~uy©P…%+Ø·]“Q @‘-ÏòdX@øŽãÙˆ‘Å!†c½€þ:gáÕ>Ìqˆ±Þ£+D·© _›]½2Y«I<4(áHt6rãúù°¼nºy×á•‹îñ·ŽÍ-û]ÃÙð:¿û‡·å…Áé‹+3Æ„Ý	|àójÇÑCa¾43ßÈ ßñMŒ<®j+*°GÌè¡‘­8‰k³r6×1õ7fsÑDo¶G>_)¯š”´´¢ë[F7”æj›Á,ê´[µ«ñ;ÖªÊ,ç;¦ïû‘º{û®âÂR>‘…|8WXlF’䢪ëËþêï>ÿÄ£þj©\ë¦2)Ý÷âJÔh낤B,DZ€9L …b�1D€„ø�0¿!ËÄ€8Jâ°@â<ƒïÙöôp¡ïPeyF`"/9Ví—o,Pfê™'~Æ1ÜâÂÊÙcoù„¦ɲʃ{¢¼ªž?uþØk7’±^Ûç}1J ÃÒ·[>n<RÂdm‚Cñçwœ‹—öüð‹V£Ú?80±¼Ú1ô¤Äµ;͘’XšZІc†Ñêºå:—.LrBHUEdö™ÿx즷¿ýâ¥ñÛ·m#¦U\ŸYZ8ø¶ÛŒvûìÉ3Ã…áõ£c-×t@‰?~úôÝ÷Þ]9-Ì­öeì”ËÐÑÁ
�qáHd®R¢Ôs]Û pxQ
I2'ò<G!õl×qžýÍnø¹ÏýrI*œ >„ˆñÀ°,¡4A|ßÙ±+çç´6BHô€ñÀî}çÑ[kÕ^•޾gïOúr:Ûµ{`Ï-9N*ÎÌŸ=¸ÿÀ·¿ýêDÕ°UÓOKF«¿óà¡XŠÜýŽ}Ùt"SœêßÛ¾?áÑr±³è87][78R*_‹D¥§Ÿ~c``“ ÉW®^^^¼‘O„òý<ÇÆãŠhnyëÖíFÖ;<–VÊ¥¡ƒåêÊòrqâê¸"K”’p4¤„¥ã'^7õfK«·:v«»Rl„ÄtRíÃTÜ·ý&0ž«Ÿ=ûj$*6Z
^PŠKõ|¦êú”Ä«Ž#2[Z¨Ö«5,¦ež;w®^¯3Ÿù̧™�ÆcqPq@ƒ��0æ³µZR ÆQT*	f.—f…øôlûÔÉãWÞúíŽÌ/žËåäHXè„äóÏO§@–D÷©Ó½>²>MÈ„º[7ï*Ík¦Ù,lµ‰{ööõØ&)R:êèÚæ±í½‹yÐ?˜,$*åe5ÛDBµ½æ¡Œ€â=¹T:Äp@È=}ùþ¾B.“O$Òcc[	õFmÇö­„;w…ËëG6ˆœ´qý†D4	‡2©¨mc›‡�
”p„å„lvÀtìh\Èe¢JcµÜ\7ڛ̤J¤ããã†a`DÄ€z��]€@@PRÚ?o¿kóüܤ¦^ ]º4~×w¨ªúÃï=?99óñß¿tìÇ^ûåöm;·mÚ"«ŠŠ,.¢NCc¸¾k™‰xQcËØ–þþ~CóY¤ì¿uð›ßú	foM%ã±Á¹¹Êú±~Ï#¾ÏŒg–—fò|à7¢±X­ÙééˉXH´lÛ|QĆa‘Ê&|ÒHpœm™,¯
b$ŽâŽã:.ò¾¿°¾V«bÔó¹P8D�×Öë¡·R»O&!0:ºk9ž(‰ÉT/A°Rï"6H%äz{i¶4;²nK­ì¾µºZ¥Ò^€BB	(0�L €„P`;Àó†%Ûvöy¾!ÄŒÜjØŽjµÖä¹ëׯ§RüÒÒ¸ª°Û¶íò]žxr§m/.T°’±e¯®–'IuýºÑçžy…Rú‹W~ R<M8Žõ]‰!Eìk5€e¢V‹©T‰(fçç;çΕælÏKJâЂo‘•eÎ6’ÄÉ^1$ÖÛõr}¹«ëñd/%‘Vé4YÊ®!v[aÛ�Ä2™L»c,,®Ø6aP8ÎöõnaP˜¡n3ƒYŽÛ6«iïÉÝ–Ò¨a'0
›¶ˆ`Üv|!‡@�‚ À²€@8��`+€2ÄOX@â­Ö›<Ÿku—�ÁŠá#ëùásv>õéOíÛßûØ“'|6Óot­F»ó\B¤W«›34Ÿ…vûZ<5<5s½T¼Sâ²ïù­¯
¬Û¹·÷ÍãǵŽüƒïNÕ«A­Qôis®xæÈíÜ|øW–/žŸ5ÍÓ~ðw½-sã_«V}ôÑÞ‚Ú·Î{×ý·¬ß8`ëz"ÙpîüÜÂŒùÈC¿ù~Ë`îºë®7Ž=‡¸¦nÏÞ{ßþ{î=À
|2·
ðs¡¸¸rþò+Z'è‰,ä¿ö­ýóË+=ýë�þêko.•Kó¥§ciß¶¯/®>ùÇÿ’¢B†aBPP
(€€Pèä�(ŽG!¤–e(2ÎÏN»ž8>ä;Êå+Ç¿þ¿{Nž>•ÏÅb1q°°NC˜j(95eL]«¬wkñ–KG{Ó„ü–¥iá™ÇÏ=z¯éT N
'¦çRZ÷È‹fÝp8J1vÝø¡ƒ÷þÕ7¿åš¡À,ä²ý?ù×s£££ã×_~éDHk7œF÷Z:?ß74@Æ\¼´dÍN/<^””É©É;}øø±iôÕª]+ÐÂqaŽ$j07®\*-.-¤Ó…£o¿ãWOž(‹û{ûו˶eõÕÈÒlù2—‹>û³i[¯nß·‘%M3À”RJ)óÙOþ/@ýxB¨†°O!	�Î0lŽ,E€ß71^ö]Þõ,�;ŸýÜG;b$ߺ;–yò†˜Ã(ôê+gO-Âq¼ŽZ=™üñ—«sÉž,j]ç}ÛéÃÅD2bÛöŽ»ÕP4•îPlÖ!ü–íƯŸZ¿%úéO=øò³
SS2=â\ñÆ«Ç~öÏýÉ[Çj–‰:NqynýX¿(IzGüåK7þíáÓ¦•-tÿðËï|@iâr1�áÊæ=ñF£ø‰~÷Ü>~¢Öœ²Èâçþà•J£V‚™Tü;ÿô…{6²_øü««’â÷	!¬Þ¼R\Š&­Fs9—ë�Ž7›M���è�H@DСŒÁ
ƒ–	ؾCa9"‹EÛÆ‹ÅŠív"aÜjU0–­5[U^³³«šNX–eù`~öÂäõ0–LE+JŽM¦¦æÒ©ìÜât2
zûC×®Nù>v€“½×N<yË­[¯\ŸŒ&¢–o%sÂ|ùòõw…0Ð-0b¾·µ^kvš.A—/•ûÙ	–MH²pèŽíš5J…âÕX*¤ií¡ÑBµZÍdGd>~åRÕ±˜�u÷Z_nÌB¶­¹W–ëÇú¢“Ó×Î[ŠFÊ*8žÑl×ÛFù¶·)€o`F…€eY–çyŒ14�Ôc0�>rLvjjrh$ïºâ¢®ªYEMB�þãñ7êõ™žl¦Zñâ™Þ§~þÒ—¾|'@ÖøÄ$Çp²’X­v©Fý3ó.Q\‡"†îÚ3Tè—l
Ýqðè?û3ˆì“Ç´Ü€(‹¡ë“ÑXbq>ø÷G.ºf”øB2¼ðÚ7?ü‰ƒ‚Â{ëÍF7ˇö{7î¬öóçÞby¬úìÒ©·ß¿ÓòK~øÏÏ `„îÒêx©Ìð<û} ­TçÖEz{6ÈvôÜßÿàŽQزßSˆ`޼mëž½Có37L3J€Ž9kdcji¥
íõ×ÏÞzûh(~úÄ'O¼6ÑnUAö<˲,!%@`šãøDòž‹VÊ•í;·Ì-,i]
ƒ_¾ú\ÿ`x©8ÅqüÊr7•*¬Ö‹„1†Göï;"‹É­[v¹¾m–K ÃÈqˆ!£#YQêô
™ÝsPÆj©Z_Ä,ËI†e3ˆY˜m;Ëñ´Ú˜Ùµw$•J\½Ô¬•a,Ë_Ø~ÓÀðº^Ïçg&«¦íGcÁíÁáT(Zœ¯?i;¸­Ïö
ò6Œ¥ëN¿5i›¨¯¯¯Ñhp¬ª·¹©«ÚùSåjÉ|´gïV%Äär95$ì¾¹¯°NäùÎØ¦‘Ûï¼ÙöVe…Ã4úD±\ÒVÊúÆ£Ùlz-µ�(¥È¶›,</ÊŠb‘l*Þ»iþF£³cûŽ—ž»ô®£34’úÚ×?šËGI€D!'HéP”ÓŒj_Ïq£Š”cyeÛžÍ#ɼóˆ×h®¦RJ$ʼ÷Ãw¾§p|üïýDïÛñ´O*ÉdœçYͺÁq‹zãÆÆá›²õÂ1¬×úyNÔÍÊØØX:1Z]
-N3<i¶*wßsè칓 ˆ¼ðô%æ0#¤rôÖ;FmÛ½õÀ®¥¶¹B$]Zn+r4¤&‹sVDS…§UªTJ½=Ã55?SÞºyÏ]o{çÇü„çyùpøð¶jµŽÜ
fuÃC÷*õ”H”-¦0†kdBPxø”¸Ã<‡8MÅb'
{.xâÉg5½õÉO}càúŠ|NPª
³ÝñiiT@·‘('ðª¿pi¾ÓE–<Ðìè‹¶iF‰€Ø[¯ü¯ûx[Wó‰/ùÏ;�\)eŽg4s’“ëû–‹ÌÈgSÔâ8†îúDÙwÏ78ÁSUù¦=GRÑíNWÚMO–åX’—U”ˆg»m *±X,æúí›xžM&ògNólH×Mǵ4­“Í$0)}=ëºmb›ú€cYŒÁ{?¸së¶žvÃfhæüéåso-躉	˜¿Q€ p‚€bwÚÀ6  Ð~ô‘ÅßÿØw•ó£ÿŸÕêâÉSgŽÜqK8Â[¾ì/ž›íÖ2Ï–8¬”g<b¿üÚäÓO]m·yÝv PáÉ%7Q*^Ÿ)šZ¸UM”b_ýã[7tS.—­­o¾q‘!’k™íîÄè&ñ‚¤6pEÍžE�}Y–çç§y1 ¨ÒÖŠ‘púì[Å'µ°¸Ù÷ ë™¢ TKÝT¬ðí¿~¼Þš€Üìôâ3Ù^Wך©D†Å1¦¨h7]Û
‡Ãýy¹V_yðƒŸœœXM„ãíxϽŸ\Ð;�þüG]ºØ¨/6|÷ïÖºm×1B×J��„ÔeÀs€€Ö–	ô8ñBñ_A¬¿¸t£·/uðP~föÃA9”,/óδRñ¡X(!UT"ŽHlÞH€çch¸€‘x’ÈÆz7f¼ÞB§O¬˜÷Áüα7¯h]﹫Çy¾©„馱X4çX˜¬e–³Ú?Ž'ÅááAË@49&L\½xúÌ›+¥Ç5z{óf×Èïͧv=õÄ+”@Iæ•OgâјòøÿúÖ©±Ðš™?
 Å2JLÝÜ‚kêJ¡‡ô}„A*T¡gn
tºAo(ô§ÕP©.Øv»¼RÒ;]¸FÑZ‹F’„n·^«H,"pD×Ñ¿<ôê…óõf†2†á\¾þúo=p7¢±KÇÁ¶mÛëÝÀÅ™øÞÉkhèéIÏ–À¿ÿë‹åšäy>¢$ͯÞÒߟ.ôG¯^Ï>îÔ±eEJNÏ®dû ¦µææRñ‘ÕrƒežÖmÞW3}ñý¿|qq6A¯™É¥FF’ù¼XèK0ï¶{ ㎭¿ðâ—ÿó©ïÙzôÂù703‚Aêä«z4é_ž8þþ÷>øÌôGç¢ÒιÉÚW¾úƒÃ©ÑõúcÿviiŠÚÝÌêlÆnƒüÆÃ¢ZÿâW>²sWîø[OØzÚ6ð¿<ôâG>½sµ¤FBYGo-ß|ÇÑíÕj5 ôW²‚bǵ”P$“É{U©.Ÿ==æì	½£Ä±•ò¥GzãžûvÂÀ}ãõ—~úðD£)aQ±m”v»òÐÃßß¾»ÈFŸzö5³ë'ã=Æ|$&nçä‰_\>Õ
…¡éM��üIDAT”é¹b²Ä–‹ã££áK/ÍÍõs<\]YhµfUNa%llR;Œ_ú9Ï
`Þ\7”êÍÇÂ
+@5ÝZfQP«Î~é‹Ó1Ì|èæ‡þî¸(ä,Ýìtªßþë?|òú/Ž›†)žž¼8Ðw;ƒºâíw?ºt…hòZ2¶Þ5xÁíÉ%¯Ý¸˜ÍÇfl^rV–'¯O°Ñx¬^»¶¸8wàÖáL†CXc
��!„×&&1ǤÓIILÓäX3L«	.^¸ÞlÕl·‘ÎGÆ6d3yÇõ:8ñ²¦ÝV;p
U…=½éÂ`"•
va©vãÆäÊÊ
¼DBíÉ$"ÑP*Õk9 Õ0WWWë²ãuD™Jwè–#ÉxìùgÏ•ÊK–S'"ï¹ïË�•ª÷æ±_–ªWÒYù¾ûÞ•Œç-
ÌN»/¿ò"æ,Nꤳ¡õ£[¢áüõ‰òÉV+KéL¬¯J%3¦ÌL/hz'™Rä72:°~t3Fá™Éúùs7&'šÍÆoÝÿNȘJÈÍæbÙl#µQƒµZã‰ÿzD	‡n¹ùîh$>1qB–™;·<Ž%âÍfý±Ç;þ<&  ú>ñ<êyÔqÚžçU«ÕRõ’iš”R­TKê�€eš¾3…¡§(.!„ã8Ëi–JA«UFu:6’� ðP·|Çot´2!Äu]/0yÁ%$Š¢$IÙ¶Û”šê°.TäxuÊöu5\]§¦"‘õˆÖ©s—ï7cÉU†a8N‰a‰ccfËÖp$:ôÖ[–u^O¥@*•íí×®]kµV{²$N´ôƆ(7‡F¼h"iYJ½}Q’$IIB €
€Çpš¨töݼÅqËî*€ËEõ(ĵZÅ0¡$IðÌ™s­VKûoƒ�t]Áó<ß÷BÇ1ãyžçy¿Ö䯔ù?,B„¿*L|ß÷}ŸeÕ–ýÕ†‚Æcìû¾ªª†a¬u?!Š¢˜¦)‚iš,ËRJEQÔuc¼æ.ß÷�<ÏsmÛ,Ë:Ž£iÆ8‰ „Ça&„ÐZI¹vRaÍ˯ç†Y›÷}?QMÓ\sä8Ž ªªBñBÕj3Óív¯^½º¸¸hÏó<ÏSJׯÿßÖÀÿÏ?ym‚`-®Å±†-‚5Ø¿~~íbM•®ë"„ÖÞ‚zž·†Íó¼_ã±m›òëxÖÜyžçº.�`÷5T†a‹EJ)Ã0Š¢X–µÆÂÚçA­1%IÒéÿó.Ã0káB0Æ<ϯ-èº.Ë2’$Õëõ þa#¤íðJ™���tIMEÐ*/tŸ9���^tEXtComment�CREATOR: XV Version 3.10a  Rev: 12/29/94 (PNG patch 1.2)  Quality = 75, Smoothing = 0
E=…—����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-wml.info��������������������������������������������������������������0000644�0001750�0001750�00000000075�10343637563�015632� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WML
Website META Language
http://www.engelschall.com/sw/wml/
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-vim.gif���������������������������������������������������������������0000644�0001750�0001750�00000000633�10343637563�015440� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89aX��ò��”””BBB!!!5ÿÿÿÿ���������!ù����,����X��@þºÜþ0ÊIcP"ëÍ3ù]Ø
ä@”æyšäвåêÊepÚGä;§{ `Oð¼ŽÈ¤2y²aDШ´µ¬Z•NœtËÍ\¿àÚMèëéŠÁ³pˆrÁh©ã'“ÍIÙr°ƒÞ‰ATo‚pvwng„y]PaVŒŽ”‘—I“••-‰0˜‚™c››m¦ƒr…t/Œ@zk²€= ¶x£d{}CETˆ3/3ÃÅmsš¤Š¨ŸÃ§¡ÁM¹ËÌ· N6ÛÜÝÞßàáâãäâçèéêÊÖ[ØÙÕîïLÄ`nXòóQÑ,ÐqÄhxºƒëI£Wפ­ˆŒU1‚íö‰è·PšÃPøB˜aæŒ Á»äê×}ù	42Ò$5»P’™IËKË{
ÒŠ)³&M‘s
%t¨5>CôêéÓ¨"ÎÚcQ∢	ƒSÇXN-Vù}ºY¥jX
dÃd)Ƕ­Û·ã��;�����������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-linux.png�������������������������������������������������������������0000644�0001750�0001750�00000004465�10343637563�016032� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���}���=���·–{��,PLTEÿÿÿ!!!999JJJZZZsss„„„”””­­­µµµ½½½ÆÆÆÎÎÎÞÞÞïïï÷÷÷������ÞZB���÷½­çsR÷ÞÖΜŒ���������ÿε������µ­¥ZRJ91)9!����œs1sJ������œkcB¥k�½¥s������������„c!R9Ö”J1�cB�{R�”c�­s�ÆŒŒcÆŒ„Z�œk�������������½ŒΔÖœç¥9)�ç­÷½ïµµ„�������ZJïÎBÿÎ���ïÎ)���Þ½ïÎε���991kkZB����Æ�!”�œ�s����­������#æ¦B���tEXtSoftware�gif2png 1.2.0,–¿Þ���0tEXtComment�Comment: By Kevin Hughes, kevinh@eit.comЂu��eIDATxœíX[oÜDöø6Û3ã•”$Û+ ¼Ð¦@»å…ì6N$¨P¶r¢@„Îÿÿœ3c;¶“6 "? Îf7ÞñÌ|ç;·9ë ø_þ—ÿœppe¹>8Œ›Õá£:H׆7#ñõ(V†Ï`*±¶«¢ó:Ë×%èMƒ¸5§O¨Ö%ÏáÊJ�aè@«¢(¢’AÐÕsèfMô*&ÃÐÏbBÏ횎ÏAlNß^^~!¢‹uÃNÃæÐûõxyF~O³UÑ
¼<;½<¾Ûo(á×FßÚß.ßí.O¡Áj§VM9껋Ýîpñ­N@vk†B_>}ú3fšÊ9µ¢émŠBãñR¢&XkÃõNšK,Æ}®Këj=×k¡cŠÔÑà›^¡ƒ—“·ŸÙÇ*Yc‚÷è$XvèÇà5<ùâ³ÛúãâSQmKKNGï¥Gîe]Î:'à[?fžÜÜ\³G’üš.rV‚Øï0Þ¦Â^8ÞôX]ppÖ½¸Ï;MÒq€ðÅÍÍÍï5b TA‚«Ê f/vWͰåAí<o0î¾[Æ}ÖeBJÑ€¯ð	¡_§ŽOÎp
®JBe³™”itWK40�RÇÑCIè´Q~1\_ÿ~{
MR§ÜOäé(nÄ}‡+/Ð ¬"9¢G=õÒ–£
u—öÜ{ô2ü|ƒ
ܦZ½ý"윓ñ{Q`‰/‘†	xp…Ü£[,m‹w({ 7(î‡G—#:ùýæ6UBÆMBC‘vq’O™PÓÔž|ÆH‡©ðB渮÷èKÓO,O_úŸ·W
Ç’F`Ê RCHÄÌüw¼’ ˆ»Lc#˜·ÍÑÆ<è-]ÎMߣ7½ß{ô”Б·Žë€®Fî*ìzòÝ–£Ý)ÝbïöÒcà>è—ýÝÜòýä.<¼²aA±äža´¡HÉ¥ìB.ïR‰Ðå$ÚtÆz~],¸ÿA~÷ðL͸ë{fb&üErLñ›öMæÊ¬gîâË?„>X>&ÜeB›‹„MýÞ[^ºNàBºxÁíIÛ¾ÝV#w¯Ä呼ÎÞlż·]äûÈ]Ɖ‹«|Ì/¸çÆrðžÙÄµg-Kg¦ÎÔÜAûnÑÛ:¿Ýãw11ãñœ{ÙsÇ3„…=ù¥'ÔmN^Z”#4ÁxÄ•e~~ø	`ûü¸_ô¶ïçΚXRX)·¿˜[Ý6Æq—i(ü–ñËóósÂn'Àì˜ì¶8Nw»S¼·­ôÜ›eÌË„AGÆ—©@ˈÂ\̃ñ~ÏÀ¢^äGÞ¡Ÿµûؾê/øââpØH±36«7å»ãž0q:VîòWD—å–i*rÒG½?¯ž·NP‰ãÑËüâàŒBr2=?ß˃Iöð䡇� -Ž'yEŽÎ¬¾!=º³À·¾Æ“û“Í©ÇF³´íôAÆè÷^Æ|Y•W¤Þ2¾®%Ô1¹M€qEΧ¼h܃¡)úùiï÷À2ØúÑßx9µ}ÏýÊ8I`Â]iÃ!áN7FZ‘‘¹Ñíó‡Kļk:öð|°û±=ß¿Èq{£¨Ñ9ÙŸ8þ}Ju»ÎëIÌWÚ¢:‰Ë)#ÞÏKéŒá¤b»‚G¶o¡ïÎÁ}ûØ{ËŸ}ƒEYæ÷¸ûÜAôO¯Qn¯Ò&
)»MI¡å]W˜$1¹½bÉ"LV1óžïöFróË«fÖ¾m/¯'è;Tk¿ÿЂY1‹:5ã¾aŒmÜ಻4x5Zår|þ„¹g4Ez'sÍHs|ùÒÈ:Ü<{õÀ}ýú
ÖuØq6lûôÇ‹‹Ý7¡U®ÍäÑe9i¢ÆI$©”³PirUI¼Ö¹ê﨨ŠqECÍ”­Yܸˆ¼ÕyVáÙ°ýêõ÷'\Ñ>J²g¯^½Þ"¸*¦Ø¸;O/1¾’Tå®[¥>×w¹¥Á.¯Kƒ
äY†Ê×u£¤t¨Û:ŠBÊyìà.2…	
uûhÑ“ Õõâ‡ê›á–9mLÿµ1ÖXk‡ÊõgÖ–ý‹7ÑÂZ)•9–¦ ËLùq*€vª*1Ö·88¿B#,ˆ{x3ÊR»œÔwHîjXƒ¶q›Ý­/ƒQ]ºí±‡ùÚÏ/[C2ú€€jÉÌBQÉÁê«éÂ2emæWvW騳ù
ËEÖ;œ,e³­A±Y5Ò|z0iΜ]&Ë*3wbÇëÅ•™÷°ØÏÏX¨Šùï›Í&Ä4>tÌ5ö8sôJÎC¨ì¹ø‘ŠÍ¾®ŒË)‚ƒ™n]‚.¼˜®B÷,wŽõòA¸àrñ˜TÍ0�&:½ÈAŠ =í»1/\NgY=·…¬9Vyo„"t6TZ³LÂ>öçsÓHéù:üølh™Cÿÿá¡¿3ÇåîbÕrä!ùמï¬÷”ìÉ_‹‚²Îžh$2����IEND®B`‚�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-htdig.png�������������������������������������������������������������0000644�0001750�0001750�00000003372�10343637563�015766� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������‰PNG

���
IHDR���Q���6���ˆ …æ���`PLTEÿÿÿµµµ{ss„{{B99µssµJJµ))­½½��­��„��J��΄s{cZ”R1ÿÆ¥91çïïJRJckcŒœ9csZ{ŒRs„Œ¥µBk„ÎÖÞRRZ���>”Ÿ���bKGD�ˆH��•IDATxÚ­—íš› …%Ä€š„¸øÍýßeÏ$»f7?JŸ¦Šð:œ9¶ÿ»aø¤…0®~Äø?GÎǾ
5Ù÷ŸÇyžÇG_ß÷ó8,‹–M£ugŒù=ñ›8‡¢(Äýí³XnÓúsP/Š"6Qžõ¡(t‘Úч<±{CœîÄžFù
q)ˆ×ëEàI&«ó@×?‰·§÷Òãcðz¹º+Ènø0Æg"-Úk	"V¬g‚ʼn~}@ö§á!$§mC¿‰´êq‹ö€g‰‹‘Xš’³8æì
ý$䆨õ#=ïĉLƒiÄk,</´ð³ âŒd<s=ºô†n4fY%O;tdj¡šº>€È–LDzºö)”ïð÷¶!rq¸_kuî¦!ÖÎYk›îØXjòA<wyqyJœÃOâMpç¾Y:šsì:`µ&Ö|a›ÛxÌDü.~!‹n3ÃËŒÃØ‘ŽzÄòoÅ™gÁ©›D¶MñD$%ÏÖÛ=Ó%bÎu€ÜÁç�k,Ú5îq¡ÔÑå:¿'våF7´PÐ�æKgߟòl?ì'o-‚su£)Æ1Úú‘&NQP^Ã1„H¡É;Ïåøiù;×´0é‡Ý'/»ZriÎ2	
îñáðìG?6œ÷ˆ~êâYöSè)”{škŠZ|ï™þឯ)tã°OÔ«ôé‘ÉÚÖEØ(ÒŽŽlj9ß¹îú]â¢g¹ÊCqð´µ&>jJ¹³\q¿–"¥–‰i»MC·CS®kÄ.ÀÞössáÆ!ú¨ûL¹cyçð4 j­‹¯/\©©ùHJöâùQÃû;’N–Dœ~©R^«*ë¢'í¹Á•�æ²° -9(á\ƒõãtÅAÍ„G>KQÁú0MSw¾ˆ>t	¨kWÇ‘Ê6ÆÝxŸÈ‡†zªz÷¼F	ƒ¯[Pw¸ˆ/.çLrܺ¿¿�`{…†�®ôÏ"[¨àtú¾)¦1âÌòö$9õ×ï!ý|ËÒvÃ'_)=0ëõ¬c^ü›/S¸Ÿ®•Ûm¶!ND gFê×Ãj´|õÑÚdõõºêä¡ÝD,R•ªJåÝàrÊ”?UÙ$ m]-Û«ŒuÝà¹Ãós*\W
Ü~Ñ£„QJ¹ª"v%ÊR•BUÆ”:›[û•’zõ²2ʦ(%0C*¿‰®RseY’÷x}‰0OuJG¸iA_b±L²1£*±ˆ¦}¤cÊKªáØÔÞ‹ãZ,‹ïÅ$b	!ééªïB‡AT8ñ¢¥MïG–¢XËr룳;D^º…”DÐB¨ÕÙÕê¤Ì=È(ŽÇE,¿Cf¡+ÄpPU$^R–)Ħ½+CVÒ‡#jˆõñ­Š5,0wˆÛ47Àê‰H"RúS24ÍyIÇ–!ƒËû¬¸‡X	ú!Õ±À2¡LÅ6e_Ád0ìY²uN
îÃ=½å¤éìerŠí\¶¹@†E–VÉH… ãŽ5ôFED¢i+¡Z
[Û²5@¨¼ìlмö­ŽåVGƒP?eÀâĉÛ>³IÅCGò?-<k¨xàHæ„ÐÓóäy>fß§3éÙߢR¦ÄúÉIå‘bl±Ù+Z"ç�y×ôQew‰´¯¡EÅû!Õ^�lNDçÔåeóÿÿ ¾³ã3‘¾ÿöNN1N¨Í“ÊÔñG0ênä#‚·–j¨KyÒ‘ÌAÅËaK“YAµ<ÞØîTbIÔÑDlt¤Â«›ò·Ž%Ù“]Ïu”Šg)x"ŠuâeäP*"¨ã±–µŒîD]ÊU¿WýZEç=%•·"ïÚ}ß!ñEûjšÝ=»ê¢þßí˜Íõ%ç~r���EzTXtSoftware��xÚsÐPÖôÌMLOõMLÏLÎV0Ñ3Ð3Q°´Ð70Ñ70TH.Ê,.©t(®Ì-H,ÉLÎ×Ë/J�|jùxöÂ���3zTXtSignature��xÚK45µ°L2OKN224N3KJN6O1OIJ´0OJJK²4�œ¥	¼T•.���zTXtPage��xÚ³0¬05Ñ6Ð6��
ÕÀ™×����IEND®B`‚����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-netbsd.info�����������������������������������������������������������0000644�0001750�0001750�00000000066�10343637563�016312� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������netbsd
NetBSD Operating System
http://www.netbsd.org/
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_misc/logo-freebsd.gif�����������������������������������������������������������0000644�0001750�0001750�00000012237�10343637563�016262� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GIF89a«�@�ç������!*%4%#�P$$0%�R% )&)'�U(0A*�Y*"4+S+N+'9,�[-�^000001)=2T2@26E3/@45$36)?8(78F\90@90H:3J:6D<H<+
<=O=0#>5H>>&?8J@IC6IC9MD=VD>DD>NEHEEZF3:G:HEHHOJ?WJHaJc„K+:L"?L(?MD]MMbMS`OZoP@Q?MQI\QnR7GS#=U'@W/DW33WJTWM`WRYX|¡Z+=ZB%___a‡§g1=h]Nhigk5Al=LqETqNVsrZt(2u&w9ExH-yœ©zV||]}0;‚‡F@ˆ;F‰]M‰…yŠPBŠ`gEŽŽˆmD”‰—<F—e
˜|™X3™˜Œšp›L�›]�››� i£££¤"-ª08«cR«v­¬«®®˜2¯FN°‰°£O°¶¹²:B²±±¼¼¼¾¾¾¿„�Àº~ÅÃ@Æ…Ê‹ËʶÌ)1Ì;BÌ„ÍmHÐ3:ÐПÖLO×DG×–ÙâwÛ¦â×#æÈêµ	êÉ�ë=AëEDí¦ñ¦ñé€ôMK÷DC÷TQ÷ñ÷üêøåü¿�üøýûýýþþÿZWÿkeÿ°�ÿ±�ÿ²�ÿ³�ÿ´�ÿµ�ÿ¶�ÿ·�ÿ¸�ÿ¹�ÿº�ÿ»�ÿ¼�ÿ½�ÿ¿�ÿÀ�ÿÁ�ÿÂ�ÿÃ�ÿÄ�ÿÅ�ÿÆ�ÿÈ�ÿÉ�ÿÊ�ÿË�ÿÌ�ÿÍ�ÿÎ�ÿÏ�ÿÐ�ÿÑ�ÿÒ�ÿÓ�ÿÔ�ÿÕ�ÿÖ�ÿ×�ÿØ�ÿÙ�ÿÚ�ÿÛ�ÿÜ�ÿÝ�ÿÞ�ÿß�ÿà�ÿá�ÿâ�ÿã�ÿä�ÿå�ÿæ�ÿç�ÿè�ÿé�ÿê�ÿë�ÿì�ÿí�ÿî�ÿï�ÿð�ÿñ�ÿò�ÿó�ÿó#ÿõ�ÿö�ÿù�ÿý�ÿþðÿÿ�ÿÿd������������!ù��‰�,����«�@�@þ�	H° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹	Ÿ@‚óà€nTÁbA�WN1TDÀ!Œ0cÊœÙPO”EmRÝ“*©|a¼P‚Ã$	“"t�Á�@D4ÀPP�ŒÖ�"K�м‚­…@E(Pˆ€B–¬JlÅA!&�1hïÖr+€Ù:¬â%Ư¢UtW‰Aq¬ŠMÉ”-kæ4iÒ¨Y»†
›¶mܺ}NÜ8rªz0·n];7—N™É2¥HA¥BéŠO#š´ ÐDŸñãÈ“+_~Å}|£»“ÀGtIJ¤kßÎw-[·nþåÒ%	B‚_¿„3“ 1O	N@cƬY3–¤M£þC[6ЪtH	üP9æ¨B`L²'ª¨‚ÆpÀ"ˆ�x ‚—`Â(¦˜"H%Á܉(.çÜDÐqGuÛ]æ"Ý,8�Æ.¼ðâz¿8bÞ0ÄsÌ1.@0‡'4Hó4ÑdfÁÙ`ãFÞx3šiä,‘À ñ¨³;í¼óN<òÌ3=öÜã&>úГÁML‰€ÐA$ÕÄ+)çJD±M4ñ„V¨øwFÚ-µ€7½üøK0ÂSL1ƃŒdõ9ó¤~ÓTc
6Ù|Úhþ¥VÎ9褣;ì¸ó<hÎSO›nÞƒœ®°Ë)†l!B	 €:Ä m	1¬`m2À°…+­°hr¯|¨>+Feî¹QÁÃP¨D@ì°Ã1´!Ð!,<’Ͼm4¡ÅN8ƒP@Qº'¬°Btü–ÁK!@€Wlñ¹ìÑ…<éáEÂ!TñÅYd	( PÒCd0BÂS	T�S$’ƒ_�@Ç�Ð1…_t\á”ðœ3�€";û5À!HK3A=óüD"0È!�˜pñ!d˜²Çt@ô”È@òE40‚	@|qþB-Jê÷ß“VŠË¥Š¬¡ˆ0Àpê©‘¢*£3ÎTå4ÔTÃY« uã
iãœf'` hprf<j¢¢�#„ðA?ô€Ä+P€€ŒŒ«»£,BJ._ÁnbA4H¢F²¸ _j,@Ä,$0G-µ¿� ½™€KРÁøs0³Œæ%à@{'lr5sLðCæZ’&Îü@«˜¹ºÃkš¨X‚…V‚Dà�‚8E)ZF†Ì N¨г»
’ëQ€Ü($!	ïιȄ#6ñ#`lŠHGBƨÌgŸgx–èD3¢A
Ïl#KàPÅhÆרÃVþdÒ<䑦züêMÃ2Ž+ŠS˜‚K˜Át�ƒ<à”A"à1‚¨@E¸ôñ
Tp‚0ÂJÀz´"EåÚ›¨$ØW*Žð,d¡	Wèƒ ^P‚Ô€ˆ°cAž 4hAÓÁbPB‘s̤&‚Iè
a  Àˆ@;(C!
±ÉVº’Žmèä+gIK„üÁ†A R8|€•µfÅôP!2D`{02!…Œ !( SAì)è@d)ÌnÊ!ðÂRñ,¢'©(C2ÉD¡
QHœ•€›3þé0àŠU¬
8SdÍh‰&ô@�ÈÀÊ €Gôä{€Ä€…%˜à€�ü¹0}bÀöZö±�`w¹€. °�¥pé�À�¼tn�À\jS“’´¦n )ImJÒœ2‚�„N*Ô¦:õ©PêS5QÁ‰pxÁq!ô€‘Ä’‚le�šªZ×G:‚•àËwla‹¹ÎB³˜E%a£íˆBq-ž"6±¼þuºÐÅ.Ö"†U¬"D2F¨˜ñŒh4£>Ï8Uf¬±*¾Ê~ž3‡8¦€7°‚ï`„F Ü䦑0þD°$¤@F0£,¸»¶>¤o×1ÚãO	ÈÄ]3(¹nÂKX@|Š‹ÜXTLj
– lÏ[ A{4`\ñMÀyø„hÉANpíèÄbÑ+Ъà‚8qOˆøÀR°„*d¡ o-è[‡�W:/âË(Àà–L䲠ΖœàyˆŽ#¢à‚	Ta¸Ø…÷~‘¸aœ`ŽXÆ0M`J™¡FÐú¦ëC;Îa«u¨ãòøß<!3P fl
–ð…3hÁ	Z¸²`À‰ë®Á
ypt"ì–FdÇ-2âËþ$pÞàÀÙ™Ò	‚ç@À«ð^§ˆAOäèËX}œ!O¨a}–ÀFòšú…ã49
<ø×ÿõêWö ‡	J‚œÁ
¼DR„!,`Vx£—áˆÁí°ç}•ë–/H€Àj‘‰ãØypÁ(„шõÂŽ�ƒ4à‰f'�D'¦ñl0Ã?jˆÏ `87l�8‡:nE¦]¡ÎWl
VYÁAPà|	(PJaÀ#Èî^ñ„>œ¢YÈ�'\Á03DÌÌ…”w¾#Åò"S,†0ø*Q%CДyR4(§ªËeî[G9þÌaŽZݪebÓDãŒ° Äá!88a’0ØL�ƒȬ0(Œ`d€%8*Fq¡ÈàAxµC)KåSèI\§°kñÇeÇ©Zæ>+Ñ*c*7¯æaFB¸M'r,Ô`%@�*\ñ­¥?1°Œ°v¾Q«6Ô½)Ç68t”P@å„�¡GÂS:‰ˆ"È 	RÞB‚@É!Á	ŒO=LViÊRò€”m ƒz2Q¶
ChD0Õûþ÷À¾ð‡¯zDè!øC”OüæG„^8ƒèà?ðÁör¾ömþyJ0@�[Kl`�”Ao¹t ƒí» ˆð‚)8b‚$¡dXBV0‚�Ì—ˆ`�,eð~î÷†à2] }7^°‘ðuW[3„"`QÐ�¨}‰ÄU°=ñ^àPé´_€U`2Y�àIp�Ð}Ø|ñ‡û‚]@{©]�	dQð
€�
Ð@}	³OûRCp€á7KÆç5P�i€G`èDB±EaQ
µ:SO41P7“3‰PSpz€t˜z09³‡ö¢W0Ô‡SPt€…þtx~žtW‡XƒmPˆz8ö‚‡rh1B@	Up�!Àp�€‚	gK`0°@ãQýDa#~as3eMQ‹�p¥‡ÀO`�Wpˆ�s�O�4)aW3Ds‹;s´x1=`
˜p‘€†È7{©À{@	†pQÐ�!`#7{3Pa4e�(@�²pe±óØ( ø¨kѹPg•P¢0~pËe³ …q°RR0«°g\ƒ¦q9¶¬òšó
áðh§¡
Dv+ç°p	g — "È$	gÐþÀ1>Ç�¨�'‰§P§Ž‡<£²P~ñW�@�ß1
eáu`nA€áj!
I¹Tblñ�P‰%EéXlaeÑZ¡97
”³ÙÐ*ÜÀ
 +§á
ŒÐlÀ	쨀pPpp
‘p	¹	 
˜`d#àF@ o9©“­6u’Ù”´ ƒã…�›°
-V$¡‚‰YÏ€*7vYvãpT¨ð	– œ`iï@À.Édð eK o#
`÷˜¼#RׯyœÈk’9•r™ÐÈæ•€l› ‘Æ€ž0yþ0ð	•CàžŸ ùhäPåŒ0ôU:k‡n¬ðЂ=ð�0ö¤`Ây"‹Ç7’m'À™`'pSÇœtuµPlç!›0âÆÙ–‚æn ƒ
ÏÀÈÓ
"Ú	– æŸð‘nk€W„À 6`”�	€œð	Y@!†�	¡€B@]ÖŸÃR—a�#Å“	“éAµp¸ ¼àëÃbÁ@ÔAÇ‚q¦Qr
Wò6´
 ¡
là�0³Rè 
ô�!H6ñ022ð�9€ ¡`
þ p	4gM &@H
™½ã"MÊ€ð<’€°�`�Ò%› X 	s0%!6f y€p<‚¥Ö3Êæ–Ìà¢`–à	˜Q9n?ÿ!¢ZÒ‘.�Hpâ&&•fnõ 
X�¥ðŸ�B 13psùÖ¨ÉñŸ±¤]ÊA’ðÀÃÓW™	@|!	—*J��¸0¯s$ëãXÂà	¶–�€ Ï�j€vf.P
Üp¦Ç9ç@˜Z+­‘+»’&¾‚
H E`%p�`Ö¸@gò²Fð!œÞzAºþd&£�¥h–�r5®ä
¥´0<yà’€l£ÐÀ€¥°u’]€vc–ñ	æa	Ùà<ÖhœC@6ì�D•C¤&˜v­à
œ9@—€¨ËAŸ@PAá.|ç¶Nב	a‘#4K 2Ña#Y°�0
Çž¬ê™Ç`	0Í`	.à	§‚
Ž`=× 
`ú¢a?è©jÐFæf—,oò
­Ð301�Kè±&06€
»ÃD0	‘ÀVFn ²È®p’`'°!ö®J` V<f`˦f€=² 	Iþ2>4à¾À$`Ôe¼—µ–@Äëa4ݰ– ÝK4Pðn¢è@iBtnG¤nÆñ
Up
 ðÀ#Ð&À=À `3ð„ F)â
„�[°?À®À»ß:·“YXØC¥—Ò½€ÁÀ)†«B¤B–!
–a9Ù–Z‘²bgwr»’µè&º8©cð¦0¨°åC@zªû�Ë% +@1Ðõ|Ò�&0$Ðeq›¤±¤ŒWU78ŠÂYY†{‘q™–—£‘Ž&ç)Ã&Dg²r,',dÄ	Ue6F @Pp Cð.þIÇs3@6ÐEPGcÀŒ|Á®À
üt¼Å”i¯—â#"¬8ØšeÙ™µqÔ œá*ÜP?\2rèP¿c⺺é†tü
9Ð¥p
Zð�3�FŒ @9Gz
Ð�-k¤œpżå»vðÌÐÍÒ<ÍÔ<Íw`×|Ú¼ÍÜ|qpuá\ä\Îæ\r€Îr°ÎìÜÎx ïÏ%°ûòe@�9ðÐHP�|B£SУ3
гõÙÄA@mÐ=ÑÍÌ9zéJTà}0	}ÒY0"@G!YVMps0 Ä;@èwѵt¯J¤Ä;/7:@˜À�E€�=0eU W0I@pí†4MPˆp¥tT=;`J/‘‰°/a¦&/<0J5ÕÚWzy½WTÓG ®W03C�Lh}Ñj­ee  xׄ­I�;�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/ANNOUNCE����������������������������������������������������������������������������0000644�0001750�0001750�00000010441�10343637577�012542� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  A N N O U N C E
  ===============

  This file is the official announcement message for major WML releases.
  It gets posted to the following Newsgroups:

  NEWSGROUPS (REGULAR)
  --------------------
  Subject:   ANNOUNCE: Website META Language (WML) 2.0
  Newsgroup: comp.infosystems.www.servers.unix,
             comp.infosystems.www.authoring.html
             sdm.announce
  
  NEWSGROUPS (MODERATED)
  ----------------------
  Subject:   SOFTWARE: Website META Language (WML) 2.0
  To:        www-announce@boutell.com
  Subject:   Website META Language (WML) 2.0
  To:        linux-announce@news.ornl.gov

  -------------------------------------------------------------------
  __        ___  __ _     
  \ \      / / \/  | |     Website META Language, Version 2.0
   \ \ /\ / / |\/| | |     http://www.engelschall.com/sw/wml/
    \ V  V /| |  | | |___   ftp://ftp.engelschall.com/sw/wml/
     \_/\_/ |_|  |_|_____| 

                 Ralf S. Engelschall     Denis Barbier
                 rse@engelschall.com     barbier@engelschall.com

  WML is a free and extensible Webdesigner's off-line HTML generation toolkit
  for Unix, distributed under the GNU General Public License (GPL v2). It is
  written in ANSI C and Perl 5, build via a GNU Autoconf based source tree
  and runs out-of-the-box on all major Unix derivates. It can be used free
  of charge both in educational and commercial environments.
  
  WML consists of a control frontend driving up to nine backends in a
  sequential pass-oriented filtering scheme. Each backend provides one
  particular core language. While not trivial and idiot proof WML provides
  most of the core features real hackers always wanted for HTML generation: 

    Pass 1: Source Reading and Include File Expansion (backend: IPP)
    Pass 2: High-Level Macro Construct Expansion      (backend: mp4h)
    Pass 3: Perl Programming Construct Expansion      (backend: ePerl)
    Pass 4: Low-Level Macro  Construct Expansion      (backend: GNU m4)
    Pass 5: Diversion Filter                          (backend: Divert)
    Pass 6: Character and String Substitution         (backend: ASubst)
    Pass 7: HTML Tag Fixup                            (backend: HTMLfix)
    Pass 8: HTML Tag and Plain Text Stripping         (backend: HTMLstrip)
    Pass 9: Output Slicing and Final Target Writing   (backend: Slice)

  WML can be used both trivially like
     $ wml <page.wml >page.html
  to create a single output page and in an advanced way like
     $ wml -o '(ALL-LANG_*)uLANG_EN:page.en.html@u+x' \
           -o '(ALL-LANG_*)uLANG_EN:page.de.html@u+x' page.wml
  to create two output pages from a single multi-lingual source.

  For maximum power WML already ships with a well-suited set of include files
  which provide high-level features build on top of the backends core
  languages. Some topics the shipped include files already address:
  
    - generation of URLs through auto-adjustment variables
    - generation of typographically strong headlines via images
    - generation of typographically strong text rendering
    - generation of typical direction+color based background images
    - generation of 1pt dot-images for layout spacing tricks
    - generation of `lowsrc' images
    - generation of flexible grammar-based navigation bars
    - generation of rollover-style image-buttons
    - generation of hyperlinks via simplified tags
    - generation of typical page environments
    - generation of standard page information
    - generation of table structures by grids or positions
    - generation of table-based rectangular boxes
    - generation of verbatim, ISO-Latin-1 and URL-sensitive areas
    - generation of HTML via inlined POD, SDF and structured ASCII Text areas
    - generation of tags in forced lower or upper case
    - generation of inlined client-side out of external server-side imagemaps
    - generation of multi-lingual webpages or other variants through slicing
    - generation of table of contents out of header tags
    - generation of pages via include files acting as templates
    - generation of content statistics for resulting webpages
    - ...

  The same way you can write your own custom HTML tagsets for WML to extend
  its functionality for your particular needs. WML is not a closed toolbox,
  it's only the core upon which you can base your Unix HTML generation
  environment.
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/Makefile.in�������������������������������������������������������������������������0000644�0001750�0001750�00000030461�10343637577�013462� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  WML top-level Makefile
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##
@SET_MAKE@

# ------------------------------------------------
#   DEFINITIONS
# ------------------------------------------------

SHELL           = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

SHTOOL	        = $(top_srcdir)/etc/shtool
INSTALL_PROGRAM = $(SHTOOL) install -c -m 755 -s
INSTALL_SCRIPT  = $(SHTOOL) install -c -m 755
INSTALL_DATA    = $(SHTOOL) install -c -m 644
MKDIR           = $(SHTOOL) mkdir -f -p -m 755
VERSION_TOOL    = $(SHTOOL) version
FIXPERM         = $(SHTOOL) fixperm
TARBALL         = $(SHTOOL) tarball -t

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man
catdir          = @catdir@
tmpdir          = @tmpdir@

RM              = rm -f

SUBDIRS = \
   wml_frontend     \
   wml_aux          \
   wml_backend      \
   wml_common       \
   wml_docs         \
   wml_misc         \
   wml_include      \
   wml_test

PROBLEMATIC_FILES = \
   wml_backend/p3_eperl/eperl_readme.c \
   wml_backend/p3_eperl/eperl_license.c \
   wml_backend/p3_eperl/eperl_logo.c \
   wml_backend/p3_eperl/eperl_powered.c \
   wml_backend/p9_slice/slice_term.pl

# ------------------------------------------------
#   THE DEFAULT TARGET
# ------------------------------------------------

#  We want to stop compilation when an error occur.
#  The trick is from Automake, to allow -k option keeps its natural
#  meaning.
all: @MAINT@.touch
	@set -e; \
	set dummy $(MAKEFLAGS); amf=$$2; \
	for dir in $(SUBDIRS); do \
	    echo "===> $$dir ($@)"; \
	    (cd $$dir && $(MAKE)) \
	    || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
	    echo "<=== $$dir"; \
	done && test -z "$$fail"
	@:> .build-ok

@MAINT@.touch:
@MAINT@	@for file in $(PROBLEMATIC_FILES); do \
@MAINT@	    touch $$file; \
@MAINT@	done
@MAINT@	@:> .touch

wml_contrib/wml.spec: config.status wml_contrib/wml.spec.in
	CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status

# ------------------------------------------------
#   TEST
# ------------------------------------------------

test:
	@[ -f .build-ok ] || $(MAKE) all
	@cd wml_test && $(MAKE) test

check: test

# ------------------------------------------------
#   INSTALLATION
# ------------------------------------------------

install: install-dirs install-core install-perl \
  install-doc install-aux install-misc install-tags

install-dirs:
	@[ -f .build-ok ] || $(MAKE) all
	@echo "___ INSTALL: prepare directory structure ___"
	$(MKDIR) $(bindir)
	$(MKDIR) $(libdir)
	$(MKDIR) $(libdir)/data
	$(MKDIR) $(libdir)/exec
	$(MKDIR) $(libdir)/include
	$(MKDIR) $(libdir)/perl
	$(MKDIR) $(mandir)
	$(MKDIR) $(mandir)/man1
	$(MKDIR) $(mandir)/man3
	$(MKDIR) $(mandir)/man7
	$(MKDIR) $(mandir)/$(catdir)1
	$(MKDIR) $(mandir)/$(catdir)7

install-core:
	@echo ""
	@echo "___ INSTALL: core language programs and manpages ___"
	$(INSTALL_SCRIPT) wml_frontend/wmk.pl $(bindir)/wmk
	$(INSTALL_DATA) wml_frontend/wmk.1 $(mandir)/man1/wmk.1
	$(INSTALL_SCRIPT) wml_frontend/wml.pl $(bindir)/wml
	$(INSTALL_DATA) wml_frontend/wml.1 $(mandir)/man1/wml.1
	$(INSTALL_SCRIPT) wml_frontend/wmd.pl $(bindir)/wmd
	$(INSTALL_DATA) wml_frontend/wmd.1 $(mandir)/man1/wmd.1
	$(INSTALL_DATA) wml_frontend/wmd.txt $(libdir)/data/wmd.txt
	if [ -f wml_frontend/wmd.map ]; then \
                $(INSTALL_DATA) wml_frontend/wmd.map $(libdir)/data/wmd.map; \
	else :; fi
	$(INSTALL_DATA) wml_frontend/wmd_missing.1 $(mandir)/man1/wmd_missing.1
	$(INSTALL_SCRIPT) wml_frontend/wmb.pl $(bindir)/wmb
	$(INSTALL_DATA) wml_frontend/wmb.1 $(mandir)/man1/wmb.1
	$(INSTALL_SCRIPT) wml_frontend/wmu.pl $(bindir)/wmu
	$(INSTALL_DATA) wml_frontend/wmu.1 $(mandir)/man1/wmu.1
	$(INSTALL_SCRIPT) wml_backend/p1_ipp/ipp.pl $(libdir)/exec/wml_p1_ipp
	$(INSTALL_DATA) wml_backend/p1_ipp/ipp.1 $(mandir)/man1/wml_p1_ipp.1
	$(INSTALL_PROGRAM) wml_backend/p2_mp4h/src/mp4h@EXEEXT@ $(libdir)/exec/wml_p2_mp4h@EXEEXT@
	$(INSTALL_DATA) wml_backend/p2_mp4h/doc/mp4h.1 $(mandir)/man1/wml_p2_mp4h.1
	$(INSTALL_PROGRAM) wml_backend/p3_eperl/eperl@EXEEXT@ $(libdir)/exec/wml_p3_eperl@EXEEXT@
	$(INSTALL_DATA) wml_backend/p3_eperl/eperl.1 $(mandir)/man1/wml_p3_eperl.1
	$(INSTALL_PROGRAM) wml_backend/p4_gm4/src/m4@EXEEXT@ $(libdir)/exec/wml_p4_gm4@EXEEXT@
	$(INSTALL_DATA) wml_backend/p4_gm4/doc/m4.txt $(mandir)/$(catdir)1/wml_p4_gm4.1
	$(INSTALL_SCRIPT) wml_backend/p5_divert/divert.pl $(libdir)/exec/wml_p5_divert
	$(INSTALL_DATA) wml_backend/p5_divert/divert.1 $(mandir)/man1/wml_p5_divert.1
	$(INSTALL_SCRIPT) wml_backend/p6_asubst/asubst.pl $(libdir)/exec/wml_p6_asubst
	$(INSTALL_DATA) wml_backend/p6_asubst/asubst.1 $(mandir)/man1/wml_p6_asubst.1
	$(INSTALL_SCRIPT) wml_backend/p7_htmlfix/htmlfix.pl $(libdir)/exec/wml_p7_htmlfix
	$(INSTALL_DATA) wml_backend/p7_htmlfix/htmlfix.1 $(mandir)/man1/wml_p7_htmlfix.1
	$(INSTALL_SCRIPT) wml_backend/p8_htmlstrip/htmlstrip.pl $(libdir)/exec/wml_p8_htmlstrip
	$(INSTALL_DATA) wml_backend/p8_htmlstrip/htmlstrip.1 $(mandir)/man1/wml_p8_htmlstrip.1
	$(INSTALL_SCRIPT) wml_backend/p9_slice/slice $(libdir)/exec/wml_p9_slice
	$(INSTALL_DATA) wml_backend/p9_slice/slice.1 $(mandir)/man1/wml_p9_slice.1

install-perl:
	@echo ""
	@echo "___ INSTALL: commonly used Perl 5 modules ___"
	-@set dummy $(MAKEFLAGS); amf=$$2; \
	(cd wml_common && $(MAKE) install prefix=$(prefix)) \
	    || case "$$amf" in *=*) exit 1;; *k*) ;; *) exit 1;; esac

install-doc:
	@echo ""
	@echo "___ INSTALL: general documentation ___"
	$(INSTALL_DATA) wml_docs/wml_intro.7 $(mandir)/man7/wml_intro.7
	$(INSTALL_DATA) wml_docs/wml_tutorial.7 $(mandir)/man7/wml_tutorial.7
	$(INSTALL_DATA) wml_docs/wml_macros.7 $(mandir)/man7/wml_macros.7
	$(INSTALL_DATA) wml_docs/wml_faq.7 $(mandir)/man7/wml_faq.7
	$(INSTALL_DATA) wml_docs/wml_tags.7 $(mandir)/man7/wml_tags.7
	$(INSTALL_DATA) wml_docs/wml_std_html20.txt $(mandir)/$(catdir)7/wml_std_html20.7
	$(INSTALL_DATA) wml_docs/wml_std_html32.txt $(mandir)/$(catdir)7/wml_std_html32.7
	$(INSTALL_DATA) wml_docs/wml_std_html40.txt $(mandir)/$(catdir)7/wml_std_html40.7
	$(INSTALL_DATA) wml_docs/wml_std_html401.txt $(mandir)/$(catdir)7/wml_std_html401.7
	$(INSTALL_DATA) wml_docs/wml_std_xhtml10.txt $(mandir)/$(catdir)7/wml_std_xhtml10.7
	$(INSTALL_DATA) wml_docs/wml_std_css1.txt $(mandir)/$(catdir)7/wml_std_css1.7
	$(INSTALL_DATA) wml_docs/wml_std_css2.txt $(mandir)/$(catdir)7/wml_std_css2.7
	$(INSTALL_DATA) wml_docs/wml_std_csspos.txt $(mandir)/$(catdir)7/wml_std_csspos.7
	$(INSTALL_DATA) wml_docs/wml_std_wai10.txt $(mandir)/$(catdir)7/wml_std_wai10.7
	$(INSTALL_DATA) wml_docs/wml_barebone.txt $(mandir)/$(catdir)7/wml_barebone.7

install-aux:
	@echo ""
	@echo "___ INSTALL: auxiliary programs and manpages ___"
	$(INSTALL_SCRIPT) wml_aux/htmlclean/htmlclean.pl $(libdir)/exec/wml_aux_htmlclean
	$(INSTALL_DATA) wml_aux/htmlclean/htmlclean.1 $(mandir)/man1/wml_aux_htmlclean.1
	$(INSTALL_PROGRAM) wml_aux/iselect/iselect@EXEEXT@ $(libdir)/exec/wml_aux_iselect@EXEEXT@
	$(INSTALL_DATA) wml_aux/iselect/iselect.1 $(mandir)/man1/wml_aux_iselect.1
	$(INSTALL_SCRIPT) wml_aux/map2html/map2html.pl $(libdir)/exec/wml_aux_map2html
	$(INSTALL_DATA) wml_aux/map2html/map2html.1 $(mandir)/man1/wml_aux_map2html.1
	$(INSTALL_SCRIPT) wml_aux/txt2html/txt2html.pl $(libdir)/exec/wml_aux_txt2html
	$(INSTALL_DATA) wml_aux/txt2html/txt2html.txt $(mandir)/$(catdir)1/wml_aux_txt2html.1
	$(INSTALL_DATA) wml_aux/txt2html/txt2html.dict $(libdir)/data/txt2html.dict
	$(INSTALL_PROGRAM) wml_aux/tidy/tidy@EXEEXT@ $(libdir)/exec/wml_aux_tidy@EXEEXT@
	$(INSTALL_DATA) wml_aux/tidy/tidy.txt $(mandir)/$(catdir)1/wml_aux_tidy.1
	$(INSTALL_SCRIPT) wml_aux/htmlinfo/htmlinfo.pl $(libdir)/exec/wml_aux_htmlinfo
	$(INSTALL_DATA) wml_aux/htmlinfo/htmlinfo.1 $(mandir)/man1/wml_aux_htmlinfo.1
	$(INSTALL_SCRIPT) wml_aux/linklint/linklint.pl $(libdir)/exec/wml_aux_linklint
	$(INSTALL_DATA) wml_aux/linklint/linklint.1 $(mandir)/man1/wml_aux_linklint.1
	$(INSTALL_SCRIPT) wml_aux/weblint/weblint.pl $(libdir)/exec/wml_aux_weblint
	$(INSTALL_DATA) wml_aux/weblint/weblint.1 $(mandir)/man1/wml_aux_weblint.1
	$(INSTALL_DATA) wml_aux/weblint/weblintrc $(libdir)/data/weblintrc
	$(INSTALL_SCRIPT) wml_aux/freetable/freetable.pl $(libdir)/exec/wml_aux_freetable
	$(INSTALL_DATA) wml_aux/freetable/freetable.1 $(mandir)/man1/wml_aux_freetable.1

install-misc:
	@echo ""
	@echo "___ INSTALL: miscellaneous files ___"
	-@set dummy $(MAKEFLAGS); amf=$$2; \
	(cd wml_misc && $(MAKE) install prefix=$(prefix)) \
	    || case "$$amf" in *=*) exit 1;; *k*) ;; *) exit 1;; esac

install-tags:
	@echo ""
	@echo "___ INSTALL: include files and manpages ___"
	-@set dummy $(MAKEFLAGS); amf=$$2; \
	(cd wml_include && $(MAKE) install prefix=$(prefix)) \
	    || case "$$amf" in *=*) exit 1;; *k*) ;; *) exit 1;; esac

# ------------------------------------------------
#   CLEANUP
# ------------------------------------------------

clean:
	-@for dir in $(SUBDIRS); do \
	    echo "===> $$dir ($@)"; \
	    (cd $$dir && $(MAKE) clean); \
	    echo "<=== $$dir"; \
	done
	-@$(RM) .build-ok 2>/dev/null

distclean: 
	-@for dir in $(SUBDIRS) config; do \
	    echo "===> $$dir ($@)"; \
	    (cd $$dir && $(MAKE) distclean); \
	    echo "<=== $$dir"; \
	done
	-@$(RM) .build-ok .touch Makefile 2>/dev/null

# ------------------------------------------------
#   THE CONFIGURATION SUPPORT
# ------------------------------------------------

SHTOOL_DIR_FILES = \
   .:etc/shtool \
   wml_aux/iselect:etc/shtool \
   wml_backend/p2_mp4h:shtool \
   wml_backend/p3_eperl:etc/shtool \
   wml_backend/p9_slice:etc/shtool

update-shtool:
	-@set -e; for f in $(SHTOOL_DIR_FILES); do \
	  dir=`echo $$f | sed -e 's,:.*$$,,'`; \
	  file=`echo $$f | sed -e 's,^.*:,,'`; \
	  rm -f $${dir}/$${file}; \
	  ( cd $${dir} && $(MAKE) $${file} ) || exit 1; \
	done

etc/shtool:
	@shtoolize -o $@ install mkdir version echo guessos fixperm tarball

fixperm:
	$(FIXPERM) *

EXCLUDE_FILES = CVS .cvsignore \
   autom4te.cache /\\.deps build-stamp \
   ^wml- ^wml_backend/p9_slice/lib ^wml_backend/p9_slice/t

manifest: distclean
	unset LC_ALL; \
	x=`echo $(EXCLUDE_FILES) |\
	   sed -e 's;/;\\\\/;g' -e 's#[ 	]\{1,\}#/d -e /#g'`; \
	$(FIND) * -type f -depth -print |\
	sed -e /$$x/d | sort >MANIFEST

summary:
	@$(top_srcdir)/etc/summary ChangeLog

# ------------------------------------------------
#   THE RELEASE STUFF
# ------------------------------------------------

TAR    = tar       # where to find GNU Tar
FIND   = find      # where to find a good Find tool
GZIP   = gzip      # where to find GNU Zip
NAME   = barbier   # name of maintainer who rolls the tarball

_GETDISTINFO = \
    _version=`$(VERSION_TOOL) -l txt -d short VERSION`; \
    _date=`date '+%Y%m%d_%H%M'`;

_BUILDDIST = \
    _cwd=`pwd`; \
    echo "Creating tarball..."; \
    cd $(top_srcdir) && \
    cat MANIFEST | xargs $(TARBALL) -u $(NAME) -g wml -c '$(GZIP) --best' \
        -o $${_tarball}; \
    echo "Done"; \
    cd $$_cwd && ls -l $${_tarball}

_NEWVERS = \
    $(VERSION_TOOL) -l txt -n WML $$OPT VERSION; \
    V=`$(VERSION_TOOL) -l txt -d long VERSION`;\
    sed -e "s/Version .*(.*)/Version $$V/g" <README >README.n && mv README.n README; \
    sed -e "s/Version .*(.*)/Version $$V/g" <wml_frontend/wmd.txt >wml_frontend/wmd.txt.n && mv wml_frontend/wmd.txt.n wml_frontend/wmd.txt

_UPDATEVERS = \
    V=`$(VERSION_TOOL) -l txt -d short VERSION`;\
    $(VERSION_TOOL) -l txt -n WML -s $$V VERSION; \
    V=`$(VERSION_TOOL) -l txt -d long VERSION`;\
    sed -e "s/Version .*(.*)/Version $$V/g" <README >README.n && mv README.n README; \
    sed -e "s/Version .*(.*)/Version $$V/g" <wml_frontend/wmd.txt >wml_frontend/wmd.txt.n && mv wml_frontend/wmd.txt.n wml_frontend/wmd.txt

release: wml_contrib/wml.spec distclean manifest fixperm
	@$(_GETDISTINFO) \
    _distname="wml-$${_version}"; \
    _tarball="$(tmpdir)/$${_distname}.tar.gz"; \
    echo "Release Distribution: WML Version $$_version"; \
    $(_BUILDDIST); \
    mv $${_tarball} $${_distname}.tar.gz

snap: distclean manifest fixperm
	@$(_GETDISTINFO) \
    _distname="wml-$${_version}-SNAP"; \
    _tarball="$(tmpdir)/$${_distname}.tar.gz"; \
    echo "Snap of whole source tree: WML Version $$_version as of $$_date"; \
    $(_BUILDDIST); \
    mv $${_tarball} $${_distname}.tar.gz

new-version:
	@V="$(VERSION)"; \
	if [ ".$$V" != . ]; then \
		OPT="-s$$V"; \
	else \
		OPT="-e"; \
	fi; \
	$(_NEWVERS)

update-version:
	$(_UPDATEVERS)

##EOF##
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/COPYRIGHT.OTHER���������������������������������������������������������������������0000644�0001750�0001750�00000005021�10343637577�013562� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  C O P Y R I G H T . O T H E R
  =============================
  
  WML -- Website META Language

  This file lists all foreign WML parts written by other authors. 
  I want to thank all of them both for writing such good software
  and to make it freely available. The credit for these parts is yours.

  For the general Copyright on WML see the file COPYRIGHT!

  ________________________________________________________________________


  GNU-m4 1.4 [wml_p4_gm4/]
      Copyright (c) Ren'e Seindal 
      ftp://ftp.gnu.org/gnu/m4/

  txt2html 1.28 [wml_aux/txt2html/]
      Copyright (c) Seth Golub <seth@thehouse.org>
      http://www.aigeek.com/txt2html/

  linklint 2.3.5 [wml_aux/linklint/]
      Copyright (c) James B. Bowlin <jbowlin@linklint.org>
      http://www.linklint.org/

  weblint 1.020 [wml_aux/weblint/]
      Copyright (c) Neil Bowers <neilb@cre.canon.co.uk>
      http://www.cre.canon.co.uk/~neilb/weblint/

  freetable 0.11 [wml_aux/freetable/]
      Copyright (c) Tomasz Wêgrzanowski <maniek@beer.com>

  htmlclean 1.25 [wml_aux/htmlclean/]
      Copyright (c) Paul Lindner <paul.lindner@itu.int>
      http://people.itu.int/~lindner/

  tidy 04th August 2000 [wml_aux/tidy/]
      Copyright (c) Dave Raggett <dsr@w3.org>
      http://www.w3.org/People/Raggett/tidy/

  PCRE 3.2 [wml_backend/p2_mp4h/pcre/]
      Copyright (c) University of Cambridge
      ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

  GetoptLong 2.23 [wml_common/getoptlong/]
      Copyright (c) Johan Vromans <jvromans@squirrel.nl>
      http://www.perl.com/CPAN/authors/id/JV/

  Bit-Vector 6.0 [wml_common/bitvector/]
      Copyright (c) Steffen Beyer, <sb@engelschall.com>
      http://www.engelschall.com/u/sb/download/

  File-PathConvert 0.85 [wml_common/filepathconvert/]
      Copyright (c) Shigio Yamaguchi <shigio@wafu.netgate.net>
      http://www.perl.com/CPAN/authors/id/SHIGIO/

  Image-Size 2.93 [wml_common/imagesize/]
      Copyright (c) Randy Ray <randy@byz.org>
      http://www.perl.com/CPAN/authors/id/RJRAY/

  GD 1.23 [wml_common/gd/]
      Copyright (c) Lincoln D. Stein <lstein@genome.wi.mit.edu>
      http://www.perl.com/CPAN/authors/id/LDS/

  IO 1.20 [wml_common/io/]
      Copyright (c) Graham Barr <bodg@tiuk.ti.com>
      http://www.perl.com/CPAN/authors/id/GBARR/

  TermReadKey 2.14 [wml_common/termreadkey/]
      Copyright (c) Kenneth Albanowski
      http://www.perl.com/CPAN/authors/id/KJALB/

  The Bare Bones Guide to HTML, v4.0 [wml_docs/wml_barebone.txt]
      Copyright (c) Kevin Werbach
      http://werbach.com/barebones/


���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/ChangeLog���������������������������������������������������������������������������0000644�0001750�0001750�00000454377�11001452045�013160� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  C H A N G E L O G
  =================

  This file summarizes *all* types of changes to the WML sources,
  i.e. changes between each patchlevel (1.x.y->1.x.(y+1) and
  1.x.y->1.(x+1).0). Take this logfile for concrete and detailed
  information about every single change.
  ___________________________________________________________________________

  Changes between 2.0.9 and 2.0.12:

    *) Fix compilation under gcc4.
       Applied patch from Mandriva's RPM .spec
       [Shlomi Fish <shlomif@iglu.org.il>]

	*) Fixed wml on cygwin.
       [Shlomi Fish <shlomif@iglu.org.il>]

    *) Updated the README and VERSION.
       [Denis Barbier <barbier@linuxfr.org>]
    
    *) Got the GNU Autotools build to work again.
       [Shlomi Fish <shlomif@iglu.org.il>]

    *) Added workaround to compile with perl-5.10.0.
       [Shlomi Fish <shlomif@iglu.org.il>]

    *) Applied the CVE-2008-0665 Patch (Temp files)
       [Nico Golde <nion@debian.org>]
       [Shlomi Fish <shlomif@iglu.org.il>]

  Changes between 2.0.8 and 2.0.9:

    *) Fix <directory-contents> (18-Oct-2002):
       Remove trailing newline.
       [Ralf Vissers <ravis@web.de>]

    *) Fix memory error in <array-shift> (18-Oct-2002):
       Some argument checks were missing in <array-shift> and could
       cause memory fault.
       [Jean-Michel Sauvage <jms.debian@club-internet.fr>]

    *) Upgrade to mp4h 1.3.0 (18-Oct-2002):
       [Denis Barbier]

    *) Fix ePerl compilation (17-Oct-2002):
       Perl 5.8.0 has now thread support by default, which caused trouble
       when compiling ePerl.
       [Denis Barbier]

    *) Renamed 'aux' directory to 'data' (12-Oct-2002):
       Allows WML to be compiled under Cygwin.
       [Claus Faerber]

    *) Use '.' instead of '::' for man pages on Windows (12-Oct-2002):
       Allows WML to be compiled under Cygwin.
       [Claus Faerber]

    *) Use EXEEXT in configuration (12-Oct-2002):
       Allows WML to be compiled under Cygwin.
       [Claus Faerber <claus@faerber.muc.de>]

    *) Fix compilation on MS Windows (22-Jun-2002):
       [Darryl Smith <Darryl@radio-active.net.au>]

    *) Fix wml::sup::path (16-Jun-2002):
       canonpath('.///') did return '/' instead of './'
       [Florian Hars]

    *) Improve checks on file errors (20-Apr-2002):
       In passes 1, 5, 6, 7, 8 and 9 (ie Perl passes), file operations are
       checked and WML aborts if an error is detected.
       [Denis Barbier]

    *) Remove freetable comments in wml::fmt::xtable (10-Feb-2002):
       The -w flag now prints comments before generated table, whereas
       it used to omit it.  It is then omitted on freetable command line.
       [Thomas R. Koll <tomk32@tomk32.de>]

    *) Fix wml_p1_ipp (21-Dec-2001):
       Text added to let pass 3 retrieve filename and line numbers are
       protected against pass 2, because brackets could cause some trouble.
       [Denis Barbier]

    *) Fix wml::des::typography (21-Dec-2001):
       The <spaced> tag could add ``&nbsp;'' within tags when interchar
       attribute was used.
       [Alvise Belotti]

    *) Fix wml::sup::path (18-Dec-2001):
       The canonpath function in wml::sup::path was buggy if path contains
       dots in directory names.
       [Tommi Vainikainen <thv@iki.fi>]

    *) Suppress warning in wml::std::toc (07-Nov-2001):
       A warning about wrong <preserve>/<restore> pairs could be raised
       when redefining <toc_section>, this is a long-standing bug which
       is revealed by an extra check added in recent mp4h.
       [Werner Heuser]

    *) Fix generic attributes in wml::des::navbar (05-Nov-2001):
       They were not always taken into account.
       [Clemens Oertel <oertel@uni-tuebingen.de>]

  Changes between 2.0.7 and 2.0.8:

    Note: since WML 2.0.5 there were two versions, stable and unstable.
          The former was numbered 2.0.N whereas the latter was 2.1aN.
          But I do not have time to manage those two separate trees,
          and there was no real benefit, so I am leaving this scheme.

    *) Fix locales in ePerl (28-Oct-2001):
       Locales broke ePerl with Perl > 5.6, with an odd error message:
       ``DynaLoader object version 1.04 does not match $DynaLoader::VERSION
       1 at DynaLoader.pm ...''
       [Martin Maechler <maechler@stat.math.ethz.ch>, Axel Beckert]

    *) Upgrade to linklint 2.3.5 (28-Oct-2001):
       [Denis Barbier]

    *) Cleanup wml::des::navbar (26-Oct-2001):
       The urlopts attribute in navbar:define was documented but not
       implemented, it is replaced by generic attributes.
       [Werner Heuser <wehe@snafu.de>]

    *) Fix -W description in wmk usage summary (23-Oct-2001):
       [Martin Quinson <Martin.Quinson@ens-lyon.fr>]

    *) Upgrade to mp4h 1.2.2 (18-Oct-2001):
       Among other new features, the most significant for WML users
       may be the ability to define entities (in the SGML or XML sense)
       which could be seen as empty tags without attributes, and an
       experimental support of utf8,
       Note also that a leading space has been added to expansion of
       <attributes-quote> to ease writing HTML tags.
       [Denis Barbier]

    *) Fix detection of Perl modules (02-Oct-2001):
       Previous detection did use the Exporter::require_version method,
       which cause problem when modules are not setup with Exporter.
       New scheme only rely on normal `use MODULE VERSION' Perl function.
       [Blair Zajac <blair@orcaware.com>]

    *) Undefine variables on command-line (29-Sep-2001):
       Special construct -Dfoo=UNDEF undefine foo, if it was previously
       set by other command line options.  This is especially useful
       in .wmlrc files
       [Jan Holler]

    *) Upgrade wml_contrib/wml.vim (29-Sep-2001):
       [Denis Barbier]

    *) Improve wml_p5_divert (09-Sep-2001):
       This pass could be very slow with large files.
       [Jean-Michel Sauvage]

    *) Fix documentation (26-Aug-2001):
       There was a documentation bug with example defining the <mail2>
       tag.
       [Rajendra Gokhale <rvg@creato.org>]

    *) Fixed various typos in manual pages (26-Aug-2001):
       Fixed various typos in manual pages wml_faq, wml::std::page
       and wml::std::info.
       [Thomas Lotterer <thomas.lotterer@cw.com>]

    *) Fix <protect> (17-Jul-2001):
       The pass= attribute is now case-insensitive.
       [Axel Beckert]

  Changes between 2.0.6 and 2.0.7:

    Note: timestamps have a single value because this 2.0.x branch did
          not receive support for a long time, so it has been decided
          to copy WML 2.1a2 into 2.0.7.

    *) Change <tli> in wml::des::typography (20-Jun-2001):
       It becomes a complex tag, as stated in documentation.
       [Craig Small]

    *) Fix compilation of Bit::Vector with perl < 5.005 (20-Jun-2001):
       Apply the 2001-08-29 patch by Max H. Duenki.
       [Denis Barbier]

    *) Fix nested ePerl tags implementation (19-Jun-2001):
       When <perl:assign> surrounds <perl:print>, output was not
       diverted to variables.  Quoting has also been fixed.
       [Petr Andreyev]

    *) Upgraded to Image::Size 2.93 (19-Jun-2001):
       Upgraded from 2.903 to 2.93
       [Denis Barbier]

    *) Fix wml_p7_htmlfix (19-Jun-2001):
       When replacing <center> tags, it did not work if this tag has
       attributes.
       [Andreas Hoffmann]

    *) Fix wml::fmt::verbatim (19-Jun-2001):
       The <verbatim> tag could not be used in conjunction with
       wml::std::case,
       [Nobuyuki Tsuchimura]

    *) Fix diversion (19-Jun-2001):
       Parent dirs `..' could cause problems.
       [Nobuyuki Tsuchimura]

    *) Upgraded to Bit::Vector 6.0 (19-Jun-2001):
       [Denis Barbier]

    *) Fix protection (19-Jun-2001):
       When both stdout and file names are specified by -o flags,
       unprotection was not performed on standard output.
       [Aymeric Poulain-Maubant <Aymeric.PoulainMaubant@jipo.com>]

    *) Update wml_contrib/wml.spec.in (19-Jun-2001):
       File wml_contrib/wml.spec was always outdated, so this new spec
       file allows automatic update, just run `make wml_contrib/wml.spec'.
       [Christian W. Zuckschwerdt]

    *) Fixed wml::std::href (19-Jun-2001):
       Removed extra newline after </a>.
       [Jean-Michel Sauvage]

    *) Fixed wml::std::page (19-Jun-2001):
       Multiple pages capabilities was broken.
       [Jean-Michel Sauvage <jean-michel.sauvage@club-internet.fr>]

    *) Fixed wml::des::preload (19-Jun-2001):
       Javascript code was broken.
       [Andreas Hoffmann <hoffmana@mathematik.tu-muenchen.de>]

    *) Remove special characters in debugging output (19-Jun-2001):
       [Axel Beckert <rse-wml@deuxchevaux.org>]

    *) New <disjoin> tag (19-Jun-2001):
       This tag does the opposite job of <group>, it explodes its
       attribute into several pieces.
       [Denis Barbier]

    *) Fix bug with body tag surrounded by quotes (19-Jun-2001):
       When a body function was surrounded within double quotes (without
       any whitespace around), it was simply discarded.
       [Petr Andreyev]

    *) New logos (19-Jun-2001):
       These new logos are about NetBSD, OpenBSD, PHP and XEmacs.
       [Wolfgang Dautermann]

    *) Upgraded to txt2html 1.28 (19-Jun-2001):
       The bug described just below has been fixed in txt2html 1.28, so
       changes in wml::fmt::text have been discarded.
       [Denis Barbier]

    *) Fix wml::fmt::text (19-Jun-2001):
       Some characters are missing when text is not finished by a
       newline.  There are indeed some bugs in wml_aux_txt2html, so
       a workaround is to ensure there is always a newline in
       wml::fmt::text.
       [Frediano Ziglio <freddy77@angelfire.com>]

    *) Change transparency in wml::des::imgdot (19-Jun-2001):
       By default, transparency color was set to black.  Unfortunately,
       some browsers do not render transparent PNG images, and black
       backgrounds are not so frequent anymore. Default is now set to
       white, and may be changed by prepending an hyphen to the color
       attribute.
       [Craig Small <csmall@eye-net.com.au>]

    *) Improve wml_p5_divert (19-Jun-2001):
       Make a distinction betwwen URLs like `../foo' and diversion like
       ..NAME>> to improve speed.
       [Denis Barbier]

    *) Improve wml::des::navbar (19-Jun-2001):
       Any attributes can be added to <a> and <img> tags generated by
       <navbar::render>.  For instance it allows insertion of CSS
       attributes without having to modify wml::des::navbar.
       [Denis Barbier]

    *) Improve wml_p7_htmlfix (19-Jun-2001):
       Trailing spaces in tags are fixed, i.e. all spaces before a
       right-angle bracket are removed (this have no influence on
       known server-side scripts) and a space is always inserted before
       ``/>'' to help rendering of XHTML documents by old browsers.
       [Denis Barbier]

    *) Fix bugs with conditionals (19-Jun-2001):
       The <if>, <ifeq> and <ifneq> conditionals do not behave properly.
       Under rare circumstances, both THEN and ELSE clauses may be run.
       [Martin Schulze <joey@infodrom.north.de>]

    *) Fix nested ePerl tags implementation (19-Jun-2001):
       When <perl> tags are nested and are not enclosed within space
       characters, some output disappear.
       [Petr Andreyev <petr@xanadu.ru>]

    *) Fix wml::des::navbar (19-Jun-2001):
       When rendering tables, <navbar:jsfuncs/> is called even if navbar
       is not graphical, to make sure JavaScript functions used for
       rollover effect are always defined.
       [Denis Barbier]

    *) Upgrade ePerl to current CVS version (19-Jun-2001):
       [Ralf S. Engelschall, Denis Barbier]

    *) New `all except' operator in slice terms (29-Oct-2000):
       The wildcard sign accepts a new syntax.  When followed by braces,
       it replaces ``all strings but the one enclosed within braces''.
       This construct could not be emulated with previous operators with
       nested slices.
       This feature was introduced in Slice 1.3.7 on August 2000, but
       required few fixes to work with WML.
       [Denis Barbier]

  Changes between 2.0.5 and 2.0.6:

    *) Fix WMk (25-Oct-2000):
       This version of WMk is broken and cannot compile multilingual
       documents.
       [Max H. Duenki]

  Changes between 2.0.4 and 2.0.5:

    *) Improve wml::std::page (23-Oct-2000):
       Add an attribute ``color=none'' to remove color attributes in
       the <body> tag.
       [Wayne Schlitt <wayne@midwestcs.com>]

    *) Improve WMd customization (13-Oct-2000):
       The 02-May-2000 patch is improved, mapping is now done via an
       external file, so that wmd script needs no more being updated.
       [Denis Barbier]

    *) Add wml_contrib/wml1to2 (02-Oct-2000):
       This script helps upgrading to WML 2.x by performing some
       changes in input files.
       [Denis Barbier]

    *) Fix wml::des::navbar (02-Oct-2000):
       The $menumode Perl variable was not initialized.
       [Anthony Fok]

    *) Improve flags handling (02-Oct-2000):
       Some flags require an argument, which is now quoted in case this
       argument contains spaces or shell metacharacters.
       [Albert Reiner <areiner@tph.tuwien.ac.at>]

    *) Fix infinite loop in wml_p8_htmlstrip (28-Sep-2000):
       WML hangs up when large text blocks are surrounded by
       <pre>...</pre> or similar tags.
       [Joey Hess <joeyh@debian.org>]

    *) Fix wml_p8_htmlstrip (27-Sep-2000):
       The <pre> and <xmp> tags were always converted to lowercase
       letters.
       [Nobuyuki Tsuchimura]

    *) Fix compilation on AIX 4.3 (27-Sep-2000):
       The GD library did not compile because two unused routines depend
       upon undefined ones.  These useless routines are now removed.
       [Norbert Gruener <nog@mpa-garching.mpg.de>]

    *) Fix bug with conditionals in wml_p2_mp4h (27-Sep-2000):
       The <if> and <while> tags have strange results when first
       argument has a trailing slash, which is surely not so frequent.
       [Sebastian Wilhelmi <wilhelmi@ira.uka.de>]

  Changes between 2.0.3 and 2.0.4:

    *) Fix wml::mod::MakeMaker (19-Sep-2000):
       The `extradistfiles' attribute did not work.
       [Denis Barbier]

    *) Fix problems with synclines and protection (19-Sep-2000):
       The `synclines' feature was not documented in WML 2.0.3.
       It helps debugging by putting some special commands after
       pass 1 to keep track of input line numbers.
       Unfortunately, these extra commands will remain on output when
       included file is inside a protected area.
       This problem is now documented, and 2 solutions exist: either
       compile with `-W1,-N', or append the `IPP_NOSYNCLINES' special
       keyword to the #include line.
       [Many Debian people]

    *) Improve wml::des::navbar (16-Sep-2000):
       By default (called `inner' mode), epilog is put after sub-menu
       buttons, i.e. navbars are nested.  When <navbar:render> is called
       with attribute `menumode=outer', then sub-menus are inserted after
       epilog.
       [Tobias Oetiker]

    *) Make wml_p7_htmlfix customizable (16-Sep-2000):
       Two new options let the user decide which fixups are performed
       or skipped.
       [Denis Barbier]

    *) Fix wml_p7_htmlfix (13-Sep-2000):
       The version shipped with WML 2.0.3 is broken, there are problems
       with unquoted attributes containing a slash sign.
       [Roland Rosenfeld]

    *) Support w3m in addition to lynx in wmd (13-Sep-2000):
       The wmd command now searches through $PATH for w3m and lynx (and
       prefers w3m over lynx) instead of insisting on the existence of lynx.
       [Ralf S. Engelschall]

    *) Upgraded to LinkLint 2.2 (10-Sep-2000):
       Upgraded from LinkLint version 1.35 to version 2.2 after LinkLint
       changed from a (for WML not acceptable) shareware license to GPL.
       [Ralf S. Engelschall, James B. Bowlin <bowlin@sirius.com>]

  Changes between 2.0.2 and 2.0.3:

    *) Fix compilation of ePerl with threaded Perl 5.6.0 (03-Sep-2000):
       Providing portable code amongst several versions of Perl is a
       nightmare, functions prototypes and macros definitions have
       changed again.
       [Denis Barbier]

    *) Fix wml_intro.pod (03-Sep-2000):
       It contains an erroneous reference to </define-container>
       [Benoit des Ligneris <benoit.des.ligneris@physique.usherb.ca>]

    *) Upgrade to mp4h 1.1.1 (31-Aug-2000):
       This release fixes many bugs added in mp4h 1.1.0 about non-ASCII
       letters.
       [Denis Barbier]

    *) Fix problems with @-sign in some module files (29-Aug-2000):
       The <perl:assign> tag is replaced by <perl:assign:sq> to prevent
       a problem with @-sign in input text.
       [Stephane Bortzmeyer]

    *) Upgrade to Slice 1.3.7 (29-Aug-2000):
       Fix a bug with Slice 1.3.6, which hangs up with some input files.
       [Denis Barbier]

    *) Fix compilation of Bit::Vector with perl < 5.005 (29-Aug-2000):
       [Max H. Duenki]

    *) Upgraded to GNU shtool 1.5.1 (08-Aug-2000):
       Upgraded to GNU shtool 1.5.1. This especially fixed problems 
       with "shtool version" under Solaris.
       [Ralf S. Engelschall]

    *) Upgrade of tidy (06-Aug-2000):
       Upgraded tidy from version 8jul00 to 04aug00.
       [Denis Barbier]

    *) Fix wml_p1_ipp (05-Aug-2000):
       Pass 1 hangs when a dollar sign appears in variable substitution.
       [Joey Smith <joey@joeysmith.com>]

    *) New variables WML_SRC_TIME and WML_GEN_TIME (04-Aug-2000):
       These variables ease customizing date formats.
       [Fritz Zaucker]

    *) Add alternative for mouse events (03-Aug-2000):
       The onmouseover and onmouseout event handlers are seconded
       by onfocus and onblur, to allow rendering with any device.
       [Denis Barbier]

    *) Add `summary' attribute in tables (03-Aug-2000):
       This tag is automatically added by wml_p7_htmlfix, because
       it helps rendering by non-graphical browser, exactly like
       ALT attribute for <img>.
       [Stephan Petersen]

    *) Fix protection in wml (01-Aug-2000):
       Output files are generated by wml_p9_slice.  This program has
       a useful feature, output file names may be specified in
       pseudo shebang lines.  But these lines may occur anywhere in
       input file, not only on its beginning.
       As wml has to know which files are generated to unprotect them
       after pass 9, input file must be parsed before wml_p9_slice is
       called to determine output files.
       [Denis Barbier]

    *) Allow nestable <protect> tags (31-Jul-2000):
       This tag is now much more user-friendly, it may be nested, and
       its syntax is similar to the -p flag, i.e. it accepts also a comma
       separated list of individual passes.
       [Denis Barbier]

    *) Improve processing speed on large files (30-Jul-2000):
       On large files, most of processing time is spent in
       passes 7, 8 and 9.  This performance problem is induced by
       Perl, which does not seem to work efficiently with regular
       expressions on huge datas.  The provided solution is to split
       input into smaller chunks.
       This procedure is quite conservative, i.e. it is not fully
       optimized to ensure that output is never altered by this
       operation.
       A speedup factor of 10 is obtained on those 3 passes with
       files larger than 200KB (which may be caused by a huge input
       file splitted into many HTML output files).
       [Denis Barbier]

    *) Upgrade of Bit::Vector (24-Jul-2000):
       Upgraded Bit::Vector from version 5.7 to 5.8.
       [Ralf S. Engelschall]

    *) Update all WML module files for XHTML 1.0 (21-Jul-2000):
       In WML module files, all simple tags have now a trailing
       backslash to allow both HTML and XHTML input and output.
       It is important to notice that this does not break compatibility,
       output is exactly the same by default.  But now users can decide
       which syntax to adopt via the -X flag of wml_p2_mp4h.
       [Denis Barbier]

    *) Add support for modifiers in regexps in wml_p2_mp4h (21-Jul-2000):
       Only i, m, s and x modifiers have been added, U and X are
       specific to PCRE and have not been implemented.
       The `singleline' attribute has been changed.  It now accepts
       two values, `true' (like the s modifier) and `false' (like the
       m modifier).  Until now, `m' was the default, and singleline=true
       switches to `s'.
       [Denis Barbier]

    *) Finish import of PCRE in wml_p2_mp4h (21-Jul-2000):
       Native API is now used, and support for locales is back.
       [Denis Barbier]

    *) Many fixes for multilingual navbars (21-Jul-2000):
       Some bugs were introduced by recent changes in wml::std::tags
       and wml::des::navbar.
       [Stephan Petersen]

    *) Improve wml::std::lang (20-Jul-2000):
       Thanks to PCRE, <lang:area> has been rewritten entirely with
       mp4h commands, so now all lang tags can be nested.
       [Denis Barbier]

    *) Use Perl regular expressions in wml_p2_mp4h (20-Jul-2000):
       The PCRE library is copyrighted by University of Cambridge.
       With this library, Perl regular expressions may now be
       used instead of POSIX regular expressions.
       Current implementation in mp4h is quite weak, because we use
       the POSIX compatibility mode instead of native API.
       [Denis Barbier]

    *) Improve <javascript> tag in wml::std::tags (19-Jul-2000):
       When a complex <head> tag is defined, like in wml::std::page,
       all JavaScript material is passed to this command in order to
       be put inside the HEAD section.
       This behaviour is disabled with the `nohead' attribute or by
       defining <javascript:nohead> with a non-empty value.
       [Denis Barbier]

    *) Fix wml_p1_ipp (19-Jul-2000):
       Previous changes broke `make test'.
       [Stephan Petersen]

    *) Improve wml::std::lang (19-Jul-2000):
       Language slices can now be nested, the reason is to allow
       constructs like ``<en><lang:star:href: index.*.html></en>''.
       This can not be easily handled by wml_p9_slice (any suggestions
       to do so are welcome), and so wml::std::lang has been patched
       to forbid nesting of different languages by redefining <en>,
       <lang:en> tags (and of course all other defined languages) and
       all <lang:star...> tags.
       Unfortunately multi-lingual zones enclosed between <lang:area>
       and </lang:area> do not yet allow this nesting.
       Two new tags are introduced, <lang:current> always returns
       the language being currently processed, and <lang:list> returns
       the newline separated list of defined languages.
       [Stefan `Sec` Zehl]

    *) Fix file name and line numbers on warnings (18-Jul-2000):
       Pass 1 now prints some control sequences to let pass 2 and 3
       know about original filename and line number instead of
       locations in temporary files.  This is very useful for debugging.
       It can be turned out with -W1,-N flag.
       [Denis Barbier]

    *) Fix a bug when using both -M and -W1 flags (16-Jul-2000):
       Options set with -W1,... were not passed to wml_p1_ipp.
       [Ilya Martynov <m_ilya@agava.com>]

    *) Upgrade of the Bare Bones Guide to HTML (13-Jul-2000):
       Upgraded from version 3.0 to 4.0.
       [Denis Barbier]

    *) Upgrade of tidy (13-Jul-2000):
       Upgraded tidy from version 30nov99 to 8jul00.
       Dave Raggett included submitted patches to make gcc quiet,
       so only few changes have been made in upstream sources.
       [Denis Barbier]

    *) Internal changes in mp4h about regular expressions (06-Jul-2000):
       Mp4h now uses the POSIX functions of the GNU libc regex.c instead
       of old GNU functions.  The most important reason for this change
       is that previous functions are not documented, and so hard to
       maintain.
       Moreover i had to patch the regex functions to allow the
       ``singleline=true'' attribute.
       With this new version it works out of the box, and many memory
       leaks are also fixed.
       [Denis Barbier]

    *) Fix boolean operators (05-Jul-2000):
       The <and> tag was broken, and <or> has been cleaned up.
       [Denis Barbier]

    *) Improve <preserve>/<restore> stuff (05-Jul-2000):
       These tags accept now any number of arguments, so it is possible
       to write
           <define-tag foo>
           <preserve name src text>
           <set-var %attributes>
           ... code using `name', `src' and `text' variables.
           <restore  name src text>
           </define-tag>
       All module files have been updated in consequence.
       [Denis Barbier]

    *) Fix whitespace in wml::des::preload (03-Jul-2000):
       The javascript code was not protected against newlines removal,
       and resulting code is ugly.
       [Denis Barbier]

    *) Rewrite wml::*::all files (03-Jul-2000):
       These modules include all files from a specific category.
       When inclusion is made with wildcards, some files which have been
       removed from WML distribution, but were not deleted by user when
       upgrading, may be called accidentally.  So they now explicitly 
       invoke the desired files.
       [Ralf S. Engelschall]

    *) Upgraded to GNU shtool 1.5.0 (01-Jul-2000):
       Upgraded to GNU shtool 1.5.0. This involved especially a major
       adjustment because of the rewritten "shtool version" command.
       [Ralf S. Engelschall]

    *) Enhanced wml::std::tags' <javascript> tag (27-Jun-2000):
       Added four additional attributes to the <javascript> container
       tag of wml::std::tags: "src", "language" and "type" to directly
       specify the corresponding attributes for the underlaying <script>
       tag, and "version" which is a convinient attribute to specify the
       JavaScript version as used in the default "language" attribute.
       Example: ``<javascript version=1.2 src=foo.js>'' now expands
       into ``<script type="text/javascript" language="JavaScript1.2"
       src="foo.js">...</script>''
       [Ralf S. Engelschall]

    *) Fix wml::sys::all manpage (27-Jun-2000):
       The wml::sys::all manpage talked about no longer existing 
       wml::sys::xxx includes.
       [Ralf S. Engelschall]

    *) Fix escaped quotes in wml::std::href (24-Jun-2000):
       [Denis Barbier]

    *) Fix <divert> in wml::std::tags (24-Jun-2000):
       It was impossible to use exclamation marks with this tag
       as described in wml_p5_divert.
       [Fritz Zaucker]

  Changes between 2.0.1 and 2.0.2:

    *) Update mp4h (22-Jun-2000):
       New version is mp4h 1.0.2, with many enhancements since pre-1.0
       releases.  The most important one is that `grammar' has been
       entirely rethought.  After discussions on the WML mailing-list
       it is clear that users want tag expansion mechanism to be simple.
       Unfortunately, because WML runs many independant passes, each
       one with its own syntax, i could not provide a simple mechanism.
       But i try to keep it as simple as possible.
       Last but not least, this new version makes WML 2.0.2 much more
       compatible with WML 1.x than previous WML 2.x releases, and
       optional features allow experienced users to deal with either
       HTML or XHTML files.
       [Denis Barbier]

    *) Remove stars in tag names (15-Jun-2000):
       The wml script now removes stars after and before tag names.
       Read mp4h documentation to learn why this is needed.
       [Denis Barbier]

    *) Fix wml::std::grid (15-Jun-2000):
       An error was raised with arrobas sign in cells.
       [<middelink@polyware.nl>]

    *) Fix wml_p8_htmlstrip (15-Jun-2000):
       The <suck> tag may now be written <suck/> or <suck /> to conform
       to new standards.
       [Denis Barbier]

    *) Fix wml::fmt::verbatim (08-Jun-2000):
       This module was compromised because of nested protection tags,
       which are not valid yet.
       [Howard Alexander LaHurreau <alexdw@locl.net>]

    *) Fix wml::des::typography (07-Jun-2000):
       The <spaced> tag was broken.
       [Denis Barbier]

    *) Fix documentation of wml::std::page (02-Jun-2000):
       The WML_PAGE_* slices are actually WML_STDPAGE_* and
       are only available if the "slices" attribute is used.
       [Ralf S. Engelschall]

    *) Fix wml::std::lang (01-Jun-2000):
       It was broken with default wildcard.
       [Corsin Decurtins <corsin@student.ethz.ch>]

    *) Fix compilation bug in wml_p2_mp4h (01-Jun-2000):
       [<gaa@ulticom.com>]

    *) Provide a way to read tokens without parsing (01-Jun-2000):
       All characters between <@[ and ]@> are read without parsing,
       this is very useful to read malformed mp4h tags.  These
       delimiters may be changed with the <set-quotes> tag.
       [Tobias Oetiker <oetiker@ee.ethz.ch>]

    *) Fix wml_p8_htmlstrip (31-May-2000):
       Pass 8 preserves whitespace inside <pre>, <xmp> or <nostrip>
       complex tags.  When these tags have attributes, whitespaces were
       removed.
       [Tom Gilbert <gilbertt@linuxbrit.co.uk>]

  Changes between 2.0.0 and 2.0.1:

    *) Add missing documentation in wml::des::typography (23-May-2000):
       The <tul> and <tli> macros were not documented.
       [Franz Knipp, Alvise Belotti]

    *) Fix WMd (23-May-2000):
       Installation path of WML manpages is searched before $MANPATH,
       and not after.
       [Denis Barbier]

    *) Numerous bugfixes and clean-ups in include files (23-May-2000):
       Perl code in include files must be protected against expansion
       during pass 2 because some constructs are now parsed (take great
       care of left-angle brackets).
       [Denis Barbier]

    *) Change evaluation of unknown tags (22-May-2000):
       Until WML 2.0.0, unknown tags are treated like normal text,
       i.e. left angle bracket lose their special meaning.  This has
       very strange side effects when such tags appear in attributes.
       This feature has been discarded so that old pages still compile.
       [many people]

    *) Fix installation of preformatted manpages (22-May-2000):
       An undocumented change in Makefiles installed preformatted
       manpages under $(mandir)/manX instead of $(mandir)/catX. By
       default the subdirectory name is now again `cat', but can
       overridden via the new --with-catdir configure option
       (usually one would use --with-catdir=man).
       [Ralf S. Engelschall]

    *) Fix wml_p2_mp4h documentation (16-May-2000):
       Some French words were present in English version.
       [Franz Knipp]

    *) Fix wml::std::tags to remove extra newlines (16-May-2000):
       Because of the definition of <perl:print>, some extra newlines
       was added.
       [Franz Knipp]

  Changes between 1.99.9 and 2.0.0:

    *) Add documentation: wml_macros (08-May-2000):
       This document explains how to write macros with mp4h allowing
       nestable ePerl commands.
       [Denis Barbier]

    *) Fix trailing slash inside empty elements (06-May-2000):
       When there was no attribute and no space before the slash sign,
       as in <br/>, this tag was not expanded.
       [Denis Barbier]

    *) Cosmetics for Autoconf procedure (04-May-2000):
       A few cosmetical cleanups to let the WML auto-configuration
       procedure look more homogenous, although it still is a
       combination of Autoconf scripts from various separate packages.
       [Ralf S. Engelschall]

    *) Upgrade of Image::Size (04-May-2000):
       Upgraded Image::Size module from versiom 2.901 to latest 2.903.
       [Ralf S. Engelschall]

    *) Improve WMk (04-May-2000):
       The file $HOME/.wmkrc is parsed when found.
       It is now possible to tell wmk to skip some directories containing
       no input files.
       [Denis Barbier]

  Changes between 1.99.8 and 1.99.9:

    *) L10n changes in mp4h (03-May-2000):
       I do not know how to deal with locales in a portable way, so
       examples are removed from documentation.  Only English
       documentation is build, but you may continue to compile the
       French one if your environment variables are rightly set.
       This point is important: previously locales was set to C and
       changed by <mp4h-l10n>.  Now locales are initialized to those
       defined by user environment.
       [Denis Barbier]

    *) Syntax change in the <let> tag (03-May-2000):
       New syntax is <let cmd1=cmd2>, similar to TeX and more
       user friendly.
       [Denis Barbier]

    *) Upgrade of iselect (02-May-2000):
       Upgraded to iselect 1.2.0, with some clean ups.
       [Denis Barbier]

    *) Upgrade of tidy (02-May-2000):
       Upgraded to tidy 30apr00
       [Denis Barbier]

    *) Improve wmd (02-May-2000):
       Some vendors do not include third-party programs in WML,
       because these programs are still part of the system.  This
       confuses wmd, because program names do not match, and some
       manpages may be missing.
       A mapping between names is implemented to help solve these
       problems, and a `WML missing document' manpage is provided too.
       [Denis Barbier]

    *) Fix wml_aux_freetable (01-May-2000):
       Freetable removes linebreaks in cells, which is confusing if
       javascript comments are used.
       [Timo Neumann <james@userland.de>]

    *) Fix wml_p7_htmlfix (27-Apr-2000):
       Wml_p7_htmlfix was confused when attribute values contain
       some Server Side scripting,
       [Laurent Riesterer <riesterer@celar.fr>]

    *) Run compiled tidy on HTML documentation in Pass 2 (20-Apr-2000):
       HTML documentation of p2_mp4h is post-processed by tidy.  We
       must use the version shipped within WML since older may break
       compilation.
       [Ralf S. Engelschall]

    *) Fix compilation on some platforms (20-Apr-2000):
       [Stephane Bortzmeyer]

    *) Fixed various build warnings (19-Apr-2000):
       [Ralf S. Engelschall]

    *) Fix compilation of Term::Readkey (18-Apr-2000):
       [Joerg Plate]

    *) Better handling of trailing slashes (18-Apr-2000):
       It was very difficult to prevent suppression of trailing slash
       in attributes.  Now it can be done by putting spaces between this
       slash and the closing bracket.
       [Nobuyuki Tsuchimura]

  Changes between 1.99.7 and 1.99.8:

    *) Fix compilation on FreeBSD (17-Apr-2000):
       Perl modules did not install properly under FreeBSD.
       [Ralf S. Engelschall]

    *) Minimize `gfont' calls in wml::des::gfont (13-Apr-2000):
       When an image is generated, gfont command line is put into a
       text file.  On next run, this file is read and gfont will not be
       re-run if command lines are identical.
       [Denis Barbier]

    *) Fix bug in wml_p1_ipp with include files (13-Apr-2000):
       This bug allowed an include file to be inserted more than once
       with only one invocation, if it was found under distinct
       directories.
       [Denis Barbier]

  Changes between 1.99.6 and 1.99.7:

    *) Upgraded to GetOptLong 2.23 (08-Apr-2000):
       Upgraded from GetOptLong version 2.20 to version 2.23.
       [Ralf S. Engelschall]

    *) Fix bugs with extra quotes in attributes (Pass 2) (04-Apr-2000):
       [Denis Barbier]

  Changes between 1.99.5 and 1.99.6:

    *) Fix bug in grouping (Pass 2) (02-Apr-2000):
       [Denis Barbier]

    *) Remove a trailing slash in attributes (02-Apr-2000):
       When reading attributes of single tags, a trailing slash is
       ignored.
       [Denis Barbier]

  Changes between 1.99.4 and 1.99.5:

    *) Fix compilation with perl 5.6.0 (01-Apr-2000):
       [jack@needle.mudshark.org]

    *) Upgrade mp4h (01-Apr-2000):
       Upgrade from 0.8.5 to 0.9.0.
       Add support for localization.
       Customization of number output format.
       Important changes in array functions: <array-append> is
       renamed into <array-push>, its counterpart <array-pop> is defined
       and first argument of array-related functions is now variable name.
       [Denis Barbier]

    *) Implicit array indexes in wml_p2_mp4h (29-Mar-2000):
       The expression <get-var foo[i]> is a shorthand for
       <get-var foo[<get-var i>]>.
       [Jan Holler <jh@inetcom.ch>]

    *) Fix wml::std::tags (29-Mar-2000):
       Because of new stuff introduced into wml::std::tags to allow
       ePerl nested commands, some extra linefeeds were present in
       output file.
       [Roland Rosenfeld]

    *) Fix checking of exit status of wml_aux_tidy (29-Mar-2000):
       [Roland Rosenfeld]

    *) Remove garbage introduced by WML shebang lines (29-Mar-2000):
       WML shebang line with trailing backslash leaves some garbage in
       output file.
       [Roland Rosenfeld]

  Changes between 1.99.3 and 1.99.4:

    *) Renamed wml::sys::bootp2 into wml::sys::compat1 (27-Mar-2000):
       This module provides backward compatibility with WML 1.x and
       is no more included by default.
       [Denis Barbier]

    *) Upgrade mp4h (26-Mar-2000):
       Upgrade from 0.8.3 to 0.8.5.
       The quoted=true attribute of the <group> tag is removed and this
       feature is now provided by the <noexpand> tag. Its counterpart is
       <expand>.
       New attribute of <group> : ``separator=string''
       Fix some memory leaks.
       Fix bug with some nested expressions.
       [Denis Barbier, Nobuyuki Tsuchimura]

    *) Add <return> tag (20-Mar-2000):
       This tag exits from inner macro.
       [Uwe Mindrup]

    *) Add %name in replacement text (20-Mar-2000):
       This special string expands to the macro name when found in
       replacement text.
       [Denis Barbier]

    *) Fix a bug in wml_p2_mp4h (18-Mar-2000):
       Letters `A' and `U' after a percent sign were gobbled by mp4h
       in macro replacement text.
       [Joerg Plate <Joerg@Plate.cx>]

  Changes between 1.99.2 and 1.99.3:

    *) Upgrade freetable (19-Mar-2000):
       Upgrade from 0.6 to 0.11
       [Denis Barbier]

    *) Fixed some include files (19-Mar-2000):
       Minor fixes, documentation update.
       [Denis Barbier]

    *) Improved wml::std::grid (19-Mar-2000):
       A summary attribute is added.
       [Joerg Plate]

    *) Fixed wml_p1_ipp (19-Mar-2000):
       IPP failed with expressions like ?$(foo). It is fixed and
       features introduced in wml-1.99.0 are rewritten.
       [Anthony Fok, Franz Knipp]

  Changes between 1.99.1 and 1.99.2:

    *) Fix wml::std::lang (18-Mar-2000):
       The <lang:star:> tag was broken since wml-1.99.0
       [Max H. Duenki <duenki@isi.ee.ethz.ch>]

    *) Fix a bug in wml_p2_mp4h (18-Mar-2000):
       Letters `A' and `U' after a percent sign were gobbled by mp4h
       in macro replacement text.
       [Joerg Plate <Joerg@Plate.cx>]

    *) Upgrade GNU shtool (18-Mar-2000):
       Upgraded to GNU shtool version 1.4.8. This especially
       speeds up the "make install" step (now 30s instead of 44s ;)
       [Ralf S. Engelschall]

    *) Various Cleanups (18-Mar-2000):
       Added Sub Directory Prefix (SDP) to Makefiles for p2_mp4h and
       fixed various warnings which occured under gcc (2.95.2) and -Wall
       [Ralf S. Engelschall]

  Changes between 1.99.0 and 1.99.1:

    *) Warning printed when an obsolete pass 2 macro is called (16-Mar-2000):
       [Denis Barbier]

    *) Fix a bug with empty output file (16-Mar-2000):
       A previous bugfix fix caused wml to freeze when an empty output
       file is processed.
       [Denis Barbier]

    *) Add macro hooks in wml_p2_mp4h (15-Mar-2000):
       These hooks are provided to allow inserting text before or after
       macro expansion. This way it becomes easy to transform primitives
       or defined macros.
       [Denis Barbier]

    *) Fix build failure of wml_p2_mp4h on FreeBSD (15-Mar-2000):
       There was a bug in wml_backend/p2_mp4h/lib/xmalloc.c which causes 
       a build failure on FreeBSD.
       [Ralf S. Engelschall]

    *) Changed printing of ISO dates (15-Mar-2000):
       All ISO dates are now printed in the yyyy-mm-dd format.
       [Kurt D. Zeilenga]

  Changes between 1.7.4 and 1.99.0:

    *) Improved WMk (12-Mar-2000):
       The -F flag may be used to avoid scanning directories and not
       only files.
       [Denis Barbier]

    *) Changed processing of -S and -I flags of wml_p1_ipp (12-Mar-2000):
       These flags are now processed from right to left, so that adding
       them into .wmlrc files override previous definitions.
       [Denis Barbier]

    *) Processing of input files residing in other directories (12-Mar-2000):
       When an input file is on another directory, wml now goes to this
       directory before parsing .wmlrc files. The main goal of this
       design change is to support the VPATH feature of GNU make, to
       allow building files in a test area.
       Old behaviour is also available via the -c flag.
       Note that WMk has *NOT* been changed because this change has been
       introduced for people who prefer Makefiles to WMk.
       [Denis Barbier]

    *) Fix invocation of tidy as an epilogue program (12-Mar-2000):
       So called ``epilog filters'' are not filters, so documentation
       call them ``programs'' now.
       Tidy can be invoked with ``-E tidy''
       [Roland Rosenfeld <roland@spinnaker.rhein.de>]

    *) Added recent W3C Recommandations (12-Mar-2000):
       HTML 4.01, Web Content Accessibility Guidelines 1.0
       and XHTML 1.0.
       [Denis Barbier]

    *) Added syntax highlighting configuration file for Vim (12-Mar-2000):
       See wml_contrib/wml.vim
       [Gerfried Fuchs]

    *) Removed Text::BlockParser and Text::DelimMatch (12-Mar-2000):
       These Perl modules were previously used by IPP for block
       comments. This feature has been suppressed.
       [Denis Barbier]

    *) Fixed protection (11-Mar-2000):
       When a <protect pass=N> tag is not processed by pass N, either
       because this pass is skipped or because protect tags are nested,
       this protection will pollute output file.
       [Franz Knipp]

    *) Improved wml_p1_ipp (10-Mar-2000):
       Numerous improvements in pass 1: variables can now be nested,
       continuation lines are allowd on #include lines, and new variables
       are added to ease generation of slide shows.
       Block comments are suppressed because many people seem to use WML
       to show their C listing.
       [Franz Knipp]

    *) Updated most include files to work with mp4h (13-Feb-2000):
       [Denis Barbier]

    *) Replaced Meta-HTML by mp4h for pass 2 (13-Feb-2000):
       [Denis Barbier]

    *) Added wml::std::label (13-Feb-2000):
       This new module implements label/references macros.
       [Denis Barbier]

    *) Changed names of bootstrap files (13-Feb-2000):
       The files wml::sys::bootmhc, wml::sys::boot and wml::sys::bootgm4
       are renamed to wml::sys::bootp2, wml::sys::bootp3 and
       wml::sys::bootp4.
       [Denis Barbier]

    *) Fixed <protect> problem with pass 9 (12-Feb-2000):
       It is possible to dynamically change output filenames, by
       writing a shebang line interpreted during pass 9. For this
       reason, WML must check the presence of such a shebang line and
       change output filenames, which are needed for unprotection
       after pass 9.
       [Wolfgang Dautermann]

    *) Fixed wml::des::preload (10-Feb-2000):
       As preloading is only performed on images, there is no reason
       to check filename extension.
       [Franz Knipp <franz@knipp.org>]

    *) Fixed rc file search path within WMk (04-Feb-2000):
       When WMk is called recursively, the search path for .wmkrc files
       was never cleared and these files were read more than once.
       [Craig Wiegert <wiegert@quintessence.uchicago.edu>]

    *) Syntax change in wml_p5_divert (21-Jan-2000):
       The bugfix in wml_p5_divert (19-Sep-1999) had a major drawback:
       it slows down pattern search algorithm. To improve this new
       version, end delimiter must be at least 2 characters long.
       This new end delimiter is now ``:#NAME#}'', and for symmetry
       begin delimiter is ``{#NAME#:''.
       [Denis Barbier]

    *) Replace wwwtable by freetable (11-Jan-2000):
       Tomasz Wêgrzanowski <maniek@beer.com> wrote a GPL'd replacement
       for wwwtable, and is actively maintaining it. 
       [Denis Barbier]

    *) Upgrade of File::PathConvert (08-Jan-2000):
       Upgraded File::PathConvert from version 0.83 to 0.85.
       [Denis Barbier]

    *) Upgrade of Bit::Vector (08-Jan-2000):
       Upgraded Bit::Vector from version 5.6 to 5.7.
       [Denis Barbier]

    *) Upgrade of Getopt::Long (08-Jan-2000):
       Upgraded Getopt::Long from version 2.19 to 2.20.
       [Denis Barbier]

    *) Improve wml::des::rollover (08-Jan-2000):
       When no href attribute is set, rollover is made but images
       are not clickable.
       [Stephan Petersen <sp@gtt.lth.rwth-aachen.de>]

    *) Improve wml::des::imgbg (06-Jan-2000):
       A new attribute is introduced to specify the size of the image
       in the ``alternate'' direction.
       [Denis Barbier]

    *) Change some name of generated images (06-Jan-2000):
       In wml::des::imgbg, wml::des::imgdot and wml::std::logo,
       names of generated images do not depend on the source filename.
       [Thomas Akin]

    *) Define a global base name for generated images (06-Jan-2000):
       When set, the IMAGE_BASE variable defines a base name for
       every generated image to group all such images into a
       single directory.
       This base name can be overridden by usual attributes.
       [Thomas Akin <takin@kennesaw.edu>]

    *) Improve support of PNG format (06-Jan-2000):
       All logos and generated images are available in PNG or GIF
       formats.  This choice is defined by the IMAGE_FORMAT variable
       (default is gif) and may be overridden by the ``format''
       attribute.
       [Denis Barbier]

    *) Replace GD Perl library to allow PNG and GIF images (06-Jan-2000):
       Old GD version supported only GIF format whereas newer one
       only support PNG. This is because GD is a wrapper to the gd
       library by Thomas Boutell, and he decided to stop dealing with
       GIF format because of a patent hold by Unisys.
       This decision does not make sense to my point of view, his
       library was using the `run length encoding' compression and not
       the patented LZW algorithm.
       So i patched the gd library to allow generation of both formats.
       WML use this library to draw lines and rectangles, and i removed
       unused stuff (fonts, polygons, arcs, ...) to freeze this code.
       To avoid conflicts with installed GD.pm, this modified version
       has been renamed to WML::GD.
       [Denis Barbier]

    *) Added logos (04-Jan-2000):
       New logos for ht://Dig, gimp and php3.
       [Wolfgang Dautermann]

    *) Upgrade of tidy (03-Jan-2000):
       Upgraded tidy from version 27sep99 to 30nov99.
       Like Ralf did with previous version, some cleanups are performed
       on source files to let gcc happy with -Wall flag.
       [Denis Barbier]

    *) Fix wml::std::href to allow @ sign within URLs (03-Jan-2000):
       When an @ sign was present within an URL, wml::std::href
       always assumed this URL to be an e-mail address.
       [Wolfgang Dautermann <dauti@oeh.tu-graz.ac.at>]

    *) Many changes for compatibility with mhc and mp4h (29-Nov-1999):
       The wml_p2_mhc program is replaced by wml_p2_mp4h.  Changes are
       needed in frontends and include files to allow both programs in
       pass 2.  This is a temporary fix to perform benchmarks and other
       comparisons.  A definitive fix will be submitted before next
       release.
       [Denis Barbier]

    *) Allow @ operator in slice specifications  (22-Nov-1999):
       The @ operator is valid in wml_p9_slice, but WML did not
       allow this operator in slice specifications.
       [<cc@clasohm.com>]

    *) Fix missing wml_p3_eperl documentation (13-Nov-1999):
       [Nobuyuki Tsuchimura]

    *) Wmk did not recognize the -M option (08-Nov-1999):
       [Hans Ulrich Niedermann]

    *) Add a notag attribute to <logo> (29-Oct-1999):
       This attribute has the same functionality as within <gfont>.
       [Denis Barbier]

    *) Allow nesting of wml_p3_eperl commands (29-Oct-1999):
       The ePerl processor cannot be called recursively. Then all
       WML commands which invoke pass 3 could not be nested. Include
       files concerned with this problem have changed to detect these
       nestings and automatically insert appropriate code.
       [Denis Barbier]

    *) Added PNG versions of logos (25-Oct-1999):
       WML must improve its support for PNG format. Logos in that
       format are included in the distribution, and wml::std::logo
       has a new ``format'' attribute.
       [Denis Barbier]

    *) Fix configure bugs with some Perl versions (24-Oct-1999):
       The patch between WML-1.7.2 and WML-1.7.3 did not work because
       autoconf had not been run.
       [Nobuyuki Tsuchimura]

    *) Fixed the <verbatim> tag (24-Oct-1999):
       This tag was protected against pass 6, which cause wrong output.
       [l_martin@worldnet.fr]

    *) Fixed wml_aux_wwwtable and wml::fmt::xtable (23-Oct-1999):
       The <caption> tag did not work as described in the documentation
       and tables can now be nested.
       [hortiz@neurobio.upr.clu.edu]

    *) Change how color of links are used in wml::des::navbar (18-Oct-1999):
       The two attributes txtcol_select and txtcol_normal were joined to
       the navbar:define tag. They are now part of the navbar:render
       tag, which seems more logicial to me.
       For backward compatibility, they are not removed from the
       <navbar:define> tag, but are overridden if set in <navbar:render>.
       [Denis Barbier]

    *) Improve documentation (18-Oct-1999):
       The PAGER and TMPDIR environment variables are now documented.
       [Hans Ulrich Niedermann]

    *) Added new variables for GMT timezones (18-Oct-1999):
       All current WML variables refer to local time. Kurt asked for
       a way to use GMT timezone too, which is especially useful for
       web sites of projects whose developers live worldwide.
       [Kurt D. Zeilenga]

    *) Fixed WMu (18-Oct-1999):
       When WMu is unable to read information files from the web server,
       it exited with a very unclear error message. It is fixed and tell
       now the user which file could not be downloaded.
       [Kurt D. Zeilenga]

    *) Fix infinite loops when parsing options (11-Oct-1999):
       Under some circumstances an infinite loop occurred when parsing
       options. When an infinite loop is detected, an error is now
       reported.
       [Hans Ulrich Niedermann]

    *) Fixed weblint (07-Oct-1999):
       The wml_aux_weblint script required newgetopt.pl. It now
       use the Getopt::Long package shipped with WML.
       [Denis Barbier]

    *) Fixed documentation of include files (06-Oct-1999):
       Added GD.pm in the list of requirements when needed.  Some links
       were missing in all.src files.
       [Jarda Benkovsky <pvt.benkovsk@pvtnet.cz>]

  Changes between 1.7.3 and 1.7.4:

    *) Modules conformance to recent changes in wml_p5_divert (04-Oct-1999):
       Changes in wml::std::page and wml::mod::MakeMaker to conform to
       the new preferred way of writing diversions.
       [Denis Barbier]

    *) Upgraded GNU shtool (04-Oct-1999):
       Upgraded the GNU shtool scripts in the source tree 
       to the latest version 1.4.6.
       [Ralf S. Engelschall]

    *) Fix performance issue with wml_p5_divert (03-Oct-1999):
       The bugfix on wml_p5_divert in the previous version caused
       wml_p5_divert to run dramatically slow. This problem is fixed.
       [Anthony Fok]

    *) Fix wmk (03-Oct-1999):
       When wmk invokes wml, shell metacharacters on the command line
       are not escaped in this version, because of a bug introduced
       in WML-1.7.3.
       [Jan Ulrich Hasecke]

    *) Upgrade of tidy (01-Oct-1999):
       Upgrade from tidy26jul99 to tidy27sep99.
       [Denis Barbier]

    *) Various changes in Makefile.in files (30-Sep-1999):
       I add my cosmetics touch too, to let these files more
       homogeneous.
       Important changes to let ``make'' stop when an error occur in
       ``all'' and ``install'' targets, whereas it could continue
       when cleaning up build tree.
       [Denis Barbier]

    *) Cleanup $(RANLIB) usage for Meta-HTML (30-Sep-1999):
       Use $(RANLIB) the correct Autoconf-way in the Meta-HTML subtree.
       [Ralf S. Engelschall]

    *) Various cosmetics (30-Sep-1999):
       Various cosmetic changes inside the source tree to
       make my aesthetic eye happy again.
       [Ralf S. Engelschall]

  Changes between 1.7.2 and 1.7.3:

    *) Fix wml::std::logo (27-Sep-1999):
       Fixes default logo to wml.
       [Denis Barbier]

    *) Upgrade of tidy (25-Sep-1999):
       Upgrade from tidy15apr99 to tidy26jul99.
       [Alvise Belotti]

    *) Fix wml::std::grid (22-Sep-1999):
       The ``height'' attribute must be applied to cells, and not
       tables.
       [Jacques Supcik <supcik@ip-plus.net>]

    *) Fix wml::sup::path (21-Sep-1999):
       The ``canonpath'' routine is modified to return ``./'' instead
       of an empty string ; this fixes problems with wml::des::navbar
       and other include files.
       This patch is also applied to ipp.src, wmk.src and wml.src
       [Hans Ulrich Niedermann]

    *) Add documentation in wml::des::navbar (19-Sep-1999):
       The nohints attribute of the <navbar:render> tag was missing.
       [Hans Ulrich Niedermann <ulrich@niedermann.bb.bawue.de>]

    *) Fix the <include> tag (19-Sep-1999):
       When files are included via the <include> tag, the
       <*parser*::push-file> and <*parser*::pop-file> tags were
       printed, but these tags were removed from wml_p2_mhc.
       [Denis Barbier]

    *) Allow any pass order (19-Sep-1999):
       The -p option of WML allow users to specify which pass are to
       be invoked ; in wml-1.7.3, when pass specifications are followed
       by an exclamation mark, passes are not sorted.
       [Xose Manoel Ramos <xmanoel@bigfoot.com>

    *) Accepts any suffix in input fle names (19-Sep-1999):
       Many files are updated to accept any input file suffix. Temporary
       files take the same suffix of the input file.
       [Denis Barbier]

    *) Fix the :NAME#} construction in wml_p5_divert (19-Sep-1999):
       The wml_p5_divert accepts two equivalent sets of commands. As for
       now, the preferred one is ``<<NAME>> ..NAME>> <<NAME..''. But
       those angle brackets cause trouble in conjunction with wml_p2_mhc,
       so documentation is updated to prefer alternative commands
       ``{#NAME#} {#NAME:  :NAME#}''.
       Moreover a bug has been fixed with the ``:NAME#}'' command.
       [Denis Barbier]

    *) Fix configure bugs with some Perl versions (19-Sep-1999):
       Some Perl versions, like the EUC JP one caused an error when
       running the configure script.
       [Andrew S. Howell <andy@tibcofinance.com>]

    *) Fix compilation of wml_p2_mhc (19-Sep-1999):
       Build wml_p2_mhc with the C compiler found at configure
       time, and not necessarily gcc.
       [Lars Kellogg-Stedman <lars@larsshack.org>]

    *) Bug fix : 1-char directory name (10-Sep-1999):
       Wmk and wml did not handle right 1-char directory name.
       [Nico Galoppo <scratch@ace.ulyssis.student.kuleuven.ac.be>]

    *) Fix the --without-openworld configure option (09-Sep-1999):
       The --without-openworld did not work as expected, it is fixed.
       [Gerfried Fuchs <alfie@innocent.com>]

    *) Fix the __FILE__ automatic variable in wml_p1_ipp (06-Sep-1999):
       The __FILE__ variable did not work as expected because of a
       problem with scope.
       [Nobuyuki Tsuchimura <tutimura@nn.iij4u.or.jp>]

    *) Use of the TMPDIR environment variable (28-Aug-1999):
       To conform with POSIX standard, this variable contains
       the directory name where temporary files are kept. By default,
       this directory is /tmp.
       [Thomas Roessler <roessler@guug.de>]

    *) Use GNU shtool for configuring (25-Aug-1999):
       All scripts in etc/ sub-directories were still replaced by
       Ralf's shtool since 01-Jul-1999. They are now removed.
       [Denis Barbier]

    *) Fix include files (23-Aug-1999):
       In all include files, perl ``system'' function is replaced by
       backticks, to allow error reporting.
       [Denis Barbier]

    *) Write empty file during pass 9 (23-Aug-1999):
       On latest version, empty output files were not written. It has 
       been changed to suppress this error
           cannot load /tmp/wml.xxx.tmp4 for unprotection at
           /usr/bin/wml line 658.
       [Denis Barbier]

    *) New wml_include/mod/version.src (21-Aug-1999):
       Provides the <require> tag to indicate a minimal WML version
       number to process a given file.
       [Denis Barbier]

    *) Fix wml::fmt::verbatim (20-Aug-1999):
       Added <protect></protect> to insert files really verbatim
       [Thomas Roessler <roessler@guug.de>]

    *) New wml_include/mod directory (20-Aug-1999):
       This directory is devoted for modularity. The first include file
       is MakeMaker.src, a Makefile generator to distribute WML modules.
       It is inspired by the ExtUtils::MakeMaker Perl module.
       [Denis Barbier]

    *) Add wml_contrib/mkwml (20-Jul-1999):
       This Perl script is an alternative to wmk.
       [Jim Bowlin <bowlin@sirius.com>]

    *) Fix the --safe long option name (19-Jul-1999):
       The --speedup option was used instead of --safe in wmk.src and
       wml.src
       [Simon Burr <simes@bpfh.net>]

    *) Better detection of relative paths in navbar.src (19-Jul-1999):
       When including images, absolute pathnames were either paths
       beginning with a slash or with ``http://''. Obviously other
       cases may occur, e.g. with ftp. The new algorithm is inspired
       from the URI perl module.
       [Dave Plonka <plonka@doit.wisc.edu>]

    *) Allow quotes around pass numbers in <protect> tags (09-Jul-1999):
       [Davor Cengija]

    *) Fix variable evaluation in Pass 1 (09-Jul-1999):
       The regular expression used to substitute variables in wml_p1_ipp
       was wrong with two adjacent variables, like $(foo)$(bar).
       [Uwe Mindrup <uwe@mindrup.de>]

    *) Fix installation of Perl modules (05-Jul-1999):
       On some platforms, Perl modules are not installed under
       ...prefix/lib/wml/perl.
       Rules in Makefiles now invoke pure_perl_install
       [Tobias Oetiker]

    *) Define a WML environment variable (01-Jul-1999):
       Contains the path of the wml binary. It is needed to perform
       tests on wmk when wml is not yet installed.
       [Denis Barbier]

    *) More robust -D flag (01-Jul-1999):
       A variable defined with the -D flag could not contain spaces or
       metacharacters. It's fixed now, one can write
           -DFOO="this \"and that\""
       on the command line, the shebang line, in RC-files or in the
       environment variable WMLOPTS.
       [<simes@bpfh.net>, Jim Hebert]

    *) Improve dependency checking (09-Jun-1999):
       If output files depend on certain data files, one may tell WMk
       about these dependencies by using the new ``#depends''
       directive.  File is not included but dependency is updated.
       The metacharacters [?*] are allowed in file names after #use
       #include and #depends. Bracketed expressions are also recognized.
       [Jay Treacy <treacy@debian.org>]

    *) Enhanced wml::fmt::verbatim (08-Jun-1999):
       Add the <verbatim-file> tag which is much more readable than
       the perl wml_fmt_verbatim routine.
       [Tobias Oetiker]

    *) Makes ePerl more portable (08-Jun-1999):
       ePerl uses the ppport.h file to deal with old and new perl.
       [Denis Barbier]

    *) Clean-up include files (06-Jun-1999):
       Simplification have been done in include files to use the new
       Meta-HTML tags.
       All references to the /tmp directory have been replaced by the
       WML_TMPDIR variable.
       [Denis Barbier]

  Changes between 1.7.1 and 1.7.2:

    *) Fix wml::fmt::text (22-Jun-1999):
       This file needs wml::std::tags.
       [Bruno Boettcher <bboett@erm1.u-strasbg.fr>]

    *) Fixed wml_include/all.wml (09-Jun-1999):
       Removed wml::usr::all, which is no more relevant.
       [Denis Barbier]

    *) Fixed dependency checks (08-Jun-1999):
       When touching template files, wmk does not rebuild targets.
       [Alexander Graefe <wa0191@stud.uni-wuppertal.de>]

    *) Fix wml::des::navbar (08-Jun-1999):
       wml_p3_eperl returns an error if a button id begins with a zero.
       If no select attribut is set in <navbar:render>, then all buttons
       are selected.
       [Jan Ulrich Hasecke and Christian Zuckschwerdt <zany@darkride.net>]

    *) Fix the ``end of line'' bug in wml_p2_mhc (08-Jun-1999):
       When the last character of the file is not a newline, strange
       results occur.
       [Jan Ulrich Hasecke]

  Changes between 1.7.0 and 1.7.1:

    *) Fixed mhc (05-Jun-1999):
       When defining new tags, the %0...%9 and %attributes are expanded
       in Meta-HTML 5.02 (pass 2) whereas they are unevalled in 5.09.
       This breaks the preserve/restore stuff defined in wml::std::tags.
       So the former behavior is restored.
       [John Bazik]

    *) Rewrite some include files (05-Jun-1999):
       Replace ``%0 %1 ... %9'' by ``%attributes'' in include files.
       [Denis Barbier]

    *) Fixed WMu (05-Jun-1999):
       To upgrade WML, the recommended way is to use WMu.
       It worked only when invoked by the super-user.  This bug fix
       allows a user to get and build WML, and then su root to install
       it. 
       [Denis Barbier]

  Changes between 1.6.8 and 1.7.0:

    *) Enhance documentation (30-May-1999):
       WMd sorts keyword search results by hit count.
       Some changes in the FAQ.
       [Denis Barbier]

    *) Check epilog and prolog filters (27-May-1999):
       Wml and friends now report an error and exit when a prolog or
       epilog fail.
       [Tobias Oetiker <oetiker@ee.ethz.ch>]

    *) Improve WMk (26-May-1999):
       WMk know recognizes the -o option in .wmkrc. If the -o option is
       used in .wmlrc, it's the only way to inform WMk about
       dependencies.
       [Fritz Zaucker]

    *) Clean Makefiles (21-May-1999):
       ``make distclean'' was broken and htmlclean didn't build on some
       systems
       [Frederic Le Mouel <Frederic.LeMouel@irisa.fr>]

    *) y2k fixes (20-May-1999):
       [Denis Barbier]

    *) Variable definitions (14-May-1999):
       The -Dfoo is now equivalent to -Dfoo=1 and -Dfoo="" or -Dfoo=
       define an empty variable.
       [Denis Barbier]

    *) Enhanced wml and wmk (11-May-1999):
       The -W option allows passing option to a specific pass, e.g.
          wml -W3,-i
       [Denis Barbier]

    *) Import HTML-Clean 0.7 (11-May-1999):
       HTML-Clean is a perl module written by
           Paul Lindner <paul.lindner@itu.int>
           http://people.itu.int/~lindner/
       The wml_aux_htmlclean may be used as an epilog filter to reduce
       the size of webpages
       [Denis Barbier]

    *) Update Perl modules (11-May-1999):
          GetoptLong      2.19
          Image-Size      2.901
          TermReadKey     2.14
       [Denis Barbier]

    *) Import tidy15apr99 (11-May-1999):
       Tidy is an HTML cleaner up
       [Denis Barbier]

    *) Enhanced wml::des::imgbg (10-May-1999):
       Allow generation of gradient backgrounds.
       [Denis Barbier]

    *) Import slice-1.3.2 (10-May-1999):
       Import the source distribution of slice 1.3.2 and patch it to
       ease its inclusion into wml.
       [Denis Barbier]

    *) Fix wml.src (9-May-1999):
       Remove an obsolete trick for writing portable dates
       [John Bazik <jsb@cs.brown.edu>]

    *) Add tests (9-May-1999):
       [Denis Barbier]

    *) Fix wml_backend/p3_eperl/eperl_sys.c (7-May-1999):
       A bug prevented recursive calls of ePerl.
       [Stéphane Bortzmeyer]

    *) Enhanced wml::des::navbar (7-May-1999):
       Multi-lingual navbars are easier to use, and menus can be nested.
       Automatic buttons (up, next, prev).
       Add the ``nohints'' attribute.
       [Denis Barbier, Florian Hars, Tobias Oetiker]

    *) Fixed documentation (7-May-1999):
       Tiny fixes
       [Denis Barbier]

    *) Enhanced wml::std::lang (10-Apr-1999):
       Wildcard used in <lang:star:... > tags can be changed. These tags
       are also protected against pass 3 to ease writing multi-lingual
       navigation bars
       [Denis Barbier]

    *) Fixed wmk (2-Apr-1999):
       When output files were defined via the wml shebang line, wml was
       always invoked.
       [Jan Ulrich Hasecke <juh@pironet.de>]

    *) Enhanced time dependency checks for wmk (29-Mar-1999):
       The dependency checking with wmk now applies to every input file,
       not only the main one. This is performed with the -MM wml option.
       [Denis Barbier]

    *) Added wml_contrib/navbar-FH.wml (26-Mar-1999):
       This is a modified version of navbar.wml which implements nested
       and multi-lingual navbars.
       [Florian Hars <florian@hars.de>]

    *) Fixed wml::des::navbar (22-Mar-1999):
       When a navbar is used more than once, the rendering of rollover
       is wrong, the rollover apply only to the last navbar.
       The ``nopreload'' attribute is a good idea, but with a wrong
       implementation. It is deleted, its action will be performed by
       htmlfix or htmlstrip.
       [Denis Barbier]

    *) Automatic dependency generation (18-Mar-1999):
       An `-M' option has been added to wml and wml_p1_ipp to write
       `make'-rules, as gcc does.
       [Andreas Hofmeister <hofmeist@informatik.uni-freiburg.de>]

    *) Fixed cleanup (16-Mar-1999):
       A ``make clean'' deletes wml_test/TEST.root
       [Frederic Le Mouel <Frederic.LeMouel@irisa.fr>]

    *) Fixed wml_p9_slice (16-Mar-1999):
       An undefined slice reports a warning instead of an error
       [Michael McNamara <mac@surefirev.com>]

    *) Enhanced wml::std::tags (16-Mar-1999):
       The m4 stuff has been fixed to allow nested definitions in the
       ``symbol'' tag and use of non-standard m4 quotes.
       [stiegele@informatik.uni-freiburg.de]

    *) Changed bootstrapping (16-Mar-1999):
       Passes 2, 3 and 4 have their own dedicated files into
       wml_include/sys. For backward compatibility reasons, the
       sys/boot.wml file has not be renamed.
       [Denis Barbier]

    *) Easier multi-lingual interface (16-Mar-1999):
       The processing of multi-lingual documents is much easier,
       providing an alternative to the -o option with the
       lang:star:slice: tag.
       [Denis Barbier, Paul Sponagl <pablo@acmedia.de>]

    *) Enhanced wml (12-Mar-1999):
       A variable may now be defined without value, in which case
       its value is empty. This is the only way to undefine variables.
       The %BASE/%DIR trick on output files is performed after all
       configuration files are read, so that it can be invoked
       in .wmlrc or even on the command-line.
       [Denis Barbier]

    *) Fixed ipp (12-Mar-1999):
       The -i wml option did not work as explained in the doc for
       system files.
       [Denis Barbier]

    *) Fixed wmd (21-Feb-1999):
       When invoking ``Keyword search'', manpages were searched in
       a wrong place and no results were found.
       [Denis Barbier]

    *) Enhanced wml::std::toc (18-Feb-1999):
       Two new styles (ul and ol) are implemented. Both allow complete
       control on how lists are displayed.
       The hspace style has been rewritten to include one gif of width
       20xN instead of N gifs of width 20.
       The toc_hN macros accept a new "alt" attribute, which will be
       inserted in the ToC instead of the body function. As for now,
       the %attributes was inserted, which did not follow the WML api
       and could cause strange behaviors when quoting.
       [Denis Barbier]

    *) Cleaned up wml_p2_mhc (16-Feb-1999):
       Removed unnecessary files. The meta-html profiler module has
       been included to test performance issues.
       [Denis Barbier]

    *) Upgrade of metahtml.txt (09-Feb-1999):
       Replaced the old 5.02 documentation, involving minor bug fixes
       in the automatic generation of this file.
       [Denis Barbier]

    *) Make wml_p2_mhc documentation automatic (08-Feb-1999):
       To keep the wml_p2_mhc documentation up-to-date, it is generated
       from the C sources, as meta-html does. To perform this operation,
       mhc macros have been added to emulate database and stream
       operations.
       [Denis Barbier]

    *) Added doc in wml_include/std/logo.src (03-Feb-1999):
       Added documentation to the ``target'' attribute.
       [Denis Barbier]

    *) Fixed configuration (03-Feb-1999):
       With some shells (ksh or sh-posix on HP-UX), the configure script
       failed because the TMPDIR variable is defined to a non-existing
       directory.
       [Steve Sizemore <steve@cmpharm.ucsf.edu>]

    *) Fixed wml (03-Feb-1999):
       Suppress all references to tdist, which does no longer exist.
       [Ralf S. Engelschall]

    *) Fixed wmk (03-Feb-1999):
       Suppress all references to tdist, which does no longer exist.
       Add support to the -P wml option.
       [Denis Barbier]

    *) Fixed previous patch for perl threads (19-Jan-1999):
       One of the 2 tests on version number was missing.
       [Denis Barbier]

    *) Upgrade of mhc (19-Jan-1999):
       Upgraded from version 5.02 to 5.09.
       As usually this is a heavily stripped down version of metahtml.
       All about databases, session management, encryption,... is
       removed (see the README.wml file for details).
       Other unused configuration tests are removed (AC_CHECK_FUNCS)
          flock getgrent seteuid setgid setlocale
       Added arch/solaris/prototypes.h. Below in this file it is
       mentioned an obsolete #include was removed for Solaris. Is it
       this one?
       Documentation is not yet updated.
       Documentation inside source files have not been removed to help
       hacking.
       [Denis Barbier]

    *) Renamed wml_docs/wml_tags.L.core (18-Jan-1999):
       Some *BSD check for files with a .core extension and remove them
       every night. Renamed to wml_docs/wml_tags.L.main
       [Marc Baudoin <babafou@babafou.eu.org>]

    *) Added doc in wml_include/des/typography.src (18-Jan-1999):
       Few lines added to say that <sc> tags support i18n.
       [Märt Laak <Mart.Laak@hansa.ee>]

    *) Fixed a bug with perl threads (18-Jan-1999):
       Added calls to dTHR, needed by perl >= 5.005
       [Hans de Graaff <graaff@xs4all.nl>]

    *) Fixed wml_frontend/wml.src (18-Jan-1999):
       Check whether an equal sign is found after an option, which
       is certainly due to a misunderstanding of how to invoke wml.
       [CHristian Niss <chris@topitmagic.de>]

    *) Fixed the Meta-HTML Autoconfiguration (17-Jan-1999):
       Removed the not necessary Autoconf checks for setpgrp() and vfork()
       because in our heavily stripped down Meta-HTML version these are no
       longer used and the tests just caused problems on some platforms.
       [Ralf S. Engelschall]

  Changes between 1.6.7 and 1.6.8:

    *) Enhanced the tarball process  (13-Jan-1999):
       The --enable-maintainer-mode option from automake is added to
       `configure'. It is disabled by default, suppressing dependency
       problems that might occur when untarring. To keep all the
       dependencies, maintainers have to specify this option.
       Add a minus sign after gzip, to suppress a fatal error.
       [Denis Barbier]

    *) Fix <import .. format="verbatim"> command (13-Jan-1999):
       Fix the <import src="file.txt"> or <import .. format="verbatim">
       command which was broken because of internal changes in recent
       versions.
       [Ralf S. Engelschall]

    *) Make tarball rolling more flexible (13-Jan-1999):
       The process of rolling the WML distribution tarball is now more
       flexible and secure: It used variables (which can be overridden) for
       the tools and UID/GID 0/0 to avoid security problems (users could
       override installed WML files when WML is installed under root).
       Additionally the rolling process is now aware of the fact that WML
       stays inside a CVS repository.
       [Ralf S. Engelschall]

    *) Fixed wml_frontend/wml.src (13-Jan-1999):
       Protected areas appeared only on the first slice.
       [Heiko Schlittermann <heiko@datom.de>]

    *) Fixed wml_frontend/wml.src (13-Jan-1999):
       Display of timers were corrupted when some passes are skipped.
       [Denis Barbier]

    *) Fixed wml_backend/p9_slice/slice.src (13-Jan-1999):
       ``make test'' failed because a dollar sign was expanded.
       [Denis Barbier]

    *) Added wml_contrib/wml.spec (12-Jan-1999):
       This file is used to build RedHat/Linux RPMS (binary packages).
       [Denis Barbier]

    *) Fixed wml::sys::boot (12-Jan-1999):
       Two blank lines are suppressed.
       [Marc Baudoin <babafou@babafou.eu.org>]

    *) Removed files in wml_backend/p2_mhc/libmhtml (12-Jan-1999):
       Unnecessary files are removed and Makefile.in is updated.
       [Denis Barbier]

    *) Enhanced Pass 1 (IPP) (12-Jan-1999):
       The parseblock routine is called only if `/*' is read in input
       file. This causes significant speed-up.
       [Denis Barbier]

    *) Enhanced wml::des::navbar (12-Jan-1999):
       Added `nopreload' attribute to navbar:render. When set, prevents
       inclusion of javascript code. Useful when navigation bars are
       used more than once.
       Replaced HTML javascript code by the Meta-HTML <javascript> tag.
       [Denis Barbier]

    *) Fixed wml::des::navbar and wml::des::gfont (12-Jan-1999):
       Quotes in text attributes cause trouble. Replace quotes by
       perl quoting (q,qq,...).
       [Denis Barbier, clorenz@proddev-linux2.inhouse.compuserve.com]

    *) Enhanced wml::std::box (12-Jan-1999):
       Background color cells can be made in conjunction with headings.
       [Denis Barbier]

    *) New subdir: wml_contrib/ (07-Jan-1999):
       Added a new contribution subdir wml_contrib/ where the Webdesign
       Magnifying Glass (WMG) CGI program is now distributed and where other
       stuff can be added in the future.
       [Ralf S. Engelschall]

    *) Fixed WMU (31-Dec-1998):
       Fixed the download hyperlink in the WMU tool.
       [Denis Barbier <barbier@imacs.polytechnique.fr>]

    *) Upgrade of File::PathConvert (18-Dec-1998):
       Upgraded File::PathConvert Perl module from version 0.3 to 0.83
       [Ralf S. Engelschall]

    *) Upgrade of Image::Size (18-Dec-1998):
       Upgraded Image::Size Perl module from version 2.6 to 2.9.
       [Ralf S. Engelschall]

    *) Upgrade of Bit::Vector (18-Dec-1998):
       Upgraded Bit::Vector Perl module from version 5.2 to 5.6.
       [Ralf S. Engelschall]

    *) Fixed double-backslash (`\\') handling (01-Nov-1998):
       Now in Pass 1 (IPP): a double-backslash prevents line continuation as
       one would expect. This way one can again create lines with backslashes
       at the end.

    *) Fixed `make test' (10-Aug-1998):
       Under situation where WML was configured for a prefix not
       containing `wml' it was failing.
       [Torsten Naumann, Ralf S. Engelschall]

    *) Fixed wml::std::grid (07-Aug-1998):
       Some <preserve>/<restore> tags were missing for parameters.
       [Markus Fleck <fleck@isoc.de>]

    *) Fixed wml::std::logo (07-Aug-1998):
       It was was broken because of an ePerl syntax error inside logo.src.
       [Torsten Naumann <Torsten.Naumann@Informatik.TU-Chemnitz.DE>,
        Denis Barbier <barbier@imacs.polytechnique.fr>]

  Changes between 1.6.6 and 1.6.7:

    *) Upgrade of ePerl (02-Aug-1998):
       Upgraded ePerl from version 2.2.12 to 2.2.14. 
       This especially provides first Perl 5.005 support ;-)
       [Ralf S. Engelschall]

    *) Enhanced Autoconf stuff (02-Aug-1998):
       Replaced build user/host/domain/time determination stuff with a new
       `buildinfo' script I've written for Apache which is more robust.
       [Ralf S. Engelschall]

    *) Upgrade of built tools (02-Aug-1998):
       Replaced mkinstalldirs and install.sh scripts with my cleaned variants
       I've done for Apache 1.3's APACI stuff.
       [Ralf S. Engelschall]

    *) Upgrade of IO (02-Aug-1998):
       Upgraded IO Perl module from version 1.19 to 1.20.
       [Ralf S. Engelschall]

    *) Fixed wml::des::typography (01-Aug-1998):
       Fixed the <sc>..</sc> tags in wml::des::typography which were confused
       when in the processed body other tags occured.  
       [Kurt D. Zeilenga <Kurt@Boolean.Net>. Ralf S. Engelschall]

    *) Changed IPP/HTMLStrip (30-Jul-1998):
       Fixed the handling of EOL-comments (#...), now ``\#xxx'' inside style
       sheets works fine again.
       [Ralf S. Engelschall]

    *) Fixed htmlfix pass (30-Jul-1998):
       Corrected the usage synopsis inside the htmlfix manual page.
       [Kurt D. Zeilenga <Kurt@boolean.net>, Ralf S. Engelschall]

    *) Extended wml::std::logo (29-Jul-1998):
       Added `powered by VIM' logo for wml::std::logo.
       [Ralf S. Engelschall]

    *) Fixed wml_tutorial (26-Jul-1998):
       Make divertion example in wml_tutorial more robust and less confusing.
       [Florian Hars <hars@math.uni-hamburg.de>, Ralf S. Engelschall]

    *) Fixed wml::des::gfont (05-Jul-1998):
       Fixed two bugs inside wml::des::gfont.
       [Jordan Baker <jbb@interlog.com>, Ralf S. Engelschall]

    *) Upgrade of txt2html (29-Jun-1998):
       Upgraded txt2html aux tool from version 1.24 to 1.25.
       [Ralf S. Engelschall]

    *) Enhanced wml::std::logo (28-Jun-1998):
       Added `target' attribute to <logo> tag.
       [Florian Kuehnert <sutok@gmx.de>]
    
    *) Fixed WMd page (26-Jun-1998):
       Added missing link to wml::des::preload.
       [Alvise Belotti <alvise@lettere.unipd.it>, Ralf S. Engelschall]
  ___________________________________________________________________________

  I've now changed the syntax of the ChangeLog file for more readability,
  especially for posting ChangeLog entries to sw-wml.
  ___________________________________________________________________________

  Changes between 1.6.5 and 1.6.6:

      970617 - upgrade CSS2 document to latest REC 12-05-1998 version
             - fix dates of standard documents in WMd document list
             - Upgraded Getopt::Long from 2.16 to 2.17
      970618 - Fixed wml::std:toc which caused problems with <Hx></Hx> blocks.
               The closing tag was always </H1>.  [Thanks to Andy Hawkins
               <andy@gently.demon.co.uk> for patch]
             - Add support to WMd's search feature for compressed/gzipped
               manual pages (for instance under FreeBSD port they are gzipped)
      970622 - Fixed the hostname determine stuff in the configure script
               [Thanks to Clayton Wheeler <cswheeler@halcyon.com> and Aleksi
               Niemelä <AleksiN@hex.fi> for hints]

  Changes between 1.6.4 and 1.6.5:
      980323 - added the HTML Specifications in ASCII form
               to wml_docs/. These are now directly accessible
               via WMd.
      980403 - Upgraded Bit::Vector from 5.1 to 5.2
               (which now is again under Artistic and GPL)
             - Upgraded Getopt::Long from 2.15 to 2.16
      980404 - Made /etc/resolv.conf parsing in configure more
               robust [Thanks to Stephane Bortzmeyer
               <bortzmeyer@pasteur.fr> for hint]
             - Removed stream-stuff from Pass 2 (MHC) because
               it's TCP stuff caused problems on some platforms
               and WML does not need it.  [Thanks to Stephane
               Bortzmeyer <bortzmeyer@pasteur.fr> for hint]
      980405 - Upgraded iSelect from 1.0.4 to 1.1.0
      980417 - Fixed generation of 'alt' tags in wml::des::navbar
               [Thanks to Dan Ludden <dan.ludden@lmco.com> for patch]
      980616 - Upgraded Bit::Vector from 5.2 to 5.3
             - Fixed non-"site_lib" installation of Getopt::Long

  Changes between 1.6.3 and 1.6.4:
      980313 - fixed a few typos in the INSTALL file
      980314 - Upgraded Bit::Vector 5.0 to 5.1
             - Upgraded Getopt::Long 2.13 to 2.15
      980318 - Fixed wml::des::gfont which called gfont
               with option -s instead of -r [Thanks to Andy
               Hawkins <andy@gently.demon.co.uk> for hint]
      980322 - Fixed <vspace> tag in wml::des::space [Thanks to
               Igor V.  Spiridonov <garris@trunk.uco.ru> and
               Tomasz Cholewo <t.cholewo@ieee.org> for hint]
      980323 - Added support for escaped sharp-comments via
               ``\#'' for escaping such comments, for instance
               when needed inside <verbatim> environments [Thanks
               to Igor V. Spiridonov <garris@trunk.uco.ru> for
               hint]
             - Fixed Pass 7 (HTMLfix): Now the width/height=*
               placeholder constructs are removed when the image
               file from <img> tags are not accessible.  [Thanks
               to Igor V. Spiridonov <garris@trunk.uco.ru> for
               hint]
             - Fixed etc/newvers, so that it not always just
               tries to use "cc". Instead now first "gcc" is
               searched and "cc" is the fallback.  [Thanks to Dan
               Ludden <dan.ludden@lmco.com> for hint]
             - Added SCALE=<factor> and SCALE=<percent>% to the
               <img> support in Pass 7. This way you can scale
               the WIDTH/HEIGHT attributes of <img> tags.
               [Thanks to Dan Ludden <dan.ludden@lmco.com> for
               patch]
             - Enhanced the wml::std::toc include file: Now you
               can use ``#use wml::std::toc
               style=pre|nbsp|hspace'' to let the Table Of
               Contents create in a particular style.  The "pre"
               style is the old <pre>-based style, the
               "nbsp"-style used plain HTML text with &nbsp;'s
               and <br>'s and the "hspace" style uses <hspace>'s
               (from wml::des::space) and <br>'s to layout the
               ToC.  [Thanks to Dan Ludden <dan.ludden@lmco.com>
               for idea]
             - Added optional "alt" attribute to <navbar:button>
               which can be used for explicitly setting the <img
               alt=".."> stuff.  It defaults to the value of the
               non-optional "txt" attribute.  [Thanks to Dan
               Ludden <dan.ludden@lmco.com> for idea]
             - Added generated "type" attribute to the generated
               <script> container tag for <javascript> and added
               "defer" attribute for HTML 4.0.  [Thanks to Any
               Hawkins <andy@gently.demon.co.uk> for hint]

  Changes between 1.6.2 and 1.6.3:
      980219 - fixed typo in wml::std::lang manpage
      980222 - made the non-GCC warning just a more harmless
               attention message in the configure script.
      980223 - removed config.args entry from config/Makefile
      980228 - let wml::std::toc create markup code which is more
               weblint-proof [Thanks to Andy Hawkins
               <andy@gently.demon.co.uk> for hint]
      980302 - Upgrade Bit::Vector 5.0b4 to 5.0 final release
             - Changed temporary filenames in WMb frontend
               to avoid problems with at least XEmacs 
               [Thanks to Karl M. Hegbloom
               <karlheg@bittersweet.inetarena.com> for hint]
             - Fixed typo in wml_tutorial.pod [Thanks to Stefan
               `Sec` Zehl <sec@42.org> for hint]
      980304 - Fixed replacement for nested <center>..</center>
               constructs in HTMLfix [Thanks to Stefan `Sec` Zehl
               <sec@42.org> for hint]
             - Fixed the system() call for Pass 2: the arguments
               were not correctly escaped. Thanks to Graham
               Hughes <thrag@treepeople.dyn.ml.org> and Anthony
               Fok <foka@debian.org> for hint]
             - Fixed various typo bugs in a lot of sources
               [Thanks to Anthony Fok <foka@debian.org> for
               patch]
             - Fixed WMu's key handling
             - now %DIR and %BASE are interpolated on the WML
               shebang line which is useful for multi-lingual
               pages [Thanks to Stefan `Sec` Zehl <sec@42.org>
               for hint]
             - added a second box variant to <box> from
               wml::std::box which is a headlined one. The layout
               idea is stolen from the QMail homepage but now
               implemented via WML.
             - now the <lang:area>...</lang:area> container tag
               from wml::std::lang supports a special `(/)' tag
               inside its body to switch back to no special
               language.  pages [Thanks to Stefan `Sec` Zehl
               <sec@42.org> for idea]
      980305 - Solved Bit::Vector license conflict by now
               obtaining a special license for WML directly from
               the author of Bit::Vector. This is needed because
               WML can be used free or charge both in educational
               _AND_ commercial environments while Bit::Vector is
               usually not allowed to be used in commercial
               environments without paying.

  Changes between 1.6.1 and 1.6.2:
      980216 - fixed wml_faq.pod [Thanks to Robin Stephenson
               <robin@gbhap.com> for hint]
             - added "eperlfilter" attribute to <pod> and
               <import> tags to allow post-filtering by an ePerl
               function.
      980217 - fixed FSF address and added --best option
               for gzip on creating the tarball.  [Thanks to
               Anthony Fok <foka@gpu.srv.ualberta.ca> for patch]
             - fixed version comparison in the new WMu frontend
               [Thanks to Alvise Belotti
               <alvise@lettere.unipd.it> for hint]
      980218 - removed bogus X%1X debugging stuff from
               wml::std::lang which I forgot to remove.
             - added new <lang:star:href:> tag to wml::std::lang
             - Upgraded Bit::Vector from 5.0b2 to 5.0b4
             - Fixed domainname determination in configure
             - Upgraded to Slice 1.3.2
      980219 - adjusted ANNOUNCE file
             - stripped down the Meta-HTML documentation
               so only features remain WML's Meta-HTML has

  Changes between 1.6.0 and 1.6.1:
      980210 - added hints for "make test" to INSTALL file
             - changed misspelled word: "Divertion" -> "Diversion"
             - made the determination of the WML_GEN_REALNAME and
               WML_GEN_USERNAME variables more robust
      980211 - now wml::sys::boot is only preloaded when actually
               using Pass 3 (ePerl) because it exists only for
               this.  This way "wml -p1" can be a useful command
               for its own.  [Thanks to Jim Hebert
               <jhebert@compu-aid.com> for hint]
             - now the control frontend clears the CGI/1.1
               environment variables to avoid confusion of Pass 2
               and Pass 3 which try to determine their operation
               mode from it.  [Thanks to Jim Hebert
               <jhebert@compu-aid.com> for hint]
      980214 - changed attribute name "interword" to "interchar"
               for tag <spaced> of wml::des::typography, because
               it is actually a inter-character spacing.
               [Thanks to Christian Reiber for hint]
      980215 - added missing wml_misc subdir to Makefile.in
               so this subdir is used on all targets, too.
               [Thanks to the Debian ports diff-file from Anthony
               Fok <foka@debian.org> for hint]
             - Ops, for 1.6.0 I already wanted to removed
               wml_contrib because it is not useful for the end
               user (only for the porters), but I forgot to do..

  Changes between 1.5.1 and 1.6.0:
      980116 - removed configure --enable-compat option
               and wml_include/OBSOLETE* stuff
             - Merged the <box> and <rect> tags from
               wml::std::box into a new full-featured single tag
               named <box>
      980118 - Fixed temporary file usage: /tmp/wml.$$.tmp4 was
               not removed.  [Thanks to Stefan `Sec` Zehl
               <sec@42.org> for hint]
             - Upgraded IO 1.1803 -> 1.1804
             - Upgraded GD 1.16 -> 1.17
             - removed some unnecessary stuff from
               wml_p2_mhc/configure.in
      980119 - recreated the "generated via WML" GIF image
             - added more logos to wml_misc/
             - added new wml::std::logo to insert the logos
             - removed wml::sup::stack because its functionality
               is already in wml::std::tags
             - added domainname attribute to wml::std::info which
               overrides the usage of WML_SRC_HOSTNAME
             - removed wml::usr::rse because no one can use it
               except RSE ;_).
             - added hint to wml_faq.pod on how to setup a useful
               $HOME/.wmlrc and $HOME/.wml
             - fixed WML option -v which needs pre-processing as
               option -r
             - fixed RC file parsing for $HOME/.wmlrc
             - now WML uses the homedir in passwd instead of
               $ENV{HOME}
      980120 - fixed tag recognition in HTMLfix:
               ``<I>foo=bar</I>'' was incorrectly "fixed" to
               ``<I>foo="bar</I">''. [Thanks to Tetsuya Furukawa
               <tetsuya@secom-sis.co.jp> for patch]
             - enhanced the -p option syntax: Now you can use the
               more readable and shorter -p1-7,9 instead of
               -p12345679 for all passes except Pass 8.
             - added details about $HOME/.wmlrc setups to
               wml_faq.pod
             - Some WML tags were renamed to avoid namespace
               conflicts:
               wml::des::navbar <navbar>     -> <navbar:define>
               wml::des::navbar <navdebug>   -> <navbar:debug>
               wml::des::navbar <navrender>  -> <navbar:render>
               wml::des::navbar <nb_header>  -> <navbar:header>
               wml::des::navbar <nb_footer>  -> <navbar:footer>
               wml::des::navbar <nb_prolog>  -> <navbar:prolog>
               wml::des::navbar <nb_epilog>  -> <navbar:epilog>
               wml::des::navbar <nb_filter>  -> <navbar:filter>
               wml::std::case   <uppercase>  -> <case:upper>
               wml::std::case   <lowercase>  -> <case:lower>
               wml::std::tags   <array-size> -> <array:size>
               wml::std::tags   <push>       -> <array:push>
               wml::std::tags   <pop>        -> <array:pop>
               wml::std::tags   <show>       -> <array:show>
               wml::std::info <generated-via-wml> -> <logo name="wml">
      980124 - added new "wmu" frontend
             - added wml_common/termreadkey/
      980126 - moved wml_pX_XXX to wml_backend/pX_XXX
             - added wml_common/delimmatch/
             - fixed DelimMatch version from 1.01 to 1.03
             - expanded "distclean" target in wml_common/Makefile.in
             - added EOL-mode (#) and Block-mode (/*...*/)
               comment support to Pass 1 (IPP) to get rid of
               comments as quick as possible. This way we now
               really can comment out any stuff and as a side
               effect processing is a little bit faster.
             - added wml_common/blockparser/
             - fixed tempfile remove again. This time for the
               case where WML breaks because of a pass error.
             - created the WML test suite and a first t/01-plain.t
      980128 - added -P option to IPP for running prolog programs
             - Upgraded GD 1.17 -> 1.18
             - now the <lowsrc> tag from wml::des::lowsrc skips
               the creation when the xxx.lowsrc.gif already
               exists and has a higher timestamp.
             - now WML uses the new Term::ReadKey at -v3
             - Upgraded to Slice 1.3.1 which fixes Slice
               errors
             - Now all wml_pX_YYY and wml_aux_XXX scripts
               and binaries are installed in LIBDIR/exec/
               instead of BINDIR/.
             - Fixed WMd: Now the ftp:// link works and also runs
               Lynx.
             - Fixed generation of WML command in WMk
      980202 - Now the -V option of all frontends run wml -V..
             - Fixed WMb message generation
             - added new wml_tags.pod manual page
      980204 - Added <lang:star:> tag to wml::std::lang
             - Fixed wml::std::logo
             - Added <say> tag for debugging to wml::std::tags
             - Adjusted PORTING.test for new "make test" approach
      980205 - Fixed wml::std::all because wml::std::case was
               missing [Thanks to Alvise Belotti
               <alvise@lettere.unipd.it> for hint]
      980207 - Renamed --with-cc to --with-forced-cc and added
               a new --with-cc configure option which doesn't
               force CC for Meta-HTML and ePerl to avoid
               conflicts under HP-UX and simular braindead
               systems.
             - Added more info about multi-lingual pages to
               wml_tutorial.pod
             - Fixed built_date determination in configure
      980208 - Adjusted NEWS file
             - Fixed "make test" again
             - Now "make install" automatically runs "make all"
               when it was not run already.
      980209 - Fixed WMu again.
             - Upgraded IO 1.1804 -> 1.19
  ___________________________________________________________________________

  Changes between 1.5.0 and 1.5.1:
      980112 - Upgraded to File::PathConvert 0.3
             - Rewritten the ANNOUNCE file
      980115 - The PREFIX/bin is now put in front of $ENV{PATH}
               in all frontends to avoid problems when more then
               one WML installation exists.  [Thanks to Fritz
               Zaucker <zaucker@ee.ethz.ch> for hint]
             - Now WMk and WML correctly escape -o options
               from the shebang lines when they are not quoted
               but contain shell meta chars [Thanks to Fritz
               Zaucker <zaucker@ee.ethz.ch> for hint]
      980116 - fixed another bug in context of quoted -o option
               arguments [Thanks to Fritz Zaucker
               <zaucker@ee.ethz.ch> for hint]
             - fixed the -v1 output because "mhc" and "epl"
               columns usually have two digits before the point.
             - added -v1 to wml_sample/Makefile
             - fixed manual page of wml::std::lang [Thanks to
               Fritz Zaucker <zaucker@ee.ethz.ch> for hint]
             - Rewritten the README file
             - Added the WML_SRC_BASENAME variable to the "wml"
               frontend.

  Changes between 1.4.11 and 1.5.0:
      980101 - Updated Copyright Notices for 1998 and removed
               still left "All Rights Reserved" trailers,
               because this bites with GNU GPL.
      980103 - Upgraded to iSelect 1.0.4: Now WMd is also
               correctly terminated on CTRL-C without crashing
               the XTerm behavior.
      980104 - Changed "make test" to automatically check
               for the installation
             - Added --with-cc=PATH option to configure which is
               equivalent to ``CC=PATH ./configure [...]'' but is
               more intuitive because we already have
               --with-perl=PATH.
             - Adapted and enhanced the PORTING.test script from
               the ePerl distribution for WML platform porting
               tests
             - Upgraded Meta-HTML's config.{guess,sub} files
             - Updated NEWS file
             - Changed Build Date in configure script to ISO
               format
             - Fixed wml_p4_gm4/Makefile.in for AIX 4.2
             - Force etc/install.sh under AIX 4.x because
               their `installbsd' program is buggy
      980105 - Again cleaned up Pass 5 (Divert) because
               divert.src now is a sample implementation of the
               diversion chapter in my dimploma thesis ;_)
      980106 - Added the various package/installation files as
               wml_contrib/pkg/. [Thanks to Jim Hebert
               <jhebert@compu-aid.com> for the RPM version]
             - Added the new wml::std::lang which provides a
               high-level interface for defining the output
               slices for various languages.
             - Upgraded to Slice 1.3.0: This adds a nifty
               feature to WML's -o option. Now one can use
               wildcarded slices like `LANG_*' which means
               the union of all existing LANG_XXX slices.
             - Fixed handling of ``wml -o...:-'', i.e.  when
               stdout is explicitly requested.  WML hang in the
               past waiting for STDIN because unprotect opened
               the "output file "-".
             - Added lession about wml::std::lang to
               wml_docs/wml_tutorial.pod
             - Added <document_url> tag to wml::std::info [Thanks
               to Viorel Anghel <vang@ely.leader.ro> for the
               idea]
      980108 - Adjusted NEWS file for version 1.5
             - Adjusted ANNOUNCE file for version 1.5
      980110 - Fixed new <document_url> canonicalisation
               [Thanks to Viorel Anghel <vang@roedu.net>]
      980111 - Fixed attribute fixing in HTMLfix (Pass 8) for
               <!-- [...] --> which is no real HTML tag.  WML
               incorrectly fixed the following: <!-- vim:set ts=4
               sw=4: --> to <!-- vim:set ts="4" sw="4:" -->.
               [Thanks to Stefan `Sec` Zehl <sec@42.org> for
               hint]
             - let PORTING.test accept "cc -fast"
             - let wml_p2_mhc/configure.in accept "cc -fast" and
               do not use GCC options "-O2 -finline-functions".
  ___________________________________________________________________________

  Changes between 1.4.10 and 1.4.11:
      971231 - Upgraded to ePerl 2.2.12: This fixes a nasty
               syntax error in ePerl 2.2.11's configure script.
               The result was that ePerl failed to build when
               your Perl version was not of type 5.00X_YZ :-(

  Changes between 1.4.9 and 1.4.10:
      971228 - Upgraded to Slice 1.2.9
      971230 - Fixed wml_sample/demo.wml: The "slices" attribute
               for <page> has to added now. [Thanks to Anthony
               Fok <foka@gpu.srv.ualberta.ca> for patch]
             - Fixed wml_frontend/wml.src because now Slice no
               longer is a special case for -v option. [Thanks to
               Anthony Fok <foka@gpu.srv.ualberta.ca> for patch]
             - Upgraded to ePerl 2.2.11: This makes WML the first
               time compliant to the Perl Locale environment,
               e.g.  the <sc> from wml::des::typography now works
               for international characters, too.
             - Upgraded to Bit-Vector 5.0b2
             - Updated COPYRIGHT.OTHERS file
             - Changed Meta-HTML version string from 5.02 to
               5.02/wml to make it clear that this is not a
               complete or standard Meta-HTML.
             - Added another Q&A to wml_faq.pod and fixed
               question numbering

  Changes between 1.4.8 and 1.4.9:
      971224 - Added the contents of the RESTRICTIONS file to
               wml_faq.pod and removed the file.
             - Corrected the FAQ because of new <protect>
             - Added more info to the FAQ
      971226 - Upgraded to GetoptLong-2.13
             - Upgraded to Image-Size-2.5
             - completely cleaned up the Divert (Pass 5) filter
               and enhanced it: Now you can do a named leave,
               i.e. leave a divertion by name which has the
               effect of leaving it and all other divertions
               which were entered from within it.
             - added <page_end> to wml::std::page which can be
               used to end a <page>. This usually is not needed
               in standard situations, but when creating more
               than one page via <page> and slicing then this is
               needed to avoid nesting.
             - Upgraded to IO-1.1803
      971227 - changed the IPP semantics of #include and #use to
               a better one: Now #include really does what it
               says, it unconditionally includes a file, perhaps
               even more then once. On the other hand #use has
               the general "use" semantic where multiple
               inclusion is automatically avoided. Up to this
               time it was not possible to include a file
               (perhaps a navigation bar) more then once, because
               #include also had the multiple inclusion
               detection. Now this is no longer the case.
             - added "slices" attribute to <page> of
               wml::std::page which now has to be used to force
               <page> to create the WML_PAGE_XXX slices.  Because
               these usually make problems when using <page>
               multiple times.

  Changes between 1.4.7 and 1.4.8:
      971221 - added SUPPORT file with info about the new ML
               sw-wml@engelschall.com
      971222 - upgraded from GD-1.14 to GD-1.16
      971223 - added a new trick to HTMLstrip: <suck>, this tag
               absorbs itself and all whitespaces. This is a nice
               feature which is now used in
               wml::des::typography's <tul> container tag to get
               rid of whitespaces.
             - enhanced, cleaned up and documented
               wml::des::typography
             - upgraded to ePerl 2.2.9

  Changes between 1.4.6 and 1.4.7:
      971215 - Created BUGREPORT file
      971218 - Rewritten the <sc> and <csc> tags from
               wml::des::typography to avoid problems with
               acented characters.  BUT NON-ASCII CHARS ONLY WORK
               IF YOUR SYSTEM SUPPORTS LOCALES!  [Thanks to Fritz
               Zaucker <zaucker@ee.ethz.ch> for hint]
             - fixed incorrect scoping for $CFG variable in
               wml::des::navbar which leads to an error under
               some Perl versions.  [Thanks to Fritz Zaucker
               <zaucker@ee.ethz.ch> for hint]
             - Fixed typo in wml::des::all [Thanks to Fritz
               Zaucker <zaucker@ee.ethz.ch> for patch]
      971219 - Fixed and enhanced the attribute fixing in
               HTMLfix.  Now it is tag-sensitive (i.e. name=value
               pairs outside tags are not fixed) and the value is
               no longer restricted to just digits.  [Thanks to
               Carsten Braeutigam <carsten@nada.kth.se> for hint]
             - Now the width/heigth calculation of <img> tags in
               HTMLfix honors the aspect ratio, i.e when only one
               attribute is given, the other one is calculated
               relative to it. [Thanks to Carsten Braeutigam
               <carsten@nada.kth.se> for hint]
             - fixed a few cosmetic source parts
             - because I really dislike the 3rd-party Meta-HTML
               sources, I've again stripped down the stuff. This
               time the GNU malloc was removed (was not used
               under Solaris and Linux and under FreeBSD should
               not) and some other not really needed files.

  Changes between 1.4.5 and 1.4.6:
      971209 - slightly adjusted ANNOUNCE file
      971211 - fixed manpage of the new wml::des::preload
             - fixed a few typos in wml_docs/wml_tutorial.pod
             - rewritten and completed the 1.3->1.4 part of
               the NEWS file.
             - removed unneccessary stuff in Meta-HTML's
               configure
      971212 - fixed row/column spanning of wml::std::grid
               [Thanks to Tetsuya Furukawa
               <tetsuya@secom-sis.co.jp> for patch]
             - enhanced the stripping in HTMLstrip (Pass 8). Now
               HTMLstrip strips according to the three possible
               areas: Inner Tag, Inner Preformatted, Plain Text.
               So, now JavaScript code is no longer stripped
               incorrectly.
             - added a <nostrip> for the <javascript> container
               to wml::std::tag because its useful here.
             - added a <nostrip> for the <script> container to
               wml::des::navbar because its useful here, too.
             - added $(name:*string) syntax to IPP (Pass 1) to
               allow real if-then-else constructs in combination
               with the already existing $(name:+string)
               construct.
             - added some stuff to wml_tutorial.pod
             - disabled warnings also for include files in
               wml::sys:boot now to get rid of nasty warnings
               when PERL5OPTS="-w" is set by the user.  [Thanks
               to Oliver Hensel <oliver.hensel@gmx.de> for hint]
             - upgraded to Slice 1.2.8
      971215 - made username/realname determination more robust
               against special chars like backticks [Thanks to
               Stefan `Sec` Zehl <sec@42.org> for hint]
             - now WML:Break-errors return the correct status and
               rc numbers.
             - another frontend for the user: WMb -- Website META
               Language Bug Report Tool.

  Changes between 1.4.4 and 1.4.5:
      971205 - made configure's determination of the FQ-hostname
               more robust
             - added hint so S-Lang curses as an alternative to
               NCurses
             - made WML's username/realname determination more
               robust
             - done a lof porting tests on various platforms.
               See PORTING file for details.
      971209 - let wml/aux/Makefile.in stop on errors in subdirs
             - slightly changed INSTALL file
             - made Term::Cap usage more robust in WMk and
               HTMLinfo because under some systems this does not
               work for all terminal types.
             - made MakeMaker's processing more quiet in
               wml_common/Makefile.in according to the uninstall
               warnings
             - removed MakeMaker manpage
               creation/installation/deleting for
               wml_common/Makefile.in
             - added new wml::des::preload include file for
               preloading images
             - again fixed the image width/height determination
               stuff in HTMLfix.

  Changes between 1.4.3 and 1.4.4:
      971130 - fixed Pass 1 (IPP): the #use and #include argument
               handling was not restored after first usage.
      971201 - added <nb_filter> to wml::des::navbar because
               sometimes one really needs some Perl stuff to
               fixup some aspects of the generated HTML code
               which cannot be done statically.
             - fixed wml::des::rollover which was broken because
               of the change in WML 1.4.2
             - enhanced Pass 7 (HTMLfix) so you can specify
               width/height attributes with a value of ``*''.
               There the asterisk is replaced by the correct
               image size while without any such attribute
               HTMLfix just adds the missing attribute. And
               HTMLfix now also can just add one missing
               attribute when the other still exists.
             - adjusted ANNOUNCE file
             - adjusted RESTRICTIONS file
             - fixed WMk subdir movement display

  Changes between 1.4.2 and 1.4.3:
      971129 - fixed libsubdir handling again
      971130 - now the new wml::des::navbar killer include file
               is finished and included as
               wml_include/des/navbar.src.
             - created new wml_contrib/ dir and placed
               my .vimrc's WML stuff into it

  Changes between 1.4.1 and 1.4.2:
      971124 - added support for the global variable GFONT_BASE
               to wml::des::gfont for redirecting images to a
               global place.  [Thanks to Carsten Braeutigam
               <carsten@nada.kth.se> for hint]
             - system variables like WML_GEN_HOSTNAME now can be
               overwritten by -D options. This is useful for the
               <info> tag from wml::std::info to get the
               EMail-address correct.  [Thanks to Carsten
               Braeutigam <carsten@nada.kth.se> for hint]
             - documented the "notag" attribute of wml::std::gfont 
               which was undocumented up to this time.
             - added two Q&A to wml_faq: How to combine <gfont>
               with <href> and how to combine <gfont> with
               <rollover>.  [Thanks to Carsten Braeutigam
               <carsten@nada.kth.se> for answering]
             - added "hint" attribute to <rollover> similar to
               the one from <href> and let the URL display if no
               such attribute is given.  [Thanks to Carsten
               Braeutigam <carsten@nada.kth.se> for idea]
      971127 - upgraded Bit::Vector from 4.2 to 5.0b1
             - upgraded to Slice 1.2.7
      971128 - slightly fixed Pass 8 (HTMLstrip) for inter-tag
               attribute stripping
      971129 - removed possible conflict inside
               wml::des::rollover with the new wml::des::navbar
               which is currently under development.
             - fixed wml::OBSOLETE::path and wml::sup::relpath
             - renamed wml::sup::relpath to wml::sup::path
             - added canonpath() function to new wml::sup::path

  Changes between 1.4.0 and 1.4.1:
      971124 - fixed Version-id update for wml_frontend/wmd.txt file
             - Corrected and Enhanced the INSTALL file
             - upgraded to iSelect 1.0.2: This makes WML again
               more portable, because this iSelect is the first
               one which is widly portable between major Unix
               derivates.

  Changes between 1.3.5 and 1.4.0:
      971114 - ** again cutted down wml_p2_mhc. This time all
               database and session stuff (which is not needed
               under WML) was completely removed.  This way the
               wml_p2_mhc is smaller, build time is reduced and
               the distribution contains fewer unneccessary
               files.
             - adjusted ANNOUNCE file for WML 1.4
      971115 - ** reversed option -s: now is stands for --safe
               instead of --speedup and the default now is to use
               the speedup hacks.  Because experience with WML
               1.3.x showed that this works great and reduces
               processing time dramatically
             - ** added wml_frontend/wmd.src which is the
               new WML Doc Browser
             - added wml_aux/iselect/* (iSelect 1.0.0) for
               the new WMd frontend.
             - fixed wml/wmk/wmd -V option (@libsubdir@ was missing)
             - make wmk and wmd -V option similar to wml -V
      971117 - upgraded to ePerl 2.2.8
      971118 - changed wml_p8_htmlstrip stripping, so ``#.*''
               is a comment and not only #[#!\n\s]*.* This was
               done in the past intentionally, but I forgot the
               reason, so we'll see ;_) [Thanks to Heiko
               Schlittermann <heiko@lotte.sax.de> for hint]
      971120 - added "target" attribute to <rollover> tag from
               wml::des::rollover [Thanks to Carsten Braeutigam
               <carsten@nada.kth.se> for hint]
      971123 - made Perl's warning option quiet ;_)
             - ** added long-awaited <protect
               [pass=SPEC]>..</protect> internal container tag
               which can be used to protect any data from
               processing by _any_ pass.  While protections can
               occur after any pass, the final output data is
               unprotect after pass 9 only.  [Thanks to Carsten
               Braeutigam <carsten@nada.kth.se> for forcing me to
               create it now]
             - fixed WMk handling when option -a is used [Thanks
               to Stephen van Egmond <svanegmo@truespectra.com>
               for hint]
  ___________________________________________________________________________

  Changes between 1.3.4 and 1.3.5:
      971112 - upgraded to Slice 1.2.6 which fixes a nasty
               slice term calculation bug.
      971113 - added <rect> container tag to draw rectangles
               to wml::std::box.
             - corrected shebang hint in WMK manpage and added
               shebang documentation to WML manpage
             - added automatic adding of mailto: and http://
               to wml::std::href for URLs.  [Thanks to David
               Mentre <David.Mentre@irisa.fr> for idea]
             - added a smaller generated-via-wml logo and added a
               size=N attribute to the <generated-via-wml> tag
               from wml::std::info.  [Thanks to David Mentre
               <David.Mentre@irisa.fr> for idea]
      971114 - added support for -V<N> where <N> is 1,2 or 3 to
               get detailed information about WML and Perl for
               bug reports.
             - adjusted VERSIONS.HISTORY and CREDITS file
             - fixed a few typos in INSTALL file
             - fixed autoconf stuff for determining the
               domainname via /etc/resolv.conf's "search" entry.
             - formally upgraded to IO-1.1802 (no changes)
             - renamed wml_sample/00README to wml_sample/README 
             - changed wml_sample/Makefile to also test
               speedup-mode

  Changes between 1.3.3 and 1.3.4:
      971108 - removed "All Rights reserved" from Copyright
               notice because this one and the usage of GPL are
               mutually exclusive.  
               [Thanks to Bruce Perens <bruce@debian.org> for hint]
      971110 - rewritten some regex stuff in HTMLfix (pass 7)
               which was ok for Perl 5.004 but too complicated
               for 5.003.  Perl 5.003 is buggy here.  [Thanks to
               Carsten G. Braeutigam <carsten@3point.net> for hint]
             - added a little more verbosity also for case where
               WML runs with option -s and -vN where N >= 2.
             - added an attribute named "target" to the <href>
               tag from wml::std::href to be able to use
               hyperlinks which load the new page into a
               particular targer frames
             - removed the pre-generated pages from wml_sample to
               be able to run a useful "make test" 

  Changes between 1.3.2 and 1.3.3:
      971107 - fixed wml_sample according to new wml::std::page
               which defines some slices, so UNDEF now is UNDEF2.
               [Thanks to David Mentre <David.Mentre@irisa.fr> for hint]
             - fixed inconsitency in wml debugging where the user
               was prompted to display the result even for pass 9.  
               [Thanks to David Mentre <David.Mentre@irisa.fr> for hint]
             - upgraded to ePerl 2.2.7
             - fixed some typos in wml_docs/*

  Changes between 1.3.1 and 1.3.2:
      971102 - fixed wrong xtable-example in wml_tutorial.pod
               [Thanks to Boris Wesslowski <bwess@gmx.de> for hint]
             - added new wml::std::case include file which
               provides HTML tag translation to upper or lower
               case. [Thanks to Boris Wesslowski <bwess@gmx.de>
               for idea]
             - again fixed some blank lines which were generated
               by wml::std::page.
      971103 - fixed ASubst (pass 6) case where file directly
               starts with the block delimiter. This was not
               recognized.
             - enhanced wml::std::case to correctly translate tag
               attributes and moved this now very complicated
               regex stuff into wml_p7_htmlfix as internal
               container tag <tagconv>. Now wml::std::case is
               just a high-level frontend.
             - slightly adjusted ANNOUNCE file

  Changes between 1.3.0 and 1.3.1:
      971019 - fixed entity in WML manualpage
      971022 - fixed <verbcode> in wml::std::typography
             - renamed <indent> from wml::std::typograhy
               to <pind> because of conflict with wml_p7_htmlfix
             - added num=0 to <indent> to remove leading
               whitespace box from a paragraph.
      971024 - removed wml_common/00README and added the
               missing information to COPYRIGHT.OTHERS file
             - upgraded to IO-1.1801
             - adjusted ANNOUNCE file
      971026 - fixed .wmlrc parsing: now quoted strings
               are handled exactly the way the Bourne-Shell does, i.e. 
               foo=bar quux   => "foo=bar", "quux"
               "foo=bar quux" => "foo=bar quux"
               foo="bar quux" => "foo=bar quux"
               where the last one is an important one, too.
             - changed imgdot height to 16 pixels (a little bit
               greater then 12) for <pind>/<ein> tags of
               wml::des::typography to get a better look
      971027 - added -A (accept) and -F (forget) options to WMk
             - added -r (norcfile) to WMk, too.
             - added -x (exec-prolog) and -X (exec-epilog) to WMk
             - fixed WMk to be able to process files with "::" in name
             - upgraded to ePerl 2.2.6

  Changes between 1.2.3 and 1.3.0:
      971006 - added nice <indent>..</indent> feature to
               wml_p7_htmlfix
             - now wml::std::page supports bgcolor=none which
               means "do not specifiy bgcolor=.. at all".
      971008 - fixed wml_p6_asubst: options on substitution
               strings were not parsed correctly
             - added WML_STDPAGE_XXX slices to wml::std::page
      971009 - created wml::des::imgbg to batch create background
               GIF images
      971010 - enhanced the -v1 processing time output: now 
               a table is displayed showing exact times of
               each pass
      971014 - added <toc_hN> tags to wml::std::toc
             - cleaned up the WMk and WML options description in
               manual page and usage pages and added correct
               support for GNU long-options.
             - added support for out-commenting tags to pass 7
               (htmlfix). Now one can comment out a tag by just
               adding a # to its name.
             - added a little useful and often needed feature to
               wml::std::typography. When adding "face_shortcuts"
               to the #use line, all ``face=helvetica'' strings
               are replaced by ``face="Arial,Helvetica"''.
             - added option -r/--norcfile to WMk and WML.
      971015 - !!! added the new *EXPERIMENTAL* -s option to WML and
               !!! WMk which stands for _SPEED_UP_. This option
               !!! enables the pre-compiling of the passes which can
               !!! speed-up the processing _dramatically_!!
             - fixed IPP (pass 1) for option -s handling
             - fixed aSubst (pass 6) for option -s handling
             - fixed HTMLfix (pass 7) for option -s handling
             - fixed HTMLstrip (pass 8) for option -s handling
             - upgraded to IO-1.18
  ___________________________________________________________________________

  Changes between 1.2.2 and 1.2.3:
      970914 - fixed whitespace handling in wml::des::imgdot
             - fixed <ifdef> in wml::std::tags
             - fixed wml::des::space which was broken because
               of braindead variable scoping in Meta-HTML. ARGL!
             - fixed WMk error message 
      971004 - upgraded to Getopt::Long 2.12
             - upgraded to WebLint 1.020
             - fixed <ifdef> tag in wml::std::tags support
               [Thanks to Heiko Schlittermann
               <heiko@lotte.sax.de> for hint]
             - fixed argument parsing on #include lines:
               arguments after a boolean argument were lost
             - now IPP supports a backslash in front of the
               $(xxx) syntax to prevent the interpolation of
               $(xxx). And when xxx is not defined, it
               now interpolates to the empty string. This way
               it now has the Bourne-Shell semantics.
             - added Bourne-Shell-like $(xxx:-yyy), $(xxx:=yyy),
               $(xxx:+yyy) and $(xxx:?[yyy]) syntax variants to
               IPP (Pass 1).
      971005 - fixed IPP usage display page
             - fixed WMk usage display page
             - now -DNAME~PATH is also supported on the commend
               line: here PATH is adjusted to the dir where the
               ``wml'' command was run from.  [Thanks to Heiko
               Schlittermann <heiko@lotte.sax.de> for hint]
             - added -D option to IPP to be able to also define
               IPP variables for the top-level/initial file
             - now WML also passes its defines (-D option) to IPP
               via IPPs new -D option
             - fixed ``-DROOT~.'' case where ROOT was set as
               "../" instead of ".." which is usually needed.
             - added a long-time missing feature to
               wml::des::imgdot: now when no filename base is
               specified but the variable IMGDOT_BASE is defined
               (usually via .wmlrc as -DIMGDOT_BASE~path) then
               this is one is taken instead of the source
               filename base. This provides a flexible way to
               shared imgdot images.
             - rewritten the output of wml_aux_htmlinfo:
               now a nice table is printed to STDOUT instead
               of the old and ugly indented list.
             - added "global" feature to wml::fmt::isolatin

  Changes between 1.2.1 and 1.2.2:
      970831 - added URL to ImageMagick homepage to wml::des::gfont
             - added hints about third-party programs to INSTALL file
             - added -DDEBUG=1 support to wml::des::imgdot; now
               when this options is activated the 1pt dot images
               always contain red color and are thus visible.
             - enhanced <spaced> container tag of
               wml::des::typography; now it can space the text
               per character (via &nbsp;) _and_ per line (via imgdots)!
             - created wml::OBSOLETE include file for defining
               old tagnames in addition to old files which are
               under wml::OBSOLETE::xxx.
      970901 - fixed wml::sys::all [Thanks to Stephen van Egmond
               <svanegmo@truespectra.com> for hint]
             - fixed std/info.src: <pageinfo> -> <info> as intended.
             - fixed and enhanced width-handling of
               wml::std::grid [Thanks to Stephen van Egmond
               <svanegmo@truespectra.com> for hint]
             - fixed wml_p8_htmlstrip case where a newlines is in
               front of a non-preformatted area
             - disabled #-style comments for Pass 4 (GNU m4)
               because this caused big problems with
               xxx="#rrggbb" and is a totally unnecessary feature
               because WML already provides #-style comment
               support [Thanks to Heiko Schlittermann
               <heiko@lotte.sax.de> for hint]
      970903 - Upgraded to ePerl 2.2.5
             - Upgraded to File-PathConvert-0.2
             - Upgraded to Image-Size-2.4
      970905 - Updated wml:des::gfont for new gFONT 1.0.0
             - Now wml::des::rollover automatically names the
               images if the "name" tag is not given

  Changes between 1.2.0 and 1.2.1:
      970825 - fixed typos in wml_tutorial.pod
             - removed some unnecessary stuff from Makefile.in of
               wml_p2_mhc/libutils
      970826 - added some links to the include files
             - added support for "-i wml::category::file" to IPP
               and WML.
             - overhauled the document wml_intro.pod
             - slightly changed ANNOUNCE and README files
      970828 - added IPP option -m to load mapping files
             - added the old obsolete WML 1.1.0 include files for
               backward compatibility
             - created wml_include/compat.map with entries for
               wml::OBSOLETE stuff
             - removed left-over debugging statements in IPP
             - removed wml_include/TODO file
             - created --enable-compat option for configure to
               enable the installation of wml::OBSOLETE stuff
             - upgraded to Slice 1.2.5
      970829 - created first version of a WML Make (wmk) in
               wml_make. This is high-level frontend to wml like
               xmkmf for imake is.
             - slightly fixed wml_docs/wml_tutorial.pod
             - merged wml_main and wml_make into wml_frontend
             - moved wml_aux_XXX to wml_aux/XXX
             - moved sample/ to wml_sample/
             - fixed shebang support of wml
             - added "make test" to wml_sample/Makefile
             - again added config.guess and config.sub to etc/
             - now the built environment is determined and
               wml/wmk -V now display this information
             - created PORTING file
             - added dummy "test" target to top-level Makefile.in
             - updated VERSION.HISTORY file for all versions
             - added a new <spaced>..</spaced> container tag to
               wml::des::typography for spaced text (german:
               "gesperrter Text")
             - added first try for a WML FAQ as wml_docs/wml_faq.pod
             - now htmlfix also recognizes xxx=+dddd attributes
             - fixed wml::imp::generic
             - fixed wml::des::typography
             - fixed again wml_common/gd/ for "distclean" target
             - added info about long-options to wmk
      970830 - fixed OBSOLETE.map (.src -> .wml): [Thanks to
               Heiko Schlittermann <heiko@lotte.sax.de> for hint]
             - make MakeMaker stuff under wml_common more quiet
             - added the built locations to -V option of WML.
             - added WML_LOC_XXX variables which hold the built
               locations
             - added <generated-via-wml> tag to wml::std::info
               which inserts the generated-via-wml.gif file as a
               button.
             - fixed determination of domainname/hostname  in GNU
               autoconf.

  Changes between 1.1.0 and 1.2.0:
      970819 - removed wml_aux_gfont because it cannot
               be configured cleanly from within WML distribution
               (its libfiles don't fit well for installation and
               runtime) and this program alone is not sufficient.
               So when one need TeX, one can also install this
               little programm externally.
      970820 - added REQUIRES lines to include manpages
             - put javascript container tag into wml::std::tags
               and removed wml::app::javascript
      970821 - speed up the case where ``wml'' receives an empty
               input file: Now this implies -p9, i.e.  only the
               output pass is used. 
             - added one single but really essential feature to
               Pass 2 (Meta-HTML): The asterisk from tags
               (``<tag* ...>'' and ``</tag*>'') are removed. This
               way you can easily overwrite standard HTML tags im
               Meta-HTML but you are still able to use the
               standard variant directly within the definition by
               adding an asterisk.
             - fixed Pass 8 / htmlstrip: It removed the final
               newline in a file also which looks ugly
             - fixed --with-openworld option description in GNU
               autoconf [Thanks to Heiko Schlittermann
               <heiko@lotte.sax.de> for hint]
             - made a kludge to wml_common/gd/libgd/Makefile.PL
               to workaround an existing MakeMaker bug where the
               Makefile is not removed on "distclean".   [Thanks
               to Heiko Schlittermann <heiko@lotte.sax.de> for
               hint]
             - changed the "use lib" stuff in wml::sys::boot to a
               BEGIN/@INC variant to avoid conflicts in Perl's
               lib.pm 
             - upgraded to ePerl 2.2.3
             - removed obsolete wml::des::imgsize. His job
               is already done by Pass 7 (htmlfix)
      970822 - enhanced wml::des::grid, now it has no longer real
               restriction on which data can be put into cells.
      970823 - replaced wml::std::headfoot by a more powerful and
               clean wml::std::page include file which provides a
               singe <page> tag instead of the old and ugly
               <header>/<footer> tags.
             - renamed wml::std::url to wml::std::href because it
               does not provide a <url> tag; it provides a <href>
               tag.
             - removed wml::msc::m4 and put the stuff from this
               file into wml::std::tags.
             - removed wml::std::divert and put the stuff from
               this file into wml::std::tags.
             - renamed wml::msc::path to wml::msc::relpath and
               its function from from_to() to relpath().
             - renamed wml::std::stack to wml::msc::stack because
               this is also just a snippet
             - removed wml::std::symbol and put the stuff into
               wml::std::tags
      970824 - overhauled more include files
             - created wml_docs/ dir with wml_intro.pod and
               wml_tutorial.pod files
             - fixed the subdir movement strings of wml_p4_gm4
               and wml_common
             - moved some POD stuff from wml_main/wml.src to the
               new wml_docs/wml_intro.pod
             - again stripped down wml_p2_mhc (~100KB)
             - added new feature to IPP (Pass 1): Now one can set
               variables after #include/#use which are
               interpolated via $(..). And there are now to
               special string: __FILE__ and __LINE__ which are
               similar to CPP.
             - made a workaround for the "file" POD problem of
               IPP manualpage.
      970825 - fixed again htmlstrip (Pass 8)
             - written wml_tutorial.pod

  Changes between 1.0.4 and 1.1.0:
      970817 - Fixed examples in wml(1) manpage [Thanks to Heiko
               Schlittermann <heiko@lotte.sax.de> for hint]
             - fixed long-standing problem with ``-DXXX=YYYY''
               (didn't worked in the past) vs.  ``-D XXXX=YYYY''
               (always worked).  The problem lies in
               "$Getopt::Long::getopt_compat" defaulting to 1 in
               Getopt::Long module :-(.  [Thanks to Heiko
               Schlittermann <heiko@lotte.sax.de> for hint]
      970818 - upgraded to Getopt::Long 2.10
             - changed "perl_private" subdir in libdir
               to just "perl" because looks ugly
             - added a remove command to wml_common/Makefile.in
               for manual stuff which gets created by the
               MakeMaker install targets
             - added some descriptive info to install target to
               be able to easier follow an installation.
             - added fallback to "more" for $ENV{'PAGER'} in
               wml_main/wml.src
             - fixed recently introduced problem with Getopt::Long
               installation [Thanks to Heiko Schlittermann
               <heiko@lotte.sax.de> for hint]
             - changed --with-closedworld to --with-openworld and
               reversed meaning: Now WML per default installs its
               own private copies of Perl modules.  This is more
               safe. Now when one really wants to use existing
               versions he has to specify this option explicitly.
             - ** removed a lot of unneccessary GNU autoconf stuff **
             - made builds under wml_p2_mhc and wml_p4_mhc more quiet 
             - big cleanup wml_common/Makefile.in
             - renamed PROBLEMS file to RESTRICTIONS
             - merged ANNOUNCE and ANNOUNCE.ADDR files
             - fixed nasty bug in Divert which caused recursion
               warnings and missing output where really no
               recursion was [Thanks to Heiko Schlittermann
               <heiko@lotte.sax.de> for hint]
      970819 - upgraded to SLICE 1.2.4: now WML also accepts
               empty input files which is nice when it used in a
               pipe where it should not complain about these.
             - fixed a few include files and generally replaced
               #include with the more compact and more readable
               #use variant
             - created a useful wml::app::toc whic automatically
               generates a table of contents out of <Hn>...</Hn>
               tags.  [Thanks to Heiko Schlittermann
               <heiko@lotte.sax.de> for forcing me to think about
               this idea]
  ___________________________________________________________________________

  Changes between 1.0.3 and 1.0.4:
      970814 - fixed wml_main option -O which was incorrectly
               passed through.
             - removed "perl -c" check in
               wml_p9_slice/Makefile.in which caused problems
               under some installations
             - now wml correctly removes its temporary files 
               when an error occurs in a pass.
             - make container body end delimiter in wml::fmt::*
               more unique to avoid conflicts with body contents.
             - added <podfile> to wml::fmt::pod and <verbfile>
               to wml::fmt::verb
      970815 - fixed the private perl5 install paths, the "wml"
               subdir is now correctly added to "libdir" when it
               does not already contain a substring "wml".
               [Thanks to Henrik Theiling
               <theiling@CoLi.Uni-SB.DE> for hint]
             - fixed demo.wml from the webpages and added
               it to the distribution under sample/
             - changed "my" construct in wml_p9_slice which
               caused problems under Perl 5.003 because only Perl
               5.004 allows "my" inside "foreach" [Thanks to Rene
               Pijlman <R.W.Pijlman@inter.nl.ne> for hint]
             - slightly changed syntax of wml_p6_asubst to avoid
               conflicts with plain text [Thanks to Henrik
               Theiling <theiling@CoLi.Uni-SB.DE> for hint]
             - enhanced wml::fmt::isolatin to be really more
               complete, i.e. it now converts most of the ISO
               Latin 1 characters.  [Thanks to Henrik Theiling
               <theiling@CoLi.Uni-SB.DE> for code]
             - renamed wml::fmt::{pod,sdf,text} to
               wml::imp::{pod,sdf,text}
             - renamed wml::fmt::verb to wml::fmt::verbatim
               and made it more simple by using asubst
             - added wml_aux_wwwtable and corresponding
               wml::imp::wwwtable for really nice HTML table
               generation via expert syntax
             - fixed distclean target in wml_p9_slice/Makefile.in
      970816 - fixed typo in wml::std::url [Thanks to Henrik
               Theiling <theiling@CoLi.Uni-SB.DE> for hint]
             - added MANIFEST file and correspodning make
               creation target for better patchfile generation
             - made the installation prefix really variabel so
               one can use "make prefix=.." to override it.
               [Thanks to Heiko Schlittermann
               <heiko@os.inf.tu-dresden.de> for idea]
             - cleaned up configure.in
             - removed strip commands from Makefile.in while
               addding -s to INSTALL_PROGRAM and replacing the
               script installations with INSTALL_SCRIPT calls.
               This fixes problems for the FreeBSD ports.
             - added "#use type::class::item" to wml_p1_ipp
             - removed some more unnecessary files ;_)
             - replaced complete slice distribution with
               a stand-alone variant and upgraded to Slice 1.2.3
             - fixed wml_common/getoptplong/Makefile.PL
             - fixed wml_common/io/Makefile.PL
      970817 - again overhauled wml_aux_htmlinfo

  Changes between 1.0.2 and 1.0.3:
      970814 - *** fixed a bug in htmlstrip recently introduced which
               caused destroyed generated markup code!! ARGL! ***
             - upgraded to weblint 1.019
             - fixed problem in wml_main: using -p12345678 to see
               the result on stdout without processing by pass 9
               (slice) was broken
             - added -O<LEVEL> option to htmlstrip for optimizing
               (regarding byte length) the HTML code.  Also added
               this option to wml_main for passing to to
               htmlstip.
             - Upgraded to ePerl 2.2.2
             - added info to wml_aux_htmlinfo about which number
               of imaga references and how much bytes of data or
               really unique (because only that counts because
               browsers don't load more then once). So -E htmlinfo 
               now is more useful.
             - fixed wml_include/std/fileinfo.src
             - fixed wml::fmt and wml::imp include files
             - added sample to wml_aux_txt2html/txt2html.txt

  Changes between 1.0.1 and 1.0.2:
      970812 - rewritten htmlstrip: now it works
               also with multiply tags on a line and
               additionally strips more whitespaces
             - fixed MANIFEST of wml_common/gd/ which
               was broken in 1.0.1 due to remove of io.h
      970814 - fixed wml_common/gd/libgd/gd.h which
               still wants io.h
               [Thanks to Henrik Theiling 
                <theiling@coli.uni-sb.de> for hint]
             - upgraded to Slice 1.2.2 which introduces
               the %!slice construct. This makes WML
               even more flexible ;_)
               [Thanks to Andrew Pimlott 
                <pimlott@abel.MATH.HARVARD.EDU> for idea]
             - created VERSION.HISTORY file

  Changes between 1.0.0 and 1.0.1:
      970808 - fixed libdir adjustment in configure.in
             - added --with-closedworld option to configure
               to be able to force WML to install all Perl
               modules privately.
             - added --with-perl=PATH option to configure
               to be able to force the use of a specific perl
             - added --with-perl=PATH option to configure
               of wml_p9_slice
             - replaced -f by -x in configure for perl test
             - fixed malloc.h problem in wml_common/gd/libgd/
      970811 - upgraded to SLICE 1.2.0: 
               THIS SPEEDS UP WML PASS 9 _DRAMATICALLY_!
               Now the processing to for pass 9 is no longer directly
               proportional to the length of the written files.
             - fixed reference to Bit::Vector 4.0 in configure
             - fixed install target of wml_common/Makefile.in
  ___________________________________________________________________________

  Changes between 1.0b18 and 1.0.0:
      970714 - fixed a problem with wml_include/std/headfoot.wml
             - upgraded to Bit-Vector 4.2
      970727 - added package IO-1.15 for Perl 5.003 systems
             - slightly speeded up wml_p6_asubst
             - upgraded to gFONT 1.0b5
             - upgraded to ePerl 2.2.1
             - added wml::des::rollover for RollOver-style
               images which can be used like img-tags
      970807 - enhanced htmlfix to do more HTML fixups
             - removed testdir t/, because we currently
               have no way to do a real "make test" 
               before "make install". The tests need
               WML to be already installed.
             - created wml::fmt::sdf for the Simple
               Document Format (SDF) embedding 
             - fixed wml::fmt::pod for pod2html from Perl 5.004_02

  Changes between 1.0b17 and 1.0b18:
      970623 - upgraded newvers
             - upgraded to ePerl 2.2b8
             - upgraded to gFONT 1.0b4
             - fixed a problem in wml_include/Makefile.in
               under Solaris.
             - fixed configure under wml_p9_slice
               because of removed lib/ dir.
             - upgraded to linklint 1.35
             - upgraded to txt2html 1.24

  Changes between 1.0b16 and 1.0b17:
      970520 - upgraded to gFONT 1.0b3
             - upgraded to SLICE 1.1.1
             - fixed a problem a correct substituted
               generating wml.1

  Changes between 1.0b15 and 1.0b16:
      970428 - added wml_aux_gfont
      970429 - added -m 755 to INSTALL_PROGRAM define
             - added warning for non-GCC compilation
               to configure
             - changed wml::des::gfont to use 
               new private wml_aux_gfont
      970502 - replaced wml_aux_webxref with 
               enhanced successor wml_aux_linklint

  Changes between 1.0b14 and 1.0b15:
      970423 - added wml_aux_webxref
             - adjusted weblintrc
             - fixed manpage of wml
             - upgraded to Image-Size-2.3 and
               fixed wml_common/00README
             - created Test::Harness based test suite
               and a first test for plain throughput
             - replaced destroyed COPYING file with
               a fresh one from prep.ai.mit.edu
      970427 - upgraded to final ePerl 2.1.0 release
               and fixed the changed calling options
               in wml

  Changes between 1.0b13 and 1.0b14:
      970423 - changed wml manpage slightly
               to make pass4 and pass5 more distinct
             - added -t option to wml which sets
               the mtime of outputfile(s) to mtime
               of inputfiles
             - fixed outputfile epilog/time handling
             - now -v can get an optional numeric argument
             - now -v means only -v1 and this does only
               display the total processing time
             - upgraded to slice-1.1.0 which now uses
               Bit::Vector 4.0 instead of Set::IntegerFast 3.2

  Changes between 1.0b12 and 1.0b13:
      970417 - created a new wml::imp::remote
             - created unfinished wml::std::img
             - now wml also processes options
               from a pseudo-shebang line. Use this
               for instance to remember the output options
               like
                  #!wml -o... -o...
               and compile the file just via
                  $ wml file.wml
             - removed the demo/ subdir from the
               distribution. It is intended for
               the webpages or a seperate distribution
             - removed wml_p9_slice/lib/ because
               it is not used
             - removed the duplicated COPYING files
      970422 - fixed a few include files
             - added preserve/restore facility to wml::std::tags
      970423 - fixed preserve/restore tags
             - rewritten wml::des::grid with preserve/restore
             - fixed wml_include/Makefile and wml itself
               for temporary files: they are now removed
               and named more unique. 
             - upgraded to ePerl 2.1b6
             - now -v gets passed to some filter passes
             - now htmlfix gives out the total amount
               of bytes the images accumulate on a page
               on option -v.
             - added weblint 1.017 to the distribution
               as wml_aux_weblint. This is inteded as
               a manually used epilog filter
             - created a wml_aux_htmlinfo which
               summarizes the content of a webpage
             - added -E option to wml for running epilogs

  Changes between 1.0b11 and 1.0b12:
      970410 - created new include cathegory "imp"
             - moved wml::des::csmap to wml::imp::csmap
             - created a new wml::imp::view
      970413 - fixed wml::des::typography
      970416 - fixed a few include files
             - documented more include files

  Changes between 1.0b10 and 1.0b11:
      970409 - added wml_aux_map2html
             - removed the list of include files in wml.src
               and added a new updated list to wml_include/all.src
             - renamed msc -> app and old sup -> msc
             - again added a lot of stuff to include files
             - added all.wml files for all cathegories
             - fixed "make install": the aux-files were missing
             - renamed eg -> demo and added the complete
               installation of this dir to "make install"
             - removed htmltoc and toc.src because
               of a principle restriction of WML this
               cannot be used in a really useful way :-(
             - changed PROBLEMS file
      970410 - fixed a quoting problem for -D option
               and put a warning in the wml manpage
               then -DFOO=BAR is not allowed due to
               restrictions in Getopt::Long. We always
               have to use -D FOO=BAR (note the blank)
             - created the first contents for the demo/ area
             - now wml can also read from STDIN, i.e.
               it can now be used as real Unix filter
             - now the inputfile can also be completely
               missing which also means "read from stdin"
               but additionally forces quiet mode. This
               is useful for pipes ..| wml |...

  Changes between 1.0b9 and 1.0b10:
      970408 - fixed ANNOUNCE file
             - added more info to INSTALL file
             - now pod2man tempfiles while building are removed
             - added file existence tests to pass 4-6
             - added the long-missing feature of pass 7:
               htmlfix now does what it was intended to do.  It automatically
               adds WIDTH/HEIGHT and ALT attributes to IMG tags.
             - created a nice pod.wml which convertes between
               POD and HTML via pod2html
             - created a nice text.wml which convertes between
               TXT and HTML via txt2html
      970409 - again reorganized wml_include/. Now
               the things are sorted into subdirs
             - now the include file sys/boot.wml is
               automatically pre-loaded before any others
             - reworked wml::des::grid to use a divertion
               for cells (this way you can use any contents)
             - created a nice wml::fmt::verb include file
             - fixed the -i '<...>' option for wml
             - fixed a lot of stuff in the include files
             - added wml_aux_txt2html
             - added wml_aux_htmltoc
             - created a wml::std::toc which used
               wml_aux_htmltoc

  Changes between 1.0b8 and 1.0b9:
      970408 - greatly optimized wml_p5_divert
               which had a really horrible performance
               in 1.2b8 (big files need 10minutes and more
               to process, now only a few seconds)
             - added "-q" (quiet) option to wml which
               prevents the prop from being displayed
             - added "-i file" option to be able to pre-load
               include or template ;-) files.
             - allowed "_" as an additional character
               for Divertion names in wml_p5_divert
             - fixed a nasty bug in wml_8_htmlstrip when
               nested preserved blocks occured.
             - changed the make scheme for the *.src
               files. Now they are no longer substituted
               by configure. Instead a sed is done.
             - added the functionality to discard
               divertions and to overwrite a divertion.
               This is actually the last missing feature
               to allow real templates!

  Changes between 1.0b7 and 1.0b8:
      970406 - finally introduced the first missing pass: GNU m4.
               (intended for general low-level macro processing)
             - finally introduced the second missing pass: divert
               (intended for special divertion filtering)
             - renamed the others passes to be in order
      970407 - created a nice divert.wml include file
             - added information about include files
               to wml's manpage
             - created the all.wml include file which
               just includes all others
             - added Ren'e Seindal to COPYRIGHT.OTHER

  Changes between 1.0b6 and 1.0b7:
      970403 - changed a few manpages
             - added Image::Size and GD to wml_common/ because 
               these are needed inside some include files.
             - added include/bootstrap.wml which does the needed 
               "use libs ..." for the privately installed Perl modules
             - completed COPYRIGHT.OTHER file
             - fixed PROBLEMS file
             - added Disclaimer to wml -V
      970404 - renamed wml to wml_main
             - renamed include to wml_include
               and created a Makefile for this dir.
             - now all include files contain a POD section which 
               gets installed as man3/wml::name.3
             - fixed the typo "independend" -> "independent" 
             - created a CREDITS file
             - made "make" in wml_p2_mhc/ more quiet
      970405 - upgraded to ePerl 2.1b5 and fixed the internals of 
               "wml" which now leads to a stop on an ePerl error 
               while processing.
      970406 - documented the first set of include files
             - renamed typographic.wml to typography.wml
             - renamed VERSION.txt to just VERSION

  Changes between 1.0b5 and 1.0b6:
      970403 - upgraded to ePerl 2.1b4 which
               fixed the problem that GNu autoconf
               was needed for compilation (autoheader)
             - removed obsolete doc/Makefile which
               again appeared due to old configure 
             - upgraded etc/newvers to 2.1.1 which
               fixes "make new-betalevel"
             - removed the old silly contents of eg/
               and replaced it with the demo.wml
               example of the webpages
             - documented missing WML_XXX variables
               and documented the WMLOPTS and .wmlrc
               features

  Changes between 1.0b4 and 1.0b5:
      970402 - added wml_p2_mhc/doc/metahtml.txt which
               gets installed as man/cat1/wml_p2_mhc.1
             - added first official ANNOUNCE file
             - fixed pod2html call, because new pod2html
               from Perl 5.003_96 does write to stdout
               per default.
             - major documentation fixup and changes
             - removed the obsolete doc/ directory
             - fixed "make distclean" in wml/

  Changes between 1.0b3 and 1.0b4:
      970402 - upgraded to Slice 1.0.7 which
               fixes a configure problem under SunOS
             - upgraded to ePerl  2.1b3 which
               fixes a problem with Perl 5.003_96
             - fixed "make distclean" for doc/

  Changes between 1.0b2 and 1.0b3:
      970330 - removed a obsolete #include in
               wml_p2_mhc/config.h.in for Solaris
             - now when Pass 7 is not the final pass
               (e.g. you say -p12) the output gets
               written to stdout
      970331 - added WML_XXX variables
             - changed INPUTFILE to WML_INPUTFILE
             - added WML_VERSION, wml -V option and
               Version string to wml.pod
             - removed a lot of not used files
               from ePerl, Slice and MHC

  Changes between 1.0b1 and 1.0b2:
      970326 - upgraded to ePerl 2.1b1
      970327 - upgraded gfont.wml 
      970330 - upgraded to ePerl 2.1b2
             - updated and fixed includes/javascript.wml

  Changes between 1.0b0 and 1.0b1:
      970323 - removed include/trail/
             - updated README
             - fixed "make distclean" in subdirs

  Changes between 0.5.9 and 1.0b0:
      970323 - updated ePerl to version 2.1b0
             - updated NEWVERS to version 2.1.0
               and added a call to configure
             - changed VERSION.pl to VERSION.txt

  Changes between 0.5.0 and 0.5.9:
      970221 - created first real distribution
         : 


�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/BUGREPORT���������������������������������������������������������������������������0000644�0001750�0001750�00000002406�10343637577�012707� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  B U G  R E P O R T
  ==================

  When you have ideas, suggestions or bugs you want to report to the WML
  author, then you have the following three options:

  1. Use the WML Bug Reporting Tool `wmb'

     This is the preferred way of submitting a bug report, because it
     automatically includes your platform parameters in the message which 90%
     of the time are really essential to solve the problem. The `wmb' tool
     uses a mail user agent (MUA) like `elm', `mutt', `pine' or `mail' or the
     mail transfer agent (MTA) `sendmail' for delivering the bug report to
     rse@engelschall.com. If your system has no E-Mail connection to the
     Internet or `wmb' is unable to find a suitable MUA, you have to use the
     alternative ways described under 2.) and 3.).

  2. Directly write an E-Mail to sw-wml@engelschall.com
     
     This is the last chance ;_) Go to a system from where you can send E-Mail
     and manually send one directly to sw-wml@engelschall.com. Please include
     at least the output of `wml -V3'. 
     
  Independent what way you choose, the result should be an E-Mail to
  sw-wml@engelschall.com, containing as much information and details so the
  WML author and maintainer is able to successfully investigate in your
  problem.

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/���������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524776�013215� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/wml_tutorial.pod�����������������������������������������������������������0000644�0001750�0001750�00000046120�10343637560�016441� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  WML Tutorial
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##

=head1 NAME

WML Tutorial - Understanding WML step-by-step

=head1 DESCRIPTION

This tutorial gives you a step-by-step introduction to the features of WML,
separated into tiny lessons. Each lesson shows one particular aspect or
feature of WML.  The order of lessons go from easy and trivial to hard and
complex.

=head1 IMPLICIT MARKUP PROCESSING

=head2 LESSON: Plain Data Throughput

In this lesson we first learn that WML is 95% of the time transparent to its
input, i.e. we can pass through any data without corruption.

Input:

 1| foo
 2| <bar>
 3| quux

Output:

 1| foo
 2| <bar>
 3| quux

This is because per default there are neither definitions for symbols C<foo>
or C<quux> nor a defined HTML tag named C<E<lt>barE<gt>>. And because there
are no unnecessary whitespaces in this example, the input cannot be stripped
in any case.

=head2 LESSON: Protected Markup Code

Sometimes situations can occur where some of your markup code or page contents
conflicts with WML due to overlapping tagnames, etc. Here WML interprets some
stuff you actually don't want to be interpreted. 

Input:

 1| foo: foo.c
 2|    $(CC) -o foo foo.c

Output:

 1| foo: foo.c
 2|     -o foo foo.c

Here the `C<$(CC)>' was expanded to an empty string because IPP uses the same
syntax for variable interpolation like F<make>. To avoid this just surround
the critical part with the WML-internal C<E<lt>protectE<gt>> container tag.

Input:

 1| foo: foo.c
 2|    <protect>$(CC)</protect> -o foo foo.c

Output:

 1| foo: foo.c
 2|    $(CC) -o foo foo.c

=head2 LESSON: Stripped-Down Markup Code

Now let's try an example which has unnecessary whitespaces. Be careful,
`unnecessary' here means they can be stripped as long as the resulting
Webpage displays the same in a Webbrowser as the original.

Input:

 1| <body>
 2| 
 3| <img src = "file.gif"    alt="  test  " >
 4| <pre>
 5|
 6|     Preformatted          Text  
 7| </pre>
 8|     Not    Preformatted   Text
 9| </body>

Output:

 1| <body>
 2| <img src="file.gif" alt=" test ">
 4| <pre>
 5|
 6|     Preformatted          Text  
 7| </pre>
 8|     Not Preformatted Text
 9| </body>

Here we see that line 2 is completely removed because empty lines have no
effect in HTML. The whitespaces between the attribute C<src> and its value are
removed, too. And all double whitespaces are replaced by a single whitespace
character. But not inside preformatted areas.

=head2 LESSON: Fixed And Adjusted Markup Code

Now assume that we have an F<image.gif> file containing a GIF image with a
size of 500x400 pixels and the following input page:

 1| <body>
 2| <center>
 3| <font color=336699>Headline:</font><br>
 4| <img src="image.gif">
 5| </center>
 6| </body>

Although this is valid HTML code, WML can enhance it to make it more portable,
speed up it rendering in the Webbrowser and make I<Lynx> users more happy. So
WML recognizes the C<E<lt>imgE<gt>> tag and automatically adds missing
information and replaces obsolete tags with up-to-date variants:

 1| <body>
 2| <div align=center>
 3| <font color="#336699">Headline:</font><br>
 4| <img src="image.gif" alt="" width="500" height="400">
 5| </div>
 6| </body>

As you can see, WML first replaced the proprietary C<E<lt>centerE<gt>> tag
with the HTML 3.2 pedant C<E<lt>div align=centerE<gt>>, second it fixed the
C<color> attribute of C<E<lt>fontE<gt>>. And third it added missing C<alt> and
C<width>/C<height> attributes.

=head1 STRUCTURING THE MARKUP CODE

=head2 LESSON: Using Include Files 

One of the most useful features of WML is the ability to move commonly used
stuff into include files which can be selectively read in at later steps.

Assume we have an include file F<bar.wml>...

 1| bar
 2| The value of bar is: $(bar:-unknown)

...and the following input file: 

 1| foo
 3| #include 'bar.wml' bar="FooBar"
 2| #include 'bar.wml'
 5| quux

Then the output is:

 1| foo
 2| bar
 3| The value of bar is: Foobar
 4| bar
 5| The value of bar is: unknown
 6| quux

As you can see, the C<#include> directive is replaced by the contents of the
corresponding file. And this included contents can contain variables which are
interpolated when they are defined, inclusive default values.

There is also a way to create simple constructs similar to an if-then-else
just by using variable interpolation:

  1| The value of bar is $(bar:+set)$(bar:*unset).

Here the `C<$(bar:+set)$(bar:*unset)>' construct emulates the following semantics:

  if (isdefined(bar))
      expandto("set")
  if (not isdefined(bar))
      expandto("unset")

=head2 LESSON: Concatenating Lines

Although HTML usually does not care about whitespaces and newlines, sometimes
it is very frustrating to create preformatted areas or write own tags (see
later) without the ability to spread the code over more than one line while
it should be actually one single line. For this a lot of languages use a line
concatenation/continuation character `C<\>', as does WML.

Input:

 1| foo\
 2|    bar \
 3| quux

Output:

 1| foobar quux

The line concatenation strips whitespaces from the begin of concatenated lines
but preserves whitespaces at the end of them, i.e. you can use leading
whitespaces for structuring your input nicely but still use appended
whitespaces for real ones.

=head2 LESSON: Diverting To Locations

One of the most powerful features of WML is the ability to
I<divert> data at any point to I<locations> defined at any other point.

Input:

 1| {#BAR#:this is:##}
 2| foo
 3| {#BAR#}
 4| quux
 5| {#BAR#: bar:##}
 6| foobar
 7| {#BAR#}

Output:

 1| foo
 2| this is bar
 3| quux
 4| foobar
 5| this is bar

Here in line 3 the location C<BAR> is already dumped, but filled at lines 1
and 5.  And as you can see a location can be dumped at any point and even more
than once. And you can accumulate the contents for a location by subsequent
fills (line 1 and 5). This works because in WML first all locations are filled
in a first pass and then dumped in a second pass.

With the use of the high-level tags from F<wml::std::tags> we also could write
the example above in a little bit more human readable way:

 1| #use wml::std::tags
 2| <divert BAR>this is</divert>
 3| foo
 4| <dump BAR>
 5| quux
 6| <divert BAR> bar</divert>
 7| foobar
 8| <dump BAR>

=head2 LESSON: Defining Output Slices

Often one needs more than one output file. Usually although 90% of the
contents is the same, one needs a way to select the remaining 10%. WML's
approach here is to write these 10% directly in the input file but separate
the variants by defining I<slices> which later can be used to create the
different output files.

 1| <html>
 2| <head>
 3| <title>[EN:Titleline:][DE:Titelzeile:]</title>
 4| </head>
 5| <body>
 6| <h1>[EN:Headerline:][DE:Ueberschrift:]</h1>
 7| </body>
 8| </html>

Now assume the above page is in file F<index.wml>, then the command

 $ wml -o UNDEF+EN:index.html.en \
       -o UNDEF+DE:index.html.de index.wml

generates the output file C<index.html.en> containing the union of all
undefined areas and the slices `C<EN>'...

 1| <html>
 2| <head>
 3| <title>Titleline</title>
 4| </head>
 5| <body>
 6| <h1>Headerline</h1>
 7| </body>
 8| </html>

...and the output file C<index.html.de> containing the union of all undefined
areas and the slices `C<DE>':

 1| <html>
 2| <head>
 3| <title>Titelzeile</title>
 4| </head>
 5| <body>
 6| <h1>Ueberschrift</h1>
 7| </body>
 8| </html>

=head1 FORMATTING

=head2 LESSON: Area Substitution

WML provides an area substitution feature which works by specifying the begin
and end of the area and inserting some Perl substitution and translation
commands.

Input:

 1| foo
 2| {: [[s/foo/bar/g]] [[s/quux/foobar/g]] [[tr/[a-z]/[A-Z]/]]
 3| this is foo and quux.
 4| :}
 5| quux

Output:

 1| foo
 2| THIS IS BAR AND FOOBAR.
 3| quux

Because this seems useless, we go further and show an example of the
C<E<lt>isolatinE<gt>> and C<E<lt>urlE<gt>> container tags from
F<wml::fmt::isolatin> and F<wml::fmt::url> which are programmed this way.

Input:

 1| #use wml::fmt::isolatin
 2| #use wml::fmt::url
 3| <isolatin><url>
 4| Some umlauts `öäüÖÄß' and
 5| a hyperlink http://foo.bar.com/
 6| </url></isolatin>

Output:

 1| Some umlauts `&ouml;&auml;&uuml;&Ouml;&Auml;&szlig;' and
 2| a hyperlink <a href="http://foo.bar.com/">http://foo.bar.com/</a>

=head2 LESSON: Text Formatting

HTML sucks when it comes to write more than one paragraph of text.  So WML
provides nice ways to format an area of input via other (externally available)
markup language processors. Here is an example which used two embedded areas,
the first one is written in I<Plain Old Document> (POD) format, second one is
written in I<Simple Document Format> (SDF).

Input:

  1| #use wml::fmt::pod
  2| #use wml::fmt::sdf
  3| <html>
  4| <pod notypo>
  5| =head1 Headline1
  6| 
  7| Foo
  8| 
  9| =head2 Headline1.1
 10| 
 11| Bar
 12| </pod>
 13| 
 14| <sdf notypo>
 15| H1: Headline1
 16| 
 17| Foo
 18| 
 19| H2: Headline 1.1
 20| 
 21| Bar
 22|   * Baz
 23|     - Foobar
 24|     - Quux 
 25|   * Foo
 26| </sdf>
 27| </html>

Output:

  1| <html>
  2| <P>
  3| <H1><A NAME="Headline1">Headline1
  4| </A></H1>
  5| Foo
  6| <P>
  7| <H2><A NAME="Headline1_1">Headline1.1
  8| </A></H2>
  9| Bar
 10| <P>
 11| <H1><A NAME="Headline1">1. Headline1</A></H1>
 12| <P>Foo</P>
 13| <H2><A NAME="Headline 1.1">1.1. Headline 1.1</A></H2>
 14| <P>Bar</P>
 15| <UL>
 16| <LI>Baz<UL>
 17| <LI>Foobar
 18| <LI>Quux</UL>
 19| <LI>Foo</UL>
 20| </html>

=head2 LESSON: Table Formatting

Another point where the HTML markup code is unproductive and ugly is when it
comes to write some C<E<lt>tableE<gt>> structures. Here WML provides two new
container tags which make your live easier:

=over 4

=item B<E<lt>gridE<gt>>

The goal of this container tag is to provide a way to specify tables the same
way you have it in your mind, i.e.  as a 2-dimensional grid. So, a grid is
created by specifying a grid-layout and then fill its cells. Additionally the
C<E<lt>gridE<gt>> container tag provides a nice feature for specifying the cell
alignments.

Input:

  1| #use wml::std::grid
  2| <grid layout=2x3 align=lr valign=tbb border=1>
  3|   <cell>Header 1</cell> <cell>Header 2</cell>
  4|   <cell>Cell-A</cell>   <cell>Cell-B</cell>
  5|   <cell>Cell-C</cell>   <cell>Cell-D</cell>
  6| </grid>

Output:

  1| <table border="1" cellspacing="0" cellpadding="0">
  2|   <tr>
  3|     <td align=left valign=top>Header 1</td>
  4|     <td align=right valign=top>Header 2</td>
  5|   </tr>
  6|   <tr>
  7|     <td align=left valign=bottom>Cell-A</td>
  8|     <td align=right valign=bottom>Cell-B</td>
  9|   </tr>
 10|   <tr>
 11|     <td align=left valign=bottom>Cell-C</td>
 12|     <td align=right valign=bottom>Cell-D</td>
 13|   </tr>
 14| </table>

=item B<E<lt>xtableE<gt>>

This is the extended C<E<lt>tableE<gt>> container tag which syntax is provided
by the external F<wml_aux_freetable> program. Its goal is to provide a compact
syntax for specifying a table. Again the same example:

Input:

  1| #use wml::fmt::xtable
  2| <xtable border=1>
  3|   (*, 1) align=left
  4|   (*, 2) align=right
  5|   (1, *) valign=top
  6|   (2|3, *) valign=bottom
  7|   (1,1) 
  8|   Header 1 
  9|   (1,2)
 10|   Header 2
 11|   (2,1) 
 12|   Cell-A   
 13|   (2,2)
 14|   Cell-B
 15|   (3,1) 
 16|   Cell-C   
 17|   (3,2) 
 18|   Cell-D
 19| </xtable>

Output:

  1| <table border="1">
  2|   <tr valign=top>
  3|     <td align=left>Header 1</td>
  4|     <td align=right>Header 2</td>
  5|   </tr>
  6|   <tr>
  7|     <td align=left valign=bottom>Cell-A</td>
  8|     <td align=right valign=bottom>Cell-B</td>
  9|   </tr>
 10|   <tr>
 11|     <td align=left valign=bottom>Cell-C</td>
 12|     <td align=right valign=bottom>Cell-D</td>
 13|   </tr>
 14| </table>

=back

=head1 DEFINITION OF OWN HTML TAGS

=head2 LESSON: Simple Tags And Container Tags

Now it is time to enhance our markup language by defining new custom HTML tags.
There are two types of HTML tags:

=over 4

=item B<Simple Tags>

As an example let us define a C<E<lt>meE<gt>> tag which expands to my name
abbreviation.

Input:

 1| <define-tag me whitespace=delete>
 2| rse@engelschall.com
 3| </define-tag>
 4|
 5| This is <me>.

Output:

 1| This is rse@engelschall.com.

=item B<Container Tags>

As an example let us define a C<E<lt>redE<gt>> tag which changes its body text
color to red.

Input:

  1| <define-tag red endtag=required whitespace=delete>
  2| <font color="#cc3333">%body</font>
  3| </define-tag>
  4| 
  5| This is <red>very important</red>.

Output:

  1| This is <font color="#cc3333">very important</font>.

=back

=head2 LESSON: Tags With Attributes

Because tags without attributes are not very flexible there is also a way to
define tags which can use these.

Input:

  1| <define-tag me whitespace=delete>
  2| <if   "%0" ""            "rse@engelschall.com">
  3| <ifeq "%0" "engelschall" "rse@engelschall.com">
  4| <ifeq "%0" "netsw"       "rse@netsw.org">
  5| <ifeq "%0" "apache"      "rse@apache.org">
  6| <ifeq "%0" "freebsd"     "rse@freebsd.org">
  7| <ifeq "%0" "sdm"         "rse@sdm.de">
  8| </define-tag>
  9| 
 10| This is <me> and <me apache>.

Output:

   1| This is rse@engelschall.com and rse@apache.org.

There is also a variant to use attributes of type C<name=value>:

Input:

  2| <define-tag me whitespace=delete>
  3| <preserve at>
  4| <set-var %attributes>
  5| <if   "<get-var at>" ""            "rse@engelschall.com">
  6| <ifeq "<get-var at>" "engelschall" "rse@engelschall.com">
  7| <ifeq "<get-var at>" "netsw"       "rse@netsw.org">
  8| <ifeq "<get-var at>" "apache"      "rse@apache.org">
  9| <ifeq "<get-var at>" "freebsd"     "rse@freebsd.org">
 10| <ifeq "<get-var at>" "sdm"         "rse@sdm.de">
 11| <restore at>
 12| </define-tag>
 13| 
 14| This is <me> and <me at=apache>.

Output:

   1| This is rse@engelschall.com and rse@apache.org.

=head2 LESSON: Overwriting Existing HTML Tags

WML also provides a way to overwrite existing HTML tags, i.e.  you can define
a custom tag with the same name as an already known HTML tag and use the
original HTML tag inside it.

Input:

   1| <define-tag br whitespace=delete>
   2| <br*><br*>
   4| </define-tag>
   5|
   6| Some Text<br>
   7| Some more Text
    
Output:

   1| Some Text<br><br>
   2| Some more Text

=head2 LESSON: Programming Tags In Perl

One of the essential features in WML is that you can embed Perl code at any
point, just marked with `C<E<lt>:>' and `C<:E<gt>>' delimiters.  This can be
combined with the tag definitions by programming tags in Perl.

Input:

  1| #use wml::std::tags
  2| <define-tag me whitespace=delete>
  3| <preserve at>
  4| <set-var %attributes>
  5| <:{ 
  6|     my $at = qq/<get-var at>/;
  7|     my $addr;
  8|     $addr = "rse\@engelschall.com" if $at eq '';
  9|     $addr = "rse\@engelschall.com" if $at eq 'engelschall';
 10|     $addr = "rse\@netsw.org"       if $at eq 'netsw';
 11|     $addr = "rse\@apache.org"      if $at eq 'apache';
 12|     $addr = "rse\@freebsd.org"     if $at eq 'freebsd';
 13|     $addr = "rse\@sdm.de"          if $at eq 'sdm';
 14|     print $addr;
 15| }:>
 16| <restore at>
 17| </define-tag>
 18| 
 19| This is <me> and <me at=apache>.

Output:

  1| This is rse@engelschall.com and rse@apache.org.

=head1 ADVANCED FEATURES

=head2 LESSON: Using Templates

We've already seen how to divert data to a location.  Because WML
automatically closes still opened diversions at EndOfFile, we can use this
feature to create templates.  Assume we have the following template defined in
the file F<template.wml>.

  1| #   the template itself 
  2| <html>
  3| <head>
  4| <title>{#SUBJECT_LOC#}</title>
  5| </head>
  6| <body>
  7| <h1>{#SUBJECT_LOC#}</h1>
  8| <blockquote>
  9| {#BODY#}
 10| </blockquote>
 11| </body>
 12| </html>
 13| 
 14| #   way to insert the subject
 15| <define-tag subject>
 16| {#SUBJECT_LOC#:%0:##}
 17| </define-tag>
 18| 
 19| #   per default we are in body
 20| {#BODY#:

Input:

  1| #include 'template.wml'
  2| 
  3| <subject "Foo, Bar and Quux">
  4|
  5| This is about Foo, Bar and Quux...

Output:

  1| <html>
  2| <head>
  3| <title>Foo, Bar and Quux</title>
  4| </head>
  5| <body>
  6| <h1>Foo, Bar and Quux</h1>
  7| <blockquote>
  8| This is about Foo, Bar and Quux...
  9| </blockquote>
 10| </body>
 11| </html>

You can even nest more than one template because the diversion mechanism in
WML accepts location dumps and location fills at any point, even within other
location fills.

=head2 LESSON: Creating Multi-Lingual Pages

The core languages of WML don't provide a dedicated facility to create
multi-lingual pages, i.e. one or more output pages created out of a single
input source, each one containing the same page information but in different
human languages. But WML provides variants through ``slicing'' (Pass 9) and
human languages are just a special case of general variants.  So
wml::std::lang exists which provides specialized multi-lingual support tags
which are mapped to slices which then can be used to create the various output
files.

Let take an example:

  1| #!wml -o (ALL-LANG_*)+LANG_EN:index.en.html \
  2|       -o (ALL-LANG_*)+LANG_DE:index.de.html
  3| 
  4| #use wml::std::page
  5| #use wml::std::lang
  6| 
  7| <lang:new id=en short>
  8| <lang:new id=de short>
  9| 
 10| <page>
 11| 
 12| <h1><en: Welcome><de: Willkommen>!</h1>
 13| 
 14| <a href="<lang:star: index2.*.html>">Index 2</a>
 15| 
 16| <lang:area>
 17| (en)This is a test page
 18| (de)Dies ist eine Testseite
 19| </lang:area>

After processing passes 1 to 8 (C<wml -p1-8>) the following is internally
generated by WML:

  1| <html>
  2| <head>
  3| </head>
  4| <body bgcolor="#ffffff" text="#000000" link="#333399" alink="#9999ff" vlink="#000066">
  5| <h1>[LANG_EN:Welcome:][LANG_DE:Willkommen:]!</h1>
  6| <a href="[LANG_EN:index2.en.html:][LANG_DE:index2.de.html:]">Index 2</a>
  7| [LANG_EN:This is a test page
  8| :][LANG_DE:Dies ist eine Testseite:]
  9| </body>
 10| </html>

And then after processing pass 9 with the initial WML magic cookie line
(C<#!wml -o...>) the following two files are generated:

index.en.html:

  1| <html>
  2| <head>
  3| </head>
  4| <body bgcolor="#ffffff" text="#000000" link="#333399" alink="#9999ff" vlink="#000066">
  5| <h1>Welcome!</h1>
  6| <a href="index2.en.html">Index 2</a>
  7| This is a test page
  8| 
  9| </body>
 10| </html>

index.de.html:

  1| <html>
  2| <head>
  3| </head>
  4| <body bgcolor="#ffffff" text="#000000" link="#333399" alink="#9999ff" vlink="#000066">
  5| <h1>Willkommen!</h1>
  6| <a href="index2.de.html">Index 2</a>
  7| Dies ist eine Testseite
  8| </body>
  9| </html>

And these two pages then can be served by a content negotiation feature of the
webserver or by explicit references.

=head1 MORE INFORMATION

Now you've seen the various core languages of WML in action. For the gory
details of what each language provides either read the all-in-one WML
Introduction in wml_intro(7) or step through the particular manpages of the
core languages.  Start here with the frontend wml(1).

Additionally can can step through the set of available standard include files
WML ships with. Start with the top-level include file wml::all(3).

=head1 SEEALSO

wml_intro(7)

wml_p1_ipp(1),
wml_p2_mp4h(1),
wml_p3_eperl(1),
wml_p4_gm4(1),
wml_p5_divert(1),
wml_p6_asubst(1),
wml_p7_htmlfix(1),
wml_p8_htmlstrip(1),
wml_p9_slice(1).

wml::all(3)

=cut

##EOF##
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/wml_tags.pod.pl������������������������������������������������������������0000644�0001750�0001750�00000002146�10343637560�016146� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_tags.pod.pl -- create wml_tags.pod file
##  Copyright (c) 1998,1999 Ralf S. Engelschall, All Rights Reserved. 
##

open(OUT, ">wml_tags.pod");
open(IN, "<wml_tags.pod.in");
while (<IN>) {
    if (m|^%%CORE%%|) {
        open(TMP, "<wml_tags.L.main");
        @L = ();
        while (<TMP>) { 
            next if (m|^\s*$|);
            push(@L, $_);
        }
        close(TMP);
        @L = sort(@L);
        $n = 0;
        foreach $l (@L) {
            print OUT " ".$l; 
            $n++;
            if (($n % 10) == 0) {
                $n = 0;
                print OUT "\n";
            }
        }
    }
    if (m|^%%INCL%%|) {
        open(TMP, "<wml_tags.L.incl");
        @L = ();
        while (<TMP>) { 
            next if (m|^\s*$|);
            push(@L, $_);
        }
        close(TMP);
        @L = sort(@L);
        $n = 0;
        foreach $l (@L) {
            print OUT " ".$l; 
            $n++;
            if (($n % 10) == 0) {
                $n = 0;
                print OUT "\n";
            }
        }
    }
    else {
        print OUT $_;
    }
}
close(IN);
close(OUT);

##EOF##
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/wml_macros.pod�������������������������������������������������������������0000644�0001750�0001750�00000053617�10343637560�016073� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  WML Macros
##  Copyright (c) 2000-2001 Denis Barbier, All Rights Reserved. 
##

=head1 NAME

WML Macros - Writing powerful WML macros

=head1 DESCRIPTION

This tutorial is a guide for writing macros in WML.  It should help
beginners to write their first templates, but also give useful hints to
write tricky macros.  To take best benefit of this document, it is
highly recommended to read documentation of individual passes first.

Following examples are compiled with

  wml -q -p123 test.wml

Most of them could be passed through F<wml_p2_mp4h> only, but the line
below is more generic.

=head1 INTRODUCTION

=head2 Definitions

These definitions are those used in this document, they may differ from
those of the W3C because i do not want to enter into deep details.

=over 2

=item *

A I<tag> is a portion of text enclosed between bracket angles, like

     <a>
     </table>
     <!-- hey this is a comment -->
     <?xml version="1.0" encoding="UTF-8"?>

=item *

A I<start> tag is a tag which begins an I<element> (see below).  It
consists of a left angle bracket, followed by the element name, optional
I<attributes> (see below), and a right angle bracket.  All these are
start tags:

     <a href="#name">
     <td>
     <meta name="generator" content="vi">

=item *

An I<end> tag is a tag which ends an I<element> (see below).  It
consists of a left angle bracket, a slash, the element name, and a 
right angle bracket, like in

     </table>
     </a>

This tag cannot contain attributes.

=item *

An I<element> is an elementary unit of the document.  It mainly consists
of pair of start and end tags, like in

     <a href="#name">Click here</a>

=item *

The I<body> of an element is the portion of text contained between the
start and the end tags.  In the example above, there is one element,
which name is C<a>, and its body is "C<Click here>".

=item *

I<Attributes> are parameters to make elements more flexible.
They must be put in the start tag.  An element may have any number of
attributes, which are separated by one or more spaces, tabulations or
newlines.  Each element may define which attributes are mandatory and
which are optional.

     <img src="logo.png" alt="Logo"
          title="Our nice and beautiful logo">

The C<img> element has 3 attributes

=item *

A I<simple tag> is an element without end tag.

=item *

A I<complex tag> is an element with start and end tags.

=back

=head2 First contact

Basically all macro definitions are performed with the
C<E<lt>define-tagE<gt>>. Here is a trivial example:

Input:

  1| <define-tag foo>
  2| bar
  3| </define-tag>
  4| <FOO>

Output:

  1|
  2|
  3| bar
  4|

Whereas trivial this example shows some interesting points:

=over 2

=item *

Newlines are preserved, there is the same number of lines on input and
output, but we will discuss about whitespaces in detail below.

=item *

Tag names are case insensitive.

=back

=head2 About Simple Tags

In HTML simple tags are an element without end tag, e.g.

    <br>

But XML specifies that simple tags must be written with one of these 2
forms:

    <br></br>
    <br/>

i.e. either as a complex tag, without body, or by adding a trailing
slash to the start tag.  The first one will not work with WML, and also
may confuse HTML browsers, and so should be avoided. You have to choose
to write this trailing slash or not, WML works with both forms.

In this document, i will now always write simple tags with this trailing
slash, to conform to the new XHTML standard.  This is my preferred
writing of input text, but one may still continue without this trailing
slash.  You decide to which syntax you want to conform to.

On the other hand, HTML browsers may be confused by
XHTML syntax, so output text does not contain this trailing slash.
This seems contradictory, but with this approach our input files are
ready to be processed by future XML tools, and we only have to run WML
with adequate flags to produce XHTML compliant pages.

=head1 DEFINING NEW TAGS

Each time a known element is found in input text, it is removed and its
replacement text is put here. After that, this replacement text is
scanned in case it contains other macros.

All user macros are defined with the C<define-tag> element.  Its first
attribute is the macro name which is defined, and its body function is
the replacement text which is inserted in lieu of this macro.

Let us begin with a simple example:

Input:

  1| <define-tag homepage>http://www.engelschall.com/sw/wml/</define-tag>
  2| <homepage/>

Output:

  1|
  2| http://www.engelschall.com/sw/wml/

Defining a complex tag is no more difficult, just add an
C<endtag=required> attribute.

Input:

  1| <define-tag foo endtag=required>bar</define-tag>
  2| <foo>baz</foo>
 
Output:

  1|
  2| bar

=head2 Special Text

Some strings have a special meaning when found in replacement text, to
allow full customization of macros:

=over 2

=item %0 %1 ...

Attributes: C<%0> is the first attribute, C<%1> the second, and so on.

=item %name

Macro name

=item %attributes

Space-separated list of all attributes

=item %body

Macro body (for complex tags only)

=item %#

Number of arguments

=item %%

A percent sign

=back

Input:

  1| <define-tag foo endtag=required>
  2| Macro name:          %name
  3| Number of arguments: %#
  4| First argument:      %0
  5| Second argument:     %1
  6| All arguments:       %attributes
  7| Body macro:          %body
  8| </define-tag>
  9| <foo Here are attributes>
 10| And the body
 11| goes here.
 12| </foo>

Output:

  1| 
  2| 
  3| Macro name:          foo
  4| Number of arguments: 3
  5| First argument:      Here
  6| Second argument:     are
  7| All arguments:       Here are attributes
  8| Body macro:          
  9| And the body
 10| goes here.
 11| 
 12| 

These special strings may also be altered by modifiers, which are a set
of letters (one or more) put after the percent sign.  These modifiers,
and their actions, are:

=over 2

=item U (Unexpanded)

Text is replaced, but not expanded (see section about expansion for
details).

=item A (Array)

Lists are separated by newlines instead of spaces.  This modifier makes
sense with C<%attributes> only.

Input:

  1| <define-tag foo endtag=required>
  2| First argument:      %A0
  3| All arguments:       %Aattributes
  4| Body macro:          %Abody
  5| </define-tag>
  6| <foo Here are attributes>
  7| And the body
  8| goes here.
  9| </foo>

Output:

  1| 
  2| 
  3| First argument:      Here
  4| All arguments:       Here
  5| are
  6| attributes
  7| Body macro:          
  8| And the body
  9| goes here.
 10| 
 11| 

=back

Note that these sequences are replaced when macro is read, after what
replacement text is scanned again.  This is very important, because you
should never write constructs like

   <if <get-var foo /> %body />

Indded, C<%body> is replaced I<before> C<E<lt>ifE<gt>> element is
scanned, which may cause unpredictable results.  A better solution is

   <if <get-var foo /> "%body" />

but it will cause trouble when C<%body> contains double quotes.  For
this reason, you should never use C<E<lt>ifE<gt>> (and derivatives)
tests when one of its arguments is a special sequence.  Use instead

   <when <get-var foo />>
   %body
   </when>

=head1 WHITESPACES

Previous examples show that expansion prints lots of unused newlines.
There are some techniques to remove them.  The first one is with pass 1,
by putting a backslash at end of line, which will discard this end of
line.

Input:

  1| <define-tag foo>\
  2| bar\
  3| </define-tag>\
  4| <FOO/>

Output:

  1| bar

Another solution is to specify C<whitespace=delete> when defining
macros, e.g.

  1| <define-tag foo whitespace=delete>
  2| bar
  3| </define-tag>
  4| <FOO/>

Output:

  1|
  1| bar

The first line is caused by newline after C<E<lt>/define-tagE<gt>> which
is not discarded.

When this attribute is used, all trailing and leading whitespaces are removed,
and also newlines outside of angle brackets.

=head1 MACROS WITH ATTRIBUTES

One nice feature of WML is its ability to deal with arbitrary attributes.
There are many ways to define macros accepting attributes, we will
discuss here the one used in all WML modules, and is so the standard
way.

Attributes are stored in variables, because HTML syntax C<attribute=value>
is very closed to assignment to variables.  In order to keep variables
local, a mechanism of push/pop is used.  Here is an example

Input:

  1| <define-tag href whitespace=delete>
  2| <preserve url />
  3| <preserve name />
  4| <set-var %attributes />
  5| <if <get-var name /> ""
  6|   <set-var name="<tt><get-var url /></tt>" /> />
  7| <a href="<get-var url />"><get-var name /></a>
  8| <restore name />
  9| <restore url />
 10| </define-tag>
 11| <href url="http://www.w3.org/" />

Output:

  1| 
  2| <a href="http://www.w3.org/"><tt>http://www.w3.org/</tt></a>

The C<E<lt>preserveE<gt>> tag pushes the variable passed in argument in
top of a stack and clears this variable.  So this variable is non-null
only when it has been assigned via C<E<lt>set-var %attributesE<gt>>.
The C<E<lt>resstore<gt>> tag pops the value at top of the stack and sets
the variable passed in argument to this value.

In HTML some attributes are valid without value.
This attribute may be detected with

Input:

  1| #use wml::std::info
  2| <define-tag head whitespace=delete>
  3| <preserve title>
  4| <preserve info>
  5| <set-var info=*>
  6| <set-var %attributes>
  7| <head*>
  8| <ifeq "<get-var info>" "" <info style=meta>>
  9| <if "<get-var title>" "<title*><get-var title></title*>">
 10| </head*>
 11| <restore info>
 12| <restore title>
 13| </define-tag>
 14| <head title="Test page 1">
 15| <head info title="Test page 2">

Output:  (only non-blank lines are printed)

     <head><title>Test page 1</title></head>
     <head>
     <nostrip><meta name="Author"    content="Denis Barbier, barbier@localhost">
     <meta name="Generator" content="WML 2.0.2 (21-Jun-2000)">
     <meta name="Modified"  content="2000-05-09 23:57:31">
     </nostrip>
     <title>Test page 2</title></head>

=head1 QUOTING AND GROUPING

In HTML it is possible to specify attributes containing several words,
by quoting them with single or double quotes.  WML knows only double
quotes.

  1| <define-tag foo>\
  2| Number of arguments: %#
  3| First argument:      %0
  4| </define-tag>\
  5| <foo Here are attributes />\
  6| <foo "Here are" attributes />\

Output:

  1| Number of arguments: 3
  2| First argument:      Here
  3| Number of arguments: 2
  4| First argument:      Here are

=head1 EXPANSION

In this section, all examples are processed with the command line

   wml -W2,-dat -q -p123

and all output lines beginning with C<trace> are generated by these
debug flags.

This section is harder to understand, but one can work with WML without
understanding it, because these notions are required in rare cases
(mostly when writing macros for WML tutorials).

By default, macros are expanded when tags are scanned.

Input:

  1| <define-tag foo>%attributes</define-tag>\
  2| <define-tag bar>baz</define-tag>\
  3| <foo name="<bar/>" />


Output:

  1| trace: -1- <define-tag foo>
  2| trace: -1- <define-tag bar>
  3| trace: -2- <bar>
  4| trace: -1- <foo name=baz>
  5| name=baz

We see that the C<E<lt>barE<gt>> macro is processed first (digit between
hyphens represent enesting level), and then C<E<lt>fooE<gt>>.
Indeed WML finds the C<foo> name.  As this is a macro name, attributes are
searched for.  When scanning attributes, it finds the C<E<lt>barE<gt>>.
As this macro has no attribute, it is now replaced by its replacement
text, after that scanning of C<E<lt>fooE<gt>> attributes is finished.

Consider now

Input:

  1| <define-tag foo attributes=verbatim>%attributes</define-tag>\
  2| <define-tag bar>baz</define-tag>\
  3| <foo name="<bar/>" />

Output:

  1| trace: -1- <define-tag foo>
  2| trace: -1- <define-tag bar>
  3| trace: -2- <bar>
  4| trace: -1- <foo name=<bar>>
  5| trace: -1- <bar>
  6| name=baz

The C<attributes=verbatim> attribute tells WML that when scanning this
macro attributes, no expansion is performed.  So the four first lines
are now easy to understand.  But after C<E<lt>fooE<gt>> is expanded into

   name=<bar>

this text is scanned again and C<E<lt>barE<gt>> is expanded in turn.

The solution to forbid this expansion is to use the C<U> modifier,
explained in section B<Special Text>.

Input:

  1| <define-tag foo attributes=verbatim>%Uattributes</define-tag>\
  2| <define-tag bar>baz</define-tag>\
  3| <foo name="<bar/>" />

Output:

  1| trace: -1- <define-tag foo>
  2| trace: -1- <define-tag bar>
  3| trace: -2- <bar>
  4| trace: -1- <foo name=<bar>>
  5| name=<bar>

=head1 MIXING MP4H AND EPERL

After these preliminaries it is time to see how to mix F<mp4h> and
F<ePerl>.  The following section is a bit tricky, you may skip to
section B<How to use these macros> to quickly learn which changes are
needed.

=head2 Nested ePerl macros do not work

Consider this macro:

   <define-tag show-attr><: print "attrs:%attributes"; :></define-tag>

At first look, it behaves like

   <define-tag show-attr-ok>attrs:%attributes</define-tag>

But what happens when these macros are nested?

Input:

  1| <show-attr-ok <show-attr-ok 0 /> />

Output:

  1| attrs:attrs:0

It works fine!  On the other hand,

Input:

  1| <show-attr <show-attr 0 /> />

Output:

  1| ePerl:Error: Perl parsing error (interpreter rc=255)
  2| 
  3| ---- Contents of STDERR channel: ---------
  4| Backslash found where operator expected at /tmp/wml.1183.tmp1.wml line
  5| 10, near ""attrs:<: print attrs:0; print "\"
  6|         (Missing operator before \?)
  7| syntax error at /tmp/wml.1183.tmp1.wml line 10, near ""attrs:<: print
  8| attrs:0; print "\"
  9| Execution of /tmp/wml.1151.tmp1.wml aborted due to compilation errors.
 10| ------------------------------------------
 11| ** WML:Break: Error in Pass 3 (rc=74).

Huh, looks like something went wrong.  Output after pass 2 is

  1| <: print "attrs:<: print attrs:0; :>"; :>

And because ePerl commands cannot be nested, an error is reported
(if you do not understand why we have this text after pass 2, reread
previous section).

This example is simplistic, and a workaround is trivial (use
C<E<lt>show-attr-okE<gt>> instead), but there are many cases where these
problems are much more difficult to track.  For instance if you nest
macros defined in WML modules, you do not know whether they use ePerl
code or not.

=head2 First try to solve this problem

One problem is that ePerl commands cannot be nested, according to its
documentation.  So our first try is to count nested levels and print
ePerl delimeters when in outer mode only.

Input:

  1| <set-var __perl:level=0 />\
  2| <define-tag perl endtag=required whitespace=delete>
  3| <increment __perl:level />
  4| <when <eq <get-var __perl:level /> 1 />>
  5| <: %body :>
  6| </when>
  7| <when <neq <get-var __perl:level /> 1 />>
  8| %body
  9| </when>
 10| <decrement __perl:level />
 11| </define-tag>\
 12| <define-tag add1 endtag=required>\
 13| <perl>$a += 1; %body</perl>\
 14| </define-tag>\
 15| <add1><add1><add1></add1></add1></add1>
 16| <:= $a :>

Output:

  1|
  2| 3

Another example (lines 1-11 are left unchanged)

Input:

 12| <define-tag remove-letter endtag=required whitespace=delete>
 13| <perl>
 14|   $string = q|%body|; $string =~ s|%0||g; print $string;
 15| </perl>
 16| </define-tag>\
 17| <remove-letter e>Hello this is a test</remove-letter>

Output:

  1| Hllo this is a tst

With previous definitions, here is what happens when nesting
C<E<lt>remove-letterE<gt>> tags:

Input:

 17| <remove-letter s><remove-letter e>\
 18| Hello this is a test\
 19| </remove-letter></remove-letter>

Output:

  1| ePerl:Error: Perl parsing error (interpreter rc=255)
  2| 
  3| ---- Contents of STDERR channel: ---------
  4| Bareword found where operator expected at /tmp/wml.1198.tmp1.wml
  5| line 10, near "q|$string = q|Hello"
  6| syntax error at /tmp/wml.1198.tmp1.wml line 10, near "q|$string =
  7| q|Hello this "syntax error at /tmp/wml.1198.tmp1.wml line 10, near ";|"
  8| Execution of /tmp/wml.1198.tmp1.wml aborted due to compilation errors.
  9| ------------------------------------------
 10| ** WML:Break: Error in Pass 3 (rc=74).


To understand why this error is reported, we run only the first two passes
to see which input is sent to ePerl:

    prompt$ wml -q -p12 qaz.wml
    <: $string = q|$string = q|Hello this is a test|; $string =~ s|e||g;
    print $string;|; $string =~ s|s||g; print $string; :>

As expected ePerl delimiters are only put around the whole sentence, and
are not nested.  But we can see this is not sufficient, because the
C<%body> directive was replaced by ePerl code, and not a string.

In one word, there will be trouble whenever special sequences
(C<%E<lt>digitE<gt>>, C<%body>, C<%attributes>, ...) appear within ePerl
delimiters, because you can not ensure that replacement text does not
contain ePerl commands too.

=head2 Macros defined by the wml::std::tags module

The F<wml::std::tags>(3) module provides a solution to deal with nested
ePerl commands.  Previous example may be written like this

Input:

  1| #use wml::std::tags
  2| 
  3| <define-tag remove-letter endtag=required whitespace=delete>
  4| <perl>
  5| <perl:assign $string>%body</perl:assign>
  6| <perl:assign $letter>%0</perl:assign>
  7| $string =~ s|$letter||g;
  8| <perl:print: $string />
  9| </perl>
 10| </define-tag>\ 
 11| <remove-letter s><remove-letter e>\
 12| Hello this is a test\
 13| </remove-letter></remove-letter>

Output:

      ...61 empty lines...
  62| Hllo thi i a tt
  63|
  64|

How this works is beyond the scope of this document, and we will focus
on commands provided by the F<wml::std::tags> module, and how to use
them.  In the list below, pseudo-perl commands show an equivalent form
of these macros.

=over 2

=item <perl:var />

This macro expands to a Perl variable, which is different in all nested
levels.

    $perl_var<get-var __perl:level />

=item <perl:print>string</perl:print>

This complex tag prints its body.

   print qq(string);

=item <perl:print: string />

This simple tag prints its attributes.

   print string;

=item <perl:print:var />

Prints the C<E<lt>perl:varE<gt>> variable

  print $perl_var<get-var __perl:level />;

=item <perl:assign $variable>value</perl:assign>

Assign a Perl variable.  If there is no attribute, value is assigned to
C<E<lt>perl:varE<gt>>.

   $variable = qq(value);

=item <perl:assign:sq $variable>value</perl:assign>

Assign a Perl variable.  If there is no attribute, value is assigned to
C<E<lt>perl:varE<gt>>.

   $variable = q(value);

=back

=head2 How to use these macros

Now that we know our problem has a solution, you are certainly impatient
to learn how to proceed.  There are two golden rules:

=over 2

=item 1

Never write special sequences (C<%E<lt>digitE<gt>>, C<%body>,
C<%attributes>, ...) inside a Perl statement.

=item 2

Never use the Perl C<print> statement, nor its derivatives.

=back

First rule tells to replace

  $var1 = qq|%body|;
  $var2 = q|%body|;

by

  <perl:assign $var1>%body</perl:assign>
  <perl:assign:sq $var2>%body</perl:assign:sq>

and second rule 

  print $string;
  print "<img src=\"$src\" alt=\"$alt\">";

by

  <perl:print: $string>
  <perl:print><img src="$src" alt="$alt"></perl:print>

=head2 Examples

Example 1: simplified version of C<wml::des::lowsrc>

Non-nestable version:

  <define-tag lowsrc>
  <:
  {
      my $src = '%0';
      my $lowsrc = $src;
      $lowsrc =~ s|\.([^.]+)$|.lowsrc.$1|;
      system("convert -monochrome $src $lowsrc");
      print "lowsrc=\"$lowsrc\"";
  }
  :>
  </define-tag>

Nestable version:

  <define-tag lowsrc>
  <perl>
  {
      my $src;
      <perl:assign:sq $src>%0</perl:assign:sq>
      my $lowsrc = $src;
      $lowsrc =~ s|\.([^.]+)$|.lowsrc.$1|;
      system("convert -monochrome $src $lowsrc");
      <perl:print> lowsrc="$lowsrc"</perl:print>
  }
  </perl>
  </define-tag>

The first change (assignment to C<$src>) allows attribute to be an ePerl
command, and second change (print result) allows this macro to appear
inside ePerl commands.  As you see, this is fairly straightforward, and
you may look how WML modules are written.

In all previous examples and definitions, output was printed to standard
output.  But sometimes it is printed to filehandles.  Here is how to
proceed, with an example taken from C<wml::fmt::xtable>.

Non-nestable version:

  <define-tag xtable endtag=required>
  <:
  {
      my $options = qq|%attributes|;
      my $tmpfile = "<get-var WML_TMPDIR>/wml.table.$$.tmp";
      local (*FP);
      open(FP, ">$tmpfile");
      print FP "<" . "wwwtable $options>\n";
      print FP <<'__XTABLE__EOT'
  %body
  __XTABLE__EOT
  ;
      print FP "<" . "/wwwtable>\n";
      close(FP);
      open(FP, "$WML_LOC_LIBDIR/exec/wml_aux_freetable -w $tmpfile|");
      local ($/) = undef;
      print <FP>;
      close(FP);
      unlink("$tmpfile");
  }
  :>
  </define-tag>

Nestable version:

  <set-var __xtable:level=0 />
  <define-tag xtable endtag=required>
  <increment __xtable:level />
  <perl filehandle="FH_XTABLE">
  {
      my $tmpfile = "<get-var WML_TMPDIR />/wml.table.$$.tmp";
      my $options;
      <perl:assign $options>%attributes</perl:assign>;
      <when <eq <get-var __xtable:level /> 1 />>
      local *FH_XTABLE;
      open(FH_XTABLE, ">$tmpfile");
      </when>
      <perl:assign>
      <wwwtable $options>
          %body
      </wwwtable>
      </perl:assign>
  </perl>
  #   we cut here to change filehandle
  <perl>
      <when <eq <get-var __xtable:level /> 1 />>
      print FH_XTABLE <perl:var/>;
      close(FH_XTABLE);
      open(FH_XTABLE_IN,
         "<get-var WML_LOC_LIBDIR />/exec/wml_aux_freetable -w $tmpfile |");
      local ($/) = undef;
      #  The asterisk below prevents expansion during pass 2 and is
      #  removed after this pass.
      <perl:var/> = <*FH_XTABLE_IN>;
      close(FH_XTABLE_IN);
      <perl:print:var/>
      unlink("$tmpfile");
      </when>
  }
  </perl>
  <decrement __xtable:level />
  </define-tag>

Filehandles are defined via attributes to the C<perl> tag.  All
subsequent calls to C<E<lt>perl:printE<gt>> are then printed to this
filehandle.

=head1 AUTHOR

 Denis Barbier
 barbier@engelschall.com

=cut

##EOF##
�����������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/wml_tags.pod.in������������������������������������������������������������0000644�0001750�0001750�00000001203�10343637560�016132� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_tags.pod -- Permuted index of defined WML tags
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##

=head1 NAME

WML Tag Index - Permutated index of defined WML tags

=head1 DESCRIPTION

This documents provides a permutated index of all defined WML tags, both in
the core languages and the include files.  The index is sorted alphabetically.

=head1 CORE LANGUAGES

%%CORE%%

=head1 INCLUDE FILES

%%INCL%%

=head1 SEEALSO

wml(1),
wml_p1_ipp(1),
wml_p2_mp4h(1),
wml_p3_eperl(1),
wml_p4_gm4(1),
wml_p5_divert(1),
wml_p6_asubst(1),
wml_p7_htmlfix(1),
wml_p8_htmlstrip(1),
wml_p9_slice(1),
wml::all(3)

=cut

##EOF##
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/wml_faq.pod����������������������������������������������������������������0000644�0001750�0001750�00000030336�10343637560�015347� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  WML FAQ
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 1999 Denis Barbier
##

=head1 NAME

WML FAQ - Frequently Asked Questions on WML

=head1 DESCRIPTION

This is the Frequently Asked Question (FAQ) list with answers on WML. It is
divided into question/answer parts, each answering one particular topic.

=head2 General questions:

=over 5

=item B<G01:> What is WML?

=item B<G02:> WML is distributed as free software, does this mean
              I also can use it free of charge?

=item B<G03:> Why is WML a toolkit of disjunct programs instead of
              one big integrated program?

=item B<G04:> Which tools are included in the WML distribution?

=item B<G05:> WML is as powerful as it can, but are there 
              even any restrictions?

=item B<G06:> Where do I find documentation?

=item B<G07:> Is there any official support for WML?

=item B<G08:> How I can I send a bug report to the author?

=item B<G09:> I really want to use WML for textprocessing because it's such
              powerful, isn't it?

=back

=head2 Questions about passes:

=over 5

=item B<P01:> How can I avoid conflicts with a particular WML pass?

=item B<P02:> How can I avoid conflicts with a particular WML pass
              for only some areas of the input file?

=item B<P03:> Is there a way to change pass order?

=item B<P04:> Why shall I not change original pass order?

=back

=head2 Questions about include files:

=over 5

=item B<I01:> How can I install or activate my own include files?

=item B<I02:> How can I overwrite the knowledge of the info-tag from wml::std:info?

=item B<I03:> How can I combine the gfont- with the href-tag?

=item B<I04:> How can I combine the gfont- with the rollover-tag?

=back

=head2 Error messages:

=over 5

=item B<E01:> Cannot load C</tmp/wml...> for unprotection

=item B<E02:> ePerl:Error: Perl runtime error

=back

=head2 GENERAL QUESTIONS

=over 5

=item B<G01: What is WML?>

WML is a free and extensible Webdesigner's off-line HTML generation
toolkit for Unix, distributed under the GNU General Public License
(GPL v2).

WML consists of a control frontend driving up to nine backends in a
sequential pass-oriented filtering scheme. Each backend provides one
particular core language. For maximum power WML additionally ships
with a well-suited set of include files which provide higher-level
features build on top of the backends core languages. While not
trivial and idiot proof WML provides most of the core features real
hackers always wanted for HTML generation.

=item B<G02: WML is distributed as free software, does this mean
             I also can use it free of charge?>

Yes, WML can be distributed free of charge and used free of charge without any
exceptions. You can even use WML to generate a commercial website, no problem.
But please give credit to the author where credit is due. Either by using
wml::std::info(3) which includes a WML identifier or by explicitly saying
somewhere on the generated website that you used WML. This just would be fair.

=item B<G03: Why is WML a toolkit of disjunct programs instead of
             one big integrated program?>

The first reason is because WML was born out of the need to generate a huge
webarea in spring 1997 (http://www.engelschall.com/sw/) and an appropriate
tool had to be found in finite time. So the author decided to use maximum
software leverage and just compiled a toolkit of existing programs and only
programmed the missing stuff itself.

After this approach showed that WML is flexible and powerful enough as the
solution to generate huge webareas, the author started to compactify it and
stripped the toolkit to its essential parts. But it is still a toolkit, even
when you have only one frontend to control the parts.

=item B<G04: Which tools are included in the WML distribution?>

Well, you certainly know C<wml>, the front-end for WML.  But there are
other cool front-ends for the most useful tasks:

=over 4

=item C<wmk> - Website META Language Make

Build your web pages without writing Makefiles.

=item C<wmd> - Website META Language Documentation Browser

This is your visa for all the documentation you want.

=item C<wmb> - Website META Language Bug Reporting Tool

The preferred way to report a bug, this tool will send a mail to the
maintainer with your problem and the characteristics of your
installation.

=item C<wmu> - Website META Language Upgrade Utility

Upgrade and build new versions of WML like a charm, with the same
options as those of your current installation.

=back

=item B<G05: WML is as powerful as it can, but are there 
             even any restrictions?>

Sure, WML has some restrictions which cannot be eliminated easily.

=over 2

=item o

there is no real debugging mode which makes tracing back of problems very
hard, especially for the ePerl pass.  Currently the best way to debug is to
use the B<-p> option with args `C<1>', then `C<12>' then `C<123>' etc.  and
comparing the result in each step.

=item o

the WML language is very complex because of the 9 independent languages which
are used intermixed. Because of this WML is not easy to understand and use for
the average webdesigner.

=back

=item B<G06: Where do I find documentation?>

=over 2

=item o

Invoke the Documentation Browser by typing F<wmd> and navigate through
the installed documentation.

=item o

The WML Online documentation is located at

  http://www.engelschall.com/sw/wml/docs

The webpages are the same as the ones viewed with F<wmd>.

=back

=item B<G07: Is there any official support for WML?>

Yes, there is. First there is an official support mailing list for WML users: 

  sw-wml@engelschall.com

Here you can reach the WML author Ralf S. Engelschall, the current
maintainer Denis Barbier, and the other people who use WML and which can
help you in case of problems. Use this forum to spread your WML-related
ideas and suggestion, too. Feel free to ask anything WML-related you
want.

To subscribe to this Majordomo-controlled mailing list, just send an E-mail to
majordomo@engelschall.com with only

  subscribe sw-wml you@domain.dom

in the I<body> (leave the subject empty). After sending this, Majordomo will
respond with an authentication challenge which has to send back again for
security reasons (to avoid that others subscribe you without your ok). Now you
are successfully subscribed to this list.

Second you can directly contact Ralf S. Engelschall <rse@engelschall.com>
or Denis Barbier <barbier@engelschall.com> via E-mail in case of very
important problems.

=item B<G08: How can I send a bug report to the author?>

You have four options:

=over 4

=item Bug Reporting Tool WMb

This is the recommended way because it automatically includes all parameters
of your WML installation in the bug report which (most of the time) is
essentially for the author to be able to successfully solve your problem.
Just run the F<wmb> program and enter your problem description. But make sure
you have at least a workable E-mail link to the Internet, because WMb wants to
send the bug report via E-mail to rse@engelschall.com.

=item Bug Reporting Webpage

This is the general bug report webpage on

  http://www.engelschall.com/sw/bugreport/

for all programs from Ralf S. Engelschall. Please include your `wml -V3'
output, too.

=item Mailing List

This is the official support mailing list for WML which can be
contacted via

  sw-wml@engelschall.com

=item Direct Contact

This is the last chance, if all others failed. Just send your problem directly
to the maintainer via barbier@engelschall.com

=back

=item B<G09: I really want to use WML for textprocessing because it's such
             powerful, isn't it?>

Yes, WML is, but only for HTML generation. 

Although WML provides a lot of hot features (like Slicing or Diversion) one
often also wants for textprocessing, WML is not a general textprocessing
language.  WML is HTML-dependend at a lot of edges and it lacks features which
a text-processor really needs (like paragraph formatting, footnote support,
etc). And even if you really decide to use WML for writing other stuff than
HTML, you should be as crazy as you have time. Because WML is slow compared
with any general textprocessing tool like TeX or even SGML-Tools. For its
target format HTML this was and is never a problem, because the largest
Webpage is never greater then approximately 10-100 KB. But for real
textprocessing this size is peanuts.

So, please don't think about using WML for text-processing, even if one of
your primary target formats is HTML. Instead use a language like LaTeX2HTML,
SDF or SGML-Tools to create the HTML format and I<only post-process> this via
WML. In other words: Use WML only for the dirty work of including the
generated HTML stuff into your webpages. But don't think any longer about
using WML as a text-processor.

=back

=head2 QUESTIONS ABOUT PASSES

=over 5

=item B<P01: How can I avoid conflicts with a particular WML pass?>

When you are sure you don't need this particular pass, you can use WML option
B<-p> and just leave out the number of the pass. 

=item B<P02: How can I avoid conflicts with a particular WML pass
             for only some areas of the input file?>

Use the internal C<E<lt>protectE<gt>> container tag which entirely protects
its body from evaluation by any pass. To protect the body from evaluation by a
particular pass only, you can use C<E<lt>protect pass=NE<gt>>.

=item B<P03: Is there a way to change pass order?>

Yes, since WML 1.7.3, you may change it with the B<-p> flag. But you are
warned this should be used by WML gurus only and for very particular
reasons. For some internal reasons, processing will always stop after pass
9, even if you specify additional passes. This is a feature and is not
subject to change on future releases.

=item B<P04: Why shall I not change original pass order?>

WML has been designed to use passes in numerical order. This feature has
a strong influence on how WML include files are written and there is no
warranty these include files will still work when changing pass order.

=back

=head2 QUESTIONS ABOUT INCLUDE FILES

=over 5

=item B<I01: How can I install or activate my own include files?>

There are many ways, but the most elegant and useful way is
the following: First create a directory named F<$HOME/.wml/> and
then a directory named F<$HOME/.wml/home/> via

  $ cd $HOME
  $ mkdir .wml
  $ mkdir .wml/home

Then create a F<$HOME/.wmlrc> file with at least the following contents:

  -I .wml
  -D HOME~.

Now just install your private include file F<foo.tmpl> as
F<$HOME/.wml/home/foo.tmpl> and you are automatically be able to use it via

  #use tmpl::home::foo

from within any WML source.

=item B<I02: How can I overwrite the knowledge of the info-tag from wml::std:info?>

Because the C<E<lt>infoE<gt>> tag constructs its information out of
C<WML_GEN_XXXX> variables which theirself can be overwritten by the B<-D>
option, you can just do this in your F<$HOME/.wmlrc> file. For instance the
authors F<$HOME/.wmlrc> file contains the following three lines:

  -D WML_GEN_REALNAME="Ralf S. Engelschall"
  -D WML_GEN_USERNAME=rse
  -D WML_GEN_HOSTNAME=engelschall.com

The most important one here is C<WML_SRC_HOSTNAME> for the construction of the
email address. Because WML cannot know the email domainname we really have to
help it here.

=item B<I03: How can I combine the gfont- with the href-tag?>

Just put the C<E<lt>gfontE<gt>> tag directly into the C<name> attribute
of C<E<lt>hrefE<gt>>:

  <href name="<gfont>The Hyperlink Text</gfont>" 
        url="http://...">

=item B<I04: How can I combine the gfont- with the rollover-tag?>

Use C<E<lt>gfontE<gt>>'s C<notag> in combination with its C<file> attribute as
follows:

  <gfont file=button-n.gif bgcolor="#ffffff" notag>Text</gfont>
  <gfont file=button-o.gif bgcolor="#ccccff" notag>Text</gfont>
  <rollover src=button-n.gif oversrc=button-o.gif url="http://...">

=back

=head2 ERROR MESSAGES

=over 5

=item B<E01: Cannot load C</tmp/wml...> for unprotection>

One pass did not produce any output. This message certainly indicates
a WML's bug, and so should be reported.

=item B<E02: ePerl:Error: Perl runtime error>

An error occurred during pass 3 (C<wml_p3_eperl>). The contents of the
standard error channel is printed and may contain useful information for
debugging.

=back

=head1 SEEALSO

wml_intro(7),
wml_tutorial(7),
wml_tags(7),
wml(1),
wml::all(3).

=cut

##EOF##
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/Makefile.in����������������������������������������������������������������0000644�0001750�0001750�00000002076�10343637560�015262� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_docs/Makefile
##  Copyright (c) 1997-2001 Ralf S. Engelschall, <rse@engelschall.com>
##

@SET_MAKE@
SHELL           = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s
INSTALL_DATA    = $(top_srcdir)/etc/shtool install -c -m 644

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man

PATH_PERL       = @PATH_PERL@
INSTALLPRIVLIB  = @INSTALLPRIVLIB@
INSTALLARCHLIB  = @INSTALLARCHLIB@

.SUFFIXES:
.SUFFIXES: .7 .pod
.pod.7:
	pod2man --section=7 \
            --center="EN Tools" \
            --release="EN Tools" \
        $< > $@

MANPAGES = wml_intro.7 wml_tutorial.7 wml_faq.7 wml_tags.7 wml_macros.7

all: $(MANPAGES)

wml_tags.pod: wml_tags.pod.in wml_tags.L.main wml_tags.L.incl 
	$(PATH_PERL) ./wml_tags.pod.pl

clean: 
	-rm -f $(MANPAGES) wml_tags.pod

distclean: clean
	-rm -f Makefile

realclean: distclean

##EOF##
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/wml_intro.pod��������������������������������������������������������������0000644�0001750�0001750�00000034773�10343637560�015744� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  WML Introduction
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##

=head1 NAME

WML Introduction - An introduction to WML's basic concepts

=head1 DESCRIPTION

WML is a free HTML generation toolkit for Unix, internally consisting of 9
independent languages. The main idea of WML is a sequential filtering scheme
where each language provides one of 9 processing passes.  So the frontend
F<wml> reads I<inputfile> (or from C<stdin> if I<inputfile> is a dash or
completely missing), applies passes 1-9 (or only the I<passes> specified by
B<-p>) and finally produces one or more I<outputfile>s.

WML implements a total of three essential concepts which interact with each
other:


=head2 CONCEPT 1: SEQUENTIAL FILTERING SCHEME

This concept implements the various language features by making use of maximum
software leverage, i.e. WML is built on top of 9 languages which are run in a
well-ordered fashion by the F<wml> frontend.

=over

=item B<Pass 1: Source Reading and Include File Expansion>

 Processing:     explicit
 Implementation: Include Pre-Processor (IPP)
 Author:         Ralf S. Engelschall <rse@engelschall.com>
 See Also:       wml_p1_ipp(1)

B<Description:>

This first pass reads I<inputfile> and expands all inlined include file
directives by (perhaps recursively) substituting them with the contents of the
corresponding file.  The file itself will be read from the current working
directory or from a list of dedicated include directories (compiled in ones
and also given via option B<-I>). When C<name=value> pairs are appended to the
include directive C<$(name)> is expanded to C<value> in this particular
include file and all its recursively included files.  Additionally this Pass
provides an End-Of-Line continuation feature and three special strings.
``C<__FILE__>'' and ``C<__LINE__>'' expand to the current include file and
line number while ``C<__END__>'' terminates the reading of the current include
file.

B<Summary Of Essential Features:>

  #include 'file.wml' [name[=value] ...]
  #include "file.wml" [name[=value] ...]
  #include <category/file.wml> [name[=value] ...]
  #use wml::category::file [name[=value] ...]

  some text which is \
      continued at this line

  $(name)

  __FILE__, __LINE__
  __END__

B<Example:>

  #use wml::std::tags
  This FooBar, contained in file __FILE__, line __LINE__.

  __END__
  Documentation of FooBar...

=item B<Pass 2: High-Level Macro Construct Expansion>

 Processing:     explicit
 Implementation: Macro Processor for HTML Documents (mp4h)
 Author:         Denis Barbier <barbier@engelschall.com>
 See Also:       wml_p2_mp4h(1)
                 http://www.engelschall.com/sw/mp4h/

B<Description:>

This is the HTML-like macro definition and expansion pass. Here new HTML
tags are defined via C<E<lt>define-tag fooE<gt>> and later expanded at
the location of their usage (C<E<lt>fooE<gt>>.  The goal of this pass is
to create new HTML tags which encapsulate either raw text or even
programmed functionality of Pass 3 (ePerl).

B<Summary Of Essential Features:>

  <define-tag foo>
  ...%attributes...
  </define-tag>

  <define-tag bar endtag=required>
  ...%attributes...%body...
  </define-tag>

  <foo ...>
  <bar ...>...</bar>

B<Example:>

  <define-tag me>RSE</define-tag>
  This is <me>.

=item B<Pass 3: Programming Construct Expansion>

 Processing:     explicit
 Implementation: Embedded Perl 5 Language (ePerl)
 Author:         Ralf S. Engelschall <rse@engelschall.com>
 See Also:       wml_p3_eperl(1)
                 http://www.engelschall.com/sw/eperl/

B<Description:>

In this pass the real programming takes place. The used language is Larry
Wall's Perl 5 scripting language. The language constructs are bristled into
the HTML markup code by the use of begin (C<E<lt>:>) and end (C<:E<gt>>)
delimiters. Additionally this pass provides some nice shortcut: First a
<#if..#elsif..#else..#endif> construct which gets expanded to the
corresponding Perl construct, second a shorthand (C<E<lt>:= ...:E<gt>>) for
the construct (C<E<lt>: print ...:E<gt>> which is used most of the time.  And
there is a container tag in F<wml::std::tags> which provides the more
high-level container tag C<E<lt>perlE<gt>>.

B<Summary Of Essential Features:>

  <perl> ...Perl 5 constructs... </perl>
  <: ...Perl 5 constructs... :>
  <:= ... :>

B<Example:>

  #use wml::std::tags

  <perl>
  sub isotime {
      my ($time) = @_;
  
      my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = 
          localtime($time);
      my ($str) = sprintf("%04d-%02d-%02d %02d:%02d:%02d",
           $year+1900, $mon+1, $mday, $hour, $min, $sec);
      return $str;
  }
  </perl>

  The current date is <:= &isotime(time()) :>.

=item B<Pass 4: Low-Level Macro Construct Expansion>

 Processing:     explicit
 Implementation: GNU m4
 Author:         Ren'e Seindal (FSF)
 See Also:       wml_p4_gm4(1)
                 http://www.gnu.mit.edu/

B<Description:>

In this pass another macro processor run takes place. While in pass 2 a macro
processor with a HTML-like syntax was used for high-level macro programming,
this pass uses a macro processor for low-level programming. Mainly this pass
is intended to provide low-level symbol and function definitions
(C<m4_define()>. There is a definition in F<wml::std::tags> which provides a
more high-level usage via the C<E<lt>symbolE<gt>> tag.

I<Notice:> This pass is run under a special environment: First, all m4 builtin
macros have to be prefixed with "C<m4_>". Second, all variables which are
defined by WML (both internal ones and the ones from the B<-D> option) are
directly accessible via symbols prefixed with C<m4_>, i.e. variable C<NAME> is
interpolated when C<m4_NAME> occurs. Third, the quoting characters are
disabled per default to prevent problems with the generated content. If you
need quotes (for instance in include files) you have to enable them via
C<m4>C<_quotes> and disable them later via C<m4>C<_noquotes>.

B<Summary Of Essential Features:>

  m4_quotes
  m4_define(`name', `value')
  m4_noquotes

  <symbol name value>

B<Example:>

  #use wml::std::tags
  <symbol bar BAZ>

  foo bar quux

=item B<Pass 5: Diversion Filter>

 Processing:     explicit
 Implementation: Divert
 Author:         Ralf S. Engelschall <rse@engelschall.com>
 See Also:       wml_p5_divert(1)

B<Description:>

In this pass a flexible and powerful diversion filter is applied. This is
intended to provide a mechanism to change and intermix the order of data
blocks. Do not intermix this with neither the general macro mechanisms of pass
2 and 4 nor the less powerful C<divert> mechanism of GNU m4.  The idea is to
define I<locations> (via C<{#NAME#}>) at any point and fill
such locations later by diverting the data flow to it (via C<{#NAME#:>
and C<:#NAME#}>) at another point. What makes this filter such powerful is
the fact that both the definition points and the diversion points can be done
in any order and they can even be nested.  Again WML provides high-level
support tags in F<wml::std::tags> for this functionality.

B<Summary Of Essential Features:>

  {#NAME#}
  <dump NAME>

  {#NAME#:
  data for location `NAME'
  :##}

  <enter NAME>
  data for location `NAME'
  <leave>

  <divert NAME>
  data for location `NAME'
  </divert>

B<Example:>

  <table>
  <tr>
  <td><dump LBORDER></td>
  <td><dump BODY></td>
  <td><dump RBORDER></td>
  </tr>
  </table>

  <divert LBORDER>
  Stuff for the left border
  </divert>

  <divert RBORDER>
  Stuff for the right border
  </divert>

  <divert BODY>
  The main data
  </divert>

=item B<Pass 6: Character and String Substitution>

 Processing:     explicit
 Implementation: Area Subst (ASubst)
 Author:         Ralf S. Engelschall <rse@engelschall.com>
 See Also:       wml_p6_asubst(1)

B<Description:>

In this pass single characters or substrings are substituted within dedicated
areas (delimited by C<{: ... :}>).  The intend is to support ISO-Latin-1 or
other special characters which will be entered as 8 Bit character codes and
are substituted by their HTML entity-encoding string. Do not intermix this
with macro-expansion of Pass 2 or 4. This is generalized regular expression
based substitution pass where you can use Perl's C<s/../../> and C<tr/../../>
commands to specify the substitutions. These can be placed anywhere inside the
substitution area and just have to be marked by C<[[...]]> delimiters. But the
commands are always applied to the whole area.

B<Summary Of Essential Features:>

  {: ...text..[[s/../../flags]]..
     ...text..[[tr/../../flags]].. :}

B<Example:>

  {: [[s|ä|&auml;|]] [[s|ü|&uuml;|]]
  Foo Bar Baz Quux with Umlauts ä and ü
  :}

=item B<Pass 7: Markup Code Fixup>

 Processing:     implicit
 Implementation: HTMLfix
 Author:         Ralf S. Engelschall <rse@engelschall.com>
 See Also:       wml_p7_htmlfix(1)

B<Description:>

In this pass some commonly known HTML markup code fixups are done.  For
instance missing C<WIDTH> and C<HEIGHT> attributes for all C<IMG> tags are
calculated and added, C<ALT> tags are added where missing, missing `C<#>'
characters in front of hextriple color attributes are added, numeric attribute
values are surrounded by quotes, obsolete HTML markup code like the
proprietary C<E<lt>centerE<gt>> tag is replaced by new standard HTML 3.2 tags
(C<E<lt>div align=centerE<gt>>), etc. pp.

=item B<Pass 8: Markup Code Stripping>

 Processing:     implicit
 Implementation: HTMLstrip
 Author:         Ralf S. Engelschall <rse@engelschall.com>
 See Also:       wml_p8_htmlfix(1)

B<Description:>

Because macro definitions add newlines to the output (or you have to always
use "C<...>E<lt>C</define-tag>E<gt>C<;;;>", etc), additional comments
shell-style would be useful and whitespaces can often be stripped from HTML
markup code without changing the result, this special HTML markup code
reducement pass is done. The amount of stripping can be controlled by the WML
option B<-O>. Default is B<-O2> which does a really good job without
destroying anything. There is one special feature one should know: This pass
recognizes pre-formatted areas ( C<E<lt>preE<gt>..E<lt>/preE<gt>>) and skips
them. Additionally when you want some area of your input file Threaten like
pre-formatted, then this Pass also supports its own container tag named
C<E<lt>nostripE<gt>...E<lt>/nostripE<gt>>. This has the same effect like
C<E<lt>preE<gt>> but is itself stripped, too.

=item B<Pass 9: Markup Code Splitting and Output Generation>

 Processing:     implicit/explicit
 Implementation: Slice
 Author:         Ralf S. Engelschall <rse@engelschall.com>
 See Also:       wml_p9_slice(1)
                 http://www.engelschall.com/sw/slice/

B<Description:>

The last and final pass is a really tricky one again, because one feature is
still not implemented. We need some way to conditionally create output to
different output files. To accomplish this another source file construct
(C<[NAME:...:NAME]>) is recognized which defines so-called I<slices>.  Those
slices are (possibly overlapped or nested) named areas of the input file which
can be used via WML's B<-o> option. This option can contain a I<slice-term> in
front of the filename which selects the slices to be written to the output
file. Such slice-terms are actually set theory terms where slices with the
same name define a set.

B<Summary Of Essential Features:>

  [NAME: ... :NAME]
  [NAME: ... :]

B<Example:>

  [EN:Welcome to:][DE:Willkommen zu:] Foo Bar Baz Quux!

=back



=head2 CONCEPT 2: WMLRC FILE HIERARCHY AND WMLOPTS VARIABLE

The second essential idea of WML is the use of F<.wmlrc> files and a
C<WMLOPTS> environment variable for additionally command line options.  On
startup the frontend F<wml> first processes all options found in C<WMLOPTS>,
then it reads all options from F<$HOME/.wmlrc> followed by the options of all
F<.wmlrc> files found in all parent directories (i.e. F<../.wmlrc>,
F<../../.wmlrc>, etc) of the directory containing input file.  And finally it
processes all options given on the command line.   For instance this feature
provides you with the ability to setup defaults via B<-D> options in the
F<.wmlrc> file at the top of your Webarea.

And there is one more special case: The option form

   -DNAME~VALUE 

is always sticky to its location, i.e. it always gets evaluated for its local
directory context instead of the current working directory where F<wml> was
started. Use this to easily introduce path or URL variables which adjust
automatically to the current context of the generated webpage. 



=head2 CONCEPT 3: AUTO-ADJUSTED URL AND FILENAME VARIABLES

The third essential idea of WML is the above shortly described variable
adjustment concept which can be used via variable interpolation.  The frontend
F<wml> provides a B<-D> option for defining variables which get interpolated
in each pass:

  -DNAME=VALUE
  -DNAME~VALUE

For both forms the value can be interpolated via E<lt>C<get-var NAME>E<gt>
inside Pass 2 and via C<E<lt>:=$NAME:E<gt>> in Pass 3. The difference between
the two forms is the tricky part of adjustment here:

=over 4

=item C<-D NAME=VALUE>

Here the variable NAME gets statically set to VALUE. Each time you interpolate
the variable the result is exactly VALUE.

=item C<-D NAME~VALUE>

Here the variable NAME gets initialized with VALUE and VALUE will be treated
as either a (not fully qualified) URL or filename.  When you interpolate the
variable the result is VALUE if the current working directory is the same as
where you used the B<-D> option (either where you run the frontend F<wml> or a
F<.wmlrc> file). Else the result is VALUE relative path-adjusted for the
current working directory. 

=back

On the first look this seems useless, but combined with CONCEPT 2 this
provides a very essential feature. Here it provides a powerful mechanism to
automatically let URLs or pathnames re-calculated for the local context.  For
instance when you define C<-DROOT~.> in your top-level F<.wmlrc> file then the
variable C<ROOT> will be interpolated to `C<.>' at the top-level, to `C<..>'
at the first subdir level, to `C<../..>' at the second subdir level, etc.  Use
this for creating navigation bars or URL references across subtrees.

=head1 MORE INFORMATION

Now you've seen the various core languages of WML. For a step-by-step
introduction to this functionality and to see real examples, I recommend you
to read the WML tutorial in wml_tutorial(7) now.

Additionally can can step through the set of available standard include files
WML ships with. Start with the top-level include file wml::all(3).

=head1 SEEALSO

wml_tutorial(7),
wml_tags(7).

wml_p1_ipp(1),
wml_p2_mp4h(1),
wml_p3_eperl(1),
wml_p4_gm4(1),
wml_p5_divert(1),
wml_p6_asubst(1),
wml_p7_htmlfix(1),
wml_p8_htmlstrip(1),
wml_p9_slice(1).

wml::all(3)

=cut

##EOF##
�����wml-2.0.12.orig/wml_docs/wml_tags.L.incl������������������������������������������������������������0000644�0001750�0001750�00000014210�10343637560�016064� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
<gfont>...</gfont>                        wml::des::gfont(3)

<imgbg>                                   wml::des::imgbg(3)

<imgdot>                                  wml::des::imgdot(3)

<lowsrc>                                  wml::des::lowsrc(3)

<navbar:define>...</navbar:define>        wml::des::navbar(3)
<navbar:header>...</navbar:header>        wml::des::navbar(3)
<navbar:footer>...</navbar:footer>        wml::des::navbar(3)
<navbar:prolog>...</navbar:prolog>        wml::des::navbar(3)
<navbar:epilog>...</navbar:epilog>        wml::des::navbar(3)
<navbar:button>                           wml::des::navbar(3)
<navbar:open>                             wml::des::navbar(3)
<navbar:filter>...</navbar:filter>        wml::des::navbar(3)
<navbar:debug>                            wml::des::navbar(3)
<navbar:render>                           wml::des::navbar(3)

<preload>                                 wml::des::preload(3)

<rollover>                                wml::des::rollover(3)

<space>                                   wml::des::space(3)
<hspace>                                  wml::des::space(3)
<vspace>                                  wml::des::space(3)
<over>...</over>                          wml::des::space(3)

<ps>                                      wml::des::typography(3)
<ds>                                      wml::des::typography(3)
<pi>                                      wml::des::typography(3)
<ein>                                     wml::des::typography(3)
<big>                                     wml::des::typography(3)
<sc>..</sc>                               wml::des::typography(3)
<csc>..</csc>                             wml::des::typography(3)
<spaced>..</spaced>                       wml::des::typography(3)
<gesperrt>..</gesperrt>                   wml::des::typography(3)
<verbcode>..</verbcode>                   wml::des::typography(3)
<headline>..</headline>                   wml::des::typography(3)
<subheadline>..</subheadline>             wml::des::typography(3)
<ue>..</ue>                               wml::des::typography(3)
<zwue>..</zwue>                           wml::des::typography(3)
<tul>..</tul>                             wml::des::typography(3)
<tli>                                     wml::des::typography(3)

<isolatin>..</isolatin>                   wml::fmt::isolatin(3)

<pod>..</pod>                             wml::fmt::pod(3)

<sdf>..</sdf>                             wml::fmt::sdf(3)

<text>..</text>                           wml::fmt::text(3)

<url>..</url>                             wml::fmt::url(3)

<verbatim>..</verbatim>                   wml::fmt::verbatim(3)
<verbatim-file>                           wml::fmt::verbatim(3)

<xtable>..</xtable>                       wml::fmt::xtable(3)

<csmap>                                   wml::imp::csmap(3)

<fsview>                                  wml::imp::fsview(3)

<import>                                  wml::imp::generic(3)

<default-value>                           wml::mod::MakeMaker(3)
<write-makefile>                          wml::mod::MakeMaker(3)

<require>                                 wml::mod::version(3)

<box>...</box>                            wml::std::box(3)

<case:upper>...</case:upper>              wml::std::case(3)
<case:lower>...</case:lower>              wml::std::case(3)

<grid>...</grid>                          wml::std::grid(3)
<cell>...</cell>                          wml::std::grid(3)

<href>                                    wml::std::href(3)

<info>                                    wml::std::info(3)
<info:document-url>                       wml::std::info(3)

<label>                                   wml::std::label(3)
<ref>                                     wml::std::label(3)

<lang:new>                                wml::std::lang(3)
<lang:area>...</lang:area>                wml::std::lang(3)
<lang:set-wildcard>                       wml::std::lang(3)
<lang:star:>                              wml::std::lang(3)
<lang:star:href:>                         wml::std::lang(3)
<lang:star:slice:>                        wml::std::lang(3)

<logo>                                    wml::std::logo(3)

<page>                                    wml::std::page(3)
<head>...</head>                          wml::std::page(3)
<title>...</title>                        wml::std::page(3)

<array:size>                              wml::std::tags(3)
<array:push>                              wml::std::tags(3)
<array:pop>                               wml::std::tags(3)
<array:show>                              wml::std::tags(3)
<array:topvalue>                          wml::std::tags(3)
<ifdef>                                   wml::std::tags(3)
<perl>...</perl>                          wml::std::tags(3)
<perl:assign>                             wml::std::tags(3)
<perl:assign:sq>                          wml::std::tags(3)
<perl:print>...</perl:print>              wml::std::tags(3)
<perl:print:>                             wml::std::tags(3)
<perl:print:var>                          wml::std::tags(3)
<say>...</say>                            wml::std::tags(3)
<m4>...</m4>                              wml::std::tags(3)
<symbol>                                  wml::std::tags(3)
<dump>                                    wml::std::tags(3)
<enter>                                   wml::std::tags(3)
<leave>                                   wml::std::tags(3)
<divert>...</divert>                      wml::std::tags(3)
<asubst>...</asubst>                      wml::std::tags(3)
<javascript>...</javascript>              wml::std::tags(3)

<toc>                                     wml::std::toc(3)
<toc_hX>                                  wml::std::toc(3)

<define-container>...</define-container>  wml::sys::compat1(3)
<defsubst>...</defsubst>                  wml::sys::compat1(3)
<defmacro>...</defmacro>                  wml::sys::compat1(3)
<prog>...</prog>                          wml::sys::compat1(3)
<concat>...</concat>                      wml::sys::compat1(3)
<sub>...</sub>                            wml::sys::compat1(3)
<mul>...</mul>                            wml::sys::compat1(3)
<mod>...</mod>                            wml::sys::compat1(3)

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_docs/wml_tags.L.main������������������������������������������������������������0000644�0001750�0001750�00000017555�10343637560�016102� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!wml                                     wml(1)
<protect>...</protect>                    wml(1)

#include                                  wml_p1_ipp(1)
#use                                      wml_p1_ipp(1)
#depends                                  wml_p1_ipp(1)
\                                         wml_p1_ipp(1)
__FILE__                                  wml_p1_ipp(1)
__LINE__                                  wml_p1_ipp(1)
__END__                                   wml_p1_ipp(1)
$(...)                                    wml_p1_ipp(1)
#                                         wml_p1_ipp(1)

<__file__>                                wml_p2_mp4h(1)
<__line__>                                wml_p2_mp4h(1)
<__version__>                             wml_p2_mp4h(1)
<lb>                                      wml_p2_mp4h(1)
<rb>                                      wml_p2_mp4h(1)
<dq>                                      wml_p2_mp4h(1)
<bs>                                      wml_p2_mp4h(1)
<timer>                                   wml_p2_mp4h(1)
<date>                                    wml_p2_mp4h(1)
<mp4h-l10n>                               wml_p2_mp4h(1)
<mp4h-output-radix>                       wml_p2_mp4h(1)
<debugmode>                               wml_p2_mp4h(1)
<debugfile>                               wml_p2_mp4h(1)
<function-def>                            wml_p2_mp4h(1)
<debugging-off>                           wml_p2_mp4h(1)
<debugging-on>                            wml_p2_mp4h(1)
<get-file-properties>                     wml_p2_mp4h(1)
<directory-contents>                      wml_p2_mp4h(1)
<file-exists>                             wml_p2_mp4h(1)
<real-path>                               wml_p2_mp4h(1)
<group>                                   wml_p2_mp4h(1)
<compound> ... </compound>                wml_p2_mp4h(1)
<disjoin>                                 wml_p2_mp4h(1)
<noexpand>                                wml_p2_mp4h(1)
<expand>                                  wml_p2_mp4h(1)
<if>                                      wml_p2_mp4h(1)
<ifeq>                                    wml_p2_mp4h(1)
<ifneq>                                   wml_p2_mp4h(1)
<when> ... </when>                        wml_p2_mp4h(1)
<while> ... </while>                      wml_p2_mp4h(1)
<foreach> ... </foreach>                  wml_p2_mp4h(1)
<var-case>                                wml_p2_mp4h(1)
<break>                                   wml_p2_mp4h(1)
<return>                                  wml_p2_mp4h(1)
<warning>                                 wml_p2_mp4h(1)
<exit>                                    wml_p2_mp4h(1)
<at-end-of-file> ... </at-end-of-file>    wml_p2_mp4h(1)
<define-tag> ... </define-tag>            wml_p2_mp4h(1)
<provide-tag> ... </provide-tag>          wml_p2_mp4h(1)
<let>                                     wml_p2_mp4h(1)
<undef>                                   wml_p2_mp4h(1)
<set-hook> ... </set-hook>                wml_p2_mp4h(1)
<get-hook>                                wml_p2_mp4h(1)
<attributes-quote>                        wml_p2_mp4h(1)
<attributes-remove>                       wml_p2_mp4h(1)
<attributes-extract>                      wml_p2_mp4h(1)
<define-entity> ... </define-entity>      wml_p2_mp4h(1)
<gt>                                      wml_p2_mp4h(1)
<lt>                                      wml_p2_mp4h(1)
<eq>                                      wml_p2_mp4h(1)
<neq>                                     wml_p2_mp4h(1)
<add>                                     wml_p2_mp4h(1)
<substract>                               wml_p2_mp4h(1)
<multiply>                                wml_p2_mp4h(1)
<divide>                                  wml_p2_mp4h(1)
<modulo>                                  wml_p2_mp4h(1)
<min>                                     wml_p2_mp4h(1)
<max>                                     wml_p2_mp4h(1)
<include>                                 wml_p2_mp4h(1)
<use>                                     wml_p2_mp4h(1)
<load>                                    wml_p2_mp4h(1)
<comment> ... </comment>                  wml_p2_mp4h(1)
<set-eol-comment>                         wml_p2_mp4h(1)
<set-quotes>                              wml_p2_mp4h(1)
<dnl>                                     wml_p2_mp4h(1)
<frozen-dump>                             wml_p2_mp4h(1)
<not>                                     wml_p2_mp4h(1)
<and>                                     wml_p2_mp4h(1)
<or>                                      wml_p2_mp4h(1)
<downcase>                                wml_p2_mp4h(1)
<upcase>                                  wml_p2_mp4h(1)
<capitalize>                              wml_p2_mp4h(1)
<string-length>                           wml_p2_mp4h(1)
<substring>                               wml_p2_mp4h(1)
<string-eq>                               wml_p2_mp4h(1)
<string-neq>                              wml_p2_mp4h(1)
<string-compare>                          wml_p2_mp4h(1)
<char-offsets>                            wml_p2_mp4h(1)
<subst-in-string>                         wml_p2_mp4h(1)
<subst-in-var>                            wml_p2_mp4h(1)
<match>                                   wml_p2_mp4h(1)
<set-regexp-syntax>                       wml_p2_mp4h(1)
<get-regexp-syntax>                       wml_p2_mp4h(1)
<get-var>                                 wml_p2_mp4h(1)
<get-var-once>                            wml_p2_mp4h(1)
<set-var>                                 wml_p2_mp4h(1)
<set-var-x> ... </set-var-x>              wml_p2_mp4h(1)
<set-var-verbatim>                        wml_p2_mp4h(1)
<unset-var>                               wml_p2_mp4h(1)
<preserve>                                wml_p2_mp4h(1)
<restore>                                 wml_p2_mp4h(1)
<var-exists>                              wml_p2_mp4h(1)
<increment>                               wml_p2_mp4h(1)
<decrement>                               wml_p2_mp4h(1)
<symbol-info>                             wml_p2_mp4h(1)
<copy-var>                                wml_p2_mp4h(1)
<defvar>                                  wml_p2_mp4h(1)
<array-size>                              wml_p2_mp4h(1)
<array-add-unique>                        wml_p2_mp4h(1)
<array-member>                            wml_p2_mp4h(1)
<array-push>                              wml_p2_mp4h(1)
<array-pop>                               wml_p2_mp4h(1)
<array-topvalue>                          wml_p2_mp4h(1)
<array-shift>                             wml_p2_mp4h(1)
<array-concat>                            wml_p2_mp4h(1)
<sort>                                    wml_p2_mp4h(1)
<divert>                                  wml_p2_mp4h(1)
<divnum>                                  wml_p2_mp4h(1)
<undivert>                                wml_p2_mp4h(1)

<: ... :>                                 wml_p3_eperl(1)
<:= ... :>                                wml_p3_eperl(1)

m4_quote                                  wml_p4_gm4(1)
m4_noquote                                wml_p4_gm4(1)
m4_define                                 wml_p4_gm4(1)
m4_undefine                               wml_p4_gm4(1)
m4_ifdef                                  wml_p4_gm4(1)
m4_ifelse                                 wml_p4_gm4(1)

{#NAME#}                                  wml_p5_divert(1)
{#NAME#:                                  wml_p5_divert(1)
:#NAME#}                                  wml_p5_divert(1)
<<NAME>>                                  wml_p5_divert(1)
..NAME>>                                  wml_p5_divert(1)
<<NAME..                                  wml_p5_divert(1)

{: ... :}                                 wml_p6_asubst(1)
[[..]]                                    wml_p6_asubst(1)

<nostrip>...</nostrip>                    wml_p8_htmlstrip(1)
<suck>                                    wml_p8_htmlstrip(1)

[NAME:...:]                               wml_p9_slice(1)
[NAME:...:NAME]                           wml_p9_slice(1)
%!slice                                   wml_p9_slice(1)
���������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/COPYRIGHT���������������������������������������������������������������������������0000644�0001750�0001750�00000002715�10343637577�012711� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  C O P Y R I G H T
  =================

  WML -- Website META Language

  Copyright (C) 1996-2001 Ralf S. Engelschall
  Copyright (C) 1999-2001 Denis Barbier

  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 2 of the License, 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, write to

      Free Software Foundation, Inc.
      59 Temple Place - Suite 330
      Boston, MA  02111-1307, USA

  Notice, that ``free software'' addresses the fact that this program
  is __distributed__ under the term of the GNU General Public License
  and because of this, it can be redistributed and modified under the
  conditions of this license, but the software remains __copyrighted__
  by the author. Don't intermix this with the general meaning of 
  Public Domain software or such a derivated distribution label.

  The author reserves the right to distribute following releases of
  this program under different conditions or license agreements.

  For Copyrights on foreign parts see the file COPYRIGHT.OTHER !

���������������������������������������������������wml-2.0.12.orig/CREDITS�����������������������������������������������������������������������������0000644�0001750�0001750�00000013267�10343637577�012442� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  C R E D I T S
  =============

  Credit has to given to the following people:

  o Ralf S. Engelschall   <rse@engelschall.com>
    The original author of the WML package and
    package maintainer between WML version 1.0 and 1.6.7

  o Denis Barbier         <barbier@engelschall.com>
    The current WML maintainer since WML version 1.6.8

  Additional credit has to be given to the following people who contributed
  ideas, stuff, bugfixes, hints etc. (in alphabetical order):

  o Thomas Akin           <takin@kennesaw.edu>
  o Petr Andreyev         <petr@xanadu.ru>
  o Viorel Anghel         <vang@roedu.net>
  o Jordan Baker          <jbb@interlog.com>
  o Marc Baudoin          <babafou@babafou.eu.org>
  o John Bazik            <jsb@cs.brown.edu>
  o Axel Beckert          <rse-wml@deuxchevaux.org>
  o Alvise Belotti        <alvise@lettere.unipd.it>
  o Jarda Benkovsky       <pvt.benkovsk@pvtnet.cz>
  o Bruno Boettcher       <bboett@erm1.u-strasbg.fr>
  o Stephane Bortzmeyer   <bortzmeyer@pasteur.fr>
  o Jim Bowlin            <bowlin@sirius.com>
  o Simon Burr            <simes@bpfh.net>
  o Carsten G. Braeutigam <carsten@3point.net>
  o Tomasz Cholewo        <t.cholewo@ieee.org>
  o Wolfgang Dautermann   <dauti@oeh.tu-graz.ac.at>
  o Max H. Duenki         <duenki@isi.ee.ethz.ch>
  o Stephen van Egmond    <svanegmo@truespectra.com>
  o Claus Faerber         <claus@faerber.muc.de>
  o Markus Fleck          <fleck@isoc.de>
  o Anthony Fok           <foka@gpu.srv.ualberta.ca>
  o Gerfried Fuchs        <alfie@innocent.com>
  o Tetsuya Furukawa      <tetsuya@secom-sis.co.jp>
  o Nico Galoppo          <scratch@ace.ulyssis.student.kuleuven.ac.be>
  o Tom Gilbert           <gilbertt@linuxbrit.co.uk>
  o Rajendra Gokhale      <rvg@creato.org>
  o Hans de Graaff        <graaff@xs4all.nl>
  o Alexander Graefe      <wa0191@stud.uni-wuppertal.de>
  o Norbert Gruener       <nog@mpa-garching.mpg.de>
  o Thomas Guettler       <guettli@web.de>
  o Florian Hars          <hars@math.uni-hamburg.de>
  o Jan Ulrich Hasecke    <juh@pironet.de>
  o Andy Hawkins          <andy@gently.demon.co.uk>
  o Jim Hebert            <jhebert@compu-aid.com>
  o Karl M. Hegbloom      <karlheg@bittersweet.inetarena.com>
  o Oliver Hensel         <oliver.hensel@gmx.de>
  o Joey Hess             <joeyh@debian.org>
  o Werner Heuser         <wehe@snafu.de>
  o Andreas Hoffmann      <hoffmana@mathematik.tu-muenchen.de>
  o Andreas Hofmeister    <hofmeist@informatik.uni-freiburg.de>
  o Andrew S. Howell      <andy@tibcofinance.com>
  o Graham Hughes         <thrag@treepeople.dyn.ml.org>
  o Lars Kellogg-Stedman  <lars@larsshack.org>
  o Franz Knipp           <franz@knipp.org>
  o Florian Kuehnert      <sutok@gmx.de>
  o Märt Laak             <Mart.Laak@hansa.ee>
  o Ghislaine Labouret    <Ghislaine.Labouret@hsc.fr>
  o Howard A. LaHurreau   <alexdw@locl.net>
  o Benoit des Ligneris   <benoit.des.ligneris@physique.usherb.ca>
  o Thomas Lotterer       <thomas.lotterer@cw.com>
  o Dan Ludden            <dan.ludden@lmco.com>
  o Martin Maechler       <maechler@stat.math.ethz.ch>
  o Gerd Maier            <gerd.maier@gmx.net>
  o Ilya Martynov         <m_ilya@agava.com>
  o Michael McNamara      <mac@surefirev.com>
  o David Mentre          <David.Mentre@irisa.fr>
  o Uwe Mindrup           <uwe@mindrup.de>
  o Frederic Le Mouel     <Frederic.LeMouel@irisa.fr>
  o Torsten Naumann       <Torsten.Naumann@informatik.tu-chemnitz.de>
  o Hans U. Niedermann    <ulrich@niedermann.bb.bawue.de>
  o Aleksi Niemelä        <AleksiN@hex.fi>
  o Christian Niss        <chris@topitmagic.de>
  o Clemens Oertel        <oertel@uni-tuebingen.de>
  o Tobias Oetiker        <oetiker@ee.ethz.ch>
  o Stian Storengen Olsen <stiano@tihlde.org>
  o Bruce Perens          <bruce@debian.org>
  o Stephan Petersen      <sp@gtt.lth.rwth-aachen.de>
  o Rene Pijlman          <R.W.Pijlman@inter.nl.ne>
  o Andrew Pimlott        <pimlott@abel.math.harvard.edu>
  o Joerg Plate           <Joerg@Plate.cx>
  o Dave Plonka           <plonka@doit.wisc.edu>
  o A. Poulain-Maubant    <Aymeric.PoulainMaubant@jipo.com>
  o Martin Quinson        <Martin.Quinson@ens-lyon.fr>
  o Xose Manoel Ramos     <xmanoel@bigfoot.com>
  o John Ranck            <ranck@husc.harvard.edu>
  o Christian Reiber      <chrei@en.muc.de>
  o Albert Reiner         <areiner@tph.tuwien.ac.at>
  o Laurent Riesterer     <riesterer@celar.fr>
  o Josip Rodin           <joy@cibalia.gkvk.hr>
  o Thomas Roessler       <roessler@guug.de>
  o Roland Rosenfeld      <roland@spinnaker.rhein.de>
  o Jean-Michel Sauvage   <jean-michel.sauvage@club-internet.fr>
  o Wayne Schlitt         <wayne@midwestcs.com>
  o Heiko Schlittermann   <heiko@lotte.sax.de>
  o Martin Schulze        <joey@infodrom.north.de>
  o Felix Seeger          <felix.seeger@gmx.de>
  o Steve Sizemore        <steve@cmpharm.ucsf.edu>
  o Joey Smith            <joey@joeysmith.com>
  o Igor V. Spiridonov    <garris@trunk.uco.ru>
  o Robin Stephenson      <robin@gbhap.com>
  o Jacques Supcik        <supcik@ip-plus.net>
  o Henrik Theiling       <theiling@coli.uni-sb.de>
  o Jay Treacy            <treacy@debian.org>
  o Nobuyuki Tsuchimura   <tutimura@nn.iij4u.or.jp>
  o Tommi Vainikainen     <thv@iki.fi>
  o Ralf Vissers          <ravis@web.de>
  o Boris Wesslowski      <bwess@gmx.de>
  o Clayton Wheeler       <cswheeler@halcyon.com>
  o Craig Wiegert         <wiegert@quintessence.uchicago.edu>
  o Sebastian Wilhelmi    <wilhelmi@ira.uka.de>
  o Blair Zajac           <blair@orcaware.com>
  o Fritz Zaucker         <zaucker@ee.ethz.ch>
  o Stefan `Sec` Zehl     <sec@42.org>
  o Kurt D. Zeilenga      <Kurt@boolean.net>
  o Frediano Ziglio       <freddy77@angelfire.com>
  o C. Zuckschwerdt       <zany@darkride.net>

  ...and all other WML users who gave us feedback but we've forgot...

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�013706� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/sup/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�014515� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/sup/path.src������������������������������������������������������������0000644�0001750�0001750�00000004317�10343637515�016164� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::sup::path - Filesystem Path Manipulation
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

<protect pass=2>
<:
sub relpath {
    my ($from, $to) = @_;
    my (@F, @T, $i, $j, $path);

    #   canonicalize input
    $from .= '/' if ($from !~ m|/$|);
    $to   .= '/' if ($to   !~ m|/$|);
    $from = '' if ($from eq './');
    $to   = '' if ($to   eq './');
    $path = '';

    #   split into directory parts
    @F = split('/', $from);
    @T = split('/', $to);

    #   skip common prefix dirs
    for ($i = 0; $i <= $#F; $i++) {
        last if ($F[$i] ne $T[$i]);
    }

    #   go back for remaining "from" dirs
    for ($j = $i; $j <= $#F; $j++) {
        $path .= '../';
    }

    #   go foreward for remaining "to" dirs
    for ($j = $i; $j <= $#T; $j++) {
        $path .= "$T[$j]/";
    }

    return $path;
}

sub canonpath {
    my ($path) = @_;

    my $pathL = '';
    while ($path ne $pathL) {
        $pathL = $path;
        $path =~ s|/+|/|g;
        $path =~ s|/\./|/|g;
        $path =~ s|/\.$|/|;
        $path =~ s|^\./(.)|$1|g;
        $path =~ s{(^|/)([^/]+)(/\.\./)}{if ($2 ne '..') { $1 } else { $1.$2.$3 }}eg;
    }
    $path =~ s{(^|/)([^/]+)(/\.\.)$}{if ($2 ne '..') { $1 } else { $1.$2.$3.'/' }}eg;
    $path = './' if $path eq '';
    return $path;
}

sub canonurl {
    my ($url) = @_;

    if ($url =~ m|^(.+?://)(.+)|) {
        $url = $1.&canonpath($2);
    }
    else {
        $url = &canonpath($url);
    }
    return $url;
}
:>
</protect>

##EOF##
__END__

=head1 NAME

wml::sup::path - Filesystem Path Manipulation

=head1 SYNOPSIS

 #use wml::sup::path

 <: $relpath = &relpath($from, $to); :>
 <: $path    = &canonpath($path);    :>
 <: $url     = &canonurl($url);      :>

=head1 DESCRIPTION

This include file provides the Perl functions C<relpath>, C<canonpath> and
C<canonurl> which calculate relative and canonical paths/urls.  For example,
the relative path from F</foo/path/bar/quux> to F</foo/path/foobar> is
calculated to F<../../foobar> and the canonical path of
F<./foo/./bar/../quux//> is F<foo/quux/>.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P3
 External: --

=head1 SEEALSO

perl(1)

=cut

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/sup/hextriple.src�������������������������������������������������������0000644�0001750�0001750�00000002210�10343637515�017222� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::sup::hextriple - Convert #rrggbb String to RGB Value and vice versa
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

<protect pass=2>
<:
sub triple2rgb {
    my ($triple) = @_;
    my ($r, $g, $b);

    $triple =~ s|^#||;
    $triple =~ tr|A-F|a-f|;
    $triple =~ m|([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])([a-f0-9][a-f0-9])|;
    ($r, $g, $b) = (hex($1), hex($2), hex($3));

    return ($r, $g, $b);
}

sub rgb2triple {
    my ($r, $g, $b) = @_;
    my ($triple);

    $triple = sprintf("%02x%02x%02x", $r, $g, $b);

    return $triple;
}
:>
</protect>

##EOF##
__END__

=head1 NAME

wml::sup::hextriple - Convert #rrggbb String to RGB Value and vice versa

=head1 SYNOPSIS

 #use wml::sup::hextriple

 <: ($r, $g, $b) = &triple2rgb($triple); :>
 <: $triple = &rgb2triple($r, $g, $b); :>

=head1 DESCRIPTION

This converts between the strings C<RRGGBB> or C<#RRGGBB> and the
corresponding hextriple consisting of the value for red, green and blue.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P3
 External: --

=head1 SEEALSO

HTML color attributes.

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/sup/all.src�������������������������������������������������������������0000644�0001750�0001750�00000001422�10343637515�015772� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::sup:all - All of Support (SUP) category
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::sup::hextriple
#use wml::sup::path

##EOF##
__END__

=head1 NAME

wml::sup:all - All of Support (SUP) category

=head1 SYNOPSIS

 #use wml::sup::all

=head1 DESCRIPTION

This includes all existing include files of the B<Support>
(SUP) category, i.e. all includes with prefix B<wml::sup>.  The following
files currently exist:

 wml::sup::hextriple(3) ... Convert #rrggbb string to RGB value and v.v.
 wml::sup::path(3)      ... Filesystem Path Manipulation

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1
 External: --

=head1 SEEALSO

wml::sup::hextriple(3),
wml::sup::path(3).

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/all.src�����������������������������������������������������������������0000644�0001750�0001750�00000003273�10343637516�015172� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::all - WML Include Files Of All Categories
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::des::all
#use wml::fmt::all
#use wml::imp::all
#use wml::mod::all
#use wml::std::all
#use wml::sup::all
#use wml::sys::all

##EOF##
__END__

=head1 NAME

wml::all - WML Include Files Of All Categories

=head1 SYNOPSIS

 #use wml::all

=head1 DESCRIPTION

This includes all existing standard WML include files of all categories.  Use
it only when you are a really lazy webmaster which just wants all features WML
can provide ;-) It is always better to include one of the C<wml::xxx::all>
include files.

The following categories currently exists:

=over 4 

=item B<Standard> (std)

Here you can find all standard tagsets which everybody usually uses all the
time. 

=item B<Webdesign> (des)

These are tagsets which help webdesigners of the 3rd generation fighting
against the puristic plain HTML. Use with care.

=item B<Formatting> (fmt)

Here you can find formatting environments, i.e. usually container tags which
do special formatting.

=item B<Import> (imp)

Here you can find import tags, i.e. usually tags which import external data
and converts them to HTML. 

=item B<Support> (sup)

Some support stuff which is used in other include files.

=item B<System> (sys)

All system related stuff.

=item B<User> (usr)

The user specific include files. Should be extended by the webmaster for his
users.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1
 External: --

=head1 SEEALSO

wml::des::all(3),
wml::fmt::all(3),
wml::imp::all(3),
wml::std::all(3),
wml::sup::all(3),
wml::sys::all(3),
wml::usr::all(3).

=cut

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/des/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�014461� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/des/typography.src������������������������������������������������������0000644�0001750�0001750�00000031224�10343637516�017400� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::typography - Typography
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags
#use wml::des::imgdot
#use wml::des::gfont
#use wml::des::space
#use wml::fmt::verbatim

#
#   typographical paragraph skip (ps)
#   [german variant: *D*urch*S*chuß (ds)]
#
<define-tag ps>
<br />
<imgdot height=<or %0 4 /> /><br />
</define-tag>

<let ds=ps />

#
#   typographical paragraph indention (pi)
#   [german variant: *Ein*rückung (ein)]
#
<define-tag pi>
<br />
<imgdot height=16 width=<or %0 40 /> />
</define-tag>

<let ein=pi />

#
#   big letter
#
<define-tag big>
<gfont face="ps:ptmb8r" size=+4 align=left crop>%0</gfont>
</define-tag>

#
#   Spaced Paragraph
#   [german variant: Gesperrt]
#
<define-tag spaced endtag=required>
<preserve interchar interline />
<set-var %attributes />
<perl>
{
    my $n_char = qq|<get-var interchar />|;
    my $n_line = qq|<get-var interline />|;
    my $base   = qq|<or <get-var IMGDOT_BASE /> <get-var IMAGE_BASE /> />|;
    my $format = qq|<or <get-var IMAGE_FORMAT /> gif />|;
    <perl:assign:sq $body>%body</perl:assign:sq>
    $n_char = 0 if ($n_char eq '' or $n_char < 0);
    $n_line = 0 if ($n_line eq '' or $n_line < 0);

    my $pad_char = '';
    if ($n_char > 0) {
        $pad_char = '&nbsp;' x $n_char;
    }

    my $pad_line = '';
    if ($n_line > 0) {
        $n_line += 14; # 14 pt is the average text width
        my $file = &imgdot($base, 1, 1, 'transp-ffffff', 255, 255, 255, 1, $format);
        $pad_line = '<*img src="'.$file.'" width=1 height='.$n_line.' alt="">';
    }

    my $cnt = 0;
    my $every = int(5 / ($n_char+1));
    $every = 1 if ($every < 1);
    while ($body) {
        if ($body =~ s|^(</?[a-zA-Z]+[^>]*>)||s) {
            <perl:print: $1 />
        }
        elsif ($body =~ s|^([^<\s]+)||s) {
            $word = $1;
            $word =~ s|\G(.)|$1$pad_char|sg;
            <perl:print: $word />
            if (($cnt++ % $every) == 0) {
                <perl:print: $pad_line />
            }
        }
        elsif ($body =~ s|^(\S+)||s) {
            $word = $1;
            $word =~ s|\G(.)|$1$pad_char|sg;
            <perl:print: $word />
            if (($cnt++ % $every) == 0) {
                <perl:print: $pad_line />
            }
        }
        elsif ($body =~ s|^(\s+)||s) {
            $space = $1;
            $space =~ s|\G([^\n])|$pad_char$1|sg;
            <perl:print: $space />
        }
    }
}
</perl>
<restore  interchar interline />
</define-tag>

<let gesperrt=spaced />

#
#   Small Caps (sc)
#   i.e. change all lower case letters to upper case but lower
#   them a little bit by font size.  Optionally all words can
#   begin with an upper case letter
#   [german variant: "Kapitälchen"]
#
<define-tag sc endtag=required>\
<preserve complete />\
<set-var complete=* />\
<set-var %attributes />\
<perl>
{
    my $complete = (qq|<get-var complete />| eq '' ? 1 : 0);
    <perl:assign:sq $body>%body</perl:assign:sq>
    $body =~ s|\n$||s;
    use locale;
    sub convword {
        my ($w) = @_;

        #   optionally make all words start with an upper case letter
        $w = uc(substr($w, 0, 1)).substr($w, 1) if ($complete);

        #   convert lower case chars to upper case
        my $c;
        my @C = split('', $w);
        my $makeupper = 0;
        $w = '';
        foreach $c (@C) {
            if (not $makeupper and $c eq lc($c)) {
                $w .= '<*font size="-1">'.uc($c);
                $makeupper = 1;
            }
            elsif ($makeupper and $c ne lc($c)) {
                $w .= '<*/font>'.$c;
                $makeupper = 0;
            }
            elsif ($makeupper and $c eq lc($c)) {
                $w .= uc($c);
            }
            else {
                $w .= $c;
            }
        }
        $w .= '<*/font>' if ($makeupper);
        return $w;
    }
    my $text = '';
    while ($body ne '') {
        if ($body =~ m|^([^<]+)(<[/a-zA-Z].*?>)(.*)$|) {
            my $words = $1;
            my $rest  = $2;
            $body = $3;
            $words =~ s|(\w+)|&convword($1)|sge;
            $text .= $words . $rest;
        }
        elsif ($body =~ m|^(<[/a-zA-Z].*?>)(.*)$|) {
            $text .= $1;
            $body = $2;
        }
        else {
            $body =~ s|(\w+)|&convword($1)|sge;
            $text .= $body;
            $body = '';
        }
    }
    <perl:print: $text />
}
</perl>\
<restore complete />\
</define-tag>

<let csc=sc />

#
#   Verbatim Code Text
#
<define-tag verbcode endtag=required>
<p*>
<over 30>
<b><verbatim>%body</verbatim></b>
</over>
</define-tag>

#
#   Headline
#   [german variant: "Überschrift"]
#
<define-tag headline endtag=required>
<if %0 "<a* name="%0">" />\
<font face="Arial,Helvetica" size=+4><b>%body</b></font>\
<if %0 "</a*>" />
<ds 5 />\
</define-tag>

<let ue=headline />

#
#   Sub Headline
#   [german variant: "Zwischenüberschrift"]
#
<define-tag subheadline endtag=required>
<if %0 "<a* name="%0">" />\
<font face="Arial,Helvetica" size=+2><b>%body</b></font>
<if %0 "</a*>" />
<ds 2 />\
</define-tag>

<let zwue=subheadline />

#
#   Emulation of the <ul>...</ul> environment in
#   a more typographically strong layout.
#
<define-tag tul endtag=required>
<preserve ps pi />
<set-var %attributes />
<defvar pi 30 />
<ps <get-var ps /> />
<table cellspacing=0 cellpadding=0 border=$(DEBUG:-0) summary="">
<tr>
<td valign=top><imgdot height=1 width=<get-var pi /> /></td><suck/>
<td valign=top><imgdot height=1 width=<get-var pi /> /><suck/>
%body<suck/>
</td>
</tr>
</table>
<restore  ps pi />
</define-tag>

<define-tag tli endtag=required>
<preserve pshape pcolor />
<set-var %attributes />
<defvar pshape box />
<defvar pcolor "#cccccc" />
<ps <get-var ps /> />
</td*>\
</tr*>
<tr*>\
<td valign=top align=right>\
<ifeq "<get-var pshape />" "box"
    <imgdot color="<get-var pcolor />" height=10 width=10 />
    "<font color="<get-var pcolor />">-</font>" />\
&nbsp;&nbsp;\
</td>\
<td*>
%body
<restore  pshape pcolor />
</define-tag>

#
#   the ``#use ... face_shortcuts'' support
#
<if "$(face_shortcuts)" <group
{: [[s/(face=)"?helvetica"?/face="Arial,Helvetica"/ig]]
{#TYPOGRAPHY_FACE_SHORTCUTS#}
:}
{#TYPOGRAPHY_FACE_SHORTCUTS#:
/>/>

##EOF##
__END__

=head1 NAME

wml::des::typography - Typography

=head1 SYNOPSIS

 #use wml::des::typography [face_shortcuts]
  
 #   paragraph whitespace
 <ps [height]>
 (<ds [height]>)
 <pi [width]>
 (<ein [width]>)

 #   paragraph text rendering
 <big X>
 <sc [complete]>...</sc>
 <csc>...</csc>
 <spaced [interchar=N] [interline=N]>...</spaced>
 <verbcode>...</verbcode>

 #   headlines
 <headline [name]>...</headline>
 (<ue [name]>...</ue>)
 <subheadline [name]>...</subheadline>
 (<zwue [name]>...</zwue>)

 #   unsorted lists
 <tul [ps=N] [pi=N]>
   <tli [pshape=dash|box] [pcolor=#rrggbb]>...</tli>
   ...
 </tul>

=head1 DESCRIPTION

This include file provides tags for more typographically strong layouting then
HTML per default provides. The following tags are provided:

=over 4

=item B<Typographical Paragraph Skip>

B<C<E<lt>ps >>[I<height>]B<C<E<gt>>>

This is the typographical way to insert a
blank line between two paragraphs. It is not as high as the one generated by
HTML's C<E<lt>pE<gt>> tag. Default is 4 pixels for I<height>. Optically and
functionally C<E<lt>psE<gt>> is between C<E<lt>brE<gt>> and C<E<lt>pE<gt>>.
In german this is called "Durchschuss", so you can also use the alterntive name
C<E<lt>dsE<gt>> for this tag.

  ...The last line of the previous paragraph.
  <ps>
  The new line of the following paragraph...

=item B<Typographical Paragraph Indention> 

B<C<E<lt>pi >>[I<width>]B<C<E<gt>>>

This is the typographical way to glue
paragraphs which should become one optical block. A complete blank line
between them would be ugly and without any inserts the reader cannot
distinguish between the two paragraphs. The typographical solution here is to
indent the second paragraph by I<width> pixels. The default is 40 pixels.
Optically C<E<lt>piE<gt>> also includes the effect of C<E<lt>psE<gt>>.  In
german this is called `Einrückung', so you can also use the alterntive name
C<E<lt>einE<gt>> for this tag.

Example:

  ...The last line of the previous paragraph.
  <pi>The new line of the following paragraph...

=item B<Big Paragraph Starting Letter>

B<C<E<lt>big >>I<X>B<C<E<gt>>>

This is the typographical way to mark the
beginning of a more important paragraph by rendering the first letter of the
first word of this paragraph in huge font. Optically this letter then is
approximately three times bigger then the normal text font. Additionally the
B<alt> attribute of the used C<E<lt>imgE<gt>> tag is set to the letter, so
text-based browsers correctly show the first word. Because 
such a paragraph should also be introduced by more whitespace, one
usually uses the standard C<E<lt>pE<gt>> tag in front of C<E<lt>bigE<gt>> to
achieve the correct optical effect.

Example:

  ...The last line of the previous paragraph.
  <p>
  <big T>he new line of the following paragraph...

=item B<Small Caps Text> 

B<C<E<lt>sc >>[B<complete>]B<C<E<gt>>>...B<C<E<lt>/scE<gt>>>

This container tag renders its body with small caps, i.e.
all lower case letters are changed to upper case while lowered optically via
font size. In german typography this is also known as `Kapitälchen'.
Optionally when adding the attribute B<complete>, all words are forced to
begin with an upper case letter, too.

If you have support for i18n (internationalization) you may also convert case
of non-ASCII characters. See your local documentation locale(7) for details
or ask your system administrator.

=item B<Spaced Text> 

B<C<E<lt>spaced >>[B<interchar=>I<N>] [B<interline=>I<N>]B<C<E<gt>>>...B<C<E<lt>/spacedE<gt>>>

This container tag renders its body as spaced text, i.e.  text with spaces
between the lines and characters. In typpgraphy this is usually used to
emphasize the text by the use of whitespace. Per default B<interchar> and
B<interline> are 0, i.e. no spacing. The spacing is achieved by inserting as
much C<&nbsp;> entities as I<interchar> specifies and 1pt-images of height
14+I<interline> every fifth word.  In german typography this is also known as
`Gesperrt'.

=item B<Headline>

B<C<E<lt>headline >>[I<name>]B<C<E<gt>>>...B<C<E<lt>/headlineE<gt>>>

This container tag creates a typographically better headline as
the standard HTML C<E<lt>h1E<gt>> does, i.e. it renders the text in Helvetica
and used better whitespaces around it. Actually it does not create any
whitespace above it, but the correct one below it. This way you can create the
leading whitespace your own (which is usually different according to the
context) but get nice trailing whitespace (which has to be choosen carefully
to make the headline and the following paragraph one unit).  In german this is
called `Überschrift' hence the alias C<E<lt>ueE<gt>>.

Example:

  ...The last line of the previous paragraph.
  <p>
  <ue>The headline</ue>
  The new line of the following paragraph...

=item B<Sub-Headline>

B<C<E<lt>subheadline >>[I<name>]B<C<E<gt>>>...B<C<E<lt>/subheadlineE<gt>>>

This container tag creates a typographically better
sub-headline as the standard HTML C<E<lt>h2E<gt>> does, i.e. it renders the
text in Helvetica and used better whitespaces around it. Actually it does not
create any whitespace above it, but the correct one below it. This way you can
create the leading whitespace your own (which is usually different according
to the context) but get nice trailing whitespace (which has to be choosen
carefully to make the headline and the following paragraph one unit).  In
german this is called `Zwischenüberschrift' hence the alias C<E<lt>zwueE<gt>>.

Example:

  ...The last line of the previous paragraph.
  <p>
  <zwue>The headline</zwue>
  The new line of the following paragraph...

=item B<Verbatim Code>

B<C<E<lt>verbcodeE<gt>>>...B<C<E<lt>/verbcodeE<gt>>>

This container tag renders its body mostly verbatim, i.e.
treats it like plain (source) code. Internally this just is an indented
C<E<lt>verbatimE<gt>> container from wml::fmt::verbatim(3) which itself is an
enhanced C<E<lt>preE<gt>> container.

=item B<Unnumbered Lists> 

B<C<E<lt>tul >>[B<ps=>I<N>] [B<pi=>I<N>]B<C<E<gt>>>...B<C<E<lt>/tulE<gt>>>

This container tag displays unnumbered lists in a more typographically
strong layout, rendered via HTML tables for indentation.

B<C<E<lt>tli >>[B<pshape=>I<box>|I<dash>] [B<pcolor=>I<#rrggbb>]B<C<E<gt>>>...B<C<E<lt>/tliE<gt>>>

Items are prefixed by a box or a dash, depending on the B<pshape> attribute,
and its color may be defined.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3, P8

=head1 SEEALSO

HTML C<E<lt>fontE<gt>> and C<E<lt>brE<gt>> tags.

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/des/navbar.src����������������������������������������������������������0000644�0001750�0001750�00000111707�10343637516�016450� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::navbar -- Navigation Bar
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 1999-2001 Denis Barbier
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags
#use wml::sup::path

<set-var __nbcount=0 />

#
#   navbar definition
#
<define-tag navbar:define endtag=required>
<preserve name imgstar imgbase urlbase target txtcol_normal txtcol_select />
<set-var %attributes />
<defvar name "unknown-navbar" />
<defvar imgstar "n:s:o" />
<set-var __countbuttons=1 />
<perl> 
  #   The $name variable is used in other <navbar:*> tags and
  #   so is global
  $name = '<get-var name />';
  {
    my ($p, $i);

    #   initialise the data structure for this particular navbar
    #   and fill it with some already known information
    my $CFG = {};
    $NAVBAR{$name} = $CFG;

    $CFG->{NAME} = $name;

    $CFG->{IMGSTAR}  = '<get-var imgstar />';
    $CFG->{IMGBASE}  = '<get-var imgbase />';
    $CFG->{URLBASE}  = '<get-var urlbase />';
    $CFG->{TARGET}   = '<get-var target />';
    $CFG->{TXTCOL_N} = '<get-var txtcol_normal />';
    $CFG->{TXTCOL_S} = '<get-var txtcol_select />';

    $CFG->{HEADER} = '';
    $CFG->{FOOTER} = '';

    $CFG->{PROLOG} = {};
    $CFG->{PROLOG}->{N}  = {};
    $CFG->{PROLOG}->{S}  = {};
    $CFG->{PROLOG}->{SS} = {};
    $CFG->{PROLOG}->{N}->{'any'} = '';

    $CFG->{EPILOG} = {};
    $CFG->{EPILOG}->{N}  = {};
    $CFG->{EPILOG}->{S}  = {};
    $CFG->{EPILOG}->{SS} = {};
    $CFG->{EPILOG}->{N}->{'any'} = "\n";

    $CFG->{BUTTON} = [];

    $CFG->{OPEN}  = 0;
    $CFG->{INDEX} = 0;

    $CFG->{PREV}   = '';
    $CFG->{NEXT}   = '';
    $CFG->{UP}     = '';

    $CFG->{FILTER} = '';

    #   here the other tags now fill in more information...
</perl>
%body
<perl>
    #   ...and finally we do some cleanups

    $last = $#{$NAVBAR{$name}->{BUTTON}}+1;
    foreach $what (qw(PROLOG EPILOG)) {
        foreach $type (qw(N S SS)) {
            foreach $pos (keys(%{$NAVBAR{$name}->{$what}->{$type}})) {
                if ($pos eq 'first') {
                    $NAVBAR{$name}->{$what}->{$type}->{1} =
                        $NAVBAR{$name}->{$what}->{$type}->{$pos};
                    delete $NAVBAR{$name}->{$what}->{$type}->{$pos};
                }
                elsif ($pos eq 'last') {
                    $NAVBAR{$name}->{$what}->{$type}->{$last} =
                        $NAVBAR{$name}->{$what}->{$type}->{$pos};
                    delete $NAVBAR{$name}->{$what}->{$type}->{$pos};
                }
                elsif ($pos !~ m;^(any|\d+)$;) {
                    foreach $p (split(',', $pos)) {
                        my $pfirst = 1;
                        my $plast  = $last;
                        my $pstep  = 1;
                        if ($p =~ m|:(\d+)$|) {
                            $pstep = $1;
                            $p     = $`;
                        }
                        if ($p =~ m|^(\d+)|) {
                            $pfirst = $1;
                        }
                        if ($p =~ m|(\d+)$|) {
                            $plast = $1;
                        }
                        for ($i = $pfirst; $i <= $plast; $i+=$pstep) {
                            $NAVBAR{$name}->{$what}->{$type}->{$i} =
                                $NAVBAR{$name}->{$what}->{$type}->{$pos};
                        }
                    }
                    delete $NAVBAR{$name}->{$what}->{$type}->{$pos};
                }
            }
        }
    }
  }
</perl>
<restore  name imgstar imgbase urlbase target txtcol_normal txtcol_select />
</define-tag>

<define-tag navbar:header endtag=required>
<perl>
    <perl:assign $_navvar>%body</perl:assign>
    $NAVBAR{$name}->{HEADER} = $_navvar;
</perl>
</define-tag>

<define-tag navbar:footer endtag=required>
<perl>
    <perl:assign $_navvar>%body</perl:assign>
    $NAVBAR{$name}->{FOOTER} = $_navvar;
</perl>
</define-tag>

<define-tag navbar:prolog endtag=required>
<preserve type pos />
<set-var %attributes />
<defvar type "N" />
<defvar pos "any" />
<subst-in-var pos "next" <get-var __countbuttons /> />
<perl>
    <perl:assign $_navvar>%body</perl:assign>
    $NAVBAR{$name}
        ->{PROLOG}
        ->{'<get-var type />'}
        ->{'<get-var pos />'} = $_navvar;
</perl>
<restore  type pos />
</define-tag>

<define-tag navbar:epilog endtag=required>
<preserve type pos />
<set-var %attributes />
<defvar type "N" />
<defvar pos "any" />
<subst-in-var pos "next" <get-var __countbuttons /> />
<perl>
    <perl:assign $_navvar>%body</perl:assign>
    $NAVBAR{$name}
        ->{EPILOG}
        ->{'<get-var type />'}
        ->{'<get-var pos />'} = $_navvar;
</perl>
<restore  type pos />
</define-tag>

<define-tag navbar:open endtag=required>
<preserve name />
<set-var %attributes />
<defvar name "unknown-navbar" />
<perl>
    $NAVBAR{'<get-var name />'}->{OPEN} = 1;
</perl>
<restore name />
</define-tag>

#
#   buttons definition
#
<set-var __buttoncnt=1 />
<define-tag navbar:button>
<preserve id alias txt alt img hint url target menu />
<set-var %attributes />
<increment __countbuttons />
<if <get-var alias /> <set-var id= /> />
<if <get-var id /> "" <group
    <set-var id=button<get-var __buttoncnt /> />
    <increment __buttoncnt />
/>/>
#    Skip the navigation buttons
<if <match <get-var url /> "^#[a-zA-Z]+#$" />
    <set-var alias="_nav_" /> />
<subst-in-var id "[^a-zA-Z0-9]" "_" />
<subst-in-var alias "[^a-zA-Z0-9]" "_" />

<perl>
{
    my $B = {};
    push(@{$NAVBAR{$name}->{BUTTON}}, $B);

    $B->{ID}     = '<get-var id />';
    $B->{ALIAS}  = '<get-var alias />';
    $B->{TXT}    = qq|<get-var txt />|;
    $B->{ALT}    = qq|<get-var alt />|;
    $B->{IMG}    = '<get-var img />';
    $B->{HINT}   = qq|<get-var hint />|;
    $B->{URL}    = '<get-var url />';
    $B->{TARGET} = '<get-var target />';
    $B->{MENU}   = '<get-var menu />';

    my %tag_attr<get-var id /> = ();
<set-var __list_tags="a\nimg" />
<set-var __list_sel="N\nS\nSS" />
<foreach __tag __list_tags>
  <set-var __nb_attr=<attributes-quote <attributes-extract
        :<get-var __tag />:(.*) %attributes /> /> />
  <foreach __sel __list_sel>
    $tag_attr<get-var id />{'<get-var __tag /><get-var __sel />'} =  qq(<or
      <attributes-quote <attributes-extract
          :<get-var __tag />\\.<get-var __sel />:(.*) %attributes /> />
      <get-var __nb_attr /> />);
  </foreach>
</foreach>
    #   Perform some clean ups
    foreach my $key (keys %tag_attr<get-var id />) {
        $tag_attr<get-var id />{$key} =~ s/^\s*/ /;
        delete $tag_attr<get-var id />{$key} if $tag_attr<get-var id />{$key} =~ m/^\s*$/;
    }
    $B->{TAG_ATTR}= \%tag_attr<get-var id />;
}
</perl>
<restore  id alias txt alt img hint url target menu />
</define-tag>

#   this is a special case since its body can contain any Perl
#   statements, so we use the <<'HERE' syntax.
<define-tag navbar:filter endtag=required>
<perl>
    <perl:assign:sq $_navvar>%body</perl:assign:sq>
    $NAVBAR{$name}->{FILTER} = $_navvar;
</perl>
</define-tag>

#
#   navbar debugging
#
<define-tag navbar:debug>
<preserve name />
<navbar:index %attributes />
<set-var %attributes />
<defvar name "unknown-navbar" />
<perl>
    use Data::Dumper;
    <perl:print: "Data::Dumper::Dumper($NAVBAR{'<get-var name />'})" />
</perl>
<restore name />
</define-tag>

#
#   navbar indexing
#      * compute automatic links (UP/PREV/NEXT)
#      * determine which menus are open/closed
#
<define-tag navbar:index>
<preserve name select subselected />
<set-var %attributes />
<subst-in-var select "[^a-zA-Z0-9]" "_" />
<defvar name "unknown-navbar" />
<perl>
{
    my $name = '<get-var name />';
    my $subselected = (qq|<get-var subselected />| eq '' ? 1 : 0);

    &navbar_index($NAVBAR{$name}, $name, '<get-var select />', $subselected, '', '', 0);
    $NAVBAR{$name}->{OPEN} = 1;
}
</perl>
<restore  name select subselected />
</define-tag>

#    This does the job.
<protect pass=2>
<:
sub navbar_index {
    my ($CFG, $name, $select, $subselected, $up, $prev, $next) = @_;
    my ($id, $alias);

    #     Stop if this navbar has already been processed
    return if $CFG->{INDEX};
    $CFG->{INDEX} = 1;

    foreach my $B (@{$CFG->{BUTTON}}) {
        $alias = $B->{ALIAS};
        $id    = $B->{ID};
        if ($alias ne '') {
            #     This button is an alias, so it must not be a target
            #     for UP/PREV/NEXT.
            #     If it is a menu, look after, otherwise skip it
            next if $B->{MENU} eq '';

            if ($select eq $id or $select eq $alias) {
                $NAVBAR{$B->{MENU}}->{OPEN} = 1
            }
            ($prev, $next) = &navbar_index($NAVBAR{$B->{MENU}}, $name,
                $select, $subselected, $B->{URL}, $prev, $next);
            $CFG->{OPEN} = 1 if $NAVBAR{$B->{MENU}}->{OPEN};
        }
        else {
            #     Regular button
            if ($next) {
                $NAVBAR{$name}->{NEXT} = $B->{URL};
                $next = 0;
                last;
            }
            if ($select eq $id) {
                $NAVBAR{$name}->{UP}   = $up;
                $NAVBAR{$name}->{PREV} = $prev;
                $CFG->{OPEN} = 1;
                $next = 1;
            }
            if ($B->{MENU} ne '') {
                #     This button opens a menu
                $NAVBAR{$B->{MENU}}->{OPEN} = 1 if ($select eq $id);
                $prev = $B->{URL};
                ($prev, $next) = &navbar_index($NAVBAR{$B->{MENU}}, $name,
                    $select, $subselected, $B->{URL}, $prev, $next);
                $CFG->{OPEN} = 1 if $NAVBAR{$B->{MENU}}->{OPEN};
            }
            else {
                $prev = $B->{URL};
            }
        }
    }
    return ($prev, $next);
}
:>
</protect>

#   This macro must be defined.
<provide-tag lang:current></provide-tag>

#
#   navbar rendering
#
<define-tag navbar:render>
<preserve name select subselected menumode txtonly nohints txtcol_normal txtcol_select />
<set-var subselected=* />
<set-var menumode=inner />
<set-var txtonly=* />
<set-var nohints=* />
<navbar:index %attributes />
<set-var %attributes />
<subst-in-var select "[^a-zA-Z0-9]" "_" />
<increment __nbcount />
<defvar name "unknown-navbar" />
<perl>
sub navbar_render_<get-var __nbcount /><lang:current /> {
    my($name, $select, $subselected, $txtcol_n, $txtcol_s,
       $menumode, $txtonly, $nohints, $nbcount) = @_;

    #   select the correct navigation bar configuration
    my $CFG = $NAVBAR{$name};

    #   retrieve parts of config
    my @imgstar  = split(':', $CFG->{IMGSTAR});
    my $imgbase  = $CFG->{IMGBASE};
    my $urlbase  = $CFG->{URLBASE};
    $txtcol_n    = $CFG->{TXTCOL_N} if $txtcol_n eq '';
    $txtcol_s    = $CFG->{TXTCOL_S} if $txtcol_s eq '';
    my $filter   = $CFG->{FILTER};

    #   initialise output creation
    my $O = '';
    my $n = 0;
    my @preload = ();
    my $nb = 'nb_img' . $nbcount;

    my $tag_attr = {};
    #   Initialize extra attributes
    #   This must be done in pass 2
<set-var __list_tags="a\nimg" />
<set-var __list_sel="N\nS\nSS" />
<foreach __tag __list_tags>
  <set-var __nb_attr=<attributes-quote <attributes-extract
        :<get-var __tag />:(.*) %attributes /> /> />
  <foreach __sel __list_sel>
    $tag_attr{'<get-var __tag /><get-var __sel />'} =  qq(<or
      <attributes-quote <attributes-extract
          :<get-var __tag />\\.<get-var __sel />:(.*) %attributes /> />
      <get-var __nb_attr /> />);
  </foreach>
</foreach>

    #   Perform some clean ups
    foreach my $key (keys %tag_attr) {
        $tag_attr{$key} =~ s/^\s*/ /;
        delete $tag_attr{$key} if $tag_attr{$key} =~ m/^\s*$/;
    }

    #   output the global header
    $mcode = $CFG->{HEADER};
    $mcode =~ s|^\s+||;
    $mcode =~ s|\s+$||;
    $O .= $mcode."\n";

    #   now iterate over every defined button
    foreach $B (@{$CFG->{BUTTON}}) {
        #   count the buttons
        $n++;

        #   retrieve information about button
        my $id     = $B->{ID};
        my $alias  = $B->{ALIAS};
        my $txt    = $B->{TXT};
        my $alt    = $B->{ALT};
        my @img    = split(':', $B->{IMG});
        my $url    = $B->{URL};
        my $target = ($B->{TARGET} eq '' ? $CFG->{TARGET} : $B->{TARGET});
        my $hint   = $B->{HINT};
        my $menu   = $B->{MENU};

        my $idselect = ($select eq $id or ($select eq $alias and $alias ne '') ? 1 : 0);
        my $buttontype = 'N';
        $buttontype = ($subselected ? 'SS' : 'S') if $idselect;
        my %extra_attr = (
                a       => (${$B->{TAG_ATTR}}{'a'.$buttontype} || $tag_attr{'a'.$buttontype}),
                img     => (${$B->{TAG_ATTR}}{'img'.$buttontype} || $tag_attr{'img'.$buttontype}),
        );

        #
        #   PROLOG
        #

        #   determine list of prolog/epilog types to search
        my @Ltype = ($buttontype, 'N');

        #   output corresponding prolog for this type of button
        L1: foreach $type (@Ltype) {
            foreach $pos (($n, 'any')) {
                if ($CFG->{PROLOG}->{$type}->{$pos}) {
                    $mcode = $CFG->{PROLOG}->{$type}->{$pos};
                    $mcode =~ s|^\s+||;
                    $mcode =~ s|\s+$||;
                    $O .= $mcode;
                    last L1;
                }
            }
        }

        #
        #   THE BUTTON ITSELF
        #

        #   cleanup image information
        if ($#img == 0 and $img[0] =~ m|\*|) {
            ($img[2] = $img[0]) =~ s|\*|$imgstar[2]|g;
            ($img[1] = $img[0]) =~ s|\*|$imgstar[1]|g;
            $img[0] =~ s|\*|$imgstar[0]|g;
        }
        if ($#img == 0) {
            $img[1] = $img[0] 
        }
        for ($i = 0; $i <= $#img; $i++) {
            $img[$i] = "$imgbase/$img[$i]" if ($imgbase ne '' and 
                                               $img[$i] !~ m;^([.+\-\w]+:)?/;);
            $img[$i] = &canonpath($img[$i]) if ($img[$i] !~ m;^[.+\-\w]+:/;);
        }

        #   cleanup url information
        if ($url =~ m|#([a-zA-Z]+)#|) {
            $url = $NAVBAR{$name}->{uc($1)};
        }
        if ($url ne '') {
            $url  = "$urlbase/$url" if ($urlbase ne '' and $url !~ m;^([.+\-\w]+:)?/;);
            $url  = &canonpath($url) if ($url !~ m;^[.+\-\w]+:/;);
        }

        #   cleanup target information
        $target = " target=\"$target\"" if ($target ne '');

        #   alt attribute defaults to txt attribute if missing
        if ($alt eq '') {
            $alt = $txt;
        }

        #   output the button markup code
        if ($#img < 0 or $txtonly) {
            #   cleanup txt information:
            #   special feature for supporting colorized hyperlinks
            if ($idselect and $txtcol_s) {
                $txt = '<*font color="'.$txtcol_s.'">'.$txt.'<*/font>';
            }
            elsif ($txtcol_n) {
                $txt = '<*font color="'.$txtcol_n.'">'.$txt.'<*/font>';
            }
            #
            #   for a button without images
            #
            $hint = $url if ($hint eq '');
            $hint = '' if $nohints;
            if (($idselect and not $subselected) or $url eq '') {
                $O .= $txt;
            }
            else {
                $js = '';
                if ($hint ne '') {
                    $js = qq# onmouseover="self.status = '$hint'; return true"# .
                          qq# onmouseout="self.status = ''; return true"# .
                          qq# onfocus="self.status = '$hint'; return true"# .
                          qq# onblur="self.status = ''; return true"#;
                }
                $O .= '<*a href="'.$url.'"'.$target.$js.$extra_attr{'a'}.'>'.$txt.'<*/a>';
            }
        }
        else {
            #
            #   for a button with images
            #
            $hint = $txt if ($hint eq '');
            $hint = '' if $nohints;
            if (($idselect and not $subselected) or $url eq '') {
                $O .= '<img src="'.$img[1].'" alt="'.$alt.'"'.$extra_attr{'img'}.' />';
            }
            elsif ($idselect and $subselected) {
                $js = '';
                if ($#img == 2) {
                    $js = qq# onmouseover="nb_imgOver('${nb}_$id', $nohints, '$hint'); return true"# .
                          qq# onmouseout="nb_imgSelect('${nb}_$id'); return true"# .
                          qq# onfocus="nb_imgOver('${nb}_$id', $nohints, '$hint'); return true"# .
                          qq# onblur="nb_imgSelect('${nb}_$id'); return true"#;
                    push(@preload, [ $id, "s:$img[1]", "o:$img[2]" ]);
                }
                elsif ($hint ne '') {
                    $js = qq# onmouseover="self.status = '$hint'; return true"# .
                          qq# onmouseout="self.status = ''; return true"# .
                          qq# onfocus="self.status = '$hint'; return true"# .
                          qq# onblur="self.status = ''; return true"#;
                }
                $O .= '<*a href="'.$url.'"'.$target.$js.$extra_attr{'a'}.'>' .
                      '<img name="'.$nb.'_'.$id.'" src="'.$img[1].'" alt="'.$alt.'" border=0'.$extra_attr{'img'}.' />' .
                      '<*/a>';
            }
            else { # not selected 
                $js = '';
                if ($#img == 2) {
                    $js = qq# onmouseover="nb_imgOver('${nb}_$id', $nohints, '$hint'); return true"# .
                          qq# onmouseout="nb_imgNormal('${nb}_$id'); return true"# .
                          qq# onfocus="nb_imgOver('${nb}_$id', $nohints, '$hint'); return true"# .
                          qq# onblur="nb_imgNormal('${nb}_$id'); return true"#;
                    push(@preload, [ $id, "n:$img[0]", "o:$img[2]" ]);
                }
                elsif ($hint ne '') {
                    $js = qq# onmouseover="self.status = '$hint'; return true"# .
                          qq# onmouseout="self.status = ''; return true"# .
                          qq# onfocus="self.status = '$hint'; return true"# .
                          qq# onblur="self.status = ''; return true"#;
                }
                $O .= '<*a href="'.$url.'"'.$target.$js.$extra_attr{'a'}.'>' .
                      '<img name="'.$nb.'_'.$id.'" src="'.$img[0].'" alt="'.$alt.'" border=0'.$extra_attr{'img'}.' />' .
                      '<*/a>';
            }
        }

        if ($menumode eq 'inner' and $menu ne '' and $NAVBAR{"$menu"}->{OPEN}) {
            $O .= &navbar_render_<get-var __nbcount /><lang:current />($menu,
                $select, $subselected, $txtcol_n, $txtcol_s,
                $menumode, $txtonly, $nohints, $nbcount);
        }
        
        #
        #   EPILOG
        #

        #   output corresponding epilog for this type of button
        L2: foreach $type (@Ltype) {
            foreach $pos (($n, 'any')) {
                if ($CFG->{EPILOG}->{$type}->{$pos}) {
                    $mcode = $CFG->{EPILOG}->{$type}->{$pos};
                    $mcode =~ s|^\s+||;
                    $mcode =~ s|[ \t]+$||;
                    $O .= $mcode;
                    last L2;
                }
            }
        }

        if ($menumode ne 'inner' and $menu ne '' and $NAVBAR{"$menu"}->{OPEN}) {
            $O .= &navbar_render_<get-var __nbcount /><lang:current />($menu,
                $select, $subselected, $txtcol_n, $txtcol_s,
                $menumode, $txtonly, $nohints, $nbcount);
        }
        

    }

    #   output the global footer
    $mcode = $CFG->{FOOTER};
    $mcode =~ s|^\s+||;
    $mcode =~ s|\s+$||;
    $O .= $mcode."\n";
    $P = <<'EOT';
<navbar:jsfuncs />
EOT

    #   prefix the output with some JavaScript
    #   aux functions and the preloading of used images
    if ($#preload >= 0) {
        $P .= <<'EOT';
<javascript>
if (document.images) {
EOT
        foreach $p (@preload) {
            my $name = $p->[0];
            my ($normtag, $normpath) = ($p->[1] =~ m|^([nso]):(.+)$|);
            my ($overtag, $overpath) = ($p->[2] =~ m|^([nso]):(.+)$|);
            $P .= "    ${nb}_${name}_${normtag} = new Image();\n";
            $P .= "    ${nb}_${name}_${normtag}.src = '$normpath';\n";
            $P .= "    ${nb}_${name}_${overtag} = new Image();\n";
            $P .= "    ${nb}_${name}_${overtag}.src = '$overpath';\n";
        }
        $P .= <<'EOT';
}
</javascript>
EOT
        $O = $P.$O;
    }

    #   additionally apply an existing Perl filter
    if ($filter ne '') {
        eval("\$filter_func = sub {" . $filter . "};");
        $O = &{$filter_func}($O, $CFG, $select);
    }

    #   finally produce the HTML markup code
    return $O;
}
{
    #   import attributes to ePerl
    my $select      =  qq|<get-var select />|;
    my $subselected = (qq|<get-var subselected />| eq '' ? 1 : 0);
    my $menumode    =  qq|<get-var menumode />|;
    my $txtonly     = (qq|<get-var txtonly />|     eq '' ? 1 : 0);
    my $nohints     = (qq|<get-var nohints />|     eq '' ? 1 : 0);

    <perl:print: \
       "&navbar_render_<get-var __nbcount /><lang:current />('<get-var name />',
             $select, $subselected,
             '<get-var txtcol_normal />', '<get-var txtcol_select />', 
             $menumode, $txtonly, $nohints, <get-var __nbcount />)" />
}
</perl>
<restore  name select subselected menumode txtonly nohints txtcol_normal txtcol_select />
</define-tag>

<define-tag navbar:jsfuncs>
<javascript>
function nb_imgNormal(imgName) {
    if (document.images) {
        document[imgName].src = eval(imgName + '_n.src');
        self.status = '';
    }
}
function nb_imgSelect(imgName) {
    if (document.images) {
        document[imgName].src = eval(imgName + '_s.src');
        self.status = '';
    }
}
function nb_imgOver(imgName, nohints, descript) {
    if (document.images) {
        document[imgName].src = eval(imgName + '_o.src');
        if (! nohints) self.status = descript;
    }
}
</javascript>
<define-tag navbar:jsfuncs></define-tag>
</define-tag>

##EOF##
__END__

=head1 NAME

wml::des::navbar - Navigation Bar

=head1 SYNOPSIS

 #use wml::des::navbar

 #   explicitly write javascript code now
 <navbar:jsfuncs>

 #   define a navigation bar
 <navbar:define name=<name> [<options>]>
     <navbar:header>...</navbar:header>
     <navbar:footer>...</navbar:footer>
     <navbar:prolog [<options>]>...</navbar:prolog>
     <navbar:epilog [<options>]>...</navbar:epilog>
     <navbar:button id=<id1> txt=... [<options>]> 
          : 
     <navbar:button id=<idN> txt=... [<options>]> 
     <navbar:filter>...</navbar:filter> 
 </navbar:define>

 #   debug the internal structure
 <navbar:debug name=<name>>

 #   render the navigation bar
 <navbar:render name=<name> [options]>

=head1 DESCRIPTION

This include file defines a complex navigation bar container tag named
C<E<lt>navbar:defineE<gt>>. It can be used to define navigation bars of any
optical style by specifying its parts in general and individually and letting
the C<E<lt>navbar:renderE<gt>> tag create the complete particular HTML code.
Creating a navigation bar is a two step process. First you define it according
to this grammar:

   navbar   ::= HEADER{0,1} 
                PROLOG{0,3} BUTTON{1,N} EPILOG{0,3} 
                FOOTER{0,1}
                FILTER{0,1}

   HEADER   ::= navbar:header

   PROLOG   ::= navbar:prolog (type=N) 
              | navbar:prolog (type=S)
              | navbar:prolog (type=SS)

   BUTTON   ::= navbar:button

   EPILOG   ::= navbar:epilog (type=N)
              | navbar:epilog (type=S)
              | navbar:epilog (type=SS)

   FOOTER   ::= navbar:footer

   FILTER   ::= navbar:filter

or in other words: navigation bar consists of an optional header and
footer, up to three different (according to C<type>) prologs and epilogs for
the navigation buttons and at least one actual navigation button.
Additionally a filter can be applied. The C<navbar:XXXX> names in the above
grammar directly correspond to the existing tags you have to use.

After you have defined such a navigation bar (which is usually done inside an
include file) you can create the corresponding HTML markup code by placing
C<E<lt>navbar:renderE<gt>> at the point where this markup code should occur.
This tag can be used more then once when you want (for instance inside a page
header I<and> its footer or once with graphics and once with the C<txtonly>
attribute for the textual version, etc.).

Always notice that C<E<lt>navbar:renderE<gt>> has no internal built-in
knowledge of your navigation bar except its structure according to the above
grammar. So, you only receive nice results when you define a nice grammar
instance with the available C<navbar:XXXX> tags. The
C<E<lt>navbar:renderE<gt>> tag is not there to create nice things you usually
couldn't do yourself. It is there to avoid the nasty compilation of one
million prologs and epilogs for each button where each of these consists of
similar HTML code. So, C<E<lt>navbar:renderE<gt>> is your workhorse, the
intelligence is yours. 

But how do we actually get navigation bars? Haven't we forgot something which
is essential to navigation bars? Yes, we have. Navigation bars feature is that
we can define them at one point for the underlaying hyperlink structure and
use them at any point inside this structure while the hyperlinks are
automatically aligned for the current location. But this feature the core of
WML already provides through its adjustable path variables. So, this include
file is useless without this feature. Or in other words: You really have to
define some root-variable of your structure in a F<.wmlrc> file and then use
this variable when defining the hyperlinks inside the C<E<lt>navbar:buttonE<gt>>'s
C<url> attribute.  Never forget this point!

For complete examples see under C<EXAMPLES> below.

=head1 OPTIONS

=head2 B<Options of C<E<lt>navbar:defineE<gt>>:>

This defines the navigation bar.

=over 4

=item name=I<STR>

This sets the name of the navigation bar which is used both for internal data
respresentation and for referencing in C<E<lt>navbar:debugE<gt>> and
C<E<lt>navbar:renderE<gt>>. Always use this attribute (or you risk other
navigation bars to be overwritten) and always use a unique name here when
using more then one navigation bar.

=item imgstar=I<SPEC>

This contains a colon-separated list of three strings. They are used for
substitution of asterisks in the C<E<lt>navbar:buttonE<gt>>'s C<img> attribute
when this attribute only contains one image filename and this filename
contains an asterisk. In other words: this single image filename is expanded
to a colon-separated list of three image filenames while for each filename the
asterisk is substituted with the corresponding string from the C<imgstar>
attribute. 

Example:

  <navbar:define imgstar=std:sel:ovr ...>
    ...
    <navbar:button img=button-1-*.gif ...>
    <navbar:button img=button-2-*.gif ...>
    ... 
  </navbar:define>

This is equivalent to the following:

  <navbar:define ...>
    ...
    <navbar:button img=button-1-std.gif:button-1-sel.gif:button-1-ovr.gif ...>
    <navbar:button img=button-2-std.gif:button-2-sel.gif:button-2-ovr.gif ...>
    ... 
  </navbar:define>

=item imgbase=I<PATH>

Defines a common image base directory, i.e. all non-absolute pathnames in
C<E<lt>navbar:buttonE<gt>>'s C<img> attributes are prefixed with I<PATH>. Per
default there is no such prefix.

=item urlbase=I<PATH>

Defines a common navigation base directory, i.e. all non-absolute pathnames in
C<E<lt>navbar:buttonE<gt>>'s C<url> attributes are prefixed with I<PATH>. Per
default there is no such prefix. Is is useful that I<PATH> itself contains an
WML adjustable path variable.

=item target=I<STR>

The target frame or window to which all hyperlinks are per default redirected
to. This can be overwritten by the C<target> attribute of
C<E<lt>navbar:buttonE<gt>>.

=back

=head2 B<Options of C<E<lt>navbar:headerE<gt>>:>

This defines the global header for the navigation bar.
Currently there are no attributes used.

=head2 B<Options of C<E<lt>navbar:footerE<gt>>:>

This defines the global footer for the navigation bar.
Currently there are no attributes used.

=head2 B<Options of C<E<lt>navbar:prologE<gt>>:>

This defines the prolog of C<E<lt>navbar:buttonE<gt>>s, i.e.  the local header for
each navigation button.

=over 4

=item pos=I<SPEC>

This sets the button position where to apply this prolog, i.e.  the number of
the button starting with the number 1. Use this to apply a special prolog to a
particular button only. The default is C<any> for I<SPEC> which means: apply
this prolog to any button as long as there is no specially defined one for it.
There are three important special values for I<SPEC>: C<first> (=1), C<last>
(=number of used C<E<lt>navbar:buttonE<gt>>'s) and C<next> which
applies to the next button only.

=item type=I<SPEC>

This sets the type of application of this button. There are three possible
values for I<SPEC>: ``C<N>'' (normal: used for buttons in normal state),
``C<S>'' (selected: used for selected buttons) and ``C<SS>'' (sub-selected:
used for selected buttons but level is deeper).

This type is triggered by the C<select=I<ID>> and C<subselected> attributes of
C<E<lt>navbar:renderE<gt>>.

=back

=head2 B<Options of C<E<lt>navbar:epilogE<gt>>:>

This defines the epilog of C<E<lt>navbar:buttonE<gt>>s, i.e.  the local footer
for each navigation button. The available attributes or the same as for
C<E<lt>navbar:prologE<gt>>.

=head2 B<Options of C<E<lt>navbar:buttonE<gt>>:>

This defines a particular navigation button, i.e. a text or image surrounded
by a hyperlink plus a few special features like status bar hints and a
rollover effect for images.

=over 4

=item id=I<STR>

The identification string for this button. This has to be a unique identifier
which later is used with C<E<lt>navbar:renderE<gt>>'s C<select> attribute to
mark this button as selected.

=item alias=I<STR>

The former C<id> attribute has to be unique. This tag allows you to
group buttons as if they had the same C<id> attribute.

=item txt=I<STR>

The textual representation of the button which is displayed. 
When no C<alt> attribute is specified, it defaults to the value
of this C<txt> attribute.

=item alt=I<STR>

The C<alt> attribute for the created C<E<lt>imgE<gt>> tags.  When images are
not displayed this is used instead by most browsers. If images are displayed
this is ignored by most browsers. It defaults to the value of the C<txt>
attribute.

=item img=I<SPEC>

The image(s) to display for this button. This can be a single image file or a
colon-separated list of three images. The first one is the normal button, the
second one is the selected button variant and the third one is the variant
which is displayed when the mouse is over the button (but only if the button
is not a selected one).

=item hint=I<STR>

The text displayed in the browsers status bar when the mouse
is over the button.

=item url=I<PATH>

The hyperlink URL which is activated when the button is pressed. There
are three special URLs: C<#UP#>, C<#PREV#> and C<#NEXT#>, which refer
to the node one level up, the previous or the next node.

=item target=I<STR>

A target frame or window where the hyperlink is redirected to.

=item menu=I<STR>

The name of a navigation bar to insert at this point.

=item :a:I<ATTR>=I<STR> :img:I<ATTR>=I<STR>

The ``I<ATTR>=I<STR>'' pairs are passed along to the desired HTML tags.
It is also possible to add a prefix to tag name to select only normal
(C<.N>), selected (C<.S>) or subselected (C<.SS>) buttons.

=back

=head2 B<Options of C<E<lt>navbar:debugE<gt>>:>

Use this tag while developing your navigation bar definition.
It dumps the internal structure of this definition.

=over 4

=item name=I<STR>

The name of the navigation bar to dump. See the corresponding C<name>
attribute of C<E<lt>navbar:defineE<gt>>.

=back

=head2 B<Options of C<E<lt>navbar:renderE<gt>>:>

=over 4

=item name=I<STR>

The name of the navigation bar definition to use when rendering.

=item select=I<ID>

Select a particular button as selected.

=item subselected

Marks the selected button as a subselected one, i.e. the current page for
which the button is selected is deeper than the original page for which
this button stands.

=item txtcol_select=I<#rrggbb>

This is a hack because of the HTML rendering of typical browsers on anchors.
You have to use this attribute when you want to create textual
navigations bars with specific colors, this can not be performed with
prologs and epilogs when defining navbars.

=item txtcol_normal=I<#rrggbb>

This is the corresponding tag to C<txtcol_select> because we want to
have a homogen configuration style.

=item menumode=I<inner|outer>

With B<menumode=inner> (default), a selected sub-menu is inserted
before epilog of current entry, otherwise it is put after.

=item txtonly

Forces the rendering to ignore all defined images.

=item nohints

Do not create Javascript hints for navigation buttons.

=item :a:I<ATTR>=I<STR> :img:I<ATTR>=I<STR>

The ``I<ATTR>=I<STR>'' pairs are passed along to all the desired HTML
tags found in this navbar.  It is also possible to add a prefix to tag
name to select only normal (C<.N>), selected (C<.S>) or subselected
(C<.SS>) buttons.  For instance with

   <navbar:render name=main :img:class=nav
      :a.N:class=nav-n :a.S:class=nav-s :a.SS:class=nav-ss />

attribute ``class="nav"'' is added to all images, ``class="nav-s"'' is
added to anchor when button is selected (this is a dummy example, since
when button is selected, there is no such anchor), ``class="nav-ss"'' is
added when button is subselected, and normal links have ``class="nav-n"''.

=back

=head2 B<Options of C<E<lt>navbar:filterE<gt>>:>

This defines the body of a Perl filtering function which can be used to
post-process the generated HTML markup code before it is written out.
Currently there are no attributes used.

When no C<E<lt>navbar:filterE<gt>> tag is specified, no such
filtering occurs. When 

  <navbar:filter> BODY </navbar:filter>

is specified, internally an anonymous Perl function is created
and the HTML markup code is filtered through this function
as follows:

  $func = sub { BODY };
  $markup_code = &{$func}($markup_code, $CFG, $select);

where C<$CFG> is the internal configuration structure as seen with
C<E<lt>navbar:debugE<gt>> and C<$markup_code> is a literal string holding the
HTML markup code. In other words, when you want to apply a filter, you have to
do it with the following skeleton:

  <navbar:filter>
      my ($mcode, $CFG, $select) = @_;
      ...
      return $mcode;
  </navbar:filter>

=head2 B<Options of C<E<lt>navbar:jsfuncsE<gt>>:>

This prints Javascript functions used for rollover effects on images.
This macro discards itself after first invocation so that definitions
are printed only once.  It is automatically called by
C<E<lt>navbar:renderE<gt>>, so it could looks useless.  But if you
consider

  <en><navbar:render name=main></en>
  <fr><navbar:render name=main></fr>

javascript code only appears in English version.  The correct solution
is to put this tag outside of any slice:

  <navbar:jsfuncs>
  <en><navbar:render name=main></en>
  <fr><navbar:render name=main></fr>

=head1 EXAMPLES

=head2 Classic Navigation bar

File: nb.inc

  <navbar:define name=test 
          imgbase="img/" urlbase="$(ROOT)"
          txtcol_normal="#000000" txtcol_select="#ffffff">
    <navbar:header> 
      <table cellspacing=1 cellpadding=2 border=0>
      <tr>
    </navbar:header>

    <navbar:prolog>        <td bgcolor="#cccccc"> </navbar:prolog>
    <navbar:prolog type=S> <td bgcolor="#cc3333"> </navbar:prolog>

    <navbar:button id=foo txt="Foo" url="foo.html" hint="The Foo Page"> 
    <navbar:button id=bar txt="Bar" url="bar.html" hint="The Bar Page"> 
    <navbar:button id=baz txt="Baz" url="baz.html" hint="The Baz Page"> 

    <navbar:epilog> </td> </navbar:epilog> 

    <navbar:footer> 
      </tr>
      </table> 
    </navbar:footer>
  </navbar:define>

  <navbar:render name=$(name) select=$(select)>

File: .wmlrc

  -DROOT~.
  -I.

File: foo.wml
  
  #use wml::std::page
  #use wml::des::navbar
  
  <page indent=2>

  #include "nb.inc" name=test select=foo

  <h1>The Foo Page</h1>
  <p>
  Foo...

File: bar.wml

  #use wml::std::page
  #use wml::des::navbar
  
  <page indent=2>

  #include "nb.inc" name=test select=bar

  <h1>The Bar Page</h1>
  <p>
  Bar...

=head2 Nested Navigation bar

File: nb.inc

  <navbar:define
          name=test imgbase="img/"
          txtcol_normal="#000000" txtcol_select="#ffffff">
    <navbar:header>
      <ul>
    </navbar:header>
    <navbar:prolog><li></navbar:prolog>

    <navbar:button id=foo txt="Foo" url="foo.html">
    <navbar:button id=bar txt="Bar" url="bar.html" menu="nb-bar"> 

    <navbar:footer>
      </ul> 
    </navbar:footer>
  </navbar:define>
  <navbar:define name="nb-bar">
    <navbar:header>
      <ul>
    </navbar:header>
    <navbar:prolog><li></navbar:prolog>

    <navbar:button txt="First bar item">
    <navbar:button txt="Second bar item">

    <navbar:footer>
      </ul> 
    </navbar:footer>
  </navbar:define>

  <navbar:render name=test select=$(select)>

File: foo.wml
  
  #use wml::std::page
  #use wml::des::navbar
  
  <page indent=2>

  #include 'nb.inc' select=foo

  <h1>The Foo Page</h1>
  <p>
  Foo...

File: bar.wml

  #use wml::std::page
  #use wml::des::navbar
  
  <page indent=2>

  #include 'nb.inc' select=bar

  <h1>The Bar Page</h1>
  <p>
  Bar...

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3
 External: --

=head1 SEEALSO

wml(1)

=cut

���������������������������������������������������������wml-2.0.12.orig/wml_include/des/rollover.src��������������������������������������������������������0000644�0001750�0001750�00000010746�10343637516�017044� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::rollover - RollOver-Style Image-Button
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

<set-var __ro:count=1 />

<define-tag rollover:jsfuncs>\
<javascript>
function ro_imgNormal(imgName) {
    if (document.images) {
        document[imgName].src = eval(imgName + '_n.src');
        self.status = '';
    }
}
function ro_imgOver(imgName, descript) {
    if (document.images) {
        document[imgName].src = eval(imgName + '_o.src');
        self.status = descript;
    }
}
</javascript>
<define-tag rollover:jsfuncs></define-tag>
</define-tag>

<define-tag rollover whitespace=delete>
<preserve name src oversrc href alt target hint />
<set-var %attributes />
<if "<get-var name />" "" <group
    <set-var name=unknown<get-var __ro:count /> />
    <increment __ro:count />
/>/>
<defvar alt <get-var href /> />
<defvar hint <get-var alt /> />
<defvar href "#" />
<rollover:jsfuncs />

<copy-var name __ro:name />
<copy-var src __ro:src />
<copy-var oversrc __ro:oversrc />
#   The <group> tag is to prevent the concatenation of the javascript code
<group "
#   Protect `name', `src' and `oversrc' variables from being overriden
#   by the <javascript> tag
<javascript>
if (document.images) {
    ro_img_<get-var __ro:name />_n = new Image();
    ro_img_<get-var __ro:name />_n.src = '<get-var __ro:src />';
    ro_img_<get-var __ro:name />_o = new Image();
    ro_img_<get-var __ro:name />_o.src = '<get-var __ro:oversrc />';
}
</javascript>
" />
<a href="<get-var href />" \
   <if <get-var target /> "target=\"<get-var target />\"" /> \
   onmouseover="ro_imgOver('ro_img_<get-var name />', '<get-var hint />'); return true" \
   onmouseout="ro_imgNormal('ro_img_<get-var name />'); return true" \
   onfocus="ro_imgOver('ro_img_<get-var name />', '<get-var hint />'); return true" \
   onblur="ro_imgNormal('ro_img_<get-var name />'); return true"\
   <attributes-quote <attributes-extract :a:(.*) %attributes /> />\
><img \
   name=ro_img_<get-var name /> \
   src="<get-var src />" \
   alt="<get-var alt />" \
   width=* height=* \
   border=0 \
   <attributes-quote <attributes-extract :img:(.*) %attributes /> />\
/></a>
<restore  name src oversrc href alt target hint />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::des::rollover - RollOver-Style Image-Button

=head1 SYNOPSIS

 #use wml::des::rollover

 <rollover [attributes]>

=head1 DESCRIPTION

One of the most interesting trick to make a webpage more interactive is the
so-called I<rollover effect> commonly known from window system GUIs. The idea
is simply to change the underlaying image when the mouse I<rolls over> it.
Additionally when a mouse click occurs over the image it acts like a button
and jumps to a new URL.  

Although there are more then one way to achieve this optical effect, to use
the client-side scripting-language I<JavaScript> currently is the best
solution. But here only those variants can be used which provide the C<image>
object.  Netscape version 3 and 4 and Internet Explorer 4 support this. But
the generated code of this C<E<lt>rolloverE<gt>> tag is backward-compatible
with all types of browsers.

=head1 ATTRIBUTES

=over 4

=item name

The name of the image. Just for internal usage to bind the correct image
objects to the image tag.

=item src

The normal image which is displayed when the mouse I<is not> over the image.

=item oversrc

The image which is displayed when the mouse I<is> over the image.

=item href

The URL for the hyperlink which gets activated when the mouse clicks into the
image.

=item alt

This string is displayed in text-only browsers or browsers which have images
disabled at the place where the image stays. Additionally it is displayed in
the browsers status line when the mouse is over the image.

=item target

This sets the C<target> attribute for the surrounding anchor (C<E<lt>aE<gt>>)
tag. Use this for redirecting the hyperlink to different target area, i.e.
usually when using frames or multiple windows.

=item :a:I<ATTR>=I<STR> :img:I<ATTR>=I<STR>

The ``I<ATTR>=I<STR>'' pairs are passed along to the C<E<lt>aE<gt>>
and C<E<lt>imgE<gt>> HTML tags.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2
 External: JavaScript (BROWSER)

=head1 SEEALSO

HTML 3.2 C<E<lt>imgE<gt>> and C<E<lt>aE<gt>> tags,
JavaScript: http://home.netscape.com/eng/mozilla/3.0/handbook/javascript/

=cut

��������������������������wml-2.0.12.orig/wml_include/des/space.src�����������������������������������������������������������0000644�0001750�0001750�00000002775�10343637516�016276� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::space - Layout Space
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::des::imgdot

<let space=imgdot />

<define-tag hspace>\
<imgdot width=%0 height=1 />\
</define-tag>

<define-tag vspace>\
<imgdot width=1 height=%0 />\
</define-tag>

<define-tag over endtag=required>
<table cellspacing=0 cellpadding=0 border=0 summary="">
<tr>
<td><imgdot width=<or %0 20 /> /></td>\
<td>%body</td>
</tr>
</table>\
</define-tag>

##EOF##
__END__

=head1 NAME

wml::des::space - Layout Space

=head1 SYNOPSIS

 #use wml::des::space

 <space [width=X] [height=Y]>

 <hspace X>

 <vspace Y>

 <over X>
 </over>

=head1 DESCRIPTION

These are high-level layouting tags for preserving whitespace which use the
C<E<lt>imgdotE<gt>> tag from wml::des::imgdot(3). Use them to create
whitespace on a webpage.

=over 4

=item C<E<lt>space> [C<width=>X] [C<height=>Y]C<E<gt>>

Creates a 1pt transparent dot-image and resizes it to the size X times Y in
points, so a rectangular white area if size XxY is the effect.

=item C<E<lt>hspace> XC<E<gt>>

Creates a horizontal line, i.e. a rectangular area of size Xx1.

=item C<E<lt>vspace> YC<E<gt>>

Creates a vertical line, i.e. a rectangular area of size 1xY.

=item C<E<lt>over> XC<E<gt>>...C<E<lt>/overE<gt>>

This pushs over contained body X pixels to the right.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, wml::des::imgdot (WML)

=head1 SEEALSO

wml::des::imgdot(3)

=cut

���wml-2.0.12.orig/wml_include/des/all.src�������������������������������������������������������������0000644�0001750�0001750�00000002643�10343637516�015745� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des:all - All of the Webdesign (DES) category
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::des::gfont
#use wml::des::imgbg
#use wml::des::imgdot
#use wml::des::lowsrc
#use wml::des::navbar
#use wml::des::preload
#use wml::des::rollover
#use wml::des::space
#use wml::des::typography

##EOF##
__END__

=head1 NAME

wml::des:all - All of the Webdesign (DES) category

=head1 SYNOPSIS

 #use wml::des::all

=head1 DESCRIPTION

This just includes all existing include files of the B<Webdesign> (DES)
category, i.e. all includes with prefix B<wml::des>. The following files
currently exist:

 wml::des::gfont(3)      ... Graphical Font Tag
 wml::des::imgbg(3)      ... Background Images
 wml::des::imgdot(3)     ... 1pt Dot-Images for Webdesign
 wml::des::lowsrc(3)     ... Create Image and LOWSRC-Attribute for IMG-Tag
 wml::des::navbar(3)     ... Navigation Bar
 wml::des::preload(3)    ... Preload Page Contents
 wml::des::rollover(3)   ... RollOver-Style Image-Button
 wml::des::space(3)      ... Layout Space
 wml::des::typography(3) ... Typography

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1
 External: --

=head1 SEEALSO

wml::des::gfont(3),
wml::des::imgbg(3),
wml::des::imgdot(3),
wml::des::lowsrc(3),
wml::des::navbar(3),
wml::des::preload(3),
wml::des::rollover(3),
wml::des::space(3),
wml::des::typography(3).

=cut

���������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/des/lowsrc.src����������������������������������������������������������0000644�0001750�0001750�00000003014�10343637516�016477� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::lowsrc - Create Image and LOWSRC-Attribute for IMG-Tag
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::std::tags

<define-tag lowsrc>
<perl>
{
    my $src;
    <perl:assign:sq $src>%0</perl:assign:sq>
    my $lowsrc = $src;
    $lowsrc =~ s|\.([^.]+)$|.lowsrc.$1|;
    if (not -f $src) {
        print STDERR "wml::des::lowsrc, Error: Image `$src' not found\n";
    }
    my $skip = 0;
    if (-f $lowsrc) {
        $skip = 1 if ((stat($src))[9] <= (stat($lowsrc))[9]);
    }
    if (not $skip) {
        my $error = `convert -monochrome $src $lowsrc`;
        if ($? >> 8) {
            print STDERR "** wml::des::lowsrc:\n$error";
            exit(1);
        }
    }
    <perl:print> lowsrc="$lowsrc"</perl:print>
}
</perl>
</define-tag>

##EOF##
__END__

=head1 NAME

wml::des::lowsrc - Create Image and LOWSRC-Attribute for IMG-Tag

=head1 SYNOPSIS

 #use wml::des::lowsrc

 <img ...src="image.ANY" <lowsrc "image.ANY"> ...>

=head1 DESCRIPTION

This creates an F<image.lowsrc.ANY> file out of the F<image.ANY> one
containing only a monochrome bitmap (black/white) of the image's content and
prints out the corresponding C<lowsrc="image.lowsrc.gif"> string.

This include file needs the external program F<convert> from the
I<ImageMagick> package which can be found on
http://www.wizards.dupont.com/cristy/.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3
 External: convert (PATH)

=head1 SEEALSO

ImageMagick

=cut

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/des/preload.src���������������������������������������������������������0000644�0001750�0001750�00000005071�10343637516�016621� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::preload - Preload Page Contents
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 2000-2001 Denis Barbier
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

<set-var __pl:count=0 />

<define-tag preload whitespace=delete>
<preserve src via />
<set-var via=size />
<set-var %attributes />
<increment __pl:count />
<when <string-eq "<get-var via />" "size" />>
<img name=preload_img_<get-var __pl:count />
     src="<get-var src />"
     width=1 height=1 alt="" />
</when>
<when <string-eq "<get-var via />" "js" />>
<copy-var src __pl:src />
#   the <group> tag prevents deletion of newlines
<group "
<javascript>
if (document.images) {
    preload_img_<get-var __pl:count /> = new Image();
    preload_img_<get-var __pl:count />.src = '<get-var __pl:src />';
}
</javascript>
" />
</when>
<restore  src via />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::des::preload - Preload Images

=head1 SYNOPSIS

 #use wml::des::preload

 <preload src=<image filename> via=<trick>>

=head1 DESCRIPTION

This include file provides the C<E<lt>preloadE<gt>> tag which can be used to
preload images. Such preloading is usually done to speedup access for following
pages. Currently there are only a few tricks how this can be done.
    
The following combinations are currently supported:

=over 4

=item C<src=>I<anyimage> C<via=size>

Preloads the image I<anyimage> by using an C<E<lt>imgE<gt>> tag with the
attributes C<width=1 height=1> which leads to the loading of the image but
only to a 1 pixel in display.

Advantage: Works for all browsers.

Disadvantage: This approach has the nasty side-effect of an occuring 1 pixel
in display because C<width=0 height=0> does not work as expected in most
browsers (especially in Netscape 4.x). So, position your C<E<lt>preloadE<gt>>
tag somewhere it does not destroy the look and feel of your page. 

=item C<src=>I<anyimage> C<via=js>

Preloads the image I<anyimage> by using a JavaScript snippet which loads
the image by declaring an unused C<Image> object. 

Advantage: Silently preloads the image without displaying anything.

Disadvantage: Only works for browsers with a JavaScript implementation and
only for those who support the C<Image> object (currently NS/3, NS/4, IE/4).

=back

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2
 External: --

=head1 SEEALSO

wml::std::tags(3)
HTML 3.2 C<E<lt>imgE<gt>> tag.

=cut

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/des/imgdot.src����������������������������������������������������������0000644�0001750�0001750�00000014532�10343637516�016460� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::imgdot - 1pt Dot-Images for Webdesign
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 2000-2001 Denis Barbier
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags
#use wml::sup::hextriple

<protect pass=2>
<:
use WML::GD;

#   general function for creating a dot image
sub imgdot {
    my ($base, $x, $y, $c, $r, $g, $b, $transp, $format) = @_;
    my ($file, $im, $col, $data);
    local (*FP);

    if ($base ne '' && $base !~ m|/$|) {
        if (-d $base) {
            $base .= '/';
        }
        else {
            $base .= '.';
        }
    }
    if ($main::DEBUG) {
        # use -DDEBUG=1 for seeing the imgdot's
        $c = 'DEBUG';
        ($r, $g, $b) =  (255, 64, 64);
        $transp = 0;
    }
    $file = "${base}imgdot-${x}x${y}-$c.$format";

    #   create image if it does not still exist
    if (not -f $file) {
        $im = new WML::GD::Image($x, $y);
        $col = $im->colorAllocate($r, $g, $b);
        $im->transparent($col) if $transp;
        eval "\$data = \$im->$format";
        if ($@) {
            warn "Error: wml::des::imgdot: " . $@;
        }
        else {
            open(FP, ">$file");
            print FP $data;
            close(FP);
        }
    }
    return $file;
}
:>
</protect>

<define-tag imgdot whitespace=delete>
<preserve base format width height color align noscale />
<set-var noscale=* />
<set-var %attributes />
<defvar base <or <get-var IMGDOT_BASE /> <get-var IMAGE_BASE /> /> />
<defvar format <or <get-var IMAGE_FORMAT /> gif /> />
<perl>
    #   import attributes to ePerl 
    $base    = qq|<get-var base />|;
    $format  = qq|<downcase <get-var format /> />|;
    $width   = qq|<get-var width />|;
    $height  = qq|<get-var height />|;
    $color   = qq|<get-var color />|;
    $align   = qq|<get-var align />|;
    $noscale = (qq|<get-var noscale />| eq '' ? 1 : 0);

    #   determine parameter values
    $width  = 1 if ($width  eq '');
    $height = 1 if ($height eq '');
    $align = 'bottom' if ($align eq '');
    if ($color eq '') {
        $transp = 1;
        ($r, $g, $b) = (255, 255, 255);
        $c = 'transp-' . &rgb2triple($r, $g, $b);
    }
    elsif ($color =~ s/^-//) {
        $transp = 1;
        ($r, $g, $b) = &triple2rgb($color);
        $c = 'transp-' . &rgb2triple($r, $g, $b);
    }
    else {
        $transp = 0;
        ($r, $g, $b) = &triple2rgb($color);
        $c = &rgb2triple($r, $g, $b);
    }
    $x = ($noscale ? $width  : 1);
    $y = ($noscale ? $height : 1);

    #   create the actual GIF image file
    $file = &imgdot($base, $x, $y, $c, $r, $g, $b, $transp, $format);

    #   insert the corresponding HTML markup code
    <perl:print>\
      <img src="$file" alt="" width=$width height=$height \
           align=$align border=0 \
           <attributes-quote <attributes-extract :img:(.*) %attributes /> /> />
    </perl:print>
</perl>
<restore  base format width height color align noscale />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::des::imgdot - 1pt Dot-Images for Webdesign

=head1 SYNOPSIS

 #use wml::des::imgdot

 <: $file = &imgdot($base, $x, $y, $c, $r, $g, $b, $transp, $format); :>

 <imgdot [attributes]>

=head1 DESCRIPTION

Currently (as of HTML 3.2 and 1997 ;_) webdesigners use two commonly known
tricks for creating their layout on webpages: HTML tables and so-called 1pt
Dot-Images.  The first one is nicely supported by the WML tag
C<E<lt>gridE<gt>> (see wml::des::grid(3) for details), the latter is supported
by this C<E<lt>imgdotE<gt>> tag.

The usual purpose of this tag is to create a transparent PNG or GIF image with a
physical size of 1x1 points and a corresponding C<E<lt>imgE<gt>> tag which
includes this image with appropriate C<width> and C<height> attributes. The
visual result is a invisible reserved space of size C<width>XC<height>.
Alternatively this tag can create the image with the requested size instead of
scaling the 1pt image (see the C<noscale> attribute below). This approach is
more safe (all browsers support this) but wastes bandwith and increases page
load time.

=head1 ATTRIBUTES

=over 4

=item base

Usually the created images are named
F<imgdot-XxY-rrggbb.png> where C<XxY> is the dimension of the image and
C<rrggbb> the used color (or `C<transp>' for transparent). When you use a
C<base=foo> attribute, then the resulting files are named
F<foo.imgdot-XxY-rrggbb.gif>.  Actually you can even use a complete filename
including a directory prefix, i.e. when you use C<base=../../common/foo>
attribute, then the PNG images are created as
F<../../common/foo.imgdot-XxY-rrggbb.png>. 

And for most flexibility when no base is specified and the variable
C<IMGDOT_BASE> is defined (usually from within a F<.wmlrc> file via
C<-DIMGDOT_BASE~path/to/imgdot/dir/base>) it is used.  Use this feature to
redirect the created images to a particular directory.

You may also use the variable C<IMAGE_BASE> which defines in a single line
all base names for images generated by WML.

=item format

By default, GIF images are generated. This attribute lets you use an
alternate image format (actually only PNG and GIF are recognized).
You may also change the default format with the variable C<IMAGE_FORMAT>.

=item width

Specifies the width (x-dimension) of the reserved space in pixel. Default is
1 pixel.

=item height

Specifies the height (y-dimension) of the reserved space in pixel. Default is
1 pixel.

=item color

Sets the color of the image. Default is transparent, i.e. no color. In
fact, this is not true, transparency is rendered by choosing a color
which is made transparent, which is white by default.
Prepending an hyphen to the C<color> attribute sets the color of the
transparent color.

=item align

Sets the alignment of the image. Default is `C<bottom>'. This alignment is
used for the C<align> attribute of the inserted C<E<lt>imgE<gt>> tag.

=item noscale

Indicates if the image should be created with 1pt in size and scaled online by
the browser (default) or should be created with the correct physical size
(this option).

=item :img:I<ATTR>=I<STR>

The ``I<ATTR>=I<STR>'' pairs are passed along to the C<E<lt>imgE<gt>> HTML tag.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3

=head1 SEEALSO

HTML E<lt>C<img>E<gt> tag.

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/des/gfont.src�����������������������������������������������������������0000644�0001750�0001750�00000022453�10343637516�016313� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::gfont - Graphical Font Tag
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

<protect pass=2>
<:
use Image::Size;

#   global variables for gfont tag
$gfont_cnt     = 0;
@gfont_size    = ( 12, 16, 20, 32, 40, 50, 60, 80, 100, 120, 140, 160);
@gfont_size_CM = qw( F F T T S S L L H H V V V V );

sub read_gfont_info {
    my ($file, $cmd) = @_;
    my $info_cmd;

    $file .= '.cmd';
    return 0 if (! -r $file);

    open (INFO, "< $file");
    $info_cmd = <INFO>;
    close (INFO);
    if ($info_cmd eq $cmd) {
        return 1;
    } else {
        return 0;
    }
}

sub write_gfont_info {
    my ($file, $cmd) = @_;

    $file .= '.cmd';
    open (INFO, "> $file") || return;
    print INFO $cmd;
    close (INFO);
}
:>
</protect>

<define-tag gfont endtag=required whitespace=delete>
<preserve base color bgcolor face size align crop adjust file notag />
<set-var crop=* />
<set-var notag=* />
<set-var %attributes />
<defvar base <or <get-var GFONT_BASE /> <get-var IMAGE_BASE />
                 <get-var WML_SRC_BASENAME /> /> />
<perl>
{
    #   import attributes to ePerl 
    my $base    = '<get-var base />';
    my $color   = '<get-var color />';
    my $bgcolor = '<get-var bgcolor />';
    my $face    = '<get-var face />';
    my $size    = '<get-var size />';
    my $align   = '<get-var align />';
    my $crop    = (qq|<get-var crop />| eq '' ? 1 : 0);
    my $adjust  = '<get-var adjust />';
    my $file    = '<get-var file />';
    my $notag   = (qq|<get-var notag />| eq '' ? 1 : 0);
    my $error, $result, $gfont_cmd;

    my $srcfile = $WML_SRC_BASENAME;

    #   import the tag body
    my $str;
    <perl:assign:sq $str>%body</perl:assign:sq>

    #   create the output filename
    if ($file eq '') {
        if (-d $base && $base !~ m|/$|) {
            $base .= '/' . $srcfile;
        }
        $file = sprintf("%s.gfont%"."03d.gif", $base, $gfont_cnt++);
    }

    #   determine fontface, fontsize and thus fontname
    $face = 'ps:ptmr8r' if ($face eq '');
    $size = 0 if ($size eq '');
    $size = -2 if ($size <= -2);
    $size =  9 if ($size >= 9);
    $size += 2;
    $result = `gfont -q -F $face 2>/dev/null`;
    if ($result eq '') {
        if ($face =~ /^(mf|ps):/) {
            $result = $face;
        } else {
            $result = ($face =~ /^(CM|EC)/ ? "mf:" : "ps:");
        }
    }
    if ($result eq '' && $face !~ /^(mf|ps):/) {
        $result = ($face =~ /^(CM|EC)/ ? "mf:" : "ps:");
    }
    if ($result =~ /^mf:/) {
        $size = $gfont_size_CM[$size+2];
    }
    elsif ($result =~ /^ps:/) {
        $size = $gfont_size[$size];
    }
    #  there is no need to put an ``else'' statement to report this
    #  error. Let's continue and gFONT will return a nice error message
    #  below.

    $font = "-F $face-$size";

    #   determine colors
    if ($bgcolor =~ m|^#([0-9a-fA-F]+)$|) {
        $bgcolor = "-b $1";
    }
    else {
        # default is transparent if -b is missing
        $bgcolor = '';
    }
    if ($color =~ m|^#([0-9a-fA-F]+)$|) {
        $color = "-f $1";
    }
    else {
        # default is black
        $color = '-f 000000'; 
    }
    $align = " align=$align" if ($align ne '');

    #   cropping and size support
    if ($crop) {
        $crop = '-c';
    }
    else {
        $crop = '';
    }
    if ($adjust) {
        $adjust = "-r '$adjust'";
    }
    else {
        $adjust = '';
    }

    #   create GIF image via external gFONT tool
    $gfont_cmd = "gfont -o " . $file . " " . $crop . " " . $adjust
        . " " . $bgcolor . " " . $color . " " .  $font . " '".$str."'";
    if (! &read_gfont_info ($file, $gfont_cmd)) {
        $error = `$gfont_cmd 2\>&1`;
        if ($? >> 8) {
            print STDERR "** wml::des::gfont:\n$error";
            exit(1);
        }
        &write_gfont_info ($file, $gfont_cmd);
    }

    if (not $notag) {
        #   determine image size
        my ($w, $h) = Image::Size::imgsize($file);

        #   insert the replacement HTML markup code
        <perl:print>\
          <img src="$file" alt="$str" width="$w" \
               height="$h" border="0" $align \
               <attributes-quote <attributes-extract :img:(.*) %attributes /> /> \
          />\
        </perl:print>
    }
}
</perl>
<restore  base color bgcolor face size align crop adjust file notag />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::des::gfont - Graphical Font Tag

=head1 SYNOPSIS

 #use wml::des::gfont

 <gfont [attributes]>One Single Line Of Text</gfont>

=head1 DESCRIPTION

This is a nice interface to the B<gFONT> program which can be found at
http://www.engelschall.com/sw/gfont/. It provides a C<E<lt>gfontE<gt>> tag
which can be used similar to the standard HTML tag C<E<lt>fontE<gt>>. But
instead of online rendering by the webbrowser the text is rendered offline via
F<gfont> into a GIF image.  This has the following advantages:

=over 4

=item All TeX-available fonts can be used.

you can use any TeX-available fonts instead of the commonly known ones the
typical browsers support. These fonts will actually look like you want, i.e.
Helvetica _is_ Helvetica with C<E<lt>gfontE<gt>> while it can be Arial or a
totally different (substituted) font when using the C<E<lt>fontE<gt>> tag.

=item Fonts with much greater size can be used.

With C<E<lt>gfontE<gt>> you can increase the C<size> attribute up to C<+9>
which is actually 200pt in size while the HTML B<font> tag usually stops at
C<+4>. So C<E<lt>gfontE<gt>> can be used for big headlines.

=item You can create banners with colored backgrounds.

The standard C<E<lt>fontE<gt>> tag cannot use a different background color in
HTML 3.2, C<E<lt>gfontE<gt>> can. Because it directly renders into a GIF image
which background has not to be transparent.

=back

When an image is generated, a text file containing the command which has
been run is created, its name is the image file name with a C<.cmd>
suffix.  When WML is re-run, this file is searched for and gFONT
executed only if command line has changed.

=head1 ATTRIBUTES

=over 4

=item base=I<filename>

Usually the created images for a source file F<page.wml> are named
F<page.gfontXXX.gif> where C<XXX> is a number starting with C<000>. When you
use a C<base=foo> attribute, then the resulting files are named
F<foo.gfontXXX.gif>.  Actually you can even use a complete filename including
a directory prefix, i.e.  when you use C<base=../../common/foo> attribute,
then the GIF images are created as F<../../common/foo.gfontXXX.gif>. Use this
feature to direct the images to a particular directory. Additionally using a
C<base=""> attribute leads to images which are so-called hidden Unix files or
dot-files.

And for most flexibility when no base is specified and the variable
C<GFONT_BASE> is defined (usually from within a F<.wmlrc> file via
C<-DGFONT_BASE~path/to/gfont/dir/base>) it is used.  Use this feature to
redirect the created images to a particular directory.

You may also use the variable C<IMAGE_BASE> which defines in a single line
all base names for images generated by WML.

=item file=I<filename>

Use this to explicitly set the output filename for the GIF image.  This is
usually not used, because you don't need to know the actual filename. But
sometimes it can be useful to explicitly set it.

=item notag

This forces C<E<lt>gfontE<gt>> to expand to nothing, i.e. no resulting
C<E<lt>imgE<gt>> tag. The image itself is still generated. In combination with
the above C<file> attribute this can be used to generate images to particular
files which can be used at other positions, for instance inside
C<E<lt>rolloverE<gt>> (see wml::des::rollover(3)) tags.

=item color=#I<rrggbb>

Sets the font (foreground) color. Default is C<#000000> which is black.

=item bgcolor=#I<rrggbb>

Sets the image background color. Default is no color at all, i.e. transparent
background.

=item face=I<fontname>

Sets the type of the used font where I<fontname> is actually any TeX-available
font or a name alias from the F<Fontmap> file of gFONT. See gfont(1) for more
details. Default is C<Times>.

=item size=I<number>

Sets the relative size of the font, similar to the HTML 3.2 C<E<lt>fontE<lt>>
tag. Default is 0. The following correspondence to pt-sizes exists:

 size:  -2 -1  0  1  2  3  4  5   6   7   8   9 
   pt:  12 16 20 32 40 50 60 80 100 120 140 160

This leads to nearly the same font sizes for C<E<lt>fontE<gt>> and
C<E<lt>gfontE<gt>> tags on typical browser setups.

=item align=I<location>

This directly corresponds to the C<align> attribute of the C<E<lt>imgE<gt>>
tag.

=item crop

This indicates that the image should be cropped, i.e. the edges containing only
the background color should be removed. 

=item adjust=I<spec>

This passes through I<spec> to the B<-r> option of gFONT which adjusts the
size of the final image. Use this to expand the image and/or align it.

=item :img:I<ATTR>=I<STR>

The ``I<ATTR>=I<STR>'' pairs are passed along to the C<E<lt>imgE<gt>> HTML tag.

=back

=head1 EXAMPLE

 <gfont face="HelveticaBold" size=+6 color="#3333cc">
 A sample Headerline
 </gfont>

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3, Image::Size (P5M)
 External: gfont (PATH)

=head1 SEEALSO

HTML C<E<lt>fontE<gt>> tag,
gfont(1),
http://www.engelschall.com/sw/gfont/

=cut

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/des/imgbg.src�����������������������������������������������������������0000644�0001750�0001750�00000014637�10343637516�016270� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::imgbg - Background Images
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 2000-2001 Denis Barbier
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags
#use wml::sup::hextriple

<protect pass=2>
<:
use WML::GD;

#   general function for creating the image
sub imgbg {
    my ($base, $direction, $content, $pixels, $format) = @_;;
    my ($file, $id, @C, $size, $im, $c, $r, $g, $b, $col, $w, $x);
    my ($nbcol, $bcol, $ecol, $rmin, $gmin, $bmin, $rmax, $gmax, $bmax);
    my ($i, $dx, $dy, $data);
    local (*FP);

    #   determine filename
    $id = "$direction-$pixels-$content";
    $id =~ s|[,:]|-|g;
    $id =~ s|#||g;
    $file = "${base}imgbg-$id.$format";

    #   create content list
    if ($content !~ m|,|) {
        @C = ($content);
    }
    else {
        @C = split(/,/, $content);
    }

    #   determine size
    $size = 0;
    foreach $c (@C) {
        $size += $1 if ($c =~ m|^(\d+):.+|);
    }

    #   create GIF image if still not exist
    if (not -f $file) {
        $x = 0;
        if ($direction eq 'h') {
            #   horizontal image
            $im = new WML::GD::Image($size, $pixels);
            $dx = 1;
            $dy = 0;
        } else {
            #   vertical image
            $im = new WML::GD::Image($pixels, $size);
            $dx = 0;
            $dy = 1;
        }
        foreach $c (@C) {
            ($w, $bcol, $ecol, $nbcol) =
                ($c =~ m|^(\d+):([^:]+)(?::)?([^:]+)?(?::)?(\d+)?$|);
            if ($ecol eq '' ) {
                ($ecol, $nbcol) = ($bcol, 1);
            } elsif ($nbcol eq '' ) {
                $nbcol = 10;
            }
            ($rmin, $gmin, $bmin) = &triple2rgb($bcol);
            ($rmax, $gmax, $bmax) = &triple2rgb($ecol);
            for ($i=1; $i<=$nbcol; $i++) {
                $r = $rmin + ($rmax-$rmin)*$i/$nbcol;
                $g = $gmin + ($gmax-$gmin)*$i/$nbcol;
                $b = $bmin + ($bmax-$bmin)*$i/$nbcol;
                $col = $im->colorAllocate($r, $g, $b);
                if ($pixels == 1) {
                    $im->line($dx*($x+$w*($i-1)/$nbcol),
                          $dy*($x+$w*($i-1)/$nbcol),
                          $dx*($x+$w*$i/$nbcol),
                          $dy*($x+$w*$i/$nbcol),
                          $col);
                }
                else {
                    $im->filledRectangle($dx*($x+$w*($i-1)/$nbcol),
                          $dy*($x+$w*($i-1)/$nbcol),
                          ($dx == 0 ? $pixels : $dx*($x+$w*$i/$nbcol)),
                          ($dy == 0 ? $pixels : $dy*($x+$w*$i/$nbcol)),
                          $col);
                }
            }
            $x += $w;
        }
        eval "\$data = \$im->$format";
        if ($@) {
            warn "Error: wml::des::imgbg: " . $@;
        }
        else {
            open(FP, ">$file");
            print FP $data;
            close(FP);
        }
    }
    return $file;
}
:>
</protect>

<define-tag imgbg whitespace=delete>
<preserve base format direction content pixels />
<set-var %attributes />
<defvar base <or <get-var BGIMG_BASE /> <get-var IMAGE_BASE /> /> />
<defvar format <or <get-var IMAGE_FORMAT /> gif /> />
<defvar pixels 1 />
<perl>
    #   import attributes to ePerl 
    $base      = qq|<get-var base />|;
    $direction = qq|<get-var direction />|;
    $content   = qq|<get-var content />|;
    $format    = qq|<downcase <get-var format /> />|;
    $pixels    = qq|<get-var pixels />|;

    #   determine parameter values
    if ($base ne '' && $base !~ m|/$|) {
        if (-d $base) {
            $base .= '/';
        }
        else {
            $base .= '.';
        }
    }
    $direction = 'h' if ($direction eq '');
    $content = '100:#000000,900:#ffffff' if ($content eq '');

    #   create the actual GIF image file
    $file = &imgbg($base, $direction, $content, $pixels, $format);

    #   insert the corresponding filename
    <perl:print: $file />
</perl>
<restore  base format direction content pixels />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::des::imgbg - Background Images

=head1 SYNOPSIS

 #use wml::des::imgbg

 <: $file = &imgbg($base, $direction, $content, $pixels, $format); :>

 <body ... background=<imgbg [attributes]> ...>

=head1 DESCRIPTION

The usual purpose of this tag is to create a PNG or GIF image containing
a background image and to expand to its filename. Its contents is
specified via the C<content> attribute by use of size/color pairs.

=head1 ATTRIBUTES

=over 4

=item C<base>

Usually the created images are named
F<imgbg-xxxxxx.png> where C<xxxxxx> is the content id of the image.
When you use a
C<base=foo> attribute, then the resulting files are named
F<foo.imgbg-xxxxxx.png>.  Actually you can even use a complete filename
including a directory prefix, i.e. when you use C<base=../../common/foo>
attribute, then the images are created as
F<../../common/foo.imgbg-xxxxxx.png>. 

And for most flexibility when no base is specified and the variable
C<BGIMG_BASE> is defined (usually from within a F<.wmlrc> file via
C<-DBGIMG_BASE~path/to/imgbg/dir/base>) it is used.  Use this feature to
redirect the created images to a particular directory.

You may also use the variable C<IMAGE_BASE> which defines in a single line
all base names for images generated by WML.

=item C<format>

By default, GIF images are generated. This attribute lets you use an
alternate image format (actually only PNG and GIF are recognized).
You may also change the default format with the variable C<IMAGE_FORMAT>.

=item C<direction>

Specifies the color change direction of the image: ``C<h>'' for horizontal
(default) or ``C<v>'' for vertical.

=item C<pixels>

Size of the image in the other direction, 1 by default.

=item C<content>

This is a comma-separated list of size/color specifications
``I<pixels>C<:#>I<rrggbb>C<:#>I<rrggbb>C<:>I<slices>''

The last two arguments are optional, only present for gradient images. 
In this case, a linear gradient line is drawn from color 1 to color 2,
with I<slices> different colors.

To get a background with two columns, a black one with 150 point in size
and a white one which fills the rest of the page use
``C<150:#000000,1200:#ffffff>''. 

=back

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3

=head1 SEEALSO

HTML E<lt>C<body>E<gt> tag.

=cut

�������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/mod/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�014465� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/mod/MakeMaker.src�������������������������������������������������������0000644�0001750�0001750�00000023410�10343637514�017027� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::mod::MakeMaker - Create a Makefile to distribute your WML Modules
##  Copyright (c) 1999-2001 Denis Barbier, All Rights Reserved.
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

##  Note for WML hackers:
##  This file MUST work with any version of WML, so take care that
##    * the <perl> tag has deeply changed after WML-1.7.4
##    * the ``:#FOO#}'' syntax did not work before WML-1.7.3

{#MK_DEFINITIONS#:
\# ------------------------------------------------
\#   DEFINITIONS
\# ------------------------------------------------

SHTOOL          = ./shtool
MKDIR           = $<suck/>(SHTOOL) mkdir -f -p -m 755
INSTALL_DATA    = $<suck/>(SHTOOL) install -c -m 644

includedir      = {#INCLUDEDIR#}
mandir          = {#MANDIR#}
manext          = {#MANEXT#}
srcext          = {#SRCEXT#}
modext          = {#MODEXT#}
DISTDIR         = $<suck/>(PACKAGE)-$<suck/>(VERSION)

FILES_SRC       = {#FILES_SRC#}
FILES_WML       = {#FILES_WML#}
FILES_MAN       = {#FILES_MAN#}
DISTFILES       = {#DISTFILES#}
CLEANFILES      = {#CLEANFILES#} $<suck/>(FILES_WML) $<suck/>(FILES_MAN)
INSTALLDIR      = {#INSTALLDIR#}
:##}

{#MK_ALL#:
all: modules doc

modules: $<suck/>(FILES_WML)

doc: $<suck/>(FILES_MAN)

$<suck/>(FILES_WML):
	@src=`echo $@ | sed -e 's/\.[^.]*$$/.$<suck/>(srcext)/'`; \\
	sed -e '/^=head1/,/^=cut/d' -e '/^__END__/,$$d' <$$src >$@

$<suck/>(FILES_MAN):
	@src=`echo $@ | sed -e 's/\.[^.]*$$/.$<suck/>(srcext)/'`; \\
	 podfile=`echo $@ | sed -e 's|\(.*\)/\(.*\)\.$<suck/>(manext)|$<suck/>(modext)::\1::\2.pod|'`; \\
	 cp $$src $$podfile; \\
	 pod2man --section=$<suck/>(manext) \\
	         --center="WML Modules" \\
	         --release="WML Modules" \\
	    $$podfile >$@; rm -f $$podfile
:##}

{#MK_INSTALL#:
install: shtool install-dir install-wml install-man

install-dir:
	@[ -z "$<suck/>(INSTALLDIR)" ] || $<suck/>(MKDIR) $<suck/>(includedir)/$<suck/>(INSTALLDIR)

install-wml:
	@[ -z "$<suck/>(FILES_WML)" ] || for file in $<suck/>(FILES_WML); do \\
            echo "$<suck/>(INSTALL_DATA) $$file $<suck/>(includedir)/$$file"; \\
	    $<suck/>(INSTALL_DATA) $$file $<suck/>(includedir)/$$file; \\
	 done

install-man:
	@[ -z "$<suck/>(FILES_MAN)" ] || for file in $<suck/>(FILES_MAN); do \\
	    manfile=`echo $$file | sed -e 's|\(.*\)/\(.*\)|$<suck/>(modext)::\1::\2|'`; \\
            echo "$<suck/>(INSTALL_DATA) $$file $<suck/>(mandir)/man$<suck/>(manext)/$$manfile"; \\
            $<suck/>(INSTALL_DATA) $$file $<suck/>(mandir)/man$<suck/>(manext)/$$manfile; \\
	 done
:##}

{#MK_CLEAN#:
clean:
	-[ -z "$<suck/>(CLEANFILES)" ] || rm -f $<suck/>(CLEANFILES)
:##}

{#MK_DISTCLEAN#:
distclean: clean
	-rm -f Makefile
:##}

#   This one is for you
{#MK_USER#::##}

{#MK_CONFIG#:
\# ------------------------------------------------
\#   THE CONFIG STUFF
\# ------------------------------------------------

shtool:
	@shtoolize mkdir install fixperm tarball

Makefile: Makefile.wml
	@wml -n -o Makefile Makefile.wml

:##}

{#MK_RELEASE#:
\# ------------------------------------------------
\#   THE RELEASE STUFF
\# ------------------------------------------------

fixperm:
	$<suck/>(SHTOOL) fixperm -v $<suck/>(DISTFILES)

dist: fixperm
	$<suck/>(SHTOOL) tarball -o $<suck/>(DISTDIR).tar.gz -d $<suck/>(DISTDIR) \\
	                  -u $(WML_SRC_USERNAME) -g $<suck/>(PACKAGE) \\
	                  -c 'gzip --best' $<suck/>(DISTFILES)

:##}

<define-tag default-value>
<preserve var value />
<set-var %attributes />
<when <not <get-var <get-var var /> /> />>
  <warning "
    The variable ``<get-var var />'' is not defined and its value \
    is assigned to ``<get-var value />''
  " />
  <set-var <get-var var />="<get-var value />" />
</when>
<restore  var value />
</define-tag>

<define-tag write-makefile>
<preserve package version modules src-ext man-ext extradistfiles />
<set-var src-ext="src" />
<set-var man-ext="3" />
<set-var %attributes />
<default-value var=package value=unknown />
<default-value var=version value="0.0" />
<default-value var=modules value="test.wml" />
<:
  {
    my $package = qq(<get-var package />);
    my $version = qq(<get-var version />);
    my $manext  = qq(<get-var man-ext />);
    my $srcext  = qq(<get-var src-ext />);
    my $extras  = qq(<get-var extradistfiles />);
    my @modules = qw(<get-var modules />);

    my ($wml, $infos, $includedir, $mandir, $installdir);
    my (@files_src, @files_wml, @files_man, $dir, $base, $suffix);
    my (@distfiles);

    print <<"EOT";
<nostrip>
\\##
\\##  This Makefile has been automatically generated by Makefile,wml
\\##  Do not edit
\\##

PACKAGE = $package
VERSION = $version
</nostrip>
EOT

    #    find installation paths
    $wml = $ENV{'WML'} || 'wml';
    {
        local ($/) = undef;
        open(INC, "$wml -q -V2 2>&1 |");
        $infos = <*INC>;
        close(INC, "$wml -V2|");
    }
    ($includedir) = ($infos =~ m|LibDir: ([^\n]+)\n|s);
    $includedir .= "/include";
    ($mandir) = ($infos =~ m|ManDir: ([^\n]+)\n|s);
    print "{#INCLUDEDIR#:$includedir:##}\n";
    print "{#MANDIR#:$mandir:##}\n";
    print "{#MANEXT#:$manext:##}\n";
    print "{#SRCEXT#:$srcext:##}\n";

    #   loop on module filenames
    @files_src = @files_wml = @files_man = @distfiles = ();
    foreach (@modules) {
        push(@files_wml, $_);
        if (m|/|) {
            ($dir, $base, $suffix) = m|(.*)/([^/]*)\.([^./]*)$|;
        }
        else {
            $dir = '.';
            ($base, $suffix) = m|(.*)\.([^.]*)$|;
        }
        $installdir = ${dir};
        push(@files_man, "$dir/$base.$manext");
        s/$suffix/$srcext/;
        push(@files_src, $_);
    }
    print "{#MODEXT#:$suffix:##}\n";
    print "{#FILES_SRC#:" . join(' ', @files_src) . ":##}\n";
    print "{#FILES_WML#:" . join(' ', @files_wml) . ":##}\n";
    print "{#FILES_MAN#:" . join(' ', @files_man) . ":##}\n";
    print "{#INSTALLDIR#:$installdir:##}\n";

    if (open(IN, "< MANIFEST")) {
        while(<*IN>) {
            chomp;
            s/^\s*(\S*).*$/\1/;
            push(@distfiles, $_);
        }
        close(IN);
    }
    else {
        @distfiles = split(' ', $extras);
        push(@distfiles, @files_src);
        foreach (qw(README shtool Makefile.wml MakeMaker.wml)) {
            push(@distfiles, $_) if -f $_;
        }
    }
    print "{#DISTFILES#:" . join(' ', @distfiles) . ":##}\n";
  }
:>
<nostrip>
{#MK_DEFINITIONS#}

\# ------------------------------------------------
\#   TARGETS
\# ------------------------------------------------
{#MK_ALL#}
{#MK_INSTALL#}
{#MK_CLEAN#}
{#MK_DISTCLEAN#}
{#MK_USER#}
{#MK_CONFIG#}
{#MK_RELEASE#}

\##EOF##
</nostrip>
<restore  package version modules src-ext man-ext extradistfiles />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::mod::MakeMaker - A Makefile generator

=head1 SYNOPSIS

 #!wml -o Makefile
 #use wml::mod::MakeMaker

 <write-makefile [attributes]>

=head1 DESCRIPTION

This include file provides an easy way to write a Makefile to distribute
your own WML modules. It is inspired by the C<ExtUtils::MakeMaker> Perl
module.

=head2 Default targets

=over 4

=item B<make all>

This is the default target. It will build all include files and their
documentation.

=item B<make install>

Install include files and documentation in the locations given by ``wml -V2''.

=item B<make clean>

Remove files generated by B<make>.

=item B<make distclean>

Like B<make clean>, plus remove the F<Makefile> too.

=item B<make dist>

Build a distribution. Should only be used by the module maintainer.
If there is a F<MANIFEST> file, then the list of files to include is
taken from this file. Otherwise the tarball contains all source files,
plus F<MakeMaker.wml>, F<Makefile.wml>, F<shtool> and F<README> if these
files exist.

=back

=head2 Overriding default targets

To build the F<Makefile>, all targets are put in separate buffers during
pass 3, and those buffers are diverted by pass 5. You can override this
defaukt target by redefining buffer contents.
Buffer names are explicit:

    MK_ALL MK_INSTALL MK_CLEAN MK_DISTCLEAN MK_CONFIG MK_RELEASE

=head2 Defining new targets

The B<MK_USER> is empty and devoted to this task.

=head1 ATTRIBUTES

The first three attributes are mandatory.

=over 4

=item B<package>

The name of the package

=item B<version>

Its version number

=item B<modules>

List of modules to build and install. This is a space separated list of
filenames. Modules should reside in a sub-directory to be compliant with
actual file hierarchy. For instance, the declaration

     modules="math/log.tmpl math/exp.tmpl"

tells that after compilation, there are two modules which are
C<math/log.tmpl> and C<math/exp.tmpl>. This modules will be installed to
C<LibDir/include/math/log.tmpl> and C<LibDir/include/math/exp.tmpl>.

These modules will then be called in a WML file by

    #use tmpl::math::log
    #use tmpl::math::exp

Source files for these modules are obtained by replacing the suffix by
I<.src>.

=item B<src-ext>

Defines an alternate suffix for the source files.

=item B<man-ext>

Section number of the manual in which man files are put. Default is 3.

=item B<extradistfiles>

Space separated list of files to include in a distribution. By default,
all source files plus F<MakeMaker.wml>, F<Makefile.wml>,  F<README> and
F<shtool> are included in a distribution.

=back

=head1 EXAMPLE

 <write-makefile
    package="log"
    version="3.14"
    modules="math/log.tmpl"
    source-ext="exp"
 >

This will build the B<tmpl::math::log> include module from the
F<math/log.exp> source file. This source file will also produce the
B<tmpl::math::log(3)> manpage.

=head1 NOTES

Please do _not_ use a C<.wml> suffix for your modules, they should be reserved
for official WML modules shipped with WML. You may instead put your initials or
anything else.

=head1 AUTHOR

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3, P5
 External: --

=cut

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/mod/all.src�������������������������������������������������������������0000644�0001750�0001750�00000001374�10343637514�015747� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::mod:all - All of Modularity (MOD) category 
##  Copyright (c) 1999-2001 Denis Barbier, All Rights Reserved. 
##

#use wml::mod::MakeMaker
#use wml::mod::version

##EOF##
__END__

=head1 NAME

wml::mod:all - All of Modularity (MOD) category 

=head1 SYNOPSIS

 #use wml::mod::all

=head1 DESCRIPTION

This includes all existing include files of the B<Modularity> (MOD) category,
i.e. all includes with prefix B<wml::mod>.  The following files currently
exist:

  wml::mod::MakeMaker(3) ... Write Makefiles for modules
  wml::mod::version(3) ..... Checks running WML version number

=head1 AUTHOR

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1
 External: --

=head1 SEEALSO

wml::mod::MakeMaker(3),
wml::mod::version(3).

=cut

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/mod/version.src���������������������������������������������������������0000644�0001750�0001750�00000010763�10343637514�016666� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::mod::version - Checks software version numbers
##  Copyright (c) 1999-2001 Denis Barbier, All Rights Reserved.
##

#   WML version numbers:
#   they consist of 3 numbers separated by a dot, e.g. 1.3.2
#
#   But the last dot may be replaced by letters ``a'' (for alpha
#   release) and ``b'' (for beta release). In these cases, the last
#   number is different : for instance, after version 1.2.4 we want to
#   release an alpha version of 1.2.5. This version will be numbered
#   1.2a501. It means first alpha-release for version 1.2.5. We have
#   just 99 alpha releases before a beta release, so we must be careful ;-)
#
<define-tag require>
<set-var __result= />
<if <match %0 "^([0-9]+)\\.([0-9]+)([ab.])([0-9]+).*$" /> 
        "" <set-var __result="undef" /> />
<if <match "$(WML_VERSION)" "^([0-9]+)\\.([0-9]+)([ab.])([0-9]+).*$" />
        "" <set-var __result="undef" /> />
#
#   First compute the members of tne number version
#
<when <not <get-var __result /> />>
  <subst-in-string 
    <subst-in-string %0
      "^([0-9]+)\\.([0-9]+)([ab.])([0-9]+).*$"
        "<-set-var- __version=\\1 __revision=\\2 __type=\\3 __patch=\\4 />" />
  "-set-var-" "set-var" />
  <subst-in-string 
    <subst-in-string <get-var WML_VERSION />
      "^([0-9]+)\\.([0-9]+)([ab.])([0-9]+).*$"
        "<-set-var- __wml_version=\\1 __wml_revision=\\2 __wml_type=\\3 __wml_patch=\\4 />" />
  "-set-var-" "set-var" />
</when>
#
#   check wether version number differ
#
<when <not <get-var __result /> />>
<if <lt <get-var __version /> <get-var __wml_version /> />
    <set-var __result="ok" /> />
<if <gt <get-var __version /> <get-var __wml_version /> />
    <set-var __result="bad" /> />
</when>
#
#   check wether revision number differ
#
<when <not <get-var __result /> />>
<if <lt <get-var __revision /> <get-var __wml_revision /> />
    <set-var __result="ok" /> />
<if <gt <get-var __revision /> <get-var __wml_revision /> />
    <set-var __result="bad" /> />
</when>
#
#   the first 2 numbers are the same.
#   We have to check
#       - types (a, b or .)
#       - patch number
#   With types ``a'' and ``b'', patch numbers are multiplied by 100.
#   In other words, 1.7.2 = 1.7a300 < 1.7a333 < 1.7b301 < 1.7.3
#
<when <not <get-var __result /> />>
<ifeq <get-var __type /> "."
    <group
       <set-var __type="a" />
       <set-var __patch=<multiply <add <get-var __patch /> 1 /> 100 /> />
    />
/>
<ifeq <get-var __wml_type /> "."
    <group
       <set-var __wml_type="a" />
       <set-var __wml_patch=<multiply <add <get-var __wml_patch /> 1 /> 100 /> />
    />
/>
#
#   Check first digit of patch number
#
<if <lt <divide <get-var __patch /> 100 />
        <divide <get-var __wml_patch /> 100 /> />
    <set-var __result="ok" /> />
<if <gt <divide <get-var __patch /> 100 />
        <divide <get-var __wml_patch /> 100 /> />
    <set-var __result="bad" /> />
</when>
#
#   First digits are the same. We now test 1.7a3xx < 1.7b3yy
#
<when <not <get-var __result /> />>
<ifeq "<get-var __type /><get-var __wml_type />" "ab"
    <set-var __result="ok" /> />
<ifeq "<get-var __type /><get-var __wml_type />" "ba"
    <set-var __result="bad" /> />
</when>
#
#   Numbers may only dff by the last 2 digits.
#
<when <not <get-var __result /> />>
<if <gt <get-var __patch /> <get-var __wml_patch /> />
    <set-var __result="bad" />
    <set-var __result="ok" /> />
</when>
#   And now, writes an error message if version does not match
#   I would like to use pass 2, but can't yet.
<ifeq <get-var __result /> "bad"
  <exit message="Version %0 required.
Only WML version $(WML_VERSION) installed.
" /> />
<ifeq <get-var __result /> "undef"
  <exit message="Version %0 required.
Could not find whether your version of WML is newer or not.
" /> />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::mod::version - Checks WML version number

=head1 SYNOPSIS

 #use wml::mod::version

 <require 1.7.1 />

=head1 DESCRIPTION

As WML evolves, some new features appear and some input files requires
new version to be processed. This include file provides the
C<E<lt>requireE<gt>> tag, which checks whether running WML program is
new enough to process input file.

=head1 ATTRIBUTES

The C<E<lt>requireE<gt>> tag takes an argument : the WML version number
needed to process the file in which this tag appears. This number is a
dot separated list of 3 numbers, from left to right : version, revision
and patchlevel. 

Comparison between numbers is numerical, so that 1.7.50 E<gt> 1.7.6

=head1 AUTHOR

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P2
 External: --

=cut

�������������wml-2.0.12.orig/wml_include/Makefile.in�������������������������������������������������������������0000644�0001750�0001750�00000005146�10343637516�015757� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_include/Makefile
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##

# ------------------------------------------------
#   DEFINITIONS
# ------------------------------------------------

@SET_MAKE@
SHELL = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

PATH_PERL       = @PATH_PERL@
INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s
INSTALL_DATA    = $(top_srcdir)/etc/shtool install -c -m 644
MKDIR           = $(top_srcdir)/etc/shtool mkdir -f -p -m 755

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man

INSTALLPRIVLIB  = @INSTALLPRIVLIB@
INSTALLARCHLIB  = @INSTALLARCHLIB@

DCOLON		= @DCOLON@

# ------------------------------------------------
#   TARGETS
# ------------------------------------------------

all: sys/bootp3.src
	@set -e; \
	files=`echo [a-z]*.src [a-z]*/*.src`; \
	for file in $$files; do \
	    base=`echo $$file | sed -e 's/\.src$$//g'`; \
	    name=`echo wml/$$base | sed -e 's/\//$(DCOLON)/g'`; \
	    if ls -1t $$base.wml $$base.src 2>/dev/null \
	       | sed 1q | grep "^$$base.wml\$$" >/dev/null 2>&1; then \
	        :; \
	    else \
	        echo "Creating $$name"; \
	        sed -e '/^=head1/,/^=cut/d' -e '/^__END__/,$$d' \
                   <$$base.src >$$base.wml; \
	        cp $$base.src $$name.pod; \
	        pod2man --section=1 \
	            --center="EN Tools" \
	            --release="EN Tools" \
	                $$name.pod >$$base.3; \
	        rm -f $$name.pod; \
	    fi; \
	done

sys/bootp3.src: sys/bootp3.src.in
	sed -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \
	    -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \
	    <$? >$@

install:
	@set -e; \
	files=`echo [a-z]*.wml [a-z]*/*.wml`; \
	for file in $$files; do \
	    base=`echo $$file | sed -e 's/\.wml$$//g'`; \
	    dir=`echo $$file | sed -e 's/[a-zA-Z0-9_]*.wml$$//g'`; \
	    name=`echo wml/$$base | sed -e 's/\//$(DCOLON)/g'`; \
	    if [ ! -d "$(libdir)/include/$$dir" ]; then \
	        echo "$(MKDIR) $(libdir)/include/$$dir"; \
	        $(MKDIR) $(libdir)/include/$$dir; \
	    else :; \
	    fi; \
          echo "$(INSTALL_DATA) $$file $(libdir)/include/$$file"; \
          $(INSTALL_DATA) $$file $(libdir)/include/$$file; \
          echo "$(INSTALL_DATA) $$base.3 $(mandir)/man3/$$name.3"; \
          $(INSTALL_DATA) $$base.3 $(mandir)/man3/$$name.3; \
	done

clean:
	-rm -f *.wml */*.wml
	-rm -f *.3   */*.3
	-rm -f sys/bootp3.src

distclean: clean
	-rm -f Makefile

realclean: distclean

##EOF##
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/sys/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�014524� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/sys/compat1.src���������������������������������������������������������0000644�0001750�0001750�00000004305�10343637516�016601� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::sys::compat1 -- Backward Compatibility with WML 1.x
##  Copyright (c) 1999-2001 Denis Barbier
##
##  These macros are defined for compatibility with Meta-HTML
##
<define-tag define-container endtag=required attributes=verbatim>\
  <define-tag %attributes endtag=required>%body</define-tag>\
  <set-hook define-container>
     <warning "The `define-container' tag is obsolete, see `define-tag'" />
     <set-hook define-container action=replace></set-hook>
  </set-hook>
</define-tag>
<define-tag defmacro endtag=required attributes=verbatim>\
  <define-tag %attributes endtag=required>%body</define-tag>\
  <set-hook defmacro>
     <warning "The `defmacro' tag is obsolete, see `define-tag'" />
     <set-hook defmacro action=replace></set-hook>
  </set-hook>
</define-tag>

<define-tag wml-obsolete whitespace=delete>
  <let %0=%1 />
  <set-hook %0>
     <warning "The `%0' tag is obsolete, see `%1'" />
     <set-hook %0 action=replace></set-hook>
  </set-hook>
</define-tag>
<wml-obsolete defsubst define-tag />
<wml-obsolete prog group />
<wml-obsolete concat group />
#  Since WML 2.0.2, tag names cannot begin with a percent sign
#  <wml-obsolete %%eval group>
<wml-obsolete array:push array-push />
<wml-obsolete array:pop array-pop />
#  Mathematical functions
#  <add>, <min> and <max> are unchanged.
<wml-obsolete sub substract />
<wml-obsolete mul multiply />
#  The <div> tag is not defined since it is a valid HTML tag.
<wml-obsolete mod modulo />
##EOF##
__END__

=head1 NAME

wml::sys::compat1 - Backward Compatibility to WML 1.x

=head1 SYNOPSIS

 #use wml::sys::compat1

=head1 DESCRIPTION

Meta-HTML was used for pass 2 by WML 1.x whereas newer version use mp4h.  This
include file provides backward compatibility defines for Meta-HTML tags which
no longer exist in mp4h.

 Meta-HTML tag     mp4h equivalent tag
 ----------------- -------------------
 define-container  define-tag
 defsubst          define-tag
 defmacro          define-tag
 prog              group
 concat            group
 %%eval            group
 sub               substract
 mul               multiply
 mod               modulo

=head1 AUTHOR

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

P2

=head1 SEEALSO

wml_p2_mp4h(1)

=cut

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/sys/bootp3.src.in�������������������������������������������������������0000644�0001750�0001750�00000001676�10343637516�017060� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::sys::bootp3 -- WML Bootstrap Code for pass 3 (ePerl)
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##
<:
BEGIN {
    #   don't use "use lib" here because this leads to conflict 
    #   warnings from "lib.pm" when using a Perl runtime system
    #   which is different from the one used under compile time.
    unshift @INC, qw(
        @INSTALLPRIVLIB@
        @INSTALLARCHLIB@
    );

    # get rid of nasty warnings
    $^W = 0;
}
:>\
##EOF##
__END__

=head1 NAME

wml::sys::bootp3 - WML Bootstrap Code for Pass 3

=head1 SYNOPSIS

I<No synopsis, because this is automatically included by WML on startup.>

=head1 DESCRIPTION

This include file currently just bootstraps the (perhaps) privately installed
Perl 5 modules of WML which stay below F<@libdir@@libsubdir@/perl/>.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

P3

=head1 SEEALSO

wml_p3_eperl(1), perl(1)

=cut

������������������������������������������������������������������wml-2.0.12.orig/wml_include/sys/all.src�������������������������������������������������������������0000644�0001750�0001750�00000001713�10343637516�016005� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::sys:all - All of System (SYS) category 
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 1999-2001 Denis Barbier
##

#use wml::sys::bootp3
#use wml::sys::bootp4
#use wml::sys::compat1

##EOF##
__END__

=head1 NAME

wml::sys:all - All of System (SYS) category 

=head1 SYNOPSIS

 #use wml::std::all

=head1 DESCRIPTION

This includes all existing include files of the B<System> (SYS) category,
i.e. all includes with prefix B<wml::sys>.  The following files currently
exist:

  wml::sys::bootp3(3)  ... WML Bootstrap Code for pass 3 (ePerl)
  wml::sys::bootp4(3)  ... WML Bootstrap Code for pass 4 (gm4)
  wml::sys::compat1(3) ... Compatibility for WML version 1.x

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1
 External: --

=head1 SEEALSO

wml::sys::bootp3(3),
wml::sys::bootp4(3),
wml::sys::compat1(3).

=cut

�����������������������������������������������������wml-2.0.12.orig/wml_include/sys/bootp4.src����������������������������������������������������������0000644�0001750�0001750�00000001444�10343637516�016445� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::sys::bootp4 -- WML Bootstrap Code for pass 4 (gm4)
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 1999-2001 Denis Barbier
##
m4_changequote()m4_changequote(`,')m4_dnl
m4_define(`m4_noquotes', `m4_changequote()')m4_dnl
m4_define(`m4_quotes',   `m4_changequote`'')m4_dnl
m4_noquotes()m4_dnl
m4_changecom()m4_dnl
##EOF##
__END__

=head1 NAME

wml::sys::bootp4 - WML Bootstrap Code for Pass 4

=head1 SYNOPSIS

I<No synopsis, because this is automatically included by WML on startup.>

=head1 DESCRIPTION

Include some macros definitions to deal with GNU m4 quoting.

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

P4

=head1 SEEALSO

wml_p4_gm4(1), m4(1)

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�014474� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/url.src�������������������������������������������������������������0000644�0001750�0001750�00000002006�10343637515�016002� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::fmt::url - Recognize Uniform Resource Locator
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

<define-tag url endtag=required>
{:\
    [[s|\b(http://\S+)|<a href="$1">$1</a>|g]]\
    [[s|\b(ftp://\S+)|<a href="$1">$1</a>|g]]\
    [[s|\b(gopher://\S+)|<a href="$1">$1</a>|g]]\
    [[s|\b(telnet:\S+)|<a href="$1">$1</a>|g]]\
    [[s|\b(news:\S+)|<a href="$1">$1</a>|g]]\
    [[s|\b(mailto:\S+)|<a href="$1">$1</a>|g]]\
    %body\
:}\
</define-tag>

##EOF##
__END__

=head1 NAME

wml::fmt::url - Recognize Uniform Resource Locator

=head1 SYNOPSIS

 #use wml::fmt::url

 <url>
 ....http://....
 </url>

=head1 DESCRIPTION

The usage is simple: Just surround the text with the C<E<lt>urlE<gt>>
container tag and all contained URLs are recognized and made interactive by
adding HTML C<E<lt>aE<gt>> (anchor) tags.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P6
 External: --

=head1 SEEALSO

HTML C<E<lt>aE<gt>> tag.

=cut

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/isolatin.src��������������������������������������������������������0000644�0001750�0001750�00000007042�10343637515�017027� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::fmt::isolatin - ISO-Latin-1 to HTML Entity Conversion
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#   the container tag itself
<define-tag isolatin endtag=required>
{:\
    [[s| |&nbsp;|g]]\
    [[s|¡|&iexcl;|g]]\
    [[s|¢|&cent;|g]]\
    [[s|£|&pound;|g]]\
    [[s|¤|&curren;|g]]\
    [[s|¥|&yen;|g]]\
    [[s|¦|&brvbar;|g]]\
    [[s|§|&sect;|g]]\
    [[s|¨|&uml;|g]]\
    [[s|©|&copy;|g]]\
    [[s|ª|&ordf;|g]]\
    [[s|«|&laquo;|g]]\
    [[s|¬|&not;|g]]\
    [[s|­|&shy;|g]]\
    [[s|®|&reg;|g]]\
    [[s|¯|&macr;|g]]\
    [[s|°|&deg;|g]]\
    [[s|±|&plusmn;|g]]\
    [[s|²|&sup2;|g]]\
    [[s|³|&sup3;|g]]\
    [[s|´|&acute;|g]]\
    [[s|µ|&micro;|g]]\
    [[s|¶|&para;|g]]\
    [[s|·|&middot;|g]]\
    [[s|¸|&cedil;|g]]\
    [[s|¹|&sup1;|g]]\
    [[s|º|&ordm;|g]]\
    [[s|»|&raquo;|g]]\
    [[s|¼|&frac14;|g]]\
    [[s|½|&frac12;|g]]\
    [[s|¾|&frac34;|g]]\
    [[s|¿|&iquest;|g]]\
    [[s|À|&Agrave;|g]]\
    [[s|Á|&Aacute;|g]]\
    [[s|Â|&Acirc;|g]]\
    [[s|Ã|&Atilde;|g]]\
    [[s|Ä|&Auml;|g]]\
    [[s|Å|&Aring;|g]]\
    [[s|Æ|&AElig;|g]]\
    [[s|Ç|&Ccedil;|g]]\
    [[s|È|&Egrave;|g]]\
    [[s|É|&Eacute;|g]]\
    [[s|Ê|&Ecirc;|g]]\
    [[s|Ë|&Euml;|g]]\
    [[s|Ì|&Igrave;|g]]\
    [[s|Í|&Iacute;|g]]\
    [[s|Î|&Icirc;|g]]\
    [[s|Ï|&Iuml;|g]]\
    [[s|Ð|&ETH;|g]]\
    [[s|Ñ|&Ntilde;|g]]\
    [[s|Ò|&Ograve;|g]]\
    [[s|Ó|&Oacute;|g]]\
    [[s|Ô|&Ocirc;|g]]\
    [[s|Õ|&Otilde;|g]]\
    [[s|Ö|&Ouml;|g]]\
    [[s|×|&times;|g]]\
    [[s|Ø|&Oslash;|g]]\
    [[s|Ù|&Ugrave;|g]]\
    [[s|Ú|&Uacute;|g]]\
    [[s|Û|&Ucirc;|g]]\
    [[s|Ü|&Uuml;|g]]\
    [[s|Ý|&Yacute;|g]]\
    [[s|Þ|&THORN;|g]]\
    [[s|ß|&szlig;|g]]\
    [[s|à|&agrave;|g]]\
    [[s|á|&aacute;|g]]\
    [[s|â|&acirc;|g]]\
    [[s|ã|&atilde;|g]]\
    [[s|ä|&auml;|g]]\
    [[s|å|&aring;|g]]\
    [[s|æ|&aelig;|g]]\
    [[s|ç|&ccedil;|g]]\
    [[s|è|&egrave;|g]]\
    [[s|é|&eacute;|g]]\
    [[s|ê|&ecirc;|g]]\
    [[s|ë|&euml;|g]]\
    [[s|ì|&igrave;|g]]\
    [[s|í|&iacute;|g]]\
    [[s|î|&icirc;|g]]\
    [[s|ï|&iuml;|g]]\
    [[s|ð|&eth;|g]]\
    [[s|ñ|&ntilde;|g]]\
    [[s|ò|&ograve;|g]]\
    [[s|ó|&oacute;|g]]\
    [[s|ô|&ocirc;|g]]\
    [[s|õ|&otilde;|g]]\
    [[s|ö|&ouml;|g]]\
    [[s|÷|&divide;|g]]\
    [[s|ø|&oslash;|g]]\
    [[s|ù|&ugrave;|g]]\
    [[s|ú|&uacute;|g]]\
    [[s|û|&ucirc;|g]]\
    [[s|ü|&uuml;|g]]\
    [[s|ý|&yacute;|g]]\
    [[s|þ|&thorn;|g]]\
    [[s|ÿ|&yuml;|g]]\
    %body\
:}\
</define-tag>

#   the "#include ... global" support
<if "$(global)" <group
<isolatin>
{#ISOLATIN_GLOBAL#}
</isolatin>
{#ISOLATIN_GLOBAL#:
/>/>

##EOF##
__END__

=head1 NAME

wml::fmt::isolatin - ISO-Latin-1 to HTML Entity Conversion

=head1 SYNOPSIS

  #use wml::fmt::isolatin [global]

  <isolatin>
  Text with ISO latin 1 characters
  for instance german umlauts: ``öäüÖÄÜß''
  </isolatin>

=head1 DESCRIPTION

This creates an area substitution with Pass 6 (asubst) for all ISO-Latin-1
characters to their corresponding HTML entities. Note that this is not really
necessary because HTML 3.2 states that every browser has to understand
ISO-Latin-1 characters. So there is no real need to encode them with this
container tag. But it is safe, because the result is 7Bit which can be
transfered over more mediums then the 8 Bit version with ISO-Latin-1
characters.

When adding the C<global> argument, the complete document gets automatically
encapsulated into a C<E<lt>isolatinE<gt>> container.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P6
 External: --

=head1 SEEALSO

ISO Latin 1 character table

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/verbatim.src��������������������������������������������������������0000644�0001750�0001750�00000004013�10343637515�017011� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::fmt::verbatim - Really Preformatted Verbatim Text
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::std::tags

<protect pass=2>
<:
#   the conversion function
#   provided just for wml::imp::generic
sub wml_fmt_verbatim {
    my ($arg) = @_;
    my ($buf);
    local (*FP);

    open(FP, "<$arg->{FILE}") || die;
    local ($/) = undef;
    $buf = <FP>;
    close(FP);

    $buf =~ s|&|&amp;|sg;
    $buf =~ s|<|&lt;|sg;
    $buf =~ s|>|&gt;|sg;
    $buf =~ s|\n+\s*$||s;

    #   WARNING: protect tags cannot be nested, so they are escaped here
    return "<"."protect pass=4-9><pre>\n$buf</pre><"."/protect>";
}
:>
</protect>

<define-tag verbatim endtag=required whitespace=delete>
<pre<attributes-quote <attributes-extract :pre:(.*) %attributes /> />>
<protect pass=3-5><protect pass=7-9>
{:
[[s|&|&amp;|sg]]
[[s|<|&lt;|sg]]
[[s|>|&gt;|sg]]
[[s|\n+\s*$||s]]
[[s|^\s*\n+||s]]
%body
:}
</protect></protect>
</pre>
</define-tag>

<define-tag verbatim-file>
<preserve src />
<set-var %attributes />
<perl>
  <perl:print:
       "&wml_fmt_verbatim({ FILE => '<get-var src />'})" />
</perl>
<restore src />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::fmt::verbatim - Really Preformatted Verbatim Text

=head1 SYNOPSIS

 #use wml::fmt::verbatim

 <verbatim>
 Text with <,> and & characters,
     leading whitespaces and
 pre  formatted   blocks
 </verbatim>

 #     To include the file ``bar'' verbatim
 <verbatim-file src="bar">

=head1 DESCRIPTION

This is an enhanced C<E<lt>preE<gt>> tag which really formats as plain text,
i.e. escapes the characters `C<E<lt>>', `C<E<gt>>' and `C<&>'.

The usage is simple: Just surround the text with the C<E<lt>verbatimE<gt>>
container tag and then all text inside it will be threated as really verbatim
text, i.e. a I<pre>formatted area with all problematic characters sequences
escaped.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P6
 External: --

=head1 SEEALSO

HTML C<E<lt>preE<gt>> tag

=cut

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/all.src�������������������������������������������������������������0000644�0001750�0001750�00000002426�10343637515�015756� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::fmt:all - All of Formatting (FMT) category
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::fmt::isolatin
#use wml::fmt::pod
#use wml::fmt::sdf
#use wml::fmt::text
#use wml::fmt::url
#use wml::fmt::verbatim
#use wml::fmt::xtable

##EOF##
__END__

=head1 NAME

wml::fmt:all - All of Formatting (FMT) category

=head1 SYNOPSIS

 #use wml::fmt::all

=head1 DESCRIPTION

This includes all existing include files of the B<Formatting> (FMT) category,
i.e. all includes with prefix B<wml::fmt>.  The following files currently
exist:

 wml::fmt::isolatin(3) ... ISO-Latin-1 to HTML Entity Conversion
 wml::fmt::verbatim(3) ... Really Preformatted Verbatim Text
 wml::fmt::xtable(3)   ... HTML tables through Advanced Syntax
 wml::fmt::url(3)      ... Recognize Uniform Resource Locator
 wml::fmt::text(3)     ... Plain ASCII with Special Formatting Semantic
 wml::fmt::pod(3)      ... Plain Old Document (POD) Format
 wml::fmt::sdf(3)      ... Simple Document Format (SDF)

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1
 External: --

=head1 SEEALSO

wml::fmt::isolatin(3),
wml::fmt::verbatim(3),
wml::fmt::xtable(3),
wml::fmt::url(3),
wml::fmt::text(3),
wml::fmt::pod(3),
wml::fmt::sdf(3).

=cut

������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/text.src������������������������������������������������������������0000644�0001750�0001750�00000004275�10343637515�016176� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::fmt::text - Plain ASCII with Special Formatting Semantic
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::std::tags

<protect pass=2>
<:
#   the conversion function
sub wml_fmt_text {
    my ($arg) = @_;
    my ($buf);
    local (*FP);

    #   read the txt2html result
    open(FP, "$(WML_LOC_LIBDIR)/exec/wml_aux_txt2html $arg->{FILE}|");
    local ($/) = undef;
    $buf = <FP>;
    close(FP);

    #   cut out the body
    $buf =~ s|^.*<BODY>||is;
    $buf =~ s|</BODY>.*$||is;

    #   give headlines a more typographically strong look
    if (not $arg->{NOTYPO}) {
        $buf =~ s|^(<A NAME=".+?"><H([1-6])>)(.+?)(</H\2></A>)|$1<font face=\"Arial,Helvetica\">$3</font>$4|isg;
    }

    return $buf;
}
:>
</protect>

<define-tag text endtag=required>
<preserve notypo />
<set-var notypo=* />
<set-var %attributes />
<perl>
{
    my $tmpfile = "$(WML_TMPDIR)/wml.txt2html.$$.tmp";
    my $notypo = (qq|<get-var notypo />| eq '' ? 1 : 0);

    my $buf;
    <perl:assign:sq $buf>%body</perl:assign:sq>

    #   there is no reason to nest <text> tags, so the <perl:print>
    #   statement is unnecessary
    open(TXT, ">$tmpfile");
    print TXT $buf;
    close(TXT);

    <perl:print:
         "&wml_fmt_text({ FILE => $tmpfile, NOTYPO => $notypo })" />

    unlink($tmpfile);
}
</perl>
<restore notypo />
</define-tag>


##EOF##
__END__

=head1 NAME

wml::fmt::text - Plain ASCII with Special Formatting Semantic

=head1 SYNOPSIS

 #use wml::fmt::text

 <: print &wml_fmt_text({ FILE => $file, ...}); :>

 <text>
 FOO
 ===

 1. bar
 2. quux
    a. baz
    b. foo
 ...
 </text>

=head1 DESCRIPTION

The usage is simple: Surround the text with the C<E<lt>textE<gt>> container
tag and then just write plain ASCII text inside it. The corresponding HTML
code is created via F<wml_aux_txt2html>(1), a filter which gives the ASCII
text nice formatting semantic which control the HTML result.

The core conversion function is wml_fmt_text() which also can be used by other
include files. 

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3, wml_aux_txt2html (WML)
 External: --

=head1 SEEALSO

wml_aux_txt2html(1)

=cut

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/xtable.src����������������������������������������������������������0000644�0001750�0001750�00000003503�10343637515�016462� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::fmt::xtable - HTML tables through Advanced Syntax
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::std::tags

<set-var __xtable:level=0 />
<define-tag xtable endtag=required>
<increment __xtable:level />
<perl filehandle="FH_XTABLE">
{
    my $tmpfile = "$(WML_TMPDIR)/wml.table.$$.tmp";
    my $options;
    <perl:assign $options>%attributes</perl:assign>;
    <when <eq <get-var __xtable:level /> 1 />>
    local *FH_XTABLE;
    open(FH_XTABLE, ">$tmpfile");
    </when>
    <perl:assign>
      <wwwtable $options>
        %body
      </wwwtable>
    </perl:assign>
</perl>
#   we cut here to change filehandle
<perl>
    <when <eq <get-var __xtable:level /> 1 />>
    print FH_XTABLE <perl:var />;
    close(FH_XTABLE);
    open(FH_XTABLE_IN,
       "$(WML_LOC_LIBDIR)/exec/wml_aux_freetable $tmpfile < /dev/null |");
    local ($/) = undef;
    <perl:var /> = <*FH_XTABLE_IN>;
    close(FH_XTABLE_IN);
    <perl:print:var />
    unlink("$tmpfile");
    </when>
}
</perl>
<decrement __xtable:level />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::fmt::xtable - HTML tables through Advanced Syntax

=head1 SYNOPSIS

 #use wml::fmt::xtable
 
 <xtable table-options>
   initial text (e.g. <caption> ... </caption>).
   (X, Y) options for cell (X, Y)
   text for cell (X,Y)...
   ((X,Y)) options for header cell X,Y
   text for header cell (X,Y)...
 </xtable>

=head1 DESCRIPTION

This is just a WML wrapper for interfacing the wml_aux_freetable(1) utility
which converts its advanced table syntax to plain HTML table markup code. See
wml_aux_freetable(1) for more details.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3, wml_aux_freetable (PATH)
 External: --

=head1 SEEALSO

wml_aux_freetable(1),
HTML C<E<lt>tableE<gt>> tag.

=cut

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/pod.src�������������������������������������������������������������0000644�0001750�0001750�00000010052�10343637515�015762� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::fmt::pod - Plain Old Document (POD) Format
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

<protect pass=2>
<:
#   the conversion function
sub wml_fmt_pod {
    my ($arg) = @_;
    my ($buf);
    local (*FP);

    #   read the txt2html result
    open(FP, "pod2html --norecurse" .
                       ($arg->{KEEPINDEX}  ? ' --index' : ' --noindex') .
                       ($arg->{NONETSCAPE} ? ' --nonetscape' : ' --netscape') .
                       " $arg->{FILE}|");
    local ($/) = undef;
    $buf = <FP>;
    close(FP);
    unlink("pod2html-dircache");
    unlink("pod2html-itemcache");

    #   cut out the body
    $buf =~ s|^.*<BODY>||is;
    $buf =~ s|</BODY>.*$||is;

    #   remove stuff from name kludge
    if ($arg->{NAMEKLUDGE}) {
        $buf =~ s|<LI><A HREF="#NAME">NAME</A>||is;
        $buf =~ s|<H1><A NAME="NAME">NAME.+?<H1>|<H1>|is;
    }

    #   make headlines more typographic
    if (not $arg->{NOTYPO}) {
        $buf =~ s|^(<H[1-6]><A NAME="([A-Za-z_]+).*?">)(.+)(\n?)$|$1<font face=\"Arial,Helvetica\">$3</font>$4|mg;
    }

    #   remove the nasty horizontal rules
    if (not $arg->{KEEPHR}) {
        $buf =~ s|<HR>||isg;
    }

    #   remove uncommented index
    if (not $arg->{KEEPINDEX}) {
        $buf =~ s|<!-- INDEX BEGIN -->.+?<!-- INDEX END -->||is;
    }

    #   more cleanup of HTML markup
    $buf =~ s|<P>\s*\n<P>|<P>|isg;
    $buf =~ s|</DL>\s*\n?$||is;

    if ($arg->{EPERLFILTER}) {
        eval "\$buf = \&".$arg->{EPERLFILTER}."(\$buf);";
    }

    return $buf;
}
:>
</protect>

<define-tag pod endtag=required>
<preserve keepindex keephr nonetscape notypo eperlfilter />
<set-var keepindex=* />
<set-var keephr=* />
<set-var nonetscape=* />
<set-var notypo=* />
<set-var %attributes />
<perl>
{
    my $tmpfile     = "$(WML_TMPDIR)/wml.pod2html.$$.tmp";
    my $keepindex   = (qq|<get-var keepindex />| eq '' ? 1 : 0);
    my $keephr      = (qq|<get-var keephr />| eq '' ? 1 : 0);
    my $nonetscape  = (qq|<get-var nonetscape />| eq '' ? 1 : 0);
    my $notypo      = (qq|<get-var notypo />| eq '' ? 1 : 0);
    my $eperlfilter = qq|<get-var eperlfilter />|;
    my $namekludge  = 0;

    my $buf;
    <perl:assign:sq $buf>%body</perl:assign:sq>

    #   add NAME header if missing to avoid warnings
    if ($buf !~ m|=head1\s+NAME|) {
        $buf = "=head1 NAME\n\nDUMMY - __NAME_KLUDGE__\n\n" . $buf;
        $namekludge = 1;
    }

    #   there is no reason to nest <pod> tags, so the <perl:print>
    #   statement is unnecessary
    open(POD, ">$tmpfile");
    print POD $buf;
    close(POD);
    <perl:print:
         "&wml_fmt_pod({ FILE        => $tmpfile, 
                         NAMEKLUDGE  => $namekludge,
                         KEEPINDEX   => $keepindex, 
                         KEEPHR      => $keephr, 
                         NONETSCAPE  => $nonetscape, 
                         NOTYPO      => $notypo,
                         EPERLFILTER => $eperlfilter })" />

    unlink($tmpfile);
}
</perl>
<restore  keepindex keephr nonetscape notypo eperlfilter />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::fmt::pod - Plain Old Document (POD) Format

=head1 SYNOPSIS

 #use wml::fmt::pod

 <: print &wml_fmt_pod({ FILE => $file, ... }); :>

 <pod [keepindex] [keephr] [nonetscape] [notypo] [eperlfilter=func]>
 =head1 ...
 ...
 =head2 ...
 ...
 </pod>

=head1 DESCRIPTION

The usage is simple: Just surround all POD source text with the B<pod>
container tag and then just write POD format inside it as you would do when
writing plain POD documents. The corresponding HTML code is created via Perl's
C<pod2html> filter. 

B<ATTENTION! There are a lot of pod2html versions around from the various Perl
versions. I really recommend you the pod2html from Perl 5.004!>

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3
 External: pod2html (PATH)

=head1 SEEALSO

perlpod(1), http://www.perl.com/perl/

=cut

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/fmt/sdf.src�������������������������������������������������������������0000644�0001750�0001750�00000005342�10343637515�015762� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::fmt::sdf - Simple Document Format (SDF)
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

<protect pass=2>
<:
#   the conversion function
sub wml_fmt_sdf {
    my ($arg) = @_;
    my ($buf);
    local (*FP);

    #   read the sdf result
    my $sdf = '';
    foreach $path (split(/:/, $ENV{PATH})) {
        if (-x "$path/sdf") {
            $sdf = "$path/sdf";
            last;
        }
    }
    if ($sdf eq '') {
        print STDERR "** wml::fmt::sdf: external filter `sdf' not found\n";
        exit(1);
    }
    open(FP, "$sdf -2html -o- $arg->{FILE}|");
    local ($/) = undef;
    $buf = <FP>;
    close(FP);

    #   cut out the body
    $buf =~ s|^.*<BODY>||is;
    $buf =~ s|</BODY>.*$||is;

    #   make headlines more typographic
    if (not $arg->{NOTYPO}) {
        $buf =~ s|^(<H([1-6])><A NAME="(.+?)">)(.+?)(</A></H\2>)|$1<font face=\"Arial,Helvetica\">$4</font>$5|mg;
    }

    #   remove the nasty horizontal rules
    if (not $arg->{KEEPHR}) {
        $buf =~ s|<HR>||isg;
    }

    #   more cleanup of HTML markup
    $buf =~ s|<P>\s*\n<P>|<P>|isg;
    $buf =~ s|</DL>\s*\n?$||is;

    return $buf;
}
:>
</protect>

<define-tag sdf endtag=required>
<preserve keephr notypo />
<set-var keephr=* />
<set-var notypo=* />
<set-var %attributes />
<perl>
{
    my $tmpfile    = "$(WML_TMPDIR)/wml.sdf2html.$$.tmp";
    my $keephr     = (qq|<get-var keephr />| eq '' ? 1 : 0);
    my $notypo     = (qq|<get-var notypo />| eq '' ? 1 : 0);

    my $buf;
    <perl:assign:sq $buf>%body</perl:assign:sq>

    #   there is no reason to nest <sdf> tags, so the <perl:print>
    #   statement is unnecessary
    open(SDF, ">$tmpfile");
    print SDF $buf;
    close(SDF);
    <perl:print:
         "&wml_fmt_sdf({ FILE       => $tmpfile, 
                         KEEPHR     => $keephr, 
                         NOTYPO     => $notypo     })" />

    unlink($tmpfile);
}
</perl>
<restore  keephr notypo />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::fmt::sdf - Simple Document Format (SDF)

=head1 SYNOPSIS

 #use wml::fmt::sdf

 <: print &wml_fmt_sdf({ FILE => $file, ... }); :>

 <sdf>
 H1: ...
 ...
 H2: ...
 ...
 </sdf>

=head1 DESCRIPTION

The usage is simple: surround all SDF source text with the C<E<lt>sdfE<gt>>
container tag and then just write SDF format inside it as you would do when
writing plain SDF documents. The corresponding HTML code is created via SDF's
F<sdf2html> filter.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3
 External: sdf

=head1 SEEALSO

sdf(1), http://www.mincom.com/mtr/sdf/

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/imp/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�014473� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/imp/all.src�������������������������������������������������������������0000644�0001750�0001750�00000001606�10343637514�015753� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::imp:all -- All of Import (IMP) category
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::imp::csmap
#use wml::imp::fsview
#use wml::imp::generic

##EOF##
__END__

=head1 NAME

wml::imp:all - All of Import (IMP) category

=head1 SYNOPSIS

 #use wml::imp::all

=head1 DESCRIPTION

This includes all existing include files of the B<Import> (IMP) category, i.e.
all includes with prefix B<wml::imp>.  The following files currently exist:

 wml::imp::csmap(3)   ... Import External Server-Side Map as Inlined Client-Side Map
 wml::imp::fsview(3)  ... View Box for Filesystem Resource
 wml::imp::generic(3) ... Generic Import Of External Resources

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1
 External: --

=head1 SEEALSO

wml::imp::csmap(3),
wml::imp::fsview(3),
wml::imp::generic(3).

=cut

��������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/imp/generic.src���������������������������������������������������������0000644�0001750�0001750�00000007165�10343637514�016625� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::imp::generic - Generic Import Of External Resources
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags
#use wml::fmt::verbatim
#use wml::fmt::text
#use wml::fmt::pod
#use wml::fmt::sdf

<protect pass=2>
<:
#
#  determine a way to retrieve the data
#
sub existsprg {
    my ($prg) = @_;
    my ($found, $p);

    $found = 0;
    foreach $p (split(/:/, $ENV{'PATH'})) {
        $found = 1 if (-x "$p/$prg");
    }
    return $found;
}
eval 'use LWP::Simple;';
if (not $@) {
    eval 'sub remote_fetch { my($url) = @_; return LWP::Simple::get($url); }'
}
elsif (&existsprg("lynx")) {
    eval 'sub remote_fetch { my($url) = @_; return `lynx -source $url`; }'
}
elsif (&existsprg("wget")) {
    eval 'sub remote_fetch { my($url) = @_; return `cd $(WML_TMPDIR) && mkdir wget.$$ && cd wget.$$ && wget -q -o/dev/null $url && cat * && cd $(WML_TMPDIR) && rm -f wget.$$`; }'
}
elsif (&existsprg("fetch")) {
    eval 'sub remote_fetch { my($url) = @_; return `fetch $url`; }'
}
else {
    eval 'sub remote_fetch { my($url) = @_; 
                      return "Failed to retrieve $url" .
                             "None of {LWP::Simple::get,Lynx,Wget,Fetch} were found"; }'
}
sub local_fetch {
    my ($file) = @_;
    my ($buf);
    local (*FP);

    open(FP, "<$file") || die;
    local ($/) = undef;
    $buf = <FP>;
    close(FP);

    return $buf;
}
:>
</protect>

<define-tag import>
<preserve src format eperlfilter />
<set-var %attributes />
<perl>
{
    my $format      = '<get-var format />';
    my $src         = '<get-var src />';
    my $eperlfilter = '<get-var eperlfilter />';

    if ($format eq '') {
        $format = 'verbatim';
        $format = 'pod'  if ($src =~ m|\.pod$|);
        $format = 'sdf'  if ($src =~ m|\.sdf$|);
        $format = 'text' if ($src =~ m|\.txt$|);
    }

    my $buf;
    if ($src =~ m|^http://| or $src =~ m|^ftp://|) {
        $buf = &remote_fetch($src);
    }
    else {
        $buf = &local_fetch($src);
    }

    my $tmpfile = "$(WML_TMPDIR)/wml.import.$$.tmp";
    local (*TMP);
    open(TMP, ">$tmpfile");
    print TMP $buf;
    close(TMP);

    if ($format eq 'verbatim') {
        $buf = &wml_fmt_verbatim({ FILE => $tmpfile });
    }
    elsif ($format eq 'pod') {
        $buf = &wml_fmt_pod({ FILE        => $tmpfile, 
                              KEEPINDEX   => 1,
                              EPERLFILTER => $eperlfilter });
    }
    elsif ($format eq 'sdf') {
        $buf = &wml_fmt_pod({ FILE => $tmpfile });
    }
    elsif ($format eq 'text') {
        $buf = &wml_fmt_text({ FILE => $tmpfile });
    }

    unlink($tmpfile);

    <perl:print: $buf />
}
</perl>
<restore  src format eperlfilter />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::imp::generic - Generic Import Of External Resources

=head1 SYNOPSIS

 #use wml::imp::generic

 <import src="url" [format="..."]>

=head1 DESCRIPTION

This tag imports an external resource via URL or filename. The
C<E<lt>importE<gt>> tag gets replaced by the contents of the external resource
formatted via the C<verbatim>, C<pod>, C<sdf> or C<text> formatting filters.

Remote retrival only works if at least one of the following programs can be
found:

   - Perl function: LWP::Simple::get()
   - Program: lynx
   - Program: wget
   - Program: fetch

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3
 External: LWP::Simple::get (P5M) | lynx (PATH) | wget (PATH) | fetch (PATH)

=head1 SEEALSO

LWP::Simple(3), lynx(1), wget(1), fetch(1)

=cut

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/imp/csmap.src�����������������������������������������������������������0000644�0001750�0001750�00000002623�10343637514�016306� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::imp::csmap - Import External Server-Side Map as Inlined Client-Side Map
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

<define-tag csmap>
<preserve from type name />
<set-var %attributes />
<perl>
    $from = '<get-var from />';
    $type = '<get-var type />';
    $name = '<get-var name />';

    $type = 'ncsa' if $type eq '';
    $name = $from  if $name eq '';

    open(FP, "$(WML_LOC_LIBDIR)/exec/wml_aux_map2html -t $type -n $name $from |");
    while (<*FP>) {
        <perl:print: $_ />
    }
    close(FP);
</perl>
<restore  from type name />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::imp::csmap - Import External Server-Side Map as Inlined Client-Side Map

=head1 SYNOPSIS

 #use wml::imp::csmap

 <a href="foo.map">
 <img src="foo.gif" alt="test" ismap usemap="#foo.cmap" border=0></a>
 <csmap from="foo.map" type="ncsa" name="foo.cmap">

=head1 DESCRIPTION

This tag converts a externally stored server-side map (either NCSA or CERN
format) to an inlined client-side map. This is done via the external program
wml_aux_map2html(1).

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3
 External: wml_aux_map2html (PATH)

=head1 SEEALSO

wml_aux_map2html(3)

=cut

�������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/imp/fsview.src����������������������������������������������������������0000644�0001750�0001750�00000011371�10343637514�016506� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::imp::fsview - View Box for Filesystem Resource
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

<define-tag fsview>
<preserve src headercolor bodycolor width hl hlcolor />
<set-var %attributes />
<perl>
    $path    = "<get-var src />";
    $width   = "<or <get-var width /> 90% />";
    $hl      = "<get-var hl />";
    $hlcolor = "<or <get-var hlcolor /> #a02020 />";

    if ($hl =~ m|,|) {
        @HL = split(',', $hl);
    }
    else {
        @HL = ($hl);
    }

    #   some special colors
    if ($path =~ m|\.html?$|) {
        $col1 = "<or <get-var headercolor /> #d0dfd0 />";
        $col2 = "<or <get-var bodycolor /> #e0f0e0 />";
    }
    elsif ($path =~ m|\.wml$|) {
        $col1 = "<or <get-var headercolor /> #dfc0c0 />";
        $col2 = "<or <get-var bodycolor /> #ffe0e0 />";
    }
    else {
        $col1 = "<or <get-var headercolor /> #d0d0d0 />";
        $col2 = "<or <get-var bodycolor /> #f0f0f0 />";
    }

    <perl:print>\
       <table* border=0 width="$width" cellpadding=10 cellspacing=0>\
       <tr*>\
       <td* align=left bgcolor="$col1">\
    </perl:print>

    if (-f $path) {
        #
        #   source is a file
        #
        <perl:print>\
           <a href="$path">\
           <font size=5>[ <b>FILE</b> ]</font>\
           </a>\
           &nbsp;&nbsp;&nbsp;\
           <font size=5 color="#404080"><b><tt>$path</tt></b></font>\
           <br />\
           <font* size=-1 color="#606090"><tt*>\
        </perl:print>
        open(FP, "ls -la $path |");
        $line = <*FP>;
        @entries = split(/ +/, $line); 
        ($p, $o, $g, $f) = ($entries[0], $entries[2], $entries[3], $entries[8]);
        $line = "[$p $o $g]";
        $line =~ s|&|&amp;|g;
        $line =~ s|<|&lt;|g;
        $line =~ s|>|&gt;|g;
        <perl:print: $line />
        close(FP);
        <perl:print>\
           </tt*></font*>\
           </td*>\
           </tr*>\
           <tr*>\
           <td* bgcolor="$col2" align=left>\
           <pre*>
</perl:print>
        open(FP, "<$path");
        while (<*FP>) {
            s|&|&amp;|g;
            s|<|&lt;|g;
            s|>|&gt;|g;
            if ($hl ne "") {
                foreach $mark (@HL) {
                    if (m|$mark|) {
                        s|^|<b*><font* color=\"$hlcolor\">|;
                        s|$|</font*></b*>|;
                    }
                }
            }
            <perl:print: $_ />
        }
        close(FP);
        <perl:print></pre*>
</perl:print>
    }
    elsif (-d $path) {
        #
        #   source is a file
        #
        $path =~ s|/$||g;
        $path =~ s|$|/|g;

        <perl:print>\
           <font size=5>[ <b>DIR</b> ]</font>\
           &nbsp;&nbsp;&nbsp;\
           <font size=5 color="#404080"><b><tt>$path</tt></b></font>\
           <br />\
           <font* size=-1 color="#606090"><tt*>\
        </perl:print>
        open(FP, "ls -dla $path |");
        $line = <*FP>;
        @entries = split(/ +/, $line); 
        ($p, $o, $g, $f) = ($entries[0], $entries[2], $entries[3], $entries[8]);
        $line = "[$p $o $g]";
        $line =~ s|&|&amp;|g;
        $line =~ s|<|&lt;|g;
        $line =~ s|>|&gt;|g;
        <perl:print: $line />
        close(FP);
        <perl:print>\
           </tt*></font*>\
           </td*>\
           </tr*>\
           <tr*>\
           <td* bgcolor="#$col2" align=left>\
           <pre*>
</perl:print>
        open(FP, "ls -la $path |");
        while (<*FP>) {
            s|&|&amp;|g;
            s|<|&lt;|g;
            s|>|&gt;|g;
            if ($hl ne "") {
                foreach $mark (@HL) {
                    if (m|$mark|) {
                        s|^|<b*><font* color=\"$hlcolor\">|;
                        s|$|</font*></b*>|;
                    }
                }
            }
            <perl:print: $_ />
        }
        close(FP);
        <perl:print></pre*>
</perl:print>

    }
    else {
        <perl:print><b>ERROR: Cannot open file '<tt>$path</tt>'</b><p*>
</perl:print>
    }
    <perl:print>\
       </td*>\
       </tr*>\
       </table*>\
    </perl:print>
</perl>
<restore  src headercolor bodycolor width hl hlcolor />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::imp::fsview - View Box for Filesystem Resource

=head1 SYNOPSIS

 #use wml::imp::fsview

 <fsview src="file" [hl="keywords"]>

=head1 DESCRIPTION

This tag creates a view box for an external source I<file> and optionally
highlights lines containing I<keywords>.

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3
 External: --

=head1 SEEALSO

-

=cut

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/��������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�014500� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/grid.src������������������������������������������������������������0000644�0001750�0001750�00000024103�10343637515�016133� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::grid - Layout Grid
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

<: 
#   top-level globals
$NGRID     = 0;
$GRIDLEVEL = 0;
:>

#
#   THE GRID CONTAINER TAG
#
<define-tag grid endtag=required>
<preserve layout align valign width padding spacing border
          bgcolor color summary />
<set-var %attributes />
<perl>
{
    $GRIDLEVEL++;

    #  grid globals
    my $ngrid = $NGRID++;
    my $NCELL = 0;
    my %CELL_ATTR = ();
    my %CELL_BODY = ();

    #   import cell specs... 
    my $div;
</perl>\
%body
<perl>
    #   then import attributes to ePerl 
    my $layout  = '<get-var layout />';
    my $align   = '<get-var align />';
    my $valign  = '<get-var valign />';
    my $width   = '<get-var width />';
    my $spacing = '<get-var spacing />';
    my $padding = '<get-var padding />';
    my $border  = '<get-var border />';
    my $bgcolor = '<get-var bgcolor />';
    my $color   = '<get-var color />';
    my $summary = qq|<get-var summary />|;
    my $height;
    #    set defaults for attributes
    $layout  = "1x$NCELL"                  if ($layout  eq '');
    ($xsize, $ysize) = ($layout =~ m|^(\d+)x(\d+)$|);
    $align   = 'l' x $xsize                if ($align   eq '');
    @ALIGNS  = split("", $align);
    $valign  = 't' x $ysize                if ($valign  eq '');
    @VALIGNS = split("", $valign);
    $width   = " width=\"$width\""         if ($width   ne '');
    $spacing = '0'                         if ($spacing eq '');
    $spacing = " cellspacing=\"$spacing\"" if ($spacing ne '');
    $padding = '0'                         if ($padding eq '');
    $padding = " cellpadding=\"$padding\"" if ($padding ne '');
    $border  = '0'                         if ($border  eq '');
    $border  = " border=\"$border\""       if ($border  ne '');
    $bgcolor = " bgcolor=\"$bgcolor\""     if ($bgcolor ne '');
    $summary = " summary=\"$summary\""     if ($summary ne '');

    #   some more setups
    my $pad = '    ' x ($GRIDLEVEL-1);
    my $globalcolor = $color;
    my %ALIGNTEXT = ( 'l' => 'left', 'c' => 'center', 'r' => 'right',
                      't' => 'top',  'm' => 'middle', 'b' => 'bottom' );

    #   create table container
    <perl:print>\
       $pad<table*$width$border$spacing$padding$bgcolor$summary>
</perl:print>

    #   create cell entries
    my %SPAN = ();
    my $n = 0;
    my ($y, $x, $body, $attr, $i);
    for ($y = 0; $y < $ysize; $y++) {
        #   start of a row
        <perl:print>$pad  <tr*>
</perl:print>

        #   create cells in a row
        for ($x = 0; $x < $xsize; $x++) {

            #   skip current grid position if spanning is active
            next if ($SPAN{$y*$xsize+$x});

            #   get the next cell info
            $body = $CELL_BODY{$n};
            $attr = $CELL_ATTR{$n};
            ($align, $valign, $bgcolor, $color, $rowspan, $colspan, $width, $height) = split(':', $attr);

            #   remember row spanning (current one can be ignored)
            if ($rowspan ne '') {
                for ($i = 1; $i < $rowspan; $i++) {
                    $SPAN{$y*$xsize+$x + $xsize*$i} = 1;
                }
            }
            #   remember column spanning (current one can be ignored)
            if ($colspan ne '') {
                for ($i = 1; $i < $colspan; $i++) {
                    $SPAN{$y*$xsize+$x + $i} = 1;
                }
            }

            #   complete the info
            $align   = "$ALIGNTEXT{$ALIGNS[$x]}"  if ($align eq '');
            $align   = " align=\"$align\"";
            $valign  = "$ALIGNTEXT{$VALIGNS[$y]}" if ($valign eq '');
            $valign  = " valign=\"$valign\"";
            $bgcolor = " bgcolor=\"$bgcolor\""    if ($bgcolor ne '');
            $color   = $globalcolor if ($globalcolor ne '' and $color eq '');
            $body    = "<"."font color=\"$color\">".$body."<*/font>" if ($color ne '');
            $rowspan = " rowspan=\"$rowspan\""    if ($rowspan ne '');
            $colspan = " colspan=\"$colspan\""    if ($colspan ne '');
            $width   = " width=\"$width\""        if ($width ne '');
            $height  = " height=\"$height\""      if ($height ne '');

            #   insert cell
            <perl:print>\
               $pad    <td$align$valign$bgcolor$rowspan$colspan$width$height>\
               $body</td>
</perl:print>

            #   increase cell counter
            $n++;
        }

        #   end of a row
        <perl:print>$pad  </tr*>
</perl:print>
    }

    #   end of the table
    <perl:print>$pad</table*>
</perl:print>

    $GRIDLEVEL--;
}
</perl>\
<restore  layout align valign width padding spacing border
          bgcolor color summary />
</define-tag>

#
#   THE CELL ELEMENT TAG
#
<define-tag cell endtag=required>
<preserve align valign bgcolor color rowspan colspan width height />
<set-var %attributes />
<perl>
    #   set the information for the surrounding grid container
    $div = "GRID${ngrid}_CELL${NCELL}";
    $CELL_BODY{$NCELL} = "{#${div}#}";
    $CELL_ATTR{$NCELL} = '<get-var align />:<get-var valign />:<get-var bgcolor />:<get-var color />:<get-var rowspan />:<get-var colspan />:<get-var width />:<get-var height />';
    $NCELL++;

    #   now finally inline the body via divertions
    #   (we could put the body tag directly above
    #   but then this will limit the usage dramatically!)
    <perl:print>{#${div}#:</perl:print>
</perl>\
%body\
<perl>
    <perl:print>:#${div}#}</perl:print>
</perl>\
<restore  align valign bgcolor color rowspan colspan width height />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::std::grid - Layout Grid

=head1 SYNOPSIS

 #use wml::std::grid

 <grid [attributes]>
   <cell [attributes]>...</cell>
     :
   <cell [attributes]>...</cell>
 </grid>

=head1 DESCRIPTION

The C<E<lt>gridE<gt>> container tag provides a mixture between a HTML table
and a TeX-like way of specifying its dimensions and the alignment of its
cells. 

=head1 ATTRIBUTES

First the possible attributes for C<E<lt>gridE<gt>>:

=over 4

=item C<summary>

This attribute will be inserted into the C<table> tag, see documentation
of HTML 4.0 for details on why this attribute is recommended.

=item C<layout>

This specifies the layout of the grid in X and Y dimension, i.e.  C<3x2> means
3 columns (x-dimension) and 2 rows (y-dimension). Default is C<1x>I<NCELL>
where I<NCELL> is the number of B<cell> tags or in other words: Default is a
top-down list.

=item C<align>

This specifies the horizontal alignment of the cells in a row. The argument
has to contain as many characters as there are cells in a row. The supported
alignment characters are `C<l>' (left), `C<r>' (right) and `C<c>' (center).
Default is `C<l...l>' (as much C<l>'s as there are cells in a row).

=item C<valign>

This specifies the vertical alignment of the cells in a column. The argument
has to contain as many characters as there are cells in a column.  The
supported alignment characters are `C<t>' (top), `C<b>' (bottom) and `C<m>'
(middle). Default is `C<t...t>' (as much C<t>'s as there are cells in a
column).

=item C<width>

This is the corresponding attribute of the HTML C<E<lt>tableE<gt>> tag. Use it
to set the width of the grid. Default is no specified width.

=item C<spacing>

This is the corresponding attribute to C<cellspacing> of the HTML
C<E<lt>tableE<gt>> tag. Use it to set the spacing of cells in the grid, i.e.
the space around the content of each cell. Default is 0 (no space).

=item C<padding>

This is the corresponding attribute to C<E<lt>cellpaddingE<gt>> of the HTML
C<E<lt>tableE<gt>> tag. Use it to set the padding between cells in the grid,
i.e.  the inter-cell space. Default is 0 (no space).

=item C<border>

This is the corresponding attribute of the HTML C<E<lt>tableE<gt>> tag. Use it
to set the border width of the grid. Default is 0 (no border).

=item C<bgcolor>

This is the corresponding attribute of the HTML C<E<lt>tableE<gt>> tag. Use it
to set the background color of the grid. Default is no specified color.

=item C<color>

This sets the foreground (text) color of the grid's contents. Actually this
sets the default for the same attribute of C<E<lt>cellE<gt>>. Default is no
specified color. 

=back

Second the possible attributes for C<E<lt>cellE<gt>>:

=over 4

=item C<align>

This is the corresponding attribute of the HTML C<E<lt>tdE<gt>> tag. Use it to
set the horizontal alignment of the cell's contents. Default is taken from the
same attribute of C<E<lt>gridE<gt>>.

=item C<valign>

This is the corresponding attribute of the HTML C<E<lt>tdE<gt>> tag. Use it to
set the vertical alignment of the cell's contents. Default is taken from the
same attribute of C<E<lt>gridE<gt>>.

=item C<bgcolor>

This is the corresponding attribute of the HTML C<E<lt>tdE<gt>> tag. Use it to
set the background color of a particular cell. Default is no specified color.

=item C<color>

This sets the foreground (text) color of the cell's contents.  This is done
via the HTML C<E<lt>fontE<gt>> tag.  Default is no specified color or the
color from the same attribute of C<E<lt>gridE<gt>>.

=item C<rowspan>

This is the corresponding attribute of the HTML C<E<lt>tdE<gt>> tag. Use it to
span a cell over more then one row of the grid. Default is 1 row.

=item C<colspan>

This is the corresponding attribute of the HTML C<E<lt>tdE<gt>> tag. Use it to
span a cell over more then one column of the grid. Default is 1 column.

=item C<width>

This is the corresponding attribute of the HTML C<E<lt>tdE<gt>> tag. Use it to
set the width of the cell. Default is no specified width.

=item C<height>

This is the corresponding attribute of the HTML C<E<lt>tdE<gt>> tag. Use it to
set the height of the cell. Default is no specified height.

=back

=head1 EXAMPLE

  <grid bgcolor="#000000" color="#ffffff" 
        layout="3x2" align="llr" valign="tm">
    <cell>A</cell> <cell>B</cell> <cell>C</cell>
    <cell>D</cell> <cell>E</cell> <cell>F</cell>
  </grid>

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3, P5
 External: --

=head1 SEEALSO

HTML E<lt>C<table>E<gt>-tag.

=cut

�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/href.src������������������������������������������������������������0000644�0001750�0001750�00000007110�10343637515�016131� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::href - Enhanced Hyperlink
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 1999-2001 Denis Barbier
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

<define-tag href whitespace=delete>
<preserve url name image hint target alternative />
<set-var %attributes />
<if <get-var name />
    <copy-var name alternative />
    <group <set-var name="<tt><get-var url /></tt>" />\
          <if <get-var hint />
              <copy-var hint alternative />
              <copy-var url alternative />
          />\
    />
/>
<if <get-var hint />
    <set-var hint=" onmouseover=\"self.status='<get-var hint />';return true\" \
                onmouseout=\"self.status='';return true\" \
                onfocus=\"self.status='<get-var hint />';return true\" \
                onblur=\"self.status='';return true\"" \
    />
/>
<if <get-var target />
    <set-var target=" target=\"<get-var target />\"" />
/>
<when <not <match "<downcase <get-var url /> />"
              "^(http|ftp|telnet|gopher|news|mailto):" /> />>
<if <match "<get-var url />" ".+@.*[^.]+\\.[^.]+" />
    <set-var url="mailto:<get-var url />" />
/>
<if <match "<get-var url />" "^www\\.[^.]+\\..+" />
    <set-var url="http://<get-var url />" />
/>
<if <match "<get-var url />" "^ftp\\.[^.]+\\..+" />
    <set-var url="ftp://<get-var url />" />
/>
</when>
<if <get-var image /> <group
   "<a href="<get-var url />"<get-var hint /><get-var target />\
        <attributes-quote <attributes-extract :a:(.*) %attributes /> />>\
      <img src="<get-var image />" alt="<get-var alternative />" border=0\
        <attributes-quote <attributes-extract :img:(.*) %attributes /> /> />\
    </a>" />          <group
   "<a href="<get-var url />"<get-var hint /><get-var target />\
        <attributes-quote <attributes-extract :a:(.*) %attributes /> />>\
        <get-var name /></a>"
   />
/>
<restore  url name image hint target alternative />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::std::href - Enhanced Hyperlink

=head1 SYNOPSIS

 #use wml::std::href

 <href url="..." [name="..."] [image="..."] [hint="..."] [target="..."]> 

=head1 DESCRIPTION

This is an interface to the standard HTML anchor tag (C<E<lt>a
href="..."E<gt>...E<lt>/aE<gt>>).  The intended use of C<E<lt>hrefE<gt>> is to
simplify the creation of hyperlinks. The following

  <href url="THE://URL">
  
  <href url="THE://URL" name="THE_NAME">
  <href url="THE://URL" image="THE_IMG.EXT">
  
  <href url="THE://URL" name="THE_NAME" image="THE_IMG.EXT">
  
  <href url="THE://URL" hint="THE_HINT">
  <href url="THE://URL" name="THE_NAME" image="THE_IMG.EXT" hint="THE_HINT">

gets expanded to

  <a href="THE://URL"><tt>THE://URL</tt></a>
  
  <a href="THE://URL">THE_NAME</a>
  <a href="THE://URL"><img src="THE_IMG.EXT" alt="THE://URL" border="0"></a>
  
  <a href="THE://URL"><img src="THE_IMG.EXT" alt="THE_NAME" border="0"></a>
  
  <a href="THE://URL" onmouseover="self.status='THE_HINT';return true" onmouseout="self.status='';return true" onfocus="self.status='THE_HINT';return true" onblur="self.status='';return true"><tt>THE://URL</tt></a>
  <a href="THE://URL" onmouseover="self.status='THE_HINT';return true" onmouseout="self.status='';return true" onfocus="self.status='THE_HINT';return true" onblur="self.status='';return true"><img src="THE_IMG.EXT" alt="THE_NAME" border="0"></a>

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2
 External: --

=head1 SEEALSO

HTML C<E<lt>aE<gt>> and C<E<lt>imgE<gt>> tags.

=cut

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/lang.src������������������������������������������������������������0000644�0001750�0001750�00000030144�10343637515�016131� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::lang - Multi-Lingual Support
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 1999-2001 Denis Barbier
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

#   
#  The list of defined languages
#
<set-var __languages= />

#   
#  The stack of language slices
#
<set-var __lang:stack= />

#
#   Display current language and list of defined languages
#
<define-tag lang:current><array-topvalue __lang:stack /></define-tag>
<define-tag lang:list><get-var __languages /></define-tag>

#
#   The `lang:new xx' tag which adds another language to
#   the list of known ones and defines the `lang:xx' tag.
#
<define-tag lang:new whitespace=delete>
<preserve id short />
<set-var short=* />
<set-var %attributes />
<set-var __ok=1 />
<set-var __i=0 />
<while <get-var __languages[<get-var __i />] />>
  <ifeq "<get-var __languages[<get-var __i />] />" "<get-var id />"
      <set-var __ok=0 /> />
  <increment __i />
</while>
<when <eq "<get-var __ok />" 1 />>
  <array-push __languages <get-var id /> />
  <set-var __i="LANG_<upcase <get-var id /> />" />
  <set-var __j="=LT=when =LT=string-eq =LT=or =LT=lang:current /> <get-var id /> /> <get-var id /> caseless=true />>" />
  <subst-in-string 
        "=LT=define-tag lang:<get-var id />: attributes=verbatim><get-var __j />[<get-var __i />:=LT=array-push __lang:stack <get-var id /> />%%attributes=LT=set-var __dummy==LT=array-pop __lang:stack /> />:<get-var __i />]=LT=/when>=LT=/define-tag>
         =LT=define-tag lang:<get-var id /> endtag=required><get-var __j />[<get-var __i />:=LT=array-push __lang:stack <get-var id /> />%%body=LT=set-var __dummy==LT=array-pop __lang:stack /> />:<get-var __i />]=LT=/when>=LT=/define-tag>" 
     "=LT=" "<"
  />
  <when <not <get-var short /> />>
  <subst-in-string 
        "=LT=define-tag <get-var id />: attributes=verbatim><get-var __j />[<get-var __i />:=LT=array-push __lang:stack <get-var id /> />%%attributes=LT=set-var __dummy==LT=array-pop __lang:stack /> />:<get-var __i />]=LT=/when>=LT=/define-tag>
         =LT=define-tag <get-var id /> endtag=required><get-var __j />[<get-var __i />:=LT=array-push __lang:stack <get-var id /> />%%body=LT=set-var __dummy==LT=array-pop __lang:stack /> />:<get-var __i />]=LT=/when>=LT=/define-tag>" 
     "=LT=" "<"
  />
  </when>
</when>
<restore  id short />
</define-tag>

#
#   The `lang:area' container tag
#
<define-tag lang:area endtag=required whitespace=delete>
<set-var __body=%Ubody />
<set-var __i=0 />
<set-var __j=<get-var __languages[<get-var __i />] /> />
<while <get-var __j />>
  <subst-in-var __body
    "\\(<get-var __j />\\)(.+?)(?=\\((?:[a-z]+|\\/)\\)|$)"
    "<lang:<get-var __j />>\\1</lang:<get-var __j />>" />
  <increment __i />
  <set-var __j=<get-var __languages[<get-var __i />] /> />
</while>
<get-var __body />
</define-tag>

#
#   The ``lang:set-wildcard'' tag lets you define which wildcard to use
#
<define-tag lang:set-wildcard>
<set-var __lang:wildcard=<or "%0" <@[\*]@> /> />
</define-tag>

#   
#   Sets the default wildcard 
#
<lang:set-wildcard />

#
#   The ``lang:star:'' tag
#      The protection is for navbar
#
<define-tag lang:star: whitespace=delete>
<protect pass=3>
<set-var __i=0 />
<while <get-var __languages[<get-var __i />] />>
  <when <string-eq
           <or <lang:current /> <get-var __languages[<get-var __i />] /> />
           <get-var __languages[<get-var __i />] /> caseless=true />>
    <subst-in-string 
      "[LANG_<upcase <get-var __languages[<get-var __i />] /> />:%attributes:]" 
      "<get-var __lang:wildcard />" "<get-var __languages[<get-var __i />] />" />
  </when>
  <increment __i />
</while>
</protect>
</define-tag>

#
#   The specialized <lang:star:href:> tag which
#   is a <lang:star:> tag but enhanced for use
#   with URLs...
#
<define-tag lang:star:href: whitespace=delete>
#   Colons may confuse pass 3, e.g. in rollovers
<protect pass=3>
<if <match "%attributes" ".+|.*" action=report /> <group
    <set-var __str=<match "%attributes" "^[^|]+" action=extract /> />
    <set-var __alt=<match "%attributes" "[^|]*$" action=extract /> />
/>    <group
    <set-var __str="%attributes" />
    <set-var __alt=<match "%attributes" "<get-var __lang:wildcard />" action=delete /> />
/>/>
<set-var __i=0 />
<while <get-var __languages[<get-var __i />] />>
  <when <string-eq
           <or <lang:current /> <get-var __languages[<get-var __i />] /> />
           <get-var __languages[<get-var __i />] /> caseless=true />>
    <set-var __url=<subst-in-string "<get-var __str />" 
                    "<get-var __lang:wildcard />" "<get-var __languages[<get-var __i />] />" /> />
    <if <file-exists <get-var __url /> />
       <group
         <suck/><subst-in-string
                "[LANG_<upcase <get-var __languages[<get-var __i />] /> />:<get-var __str />:]"
                "<get-var __lang:wildcard />" "<get-var __languages[<get-var __i />] />" /><suck/> />
       <group
         <suck/>[LANG_<upcase <get-var __languages[<get-var __i />] /> />:<get-var __alt />:]<suck/>
    />/>
  </when>
  <increment __i />
</while>
</protect>
</define-tag>

#
#   The ``lang:star:slice:'' tag
#   Another variant of <lang:star:> to dynamically specify
#   the output filenames instead of using the wml shebang line
#
#   This definition is really awful because it can deal with all
#   sort of situations
#   Former syntax:
#   * wml without command-line option (= wml -o %BASE.*.html)
#   * #!wml -o (ALL-LANG_*)+LANG_EN:foo.en.html
#   New syntax:
#   * #!wml -o (ALL-LANG_*)+LANG_**:foo.*.html
#   * #!wml -o (ALL-LANG_*)+LANG_**+FOO:foo.*.html \
#           -o (ALL-LANG_*)+LANG_**+BAR:bar.*.html
#
<define-tag lang:star:slice: whitespace=delete>
<set-var __slices:filename=<or %0
      "<get-var SLICE_OUTPUT_FILENAME />"
      "<get-var WML_SRC_BASENAME />.*.html" /> />
<set-var __str="" />
<foreach __sl:file __slices:filename>
    <when <match <get-var __sl:file /> "<@[\*[^:]*$]@>" />>
        <foreach __i __languages>
            <if <match <get-var __sl:file /> ":" />
                <group
<set-var __slice=<match <get-var __sl:file /> ":.*$" action=delete /> />
<subst-in-var __slice "<@[\*\*]@>" <upcase <get-var __i /> /> />
<set-var __filename=<match <get-var __sl:file /> ".*:" action=delete /> /> />
                <group
<set-var __slice=<group "(ALL-LANG_*)+LANG_" <upcase <get-var __i /> /> /> />
<set-var __filename=<get-var __sl:file /> /> />
            />
            <set-var __str=<group <get-var __str />
                    " -o " <get-var __slice />
                    ":"
                    <subst-in-string <get-var __filename /> "<@[\*]@>" <get-var __i /> /> /> />
        </foreach>
    </when>
</foreach>
<when <get-var __str />>
    <set-var __str=<group "%!slice" <get-var __str /> "\n" /> />
    <subst-in-var __str "%BASE" <get-var WML_SRC_BASENAME /> />
    <subst-in-var __str "%DIR" <get-var WML_SRC_DIRNAME /> />
    <get-var __str />
</when>
</define-tag>

##EOF##
__END__

=head1 NAME

wml::std::lang - Multi-Lingual Support

=head1 SYNOPSIS

 #use wml::std::lang

 <lang:new id=xx [short]>

 <lang:area>
 (xx) ... (yy) ...
 </lang:area>

 <lang:set-wildcard ...>

 <lang:star: ...*..>
 <lang:star:href: index.*.html|index.html>
 <lang:star:slice: index.*.html>

 <lang:xx>...</lang:xx>
 <lang:xx: ...>

 <xx>...</xx>
 <xx: ...>

 <lang:current>
 <lang:list>

=head1 DESCRIPTION

This include file provides high-level multi-lingual support via Slices.  Its
purpose is to define the slices ``C<LANG_XX>'' according to the multi-lingual
selection tags. 

The general intend of this slice-based approach is to use the defined slices
in Pass 9 (Slice) via WMLs B<-o> option.  A typical shebang-line example for
the use with a webserver's content negotiation feature is:

  #!wml -o (ALL-LANG_*)+LANG_EN:index.html.en \
        -o (ALL-LANG_*)+LANG_DE:index.html.de

Since WML 1.7.0, the C<E<lt>lang:star:slice:E<gt>> tag is an alternative
to this shebang-line.

Before you can use a language, you have to define the corresponding tags via
C<E<lt>lang:newE<gt>>. For instance when you want to use the languages english
and german, use:

 <lang:new id=en>
 <lang:new id=de>

Then the following tags are defined:

 <lang:en>...</lang:en>
 <lang:de>...</lang:de>
 <lang:en: ...>
 <lang:de: ...>

i.e. for both languages a container tag and a simple tag is defined. The
container tag is more readable while the simple tag is nicer for short
variants. When the names C<lang:xx> are still to large for you, you
can use the C<short> attribute to C<E<lt>lang:newE<gt>> 

 <lang:new id=en short>
 <lang:new id=de short>

when then leads to the defintion of the shortcut variants:

 <en>...</en>
 <de>...</de>
 <en: ...>
 <de: ...>

Additionally you always have the
C<E<lt>lang:areaE<gt>>...C<E<lt>/lang:areaE<gt>> container tag available which
provides an alternative way of selecting the language in its body. It
automatically surrounds the data between `C<(xx)>' start tags with the
corresponding C<LANG_XX> slice.

The following are equal:

 <lang:xx: Foo><lang:yy Bar>
 <lang:xx>Foo</lang:xx><lang:yy>Bar</lang:yy>
 <lang:area>(xx)Foo(yy)Bar</lang:area>

Because these three lines internally get expanded to

 [LANG_XX:Foo:][LANG_YY:Bar:]
 [LANG_XX:Foo:][LANG_YY:Bar:]
 [LANG_XX:Foo:][LANG_YY:Bar:]

There is one additional special tag: C<E<lt>lang:star:E<gt>>.  This tag
expands its attribute line like the C<E<lt>lang:xx:E<gt>> tags but multiple
times. Actually as much as defined languages exists (C<E<lt>lang:newE<gt>>!).
And in each expansion the asterisks (=stars) in the data gets replaced by the
language identifier.

Is is sometimes convenient to use another wildcard, e.g. when defining
navigation bars. The C<E<lt>lang:set-wildcardE<gt>> tag does the job.
The attribute becomes the wildcard used in future substitutions. Without
attribute, the default value is restored. You may specify any regular
expression, and do not forget to escape special characters (the
astersisk is in fact ``\\*'').

  <lang:set-wildcard "%">
  <lang:star: index.%.html>
  <lang:set-wildcard>

There is a more specialized variant named C<E<lt>lang:star:href:E<gt>>
which is similar to C<E<lt>lang:star:E<gt>> but treats its attribute value as
a URL part and tries to check if it already exists. If it doesn't exist the
tag expands the value without the star or an alternative value which can be
appended with ``|alt-value''.

The C<E<lt>lang:star:slice:E<gt>> is another variant to help writing
multi-lingual files quickly. It must come after all occurences of
C<E<lt>lang:newE<gt>> tags.

  <lang:star:slice: index.html.*>

The `C<%BASE>' form is recognized (see wml(1)) and an empty argument is
equivalent to the string `C<%BASE.*.html>'.  But note that the use of
this tag instead of the WML shebang line prevents WMk from doing its
job, because WMk can not guess output filenames in this case.

For complex multi-lingual documents, you may want to know in which
language text is currently processed.  This is achieved with

  <lang:current>

which always returns current language (as defined in
C<E<lt>lang:newE<gt>> or an empty string when outside of any language
portion. The macro

  <lang:list>

prints the newline separated list of defined languages.

=head1 EXAMPLE

The following is an example of a webpage C<index.wml> with a multi-lingual
header and hyperlink:

 #use wml::std::lang
 #use wml::std::href

 <lang:new id=en short>
 <lang:new id=de short>
 <lang:star:slice: index.html.*>
 
 <h1><en: Welcome><de: Willkommen></h1>
 
 <href name="The Hyperlink" url="<lang:star: index.*.html>">
 <href name="The Hyperlink" url="<lang:star:href: index2.*.html|index2.html>">

When processed via 

  $ wml index.wml

The following two output files are generated (assuming that F<index2.html> and
only F<index2.de.html> exists):

index.html.en:

  <h1>Welcome</h1>
  <a href="index.en.html">The Hyperlink</a>
  <a href="index2.html">The Hyperlink</a>

index.html.de:

  <h1>Willkommen</h1>
  <a href="index.de.html">The Hyperlink</a>
  <a href="index2.de.html">The Hyperlink</a>

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P6, P9
 External: --

=head1 SEEALSO

wml_p9_slice(1)

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/tags.src������������������������������������������������������������0000644�0001750�0001750�00000025554�10343637515�016157� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::tags - Standard Support Tags 
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#
#   Manage arrays as stacks
#   These macros are obsolete and should not be used anymore.
#   Mp4h has some builtins which are more efficient.
#

<define-tag array:size whitespace=delete>
<if <gt <array-size %0 /> 0 /> <array-size %0 /> 0 />
</define-tag>

<define-tag array:topvalue whitespace=delete>
<set-var __index=<array:size %0 /> />
<get-var %0[<get-var __index />] />
</define-tag>

<define-tag array:show>
<set-var __i=0 />
<while <get-var %0[<get-var __i />] />>
%0[<get-var __i />] = <get-var %0[<get-var __i />] />
<increment __i />
</while>
</define-tag>


#
#   Easier condition testing
#

<define-tag ifdef>
<if <get-var %0 /> %1 %2 />
</define-tag>

#
#   Support-Tag for Pass 3: ePerl
#

#  We try to allow some kind of nestings. By default, ePerl forbids it.
#  The main idea is to replace all printings by variable assignments,
#  and prints those variables only when in outer mode.

#  The __perl:level variable stores current level of nestings
<set-var __perl:level=0 />

#  Some modules write to filehandles different than standard output.
<set-var __perl:filehandle= />
<set-var __perl:fh= />

#  The name of the variable must be unique for a level of nesting, so we
#  choose a name and all other include files must refer to it.
<define-tag perl:var>${perl_var<get-var __perl:level />}</define-tag>

#  These macros are also useful, but for internal use only
<define-tag __perl_var-1>${perl_var<substract <get-var __perl:level /> 1 />}</define-tag>
<define-tag __perl_var_save>${_save_var<get-var __perl:level />}</define-tag>

# Assignment mode: 1 for 'single quotes', 2 for "double quotes"
<define-tag perl:assign:mode whitespace=delete>
    __perl:assign<get-var __perl:level />
</define-tag>

#  These macros are to temporarily disallow text printing
<define-tag perl:print:disable whitespace=delete>
<set-var <perl:assign:mode />=%0 />
</define-tag>

#  Enable text printing
<define-tag perl:print:enable whitespace=delete>
<unset-var <perl:assign:mode /> />
</define-tag>

<define-tag perl:checkprint whitespace=delete>
<when <not <get-var <perl:assign:mode /> /> />>
<set-var __perl:print= />
<if <eq <get-var __perl:level /> 1 />
  <set-var __perl:print=true /> />
<if <string-neq <array-topvalue __perl:fh />
              <get-var __perl:filehandle /> />
  <set-var __perl:print=true /> />
<get-var __perl:print />
</when>
</define-tag>

#  Sets this variable
<define-tag perl:assign endtag=required>
<perl:print:disable 2 />
<when "%0">
  <__perl_var_save /> = <perl:var />;
  <perl:var /> = '';
</when>
<perl:var /> .= <<"EPERL_EOT";
%body
EPERL_EOT
#   The ``here'' notation adds an extra newline
<perl:var /> =~ s/\n$//s;
<when "%0">
  %0 = <perl:var />;
  <perl:var /> = <__perl_var_save />;
</when>
<perl:print:enable />
</define-tag>

#  Sets this variable with single quotes Perl delimiter, i.e.
#  without expansion of Perl variables.
<define-tag perl:assign:sq endtag=required>
<perl:print:disable 1 />
<when "%0">
  <__perl_var_save /> = <perl:var />;
  <perl:var /> = '';
</when>
<perl:var /> .= <<'EPERL_EOT';
%body
EPERL_EOT
#   The ``here'' notation adds an extra newline
<perl:var /> =~ s/\n$//s;
<when "%0">
  %0 = <perl:var />;
  <perl:var /> = <__perl_var_save />;
</when>
<perl:print:enable />
</define-tag>

#  Print its value to the filehandle
<define-tag perl:print endtag=required>\
<when <not <perl:checkprint /> />>\
   <perl:assign>%body</perl:assign>\
</when>
<when <perl:checkprint />>\
   print <get-var __perl:filehandle /> <perl:var /> if <perl:var />;
   <perl:var /> = '';
   <perl:assign>%body</perl:assign>\
   print <get-var __perl:filehandle /> <perl:var /> if <perl:var />;
   <perl:var /> = '';
</when>
</define-tag>

<define-tag perl:print:>\
<when <not <perl:checkprint /> />>\
   <perl:var /> .= %attributes;
</when>
<when <perl:checkprint />>
   print <get-var __perl:filehandle /> <perl:var /> . %attributes;
   <perl:var /> = '';
</when>
</define-tag>

<define-tag perl:print:var>
<when <perl:checkprint />>
   print <get-var __perl:filehandle /> <perl:var /> if <perl:var />;
   <perl:var /> = '';
</when>
</define-tag>

#  And now the <perl> tag.
<define-tag perl endtag=required>\
<preserve filehandle nosemicolon />\
<set-var nosemicolon=* />\
<set-var %attributes />\
<when <neq <get-var __perl:level /> 0 />><when <get-var <perl:assign:mode /> />>
#   we have to put a blank line here in case the <perl> tag
#   is not at the beginning of a line
EPERL_EOT
   <perl:var /> =~ s/\n$//s;
   <perl:print:var />
</when></when>\
<array-push __perl:fh <get-var __perl:filehandle /> />\
<if <get-var filehandle /> <copy-var filehandle __perl:filehandle /> />\
<increment __perl:level />\
<when <eq <get-var __perl:level /> 1 />>\
#   Outer mode
<:
   <perl:var /> = '';
%body
   <perl:print:var />
   <ifeq <get-var nosemicolon /> "*" "_" "1;" />\
:>\
</when>\
<when <neq <get-var __perl:level /> 1 />>
   <perl:var /> = <__perl_var-1 />;
   <__perl_var-1 /> = '';
%body
   <perl:print:var />
   <__perl_var-1 /> .= <perl:var />;
<when <eq <get-var __perl:assign<substract <get-var __perl:level /> 1 /> /> 2 />>\
   <__perl_var-1 /> .= <<"EPERL_EOT";
</when>\
<when <eq <get-var __perl:assign<substract <get-var __perl:level /> 1 /> /> 1 />>\
   <__perl_var-1 /> .= <<'EPERL_EOT';
</when>\
</when>\
<decrement __perl:level />\
<set-var __perl:filehandle="<array-pop __perl:fh />" />\
<restore  filehandle nosemicolon />\
</define-tag>

<define-tag say endtag=required>
<perl filehandle=TTY>\
{
    local(*TTY);
    open(TTY, ">/dev/tty");
    print TTY <<'EPERL_EOT';
%body
EPERL_EOT
    close(TTY);
}\
</perl>
</define-tag>

#
#   Support-Tag for Pass 4: GNU M4
#

<define-tag m4 endtag=required>
<preserve quotes />\
<set-var quotes="`,'" />\
<set-var %attributes />\
m4_noquotes()m4_dnl
m4_changequote(<get-var quotes />)m4_dnl
%body \
m4_noquotes()m4_dnl
<restore quotes />
</define-tag>

#
#   Symbols
#

<define-tag symbol>
<m4 quotes="<`,'>">
<ifeq <get-var %1 /> undef
      <group "m4_undefine(<`%0'>)" />
      <group "m4_define(<`%0'>,\
            <`m4_noquotes()m4_changequote(<`,'>)<`%1'>'>)" /> />
</m4>
</define-tag>

#
#   Diversion via Pass 5 (Divert)
#
#   dump of a location (undivert)
<define-tag dump>\
{#%0#}\
</define-tag>
#   enter a location (divert to)
<define-tag enter>\
{#%0#:\
</define-tag>
#   leave a location (divert from)
<define-tag leave>\
:#%0#}\
</define-tag>
#   diversion container 
<define-tag divert endtag=required>\
<enter %0 />%body<leave <match "%0" "!" action=delete /> />\
</define-tag>

#
#   Support-Tag for Pass 6: ASubst
#
<define-tag asubst endtag=required whitespace=delete>
<set-var subst="%attributes" />
<subst-in-var subst "(s/[^/]+/[^/]+/[smigx]+)" "[[\\1]]" />
<subst-in-var subst "(s%[^%]+%[^%]+%[smigx]+)" "[[\\1]]" />
<subst-in-var subst "(tr/[^/]+/[^/]+/[g]+)" "[[\\1]]" />
<subst-in-var subst "(tr%[^%]+%[^%]+%[g]+)" "[[\\1]]" />
<subst-in-var subst "[ \t]+(\[\[s)" "\\1" />
<subst-in-var subst "[ \t]+(\[\[tr)" "\\1" />
<subst-in-var subst "(\]\])[ \t]+" "\\1" />
{:<get-var subst />%body:}
</define-tag>

#
#   Support-Tag for protected Client-Side JavaScript
#
<define-tag javascript endtag=required>
<preserve defer src version language type nohead nolang />
<set-var defer=* />
<set-var nohead=* />
<set-var nolang=* />
<set-var %attributes />
<defvar version "" />
<defvar language "JavaScript<get-var version />" />
<defvar type "text/javascript" />
#  all variables are expanded before %Ubody, so they are not overridden
<define-tag __jscmd>\
<script type="<get-var type />" language="<get-var language />"\
    <ifeq "<get-var src />" "" "" " src=\"<get-var src />\"" />\
    <ifeq "<get-var defer />" "*" "" " defer" />\
><nostrip>
<!-- Hiding the code
<subst-in-string "%Ubody" "^\n*(.*?)\n*$" "\\1" singleline=true />
// done hiding -->
</nostrip></script>\
</define-tag>
<if <and <get-var nohead /> <match <symbol-info head /> " COMPLEX$" />
         <not <symbol-info javascript:nohead /> <javascript:nohead /> /> />
   <compound><head>\
     <if <and <get-var nolang /> <symbol-info lang:current /> <lang:current /> />
       "[LANG_<upcase <lang:current /> />:<__jscmd />:LANG_<upcase <lang:current /> />]"
       <__jscmd />
     />
   </head></compound>
   <__jscmd />
/>
<restore  defer src version language type nohead nolang />
</define-tag>

#
#   Synchronize line numbers to help debugging
#
<define-tag sync-lines whitespace=delete>
<if <eq <get-var __perl:level /> 0 />
   "<:#line <substract <__line__ /> 1 />:>"
   "#line <substract <__line__ /> 1 />" />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::std::tags - Standard Support Tags 

=head1 SYNOPSIS

 #use wml::std::tags

 #   Pass 2: advanced if constructs
 <ifdef varname thenval elseval>

 #   Pass 3: support tag
 <perl> ... </perl>
 <say> ... </say>

 #   Pass 4: support tag
 <m4> ... </m4>

 #   Pass 4: symbols
 <symbol name value>
 <symbol name undef>

 #   Pass 5: diversions
 <dump NAME>
 <enter NAME> ... <leave>
 <divert NAME> ... </divert>

 #   Pass 6: support tag
 <asubst ...> ... </asubst>

 #   Client-Side JavaScript: support tag
 <javascript [version=..] [language=..]
             [type=..] [src=...] [defer] [nohead] [nolang]>
 ... 
 </javascript>

 #   Resynchronize line numbers for more accurate pass 3 warnings
 <sync-lines>

=head1 DESCRIPTION

This include file defines some standard support tags one needs all the time.
All tags are self-explanatory and briefly mentioned in wml_intro(1), except
the last two which are described below.

=head2 B<C<E<lt>javascriptE<gt>>:>

This tag was primarily a shorthand for C<E<lt>script
type="text/javascript" language="JavaScript"E<gt>> but
it has evolved.  If the C<E<lt>headE<gt>> tag is defined and is a
complex macro, e.g. when calling C<wml::std::page>, then Javascript code
is automatically passed to this macro and should be diverted to the HEAD
section of HTML documents.  This diversion preserve lang slices in
multi-lingual documents.  Those features may be disabled by the ``nohead''
and ``nolang'' attributes.

=head2 B<C<E<lt>sync-linesE<gt>>:>

WML tries to print information on input file and line numbers when
warnings or errors are reported in passes 2 and 3.  Some special
sentences containing file names and line numbers are inserted during
pass 1. So pass 2 have an accurate knowledge of where warnings appear in
input file.  But it also filters it without preserving lines, so
after pass 2 information is almost unusable.  By putting
C<E<lt>sync-linesE<gt>> in input file, it forces pass 2 to resynchronize
information on line numbers.  So for debugging pass 3, it could be of
some help to insert C<E<lt>sync-linesE<gt>> before ePerl code.

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3, P4, P6
 External: --

=head1 SEEALSO

wml(1)

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/label.src�����������������������������������������������������������0000644�0001750�0001750�00000004377�10343637515�016300� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::label - Labels and References
##  Copyright (c) 2000-2001 Denis Barbier. All Rights Reserved. 
##

#use wml::std::tags

<set-var __refs= />
<set-var __oldrefs= />

#   Name of auxiliary file
<if "$(auxfile)"
  <set-var auxfile="$(auxfile)" />
  <set-var auxfile="$(WML_SRC_BASENAME).aux" />
/>

#   Syntax: <label name value>
<define-tag label whitespace=delete>
<set-var __ref:%0=%1 />
<array-push __refs "__ref:%0=%1" />
</define-tag>

#   Syntax: <ref name>
<define-tag ref><get-var __ref:%0 /></define-tag>

#   List of all labels is written in auxfile when input is complete
<at-end-of-file>
#   Compare old and new refs.  If they are ths same, do nothing
#   otherwise write new lables to auxiliary file and exit
<sort __refs /><sort __oldrefs />
<when <string-neq <get-var __refs /> <get-var __oldrefs /> />>
  <perl filehandle=AUX>
{
    my $bsetref = '<' . 'set-ref ';
    my $esetref = ">\n";
    open (AUX, "> <get-var auxfile />");
    <foreach ref __refs>
      <perl:print: $bsetref . qq(<get-var ref />) . $esetref />
    </foreach>
    close (AUX);
}
  </perl>
  <m4>
    m4_errprint(
** WML:Warning: labels have changed, re-run WML
)
  </m4>
  </when>
</at-end-of-file>

#   The <set-ref> tag is read in auxfile.
<define-tag set-ref whitespace=delete>
<set-var %attributes />
<array-push __oldrefs "%attributes" />
</define-tag>

#   Read auxiliary file
<include <get-var auxfile /> alt="
" />

##EOF##
__END__

=head1 NAME

wml::std::label - Labels and References

=head1 SYNOPSIS

 #use wml::std::label auxfile=NAME

 <label name "Label Section">
 <ref name>

=head1 DESCRIPTION

This module implements a mechanism of labels and references.
Labels are defined via variables, which are expanded with the
C<E<lt>refE<gt>> tag.  A common problem is when labels are referenced
before they are defined.  For this reason, labels are stored in an
auxiliary file.  When the module is loaded, this file is read and
labels are defined.  Then input is processed and at end of input, labels
are compared with their previous value.  If some labels changed, then
all labels are written to the auxiliary file and a message is printed
to warn that labels are wrong.

=head1 AUTHOR

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P2, P3, P4
 External: --

=cut

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/info.src������������������������������������������������������������0000644�0001750�0001750�00000011532�10343637515�016143� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::info - Page Information
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags
#use wml::sup::path

#
#  The `info' tag
#
<define-tag info>\
<preserve style copyright created keywords description domainname />\
<set-var %attributes />\
<defvar style=comment />\
<defvar domainname "<get-var WML_GEN_HOSTNAME />" />\
<when <string-eq <get-var style /> comment />>\
<nostrip>\
<!--
     <if <get-var copyright /> "Copyright (c) <get-var copyright />
     " />\
     Author:   <get-var WML_SRC_REALNAME /> (<get-var WML_SRC_USERNAME />@<get-var domainname />)
     Modified: <get-var WML_SRC_ISOTIME />.
     <if <get-var created /> "Created:  <get-var created />
     " />\
     Generated from ``<get-var WML_SRC_FILENAME />'' via WML <get-var WML_VERSION />.
               by <get-var WML_GEN_REALNAME /> (<get-var WML_GEN_USERNAME />@<get-var domainname />) 
               on <get-var WML_GEN_ISOTIME />.

     DO NOT EDIT THIS FILE DIRECTLY! INSTEAD EDIT ``<get-var WML_SRC_FILENAME />''.
-->\
</nostrip>\
</when>
<when <string-eq <get-var style /> table />>
<pre>
<when <get-var copyright />><b>Copyright:</b> &copy; <get-var copyright />
</when>\
<b>Author:</b>    <get-var WML_SRC_REALNAME /> \
<a href="mailto:<get-var WML_SRC_USERNAME />@<get-var domainname />">\
&lt;<get-var WML_SRC_USERNAME />@<get-var domainname />&gt;\
</a>
<b>Generator:</b> WML <get-var WML_VERSION />
<b>Modified:</b>  <get-var WML_SRC_ISOTIME />
<when <get-var created />><b>Created:</b>   <get-var created />
</when>\
</pre>
</when>
<when <string-eq <get-var style /> meta />>
<when <get-var copyright />><meta name="Copyright" content="<get-var copyright />" />
</when>\
<nostrip>\
<meta name="Author"    content="<get-var WML_SRC_REALNAME />, <get-var WML_SRC_USERNAME />@<get-var domainname />" />
<meta name="Generator" content="WML <get-var WML_VERSION />" />
<meta name="Modified"  content="<get-var WML_SRC_ISOTIME />" />
<when <get-var created />><meta name="Created"   content="<get-var created />" />
</when>\
<when <get-var keywords />><meta name="Keywords"  content="<get-var keywords />" />
</when>\
<when <get-var description />><meta name="Description" content="<get-var description />" />
</when>\
</nostrip>\
</when>
<when <string-eq <get-var style /> oneline />>
<when <get-var copyright />>Copyright &copy; <get-var copyright /><br /></when>
Last modified by <get-var WML_GEN_REALNAME /> (<get-var WML_GEN_USERNAME />) on <get-var WML_GEN_ISOTIME /> via WML <get-var WML_VERSION />.
</when>
<restore  style copyright created keywords description domainname />\
</define-tag>

#
#  Insert a fully qualified URL for this document
#
<define-tag info:document-url>
<preserve baseurlvar basedirvar />
<set-var %attributes />
<defvar baseurlvar BASE_URL />
<defvar basedirvar BASE_DIR />
<perl>
{
    my ($cwd, $baseurl, $basedir, $subdir, $page, $url);

    #   determine current working directory
    $cwd = '<get-var WML_SRC_DIRNAME />';

    #   determine base URL
    $baseurl = '<get-var <get-var baseurlvar /> />' || 'file://';

    #   determine base directory
    $basedir = '<get-var <get-var basedirvar /> />'
        || '<get-var WML_SRC_DIRNAME />';
    $basedir = &canonpath("$cwd/$basedir") if ($basedir !~ m|^/|);

    #   determine subdir from base dir to current working dir
    $subdir = &relpath($basedir, $cwd);

    #   determine page name
    $page = '<get-var WML_SRC_BASENAME />' . '.html';
    $page =~ s|^index\.html$||;

    #   construct final URL
    $url = "$baseurl/$subdir/$page";
    $url = &canonurl($url);

    #   replace this tag with the constructed URL
    <perl:print: $url />
}
</perl>
<restore  baseurlvar basedirvar />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::std::info - Page Information

=head1 SYNOPSIS

 #use wml::std::info

 <info style={comment,table,meta,oneline} domainname="..."
       copyright="..." created="..." keywords="..." description="...">

 <info:document-url [baseurlvar=VARNAME] [basedirvar=VARNAME]>

=head1 DESCRIPTION

This include file provides the C<E<lt>infoE<gt>> tag to insert page
filename, author, copyright, generator (WML version) and modification time
information in various formats and styles. 

Additionally it defines a C<E<lt>document-urlE<gt>> tag which inserts the
absolute URL of the generated page. This URL is constructed out of the URL
base given in the variables named C<BASE_URL> and C<BASE_DIR> (or the
specified one with attributes C<baseurlvar> and C<baseurldir>). Usually you
define these in your F<.wmlrc> file at the base directory of your WML page
area:

  -D BASE_URL=http://www.mysite.dom/~myself
  -D BASE_DIR~.

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2
 External: --

=head1 SEEALSO

wml(1)

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/page.src������������������������������������������������������������0000644�0001750�0001750�00000013710�10343637515�016124� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::page - Standard HTML Page Header and Footer
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::info

#
#   the page counter for multiple pages
#
<set-var __std_page_cnt=0 />

#
#   the new PAGE tag
#
<define-tag page>
<preserve title indent info background color bgcolor text link alink vlink
          onload slices />
<set-var info=* />
<set-var slices=* />
<set-var %attributes />
<increment __std_page_cnt />
<ifeq "<get-var slices />" "" "[WML_STDPAGE_HEAD:" /><html*>
<head*>
<ifeq "<get-var info />" "" <info style=meta /> />\
<if "<get-var title />" "<title*><get-var title /></title*>
" />\
{#WML_PAGE_HEAD_<get-var __std_page_cnt />#}\
</head*>
<body*<if <get-var background /> " background=\"<get-var background />\"" "" />\
      <when <not <get-var color /> />>\
      <if <get-var bgcolor /> <group <ifeq "<get-var bgcolor />" "none" "" " bgcolor=\"<get-var bgcolor />\"" /> /> " bgcolor=\"#ffffff\"" />\
      <if <get-var text /> " text=\"<get-var text />\"" " text=\"#000000\"" />\
      <if <get-var link /> " link=\"<get-var link />\"" " link=\"#333399\"" />\
      <if <get-var alink /> " alink=\"<get-var alink />\"" " alink=\"#9999ff\"" />\
      <if <get-var vlink /> " vlink=\"<get-var vlink />\"" " vlink=\"#000066\"" />\
      </when>\
      <if <get-var onload /> " onload=\"<get-var onload />\"" "" />\
>
<set-var __i=0 />
<while <lt <get-var __i /> <get-var indent /> />>
<blockquote*>
<increment __i />
</while><ifeq "<get-var slices />" "" ":WML_STDPAGE_HEAD]" />\
<ifeq "<get-var slices />" "" "[WML_STDPAGE_BODY:" />{#WML_PAGE_BODY_<get-var __std_page_cnt />#}<ifeq "<get-var slices />" "" ":WML_STDPAGE_BODY]" />\
<ifeq "<get-var slices />" "" "[WML_STDPAGE_FOOT:" />\
<set-var __i=0 />
<while <lt <get-var __i /> <get-var indent /> />>
</blockquote*>
<increment __i />
</while>
</body*>
</html*><ifeq "<get-var slices />" "" ":WML_STDPAGE_FOOT]" />
{#WML_PAGE_BODY_<get-var __std_page_cnt />#:\
<restore  title indent info background color bgcolor text link alink vlink
          onload slices />
</define-tag>

#   end page
<define-tag page_end>
:#WML_PAGE_BODY_<get-var __std_page_cnt />#}
</define-tag>

#   divert HEAD tag body to header
<define-tag head endtag=required>
{#WML_PAGE_HEAD_<get-var __std_page_cnt />#:
%body
:##}
</define-tag>

#   divert TITLE tag to header
<define-tag title endtag=required>
{#WML_PAGE_HEAD_<get-var __std_page_cnt />#:
<title*>%body</title*>
:#WML_PAGE_HEAD_<get-var __std_page_cnt />#}
</define-tag>

##EOF##
__END__

=head1 NAME

wml::std::page - Standard HTML Page Header and Footer

=head1 SYNOPSIS

 #use wml::std::page

 <page [attributes]>
 [<page_end>]

 <head>...</head>
 <title>...</title>

=head1 DESCRIPTION

This include file provides the new C<E<lt>pageE<gt>> tag which is a advanced
combination of the HTML C<E<lt>bodyE<gt>> and C<E<lt>headE<gt>> container
tags. The idea is to provide complete header and footer tags via one single
tag while providing new features like page indentation, easy title
specification and setup of default values for the page colors.

=head1 ATTRIBUTES

=over 4

=item C<title>

This is a shorthand for the container tag C<E<lt>titleE<gt>>. The value of
this attribute is placed in the C<E<lt>headE<gt>> section of the page,
surrounded with the C<E<lt>titleE<gt>> tag.

=item C<indent>

This sets the indentation level of the page in units of
C<E<lt>blockquoteE<gt>>'s.  Default is no indentation. Setting C<indent> to a
value of N means the page is surrounded by N C<E<lt>blockquote>E<gt>> tags.
The attribute C<indent=1> or C<indent=2> usually provides the best readable
layout.

=item C<background>

This just corresponds to the same attribute of the C<E<lt>bodyE<gt>> tag and
sets the background image.  This is per default not used.

=item C<bgcolor>

This just corresponds to the same attribute of the C<E<lt>bodyE<gt>> tag and
sets the background color.  Default is C<bgcolor="#ffffff"> (white).

=item C<text>

This just corresponds to the same attribute of the C<E<lt>bodyE<gt>> tag and
sets the text color.  Default is C<text="#000000"> (black).

=item C<link>

This just corresponds to the same attribute of the C<E<lt>bodyE<gt>> tag and
sets the normal hyperlink color. Default is C<text="#333399"> (medium blue).

=item C<alink>

This just corresponds to the same attribute of the C<E<lt>bodyE<gt>> tag and
sets the color for activated hyperlinks. Default is C<text="#9999ff"> (light
blue).

=item C<vlink>

This just corresponds to the same attribute of the C<E<lt>bodyE<gt>> tag and
sets the color for already visited hyperlinks. Default is C<text="#000066">
(dark blue).

=item C<color>

When setting C<color="none">, the five previous attributes are not put
into the C<E<lt>bodyE<gt>> tag.

=item C<onload>

This just corresponds to the same attribute of the C<E<lt>bodyE<gt>> tag and
sets a JavaScript even handler which is activated after page was loaded.  This
is per default not used.

=item C<info>

This automatically puts a C<E<lt>info style=metaE<gt>> tag into the
C<E<lt>headE<gt>> section of the page. See wml::std::info(3) for more details.

=item C<slices>

This enables the creating of three slices: C<WML_STDPAGE_HEAD>,
C<WML_STDPAGE_BODY> and C<WML_STDPAGE_FOOT>. These can be used later in
Pass 9 (Slice) for cutting out parts of the page.

=back

=head1 OTHER COMMANDS

This module implements two new macros, called
C<E<lt>titleE<gt>>...C<E<lt>/titleE<gt>>
and C<E<lt>headE<gt>>...C<E<lt>/headE<gt>>. The first one defines the
title of the page, and the second appends its body into the HEAD section
of the HTML documents.  Its main purpose is to add meta-tags, either
directly or with the help of wml::std::info(3).

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P5
 External: --

=head1 SEEALSO

HTML C<E<lt>headE<gt>>, C<E<lt>bodyE<gt>> and C<E<lt>titleE<gt>> tags;
wml::std::info(3)

=cut

��������������������������������������������������������wml-2.0.12.orig/wml_include/std/case.src������������������������������������������������������������0000644�0001750�0001750�00000003107�10343637515�016122� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::case - Convert Tags to Upper or Lower Case
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

<define-tag case:upper endtag=required whitespace=delete>
<tagconv case=upper>%body</tagconv>
</define-tag>

<define-tag case:lower endtag=required whitespace=delete>
<tagconv case=lower>%body</tagconv>
</define-tag>

#   the "#include ... global=upper" support
<when <string-eq "$(global)" "upper" />>
<tagconv case=upper>\
{#UPPERCASE_GLOBAL#}\
</tagconv>\
{#UPPERCASE_GLOBAL#:\
</when>

#   the "#include ... global=lower" support
<when <string-eq "$(global)" "lower" />>
<tagconv case=lower>\
{#LOWERCASE_GLOBAL#}\
</tagconv>\
{#LOWERCASE_GLOBAL#:\
</when>

##EOF##
__END__

=head1 NAME

wml::std::case - Convert Tags to Upper or Lower Case

=head1 SYNOPSIS

 #use wml::std::case [global={upper,lower}]

 <case:upper>
 ...
 </case:upper>

 <case:lower>
 ...
 </case:lower>

=head1 DESCRIPTION

The C<E<lt>case:upperE<gt>> and C<E<lt>case:lowerE<gt>> container tags convert
all HTML tags in their body either to upper or lower case.  Alternatively
there is a useful variant: Adding the C<global> attribute while loading this
include file leads to a global case conversion, i.e.  C<#use wml::std::case
global=upper> just converts all HTML tags of the finally generated page to
upper case. 

Internally this include file uses the C<E<lt>tagconvE<gt>> container tag
provided by HTMLfix (pass 7).

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P5, P6
 External: --

=head1 SEEALSO

wml_p7_htmlfix(1).

=cut

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/all.src�������������������������������������������������������������0000644�0001750�0001750�00000002766�10343637515�015771� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std:all - All of Standard (STD) category 
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#use wml::std::box
#use wml::std::case
#use wml::std::grid
#use wml::std::href
#use wml::std::info
#use wml::std::label
#use wml::std::lang
#use wml::std::logo
#use wml::std::page
#use wml::std::tags
#use wml::std::toc

##EOF##
__END__

=head1 NAME

wml::std:all - All of Standard (STD) category 

=head1 SYNOPSIS

 #use wml::std::all

=head1 DESCRIPTION

This includes all existing include files of the B<Standard> (STD) category,
i.e. all includes with prefix B<wml::std>.  The following files currently
exist:

  wml::std::box(3)  ... Easily Create Rectangular Box
  wml::std::case(3) ... Convert Tags to Upper or Lower Case
  wml::std::grid(3) ... Layout Grid
  wml::std::href(3) ... Enhanced Hyperlink
  wml::std::info(3) ... Page Information
  wml::std::lang(3) ... Multi-Lingual Support
  wml::std::label(3)... Labels and References
  wml::std::logo(3) ... Logo Insertion
  wml::std::page(3) ... Standard HTML Page Header and Footer
  wml::std::tags(3) ... Standard Support Tags 
  wml::std::toc(3)  ... Table of Contents Generation

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1
 External: --

=head1 SEEALSO

wml::std::box(3),
wml::std::case(3),
wml::std::grid(3),
wml::std::href(3),
wml::std::info(3),
wml::std::label(3),
wml::std::lang(3),
wml::std::logo(3),
wml::std::page(3),
wml::std::tags(3),
wml::std::toc(3).

=cut

����������wml-2.0.12.orig/wml_include/std/box.src�������������������������������������������������������������0000644�0001750�0001750�00000011320�10343637515�015773� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::box - Easily Create Rectangular Box
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::des::space

<define-tag box endtag=required>
<preserve bgcolor fgcolor bdcolor bdwidth bdspace width summary header />
<set-var %attributes />
<when <not <get-var header /> />>
#
#  The standard box created via just two nested tables
#
<defvar bdwidth 1 />
<defvar bdspace 4 />
<if <get-var bdcolor /> <group "
<table* cellspacing=0 cellpadding=<get-var bdwidth /> \
       bgcolor=<get-var bdcolor /> border=0 \
       <if <get-var summary /> "summary=\"<get-var summary />\"" />\
>
<tr*>
<td*>\
" /> />
<table <if <get-var bgcolor /> "bgcolor=<get-var bgcolor />" /> \
       <if <get-var width /> "width=<get-var width />" /> \
       cellspacing=0 cellpadding=<get-var bdspace /> \
       border=0>
<tr>
<td>\
<if <get-var fgcolor /> "<font* color=<get-var fgcolor />>" />\
%body\
<if <get-var fgcolor /> "</font*>" />\
</td>
</tr>
</table>
<if <get-var bdcolor /> <group "
</td*>
</tr*>
</table*>
" /> />
</when>
#
#  The headlined box created via one table and space GIFs
#
<when <get-var header />>
<defvar bdcolor "#000000" />
<defvar bdspace 4 />
<defvar width 300 />
<table border=0 cellpadding=0 cellspacing=0\
       <if <get-var summary /> " summary=\"<get-var summary />\"" />>
    <tr>
        <td colspan=2><space width=1 height=8 /></td>
        <td rowspan=3>&nbsp;&nbsp;<get-var header />&nbsp;&nbsp;</td>
        <td colspan=2><space width=1 height=1 /></td>
    </tr>
    <tr>
        <td bgcolor="<get-var bdcolor />" colspan=2><space width=1 height=1 /></td>
        <td bgcolor="<get-var bdcolor />" colspan=2><space width=1 height=1 /></td>
    </tr>
    <tr>
         <td bgcolor="<get-var bdcolor />"><space width=1 height=5 /></td>
         <td <if <get-var bgcolor /> "bgcolor=<get-var bgcolor />" />>\
             <space width=40 height=1 /></td>
         <td <if <get-var bgcolor /> "bgcolor=<get-var bgcolor />" />>\
             <space width=<get-var width /> height=1 /></td>
         <td bgcolor="<get-var bdcolor />"><space width=1 height=5 /></td>
    </tr>
    <tr>
         <td bgcolor="<get-var bdcolor />"><space width=1 height=1 /></td>
         <td colspan=3 <if <get-var bgcolor /> "bgcolor=<get-var bgcolor />" />>
             <table border=0 cellspacing=<get-var bdspace />>
                 <tr>
                     <td>%body</td>
                 </tr>
             </table>
         </td>
         <td bgcolor="<get-var bdcolor />"><space width=1 height=1 /></td>
    </tr>
    <tr>
         <td colspan=5 bgcolor="<get-var bdcolor />"><space width=1 height=1 /></td>
    </tr>
</table>
</when>
<restore  bgcolor fgcolor bdcolor bdwidth bdspace width summary header />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::std::box - Easily Create Rectangular Box

=head1 SYNOPSIS

 #use wml::std::box

 <box [attributes]>
 ...
 </box>

=head1 DESCRIPTION

The C<E<lt>boxE<gt>> container tag puts its body into a nice rectangular box
which itself is build via a HTML C<E<lt>tableE<gt>> construct.

=head1 ATTRIBUTES

=over 4

=item C<header>

This attribute switches between two totally different box variants.  When it
is present, a headlined box is created by the use of one single table but with
space GIFs. When this attribute is missing a standard box is created by the
use of two nested tables but without any space GIFs.

=item C<bgcolor>

This sets the background color of the box.

=item C<fgcolor>

This sets the foreground (text) color of the box.

=item C<bdcolor>

This sets the color for the border of the box. The effect of this attribute is
the automatic generation of a nested table construct to achieve the optical
effect.

=item C<bdspace>

This sets the space between the border and the body of the box in pixels.
Default is 4 pixel.

=item C<bdwidth>

This sets the border width in pixels. Default is 1 pixel.

=item C<width>

This sets the total table width in pixels. Default is no specific width for
the standard box and 300 pixels for the headlined box (because the headlined
variant needs to know a fixed size to create the GIFs accordingly).

=item C<summary>

Add a description of this table.  This attribute is recommended in HTML
4.0.

=back

=head1 EXAMPLE

 <box bdcolor="#000000" bdwidth=1 bdspace=10
      bgcolor="#ffffff" fgcolor="#000000">
 Foo Bar Quux
 </box>

 <box header="Foo Bar Quux Header"
      bdcolor="#000000" bdwidth=1 bdspace=10
      bgcolor="#ffffff" fgcolor="#000000">
 Foo Bar Quux
 </box>

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 REQUIRES

 Internal: P1, P2

=head1 SEEALSO

HTML C<E<lt>tableE<gt>> tag.

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/logo.src������������������������������������������������������������0000644�0001750�0001750�00000013630�10343637515�016151� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::logo - Logo Insertion
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##

#  The <preserve>/<restore> tags with multiple arguments require WML 2.0.3
#use wml::mod::version
<require 2.0.3 />

#use wml::std::tags

#
#  Insert a Logo image
#
<define-tag logo>
<preserve name base file format target notag />
<set-var notag=* />
<set-var %attributes />
<defvar name wml />
<defvar base <or <get-var LOGO_BASE /> <get-var IMAGE_BASE /> /> />
<defvar format <or <get-var IMAGE_FORMAT /> png /> />
<perl>
    my $name   = '<get-var name />';
    my $ext    = '<get-var format />';
    my $base   = '<get-var base />';
    my $file   = '<get-var file />';
    my $target = '<get-var target />';
    my $notag  = (qq|<get-var notag />| eq '' ? 1 : 0);

    my $imgfile  = "$(WML_LOC_LIBDIR)/data/logos/logo-$name.$ext";
    my $infofile = "$(WML_LOC_LIBDIR)/data/logos/logo-$name.info";

    #   make sure the logo exists
    if (! -f $imgfile or ! -f $infofile) {
        print STDERR "Error: No such logo named '$name'.\n";
        exit(1);
    }

    #   create the output filename
    if ($file eq '') {
        if ($base ne '' && $base !~ m|/$|) {
            if (-d $base) {
                $base .= '/';
            }
            else {
                $base .= '.';
            }
        }
        $file = sprintf("%slogo-%s.%s", $base, $name, $ext);
    }

    open(FH_LOGO, "<$infofile");
    my $alt  = <*FH_LOGO>; $alt  =~ s|^\s+||; $alt  =~ s|\n$||; $alt  =~ s|\s+$||;
    my $hint = <*FH_LOGO>; $hint =~ s|^\s+||; $hint =~ s|\n$||; $hint =~ s|\s+$||;
    my $url  = <*FH_LOGO>; $url  =~ s|^\s+||; $url  =~ s|\n$||; $url  =~ s|\s+$||;
    close(FH_LOGO);

    #   create the logo image copy
    my $error = `cp $imgfile $file`;
    if ($? >> 8) {
        print STDERR "** wml::std::logo:\n$error";
        exit(1);
    }

    #   insert the markup code
    if (not $notag) {
        <perl:print>\
           <*a href="$url" \
              onmouseover="self.status='$hint';return true" \
              onmouseout="self.status='';return true" \
              onfocus="self.status='$hint';return true" \
              onblur="self.status='';return true"\
        </perl:print>
        if ($target ne '') {
          <perl:print> target="$target"</perl:print>
        }
        <perl:print>\
           ><img src="$file" alt="$alt" border=0 /><*/a>\
        </perl:print>
    }
</perl>
<restore  name base file format target notag />
</define-tag>

##EOF##
__END__

=head1 NAME

wml::std::logo - Logo Insertion

=head1 SYNOPSIS

 #use wml::std::logo

 <logo [attributes]>

=head1 DESCRIPTION

This include file provides the C<E<lt>logoE<gt>> tag to insert logo images.
The logo is selected via attribute C<name>. The following logos are available:

  Name      Inserted Hint                  Inserted URL
  --------  ------------------------------ ----------------------------
  apache    Apache Webserver Project       http://www.apache.org/
  freebsd   FreeBSD Operating System       http://www.freebsd.org/
  gimp      GNU Image Manipulation Program http://www.gimp.org/
  htdig     Internet search engine         http://www.htdig.org/
  linux     Linux Operating System         http://www.linux.org/
  netbsd    NetBSD Operating System        http://www.netbsd.org/
  openbsd   OpenBSD Operating System       http://www.openbsd.org/
  php       PHP Hypertext Preprocessor     http://www.php.net/
  vim       Vi Improved Editor             http://www.vim.org/
  wml       Website META Language          http://www.engelschall.com/sw/wml/
  xemacs    XEmacs Editor                  http://www.xemacs.org/

=head1 ATTRIBUTES

=over 4

=item C<name>

The C<name> attribute selects which logo is wanted. The table above lists
valid names, and I<wml> is used by default.

=item C<base>

Usually the logos are copied into F<logo-xxxxxx.png> where C<xxxxxx> is
the name of the logo.  When you use a C<base=foo> attribute, then the
resulting files are named F<foo.logo-xxxxxx.png>.  Actually you can even
use a complete filename including a directory prefix, i.e. when you use
C<base=../../common/foo> attribute, then the images are created as
F<../../common/foo.logo-xxxxxx.png>. 

And for most flexibility when no base is specified and the variable
C<LOGO_BASE> is defined (usually from within a F<.wmlrc> file via
C<-LOGO_BASE~path/to/logo/dir/base>) it is used.  Use this feature to
copy the logos to a particular directory.

You may also use the variable C<IMAGE_BASE> which defines in a single line
all base names for images generated by WML.

=item C<format>

Logos are available in PNG or GIF formats. This attribute is the
filename extension of the desired format, i.e. respectively C<png> and C<gif>.
Default is C<png> extension ; this default can be changed via the C<IMAGE_FORMAT>
variable.

=item C<file>

This attribute defines the logo filename. It overrides all other computed
values.

=item C<target>

If the C<target> attribute is used, it refers to a target frame or window
where the hyperlink is redirected to.

=item C<notag>

This forces C<E<lt>logoE<gt>> to expand to nothing, i.e. no resulting
C<E<lt>imgE<gt>> tag. The image itself is still generated. In combination with
the above C<file> attribute this can be used to generate images to particular
files which can be used at other positions, for instance inside
C<E<lt>rolloverE<gt>> (see wml::des::rollover(3)) tags.

=back

=head1 EXAMPLE

This example only copy the vim logo to C<$(IMAGES)/logo-vim.png> without
any output:

 <logo name=vim format=png base="$(IMAGES)/logo" notag>

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P3
 External: --

=head1 HISTORY

 For backward compatibility a logo named "php3" is also available.
 Inluding the version number was not a really good idea, use the 
 logo "php" instead. Expect that the logo "php3" will be removed in 
 future releases.

=head1 SEEALSO

wml(1)

=cut

��������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_include/std/toc.src�������������������������������������������������������������0000644�0001750�0001750�00000012342�10343637515�015775� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::std::toc - Table of Contents Generation
##  Copyright (c) 1997-2001 Ralf S. Engelschall, All Rights Reserved. 
##  Copyright (c) 1999-2001 Denis Barbier
##

#use wml::des::space

#   define the tag which just dumps the ToC
#   via a divert location.
<define-tag toc>\
<get-var toc_begin />
{#ToC#}\
<get-var toc_end />
</define-tag>

#   globally initialize the ToC entry counter
<set-var __TOCCNT=1 />

#   defaults
<set-var toc_style="$(style:-pre)" />
#   these variables are used for "pre","hspace" and "nbsp" styles
<set-var toc_begin="" toc_pad="" toc_eol="" toc_end="" />

#   whereas this macro is for complex constructions like lists
#   Choose the most appropriate when defining new styles
<define-tag toc_section endtag=required>%body</define-tag>

#   determine the ToC style
<when <string-eq "<get-var toc_style />" "pre" />>
    <set-var toc_begin="<pre*>" />
    <set-var toc_pad="    "     />
    <set-var toc_end="</pre*>"  />
</when>
<when <string-eq "<get-var toc_style />" "nbsp" />>
    <set-var toc_pad="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
/>
    <set-var toc_eol="<br />" />
</when>
<when <string-eq "<get-var toc_style />" "hspace" />>
    <set-var toc_eol="<br />" />
    <define-tag toc_section endtag=required>\
    <hspace <multiply 20 %0 /> />%body\
    </define-tag>
</when>
<when <string-eq "<get-var toc_style />" "ol" />>
    <define-tag toc_style_type>\
    <set-var __x=<substring "$(type)" %0 <add %0 1 /> /> />\
    <if <get-var __x /> <group " type=\"<get-var __x />\"" /> />\
    </define-tag>
</when>
<when <string-eq "<get-var toc_style />" "ul" />>
    <define-tag toc_style_type>\
    <set-var __x=<substring "$(type)" %0 <add %0 1 /> /> />\
    <var-case
       __x="d" <group " type=\"disc\"" />
       __x="c" <group " type=\"circle\"" />
       __x="s" <group " type=\"square\"" /> />\
    </define-tag>
</when>

#   as i wrote, lists are somehow hairy
<when <match "<get-var toc_style />" "(o|u)l" />>
    <set-var toc_begin="{:" />
    <set-var toc_end=":}" />
    <set-var __i=1 />
    <while <lt <get-var __i /> 7 />>\
      <set-var toc_begin="<get-var toc_begin />\
        [[s|</<get-var toc_style />*>\\n*<<get-var toc_style />*[^>]*>||g]]" />\
      <increment __i />\
    </while>
    <subst-in-string "\
=LT=define-tag toc_section endtag=required>\
=LT=set-var __i=0 />\
=LT=while =LT=lt =LT=get-var __i /> %0 />>\
=LT=<get-var toc_style />*=LT=toc_style_type =LT=get-var __i /> />>\
=LT=increment __i />=LT=/while>\
<li*>\
%body
=LT=set-var __i=0 />\
=LT=while =LT=lt =LT=get-var __i /> %0 />>\
=LT=/<get-var toc_style />>\
=LT=increment __i />=LT=/while>\
=LT=/define-tag>
"
       "=LT=" "<"
    />
</when>

#   Define the <HX> and <TOC_HX> container tags (X = 1...6)
<set-var __i=1 />\
<set-var __pad= />
<while <lt <get-var __i /> 7 />>\
    <subst-in-string "\
=LT=define-tag h<get-var __i /> endtag=required>\
=LT=h<get-var __i />* %attributes>\
=LT=toc_h<get-var __i />>\
%body\
=LT=/toc_h<get-var __i />>\
=LT=/h<get-var __i />*>\
=LT=/define-tag>\
"
        "=LT=" "<"
    />
    <subst-in-string "\
=LT=define-tag toc_h<get-var __i/> endtag=required>\
=LT=preserve alt/>\
=LT=set-var alt=/>\
=LT=set-var %attributes/>\
=LT=a name=\"ToC=LT=get-var __TOCCNT/>\">%body</a>\
{#ToC#:\
=LT=toc_section <get-var __i/>>\
<get-var __pad/>\
=LT=a href=\"#ToC=LT=get-var __TOCCNT/>\"><strong>\
=LT=or =LT=get-var alt/> %body/>\
</strong></a>\
=LT=/toc_section>\
<get-var toc_eol/>
:#ToC#}\
=LT=increment __TOCCNT/>\
=LT=restore alt/>\
=LT=/define-tag>\
"
        "=LT=" "<"
    />
    <set-var __pad="<get-var __pad /><get-var toc_pad />" />
    <increment __i />
</while>


##EOF##
__END__

=head1 NAME

wml::std::toc - Table of Contents Generation

=head1 SYNOPSIS

 #use wml::std::toc [style={pre,nbsp,hspace,ul,ol} [type=...]]

 <toc>

 <hN>...</hN>

 <toc_hN ...>...</toc_hN>

=head1 DESCRIPTION

This creates a table of contents which can be inserted at any point (even more
than once) by the C<E<lt>tocE<gt>> tag. The contents gets created out of all
header tags ``C<E<lt>hNE<gt>>'' where ``N'' also controls the indention in the
table of contents.

Alternatively you can use the C<E<lt>toc_hNE<gt>> tags to insert its
body (can be empty!) at the current location and into the Table Of
Contents. If specified, the C<alt> attribute is included into the ToC
instead of the body.

=head1 STYLES

You may specify any of the five styles C<pre>, C<nbsp>, C<hspace>, C<ul>
and C<ol>. The last two accept special options to render HTML lists.
With C<style=ol>, you may choose types C<1>, C<A>, C<a>, C<i> and C<I>
whereas C<style=ul> provides C<d>, C<c> and C<s> for respectively
discs, circles and squares.

=head1 EXAMPLE

Below is an example to render the Table of Contents with HTML
C<E<lt>preE<gt>> tag.

 #use wml::std::toc style=pre
 #use wml::std::page

 <page>
 <h1>Chapter 1</h1>
 <h2>Section 1</h2>
 <h2>Section 2</h2>
 <h1>Chapter 2</h1>
 <h2>Section 1</h2>
 <h2>Section 2</h2>
 <toc>

Play and choose your favorite!

 #use wml::std::toc style=ol type=A1ai

or

 #use wml::std::toc style=ul type=dssccc

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 REQUIRES

 Internal: P1, P2, P5, P6

=head1 SEEALSO

HTML C<E<lt>HxE<gt>> C<E<lt>ULE<gt>> C<E<lt>OLE<gt>> tags.

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�013723� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/wml.spec.in�������������������������������������������������������������0000644�0001750�0001750�00000002662�10343637512�016003� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Summary:    Website META Language
Name:       wml
Version:    @VERSION@
Release:    1
Copyright:  GPL
Group:      Applications/Publishing/HTML
Source:     http://www.engelschall.com/sw/wml/distrib/%{name}-%{version}.tar.gz
Url:        http://www.engelschall.com/sw/wml
Packager:   Christian W. Zuckschwerdt <zany@triq.net>
BuildRoot:  %{_tmppath}/%{name}-buildroot

%description
WML is a free and extensible Webdesigner's off-line HTML generation
toolkit for Unix, distributed under the GNU General Public License
(GPL v2). It is written in ANSI C and Perl 5, build via a GNU Autoconf
based source tree and runs out-of-the-box on all major Unix derivates.
It can be used free of charge both in educational and commercial
environments.

%prep
%setup

%build
# we don't use the configure macro because libdir is special
./configure --prefix=%{_prefix} \
            --bindir=%{_bindir} \
            --libdir=%{_libdir}/%{name} \
            --mandir=%{_mandir}
make

%install
rm -rf $RPM_BUILD_ROOT
make prefix=$RPM_BUILD_ROOT/%{_prefix} \
     bindir=$RPM_BUILD_ROOT/%{_bindir} \
     libdir=$RPM_BUILD_ROOT/%{_libdir}/%{name} \
     mandir=$RPM_BUILD_ROOT/%{_mandir} \
     install

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%doc ANNOUNCE BUGREPORT ChangeLog
%doc COPYING COPYRIGHT COPYRIGHT.OTHER CREDITS
%doc NEWS README README.mp4h SUPPORT VERSION VERSION.HISTORY
%{_bindir}/*
%{_libdir}/%{name}/*
%{_mandir}/man?/*
%{_mandir}/cat?/*
������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/navbar-FH.wml�����������������������������������������������������������0000644�0001750�0001750�00000046200�10343637512�016204� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml::des::navbar -- Navigation Bar
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##
##     Modified by Florian Hars, 1998--1999 <florian@hars.de>
##     Added support for nested and multi-lingual navbars
##     Last version of this file is available at
##        http://www.hars.de/www/navbar-FH.wml
##     Further information is available at
##        http://www.hars.de/www/wml_navbars.html	  
##
##     $Log: navbar-FH.wml,v $
##     Revision 1.3  1999/04/18 13:04:44  hars
##     Moved rendering specific attributes to navbar:render
##
##     Revision 1.2  1999/03/28 19:55:47  hars
##     Added automatic button creation
##
##     Revision 1.1  1999/03/28 15:35:46  hars
##     First public release
##
##

#use wml::std::tags
#use wml::sup::path

#
#   navbar definition
#
<define-container navbar:define>
<preserve name>
<preserve imgstar>
<preserve imgbase>
<preserve subprolog>
<preserve subepilog>
<preserve urlbase>
<preserve target>
<preserve defaultlanguage>
<preserve txtcol_normal>
<preserve txtcol_select>
<set-var %attributes>
<if <get-var name>    "" <set-var name="unknown-navbar">>
<if <get-var imgstar> "" <set-var imgstar="n:s:o">>
<: 
{
    #   initialise the data structure for this particular navbar
    #   and fill it with some already known information
    my $CFG = {};
    $NAVBAR{'<get-var name>'} = $CFG;

    $CFG->{NAME} = '<get-var name>';

    $CFG->{IMGSTAR}  = '<get-var imgstar>';
    $CFG->{IMGBASE}  = '<get-var imgbase>';
    $CFG->{URLBASE}  = '<get-var urlbase>';
    $CFG->{TARGET}   = '<get-var target>';
    $CFG->{DEFLANG}  = uc '<get-var defaultlanguage>';
    chomp $CFG->{DEFLANG};
    $CFG->{TXTCOL_N} = '<get-var txtcol_normal>';
    $CFG->{TXTCOL_S} = '<get-var txtcol_select>';

    $CFG->{HEADER} = '';
    $CFG->{FOOTER} = '';

    $CFG->{PROLOG} = {};
    $CFG->{PROLOG}->{N}  = {};
    $CFG->{PROLOG}->{S}  = {};
    $CFG->{PROLOG}->{SS} = {};
    $CFG->{PROLOG}->{N}->{'any'} = '';

    $CFG->{SUBPROLOG} = [ split(':', '<get-var subprolog>') ];
    $CFG->{SUBEPILOG} = [ split(':', '<get-var subepilog>') ];

    $CFG->{EPILOG} = {};
    $CFG->{EPILOG}->{N}  = {};
    $CFG->{EPILOG}->{S}  = {};
    $CFG->{EPILOG}->{SS} = {};
    $CFG->{EPILOG}->{N}->{'any'} = '';

    $CFG->{BUTTON} = [];

    $CFG->{FILTER} = '';

    #   here the other tags now fill in more information...
:>
%body
<:
    #   ...and finally we do some cleanups
    $last = $#{$NAVBAR{'<get-var name>'}->{BUTTON}}+1;
    foreach $what (qw(PROLOG EPILOG)) {
        foreach $type (qw(N S SS)) {
            foreach $pos (keys(%{$NAVBAR{'<get-var name>'}->{$what}->{$type}})) {
                if ($pos eq 'first') {
                    $NAVBAR{'<get-var name>'}->{$what}->{$type}->{1} =
                        $NAVBAR{'<get-var name>'}->{$what}->{$type}->{$pos};
                    delete $NAVBAR{'<get-var name>'}->{$what}->{$type}->{$pos};
                }
                elsif ($pos eq 'last') {
                    $NAVBAR{'<get-var name>'}->{$what}->{$type}->{$last} =
                        $NAVBAR{'<get-var name>'}->{$what}->{$type}->{$pos};
                    delete $NAVBAR{'<get-var name>'}->{$what}->{$type}->{$pos};
                }
            }
        }
    }
}
:>
<restore txtcol_select>
<restore txtcol_normal>
<restore defaultlanguage>
<restore target>
<restore urlbase>
<restore subepilog>
<restore subprolog>
<restore imgbase>
<restore imgstar>
<restore name>
</define-container>

<define-container navbar:header>
<: 
    $NAVBAR{'<get-var name>'}->{HEADER} = <<'EOT';
%body
EOT
_:>
</define-container>

<define-container navbar:footer>
<: 
    $NAVBAR{'<get-var name>'}->{FOOTER} = <<'EOT';
%body
EOT
_:>
</define-container>

<define-container navbar:prolog>
<preserve type>
<preserve pos>
<set-var %attributes>
<if <get-var type> "" <set-var type="N">>
<if <get-var pos>  "" <set-var pos="any">>
<: 
    $NAVBAR{'<get-var name>'}
        ->{PROLOG}
        ->{'<get-var type>'}
        ->{'<get-var pos>'} = <<'EOT';
%body
EOT
_:>
<restore pos>
<restore type>
</define-container>

<define-container navbar:epilog>
<preserve type>
<preserve pos>
<set-var %attributes>
<if <get-var type> "" <set-var type="N">>
<if <get-var pos>  "" <set-var pos="any">>
<: 
    $NAVBAR{'<get-var name>'}
        ->{EPILOG}
        ->{'<get-var type>'}
        ->{'<get-var pos>'} = <<'EOT';
%body
EOT
_:>
<restore pos>
<restore type>
</define-container>

<define-container navbar:subprolog>
<preserve level>
<set-var %attributes>
<if <get-var level> "" <set-var level="0">>
<: 
    $NAVBAR{'<get-var name>'}
        ->{SUBPROLOG}
        ->['<get-var level>'] = <<'EOT';
%body
EOT
_:>
<restore level>
</define-container>

<define-container navbar:subepilog>
<preserve level>
<set-var %attributes>
<if <get-var level> "" <set-var level="0">>
<: 
    $NAVBAR{'<get-var name>'}
        ->{SUBEPILOG}
        ->['<get-var level>'] = <<'EOT';
%body
EOT
_:>
<restore level>
</define-container>

<set-var __buttoncnt=1>
<define-tag navbar:button>
<preserve id>
<preserve txt>
<preserve alt>
<preserve img>
<preserve hint>
<preserve url>
<preserve target>
<set-var %attributes>
<if "<get-var id>" "" <prog
    <set-var id=button<get-var __buttoncnt>>
    <increment __buttoncnt>
>>
<:{
    my $B = {};
    push(@{$NAVBAR{'<get-var name>'}->{BUTTON}}, $B);

    $B->{ID}     = '<get-var id>';
    chomp($B->{ID});
    $B->{TXT}    = qq<<get-var txt>>;
    $B->{ALT}    = qq<<get-var alt>>;
    $B->{IMG}    = '<get-var img>';
    $B->{HINT}   = qq<<get-var hint>>;
    $B->{URL}    = '<get-var url>';
    $B->{TARGET} = '<get-var target>';
}:>
<restore target>
<restore url>
<restore hint>
<restore img>
<restore alt>
<restore txt>
<restore id>
</define-tag>

<define-container navbar:filter>
<: 
    $NAVBAR{'<get-var name>'}->{FILTER} = <<'EOT';
%body
EOT
_:>
</define-container>


#
#   navbar debugging
#
<define-tag navbar:debug>
<preserve name>
<set-var %attributes>
<if <get-var name> "" <set-var name="unknown-navbar">>
<:
    use Data::Dumper;
    print Data::Dumper::Dumper($NAVBAR{'<get-var name>'});
:>
<restore name>
</define-tag>

<:

sub parse_langtxt {
    my $txt = shift;
    my $deflang = shift;
    my $def = "";
    my %result;

    if ($txt =~ m/(.*)\|[\s\n]*(.*)[\s\n]*/) {
	$txt = $1;
	$result{default}=$2;
    }
    while ($txt =~ s/^[\s\n]*(?:<|\[LANG_)(\w+):[\s\n]*([^>\]]*?)[\s\n]*(?:\>|\:\])[\s\n]*//s) {
	$def = $2 unless $def ne "";
	if (uc($1) eq uc($deflang) && !exists($result{default})) {
	    $result{default}=$2;
	}
	$result{uc $1} = $2;
    }

    $result{default}=$def unless exists($result{default}) || $def eq "";
    $result{default}=$txt unless exists($result{default});

    return %result;
}

:>
#
#   navbar rendering
#
<define-tag navbar:render>
<preserve name>
<preserve select>
<preserve subselected>
<preserve txtonly>
<preserve nohints>
<preserve nopreload>
<preserve languages>
<preserve imgstyle>
<set-var subselected=*>
<set-var txtonly=*>
<set-var nohints=*>
<set-var nopreload=*>
<set-var languages="">
<set-var %attributes>
<if <get-var name> "" <set-var name="unknown-navbar">>
<if <get-var languages> "" 
   <prog <set-var __i=0>\
     <while <get-var __languages[__i]>>\
       <set-var languages=<get-var languages>:<get-var __languages[__i]>>\
       <increment __i>\
     </while>\
   >\
>\
<:{
    #   import attributes to ePerl
    my $select      = qq|<get-var select>|;
    chomp($select);
    my $subselected = (qq|<get-var subselected>| eq '' ? 1 : 0);
    my $txtonly     = (qq|<get-var txtonly>|     eq '' ? 1 : 0);
    my $nopreload   = (qq|<get-var nopreload>|   eq '' ? 1 : 0);
    my @langs = split(":", '<get-var languages>');	
    my @languages = ();
    foreach my $lang (@langs) {	
        if ($lang ne "") {
            push @languages, $lang;
        }
    }
    my $imgstyle = '<get-var imgstyle>';
    my @sel;
    my $sublevels = 0;	

    if ($select =~ m/^[^.]+$/) {
        $sel[0] = $select;
    } else {
        my $seltmp = $select;
        while ($seltmp =~ m/(^[^.]+)\.(.+)/) {
            if ($sublevels == 0) {
                $sel[$sublevels]=$1;
            } else {
                $sel[$sublevels] = $sel[$sublevels-1] . "." . $1;
            }
            $sublevels++;
            $seltmp = $2;
	}
        $sel[$sublevels] = $sel[$sublevels-1] . "." . $seltmp;
    }



    #   select the correct navigation bar configuration
    my $CFG = $NAVBAR{'<get-var name>'};

    #   retrieve parts of config
    my @imgstar  = split(':', $CFG->{IMGSTAR});
    my $imgbase  = $CFG->{IMGBASE};
    my $urlbase  = $CFG->{URLBASE};
    my $target   = $CFG->{TARGET};
    my $deflang  = $CFG->{DEFLANG};
    my $nohints  = (qq|<get-var nohints>| eq '' ? 1 : 0);
    my $txtcol_n = $CFG->{TXTCOL_N};
    my $txtcol_s = $CFG->{TXTCOL_S};
    my $filter   = $CFG->{FILTER};

    #   initialise output creation
    my $O = '';
    my $n = 0;
    my @preload = ();

    #   output the global header
    $mcode = $CFG->{HEADER};
    $mcode =~ s|^\s+||;
    $mcode =~ s|\s+$||;
    $O .= $mcode."\n";

    #   now iterate over every defined button
    foreach $B (@{$CFG->{BUTTON}}) {
        #   count the buttons
        $n++;

        #   retrieve information about button
        my $id     = $B->{ID};

        # see if we have to show this button
        my $renderbutton = 0;
        my $sublevnr;

	$renderbutton = 1 unless $id =~ m/\./;
            for ($sublevnr = 0; $sublevnr <= $sublevels; $sublevnr++) {
            $renderbutton = 1 if $id =~ m/^$sel[$sublevnr]\.[^.]+$/; 
        }	

        if ($renderbutton) {
	    my %txt    = parse_langtxt($B->{TXT}, $deflang);
	    my $txt;
	    my %alt    = parse_langtxt($B->{ALT}, $deflang);
	    my $alt;
	    my @img    = split(':', $B->{IMG});
	    my $langimg, $defimg;
	    my $url    = $B->{URL};
	    my $langurl, $defurl;
	    my $target = $B->{TARGET};
	    my %hint   = parse_langtxt($B->{HINT}, $deflang);
	    my $hint;

	    my $idlevel = scalar split('\.', $id) -1;

	    #
	    #   PROLOG
	    #

	    #   determine list of prolog/epilog types to search
	    my @Ltype;
	    @Ltype = qw(N);
	    @Ltype = qw(S N)  if ($select eq $id and not $subselected);
	    @Ltype = qw(SS N) if ($select eq $id and $subselected);


	    #   output corresponding prolog for this type of button
	  L1: foreach $type (@Ltype) {
	      foreach $pos (($n, 'any')) {
		  if ($CFG->{PROLOG}->{$type}->{$pos}) {
		      $mcode = $CFG->{PROLOG}->{$type}->{$pos};
		      $mcode =~ s|^\s+||;
		      $mcode =~ s|\s+$||;
		      $O .= $mcode;
		      last L1;
		  }
	      }
	  }

	    $O .= $CFG->{SUBPROLOG}->[$idlevel];

	    #
	    #   THE BUTTON ITSELF
	    #

	    #   cleanup url information
	    if ($url =~ m/(.*)\|(.*)/) {
		$langurl=$1;
		$defurl=$2;
	    } else {
		$langurl = $defurl = $url;
		$defurl =~ s/\#//g;
	    }
	    if ($#languages >= 0 && $langurl =~ m/\#/) {
		$url="";
		foreach my $lang (@languages) {
		    my $tmpurl=$langurl;
		    $tmpurl =~ s/\#/lc($lang)/ge;
		    $tmpurl= "$urlbase/$tmpurl" if ($urlbase ne '' and $tmpurl !~ m;^(http://|/););
		    if (($tmpurl !~ m;^(http://|/); && ! -f $tmpurl) || uc($lang) eq $deflang) {
			$tmpurl = $defurl;
			$tmpurl  = "$urlbase/$tmpurl" if ($urlbase ne '' and $tmpurl !~ m;^(http://|/););
		    }
		    $tmpurl  = &canonpath($tmpurl) if ($tmpurl !~ m;^http://;);
		    $url .= "[LANG_".uc($lang).":".$tmpurl.":]";
		}
	    } else {
		$url = $defurl;
		$url  = "$urlbase/$url" if ($urlbase ne '' and $url !~ m;^(http://|/););
		$url  = &canonpath($url) if ($url !~ m;^http://;);
  	    }

	    #   cleanup target information
	    $target = " target=\"$target\"" if ($target ne '');

	    #   cleanup txt information:
	    $txt="";
	    if ($#languages >= 0) {
		foreach my $lang (@languages) {
		    $txt .= '[LANG_'.uc($lang).':';
		    if (exists($txt{uc($lang)})) {
			$txt .= $txt{uc($lang)};
		    } else {
			$txt .= $txt{default};
		    }
		    $txt .= ':]';
		}
	    } else {
		$txt = $txt{default};
	    }

	    #   cleanup hint information:
	    $hint="";
	    if ($#languages >= 0) {
		foreach my $lang (@languages) {
		    if (exists($hint{uc($lang)})) {
			$hint .= '[LANG_'.uc($lang).':'.$hint{uc($lang)}.':]';
		    } elsif (exists($hint{default}) && $hint{default} ne '') {
			$hint .= '[LANG_'.uc($lang).':'.$hint{default}.':]';
		    } 
		}
	    } elsif (exists($hint{default}) && $hint{default} ne '') {
		$hint = $hint{default};
	    }

	    #   output the button markup code
	    if ($#img < 0 || $txtonly) {
		#
		#   for a button without images
		#

		#   special feature for supporting colorized hyperlinks
		if ($select eq $id and $txtcol_s) {
		    $txt = '<font color="'.$txtcol_s.'">'.$txt.'</font>';
		}
		elsif ($txtcol_n) {
		    $txt = '<font color="'.$txtcol_n.'">'.$txt.'</font>';
		}

		$hint = $url if ($hint eq '');
		if ($select eq $id and not $subselected) {
		    $O .= $txt;
		}
		elsif ($select eq $id and $subselected) {
		    $js = '';
		    if ($hint ne '' && ! $nohints) {
			$js = qq# onMouseOver="self.status = '$hint'; return true"# .
			    qq# onMouseOut="self.status = ''; return true"#;
		    }
		    $O .= '<a href="'.$url.'"'.$target.$js.'>'.$txt.'</a>';
		}
		else {  # not selected 
		    $js = '';
		    if ($hint ne '' && ! $nohints) {
			$js = qq# onMouseOver="self.status = '$hint'; return true"# .
			    qq# onMouseOut="self.status = ''; return true"#;
		    }
		    $O .= '<a href="'.$url.'"'.$target.$js.'>'.$txt.'</a>';
		}
	    }
	    else {
		#
		#   for a button with images
		#
		my @imgs;
		my $jsid=$id;
		$jsid =~ s/\./__/g;

                $hint = $txt if ($hint eq '');
		$hint = '' if $nohints;
		
		#   alt attribute defaults to txt attribute if missing
		if ($alt{default} eq '') {
		    %alt = %txt;
		}
		
		#   cleanup image information
		if ($#img == 0 and $img[0] =~ m|\*|) {
		    ($img[2] = $img[0]) =~ s|\*|$imgstar[2]|g;
		    ($img[1] = $img[0]) =~ s|\*|$imgstar[1]|g;
		    $img[0] =~ s|\*|$imgstar[0]|g;
		}
		if ($#img == 0) {
		    $img[1] = $img[0] 
		    }
		for ($i = 0; $i <= $#img; $i++) {
		    if ($img[$i] =~ m/(.*)\|(.*)/) {
			$langimg=$1;
			$defimg=$2;
		    } else {
			$langimg = $defimg = $img[$i];
			$defimg =~ s/\#//g;
		    }
		    if ($#languages >= 0 && $langimg =~ m/\#/) {
			$img[$i]="";
			$imgs[$i]="";
			foreach my $lang (@languages) {
			    my $tmpimg;
			    if (uc($lang) eq uc($deflang)) {
				$tmpimg  = $defimg;
			    } else {
				$tmpimg=$langimg;
				$tmpimg =~ s/\#/$lang/ge;
			    }
			    if ($imgbase ne '' and $tmpimg !~ m;^(http://|/);) {
				$tmpimg= "$imgbase/$tmpimg";
			    }
			    if ($tmpimg !~ m;^http://;) {
				$tmpimg  = &canonpath($tmpimg);
                                &{$imgstyle{$imgstyle}}($tmpimg, 
							 $txt{uc($lang)}||$txt{default},
							 $i,
							 $idlevel,
							 $lang,
							 $id)
				    unless -e $tmpimg || 
					!exists($imgstyle{$imgstyle});
			    }
			    $img[$i] .= "[LANG_".uc($lang).":".$tmpimg.":]";
			    $imgs[$i] .= '[LANG_'.uc($lang).':' .
				'<img name="nb_img_'.$jsid.'" src="'.$tmpimg .
				    '" alt="';
			    if (exists($alt{uc($lang)})) {
				$imgs[$i] .= $alt{uc($lang)};
			    } else {
				$imgs[$i] .= $alt{default};
			    }
			    $imgs[$i] .='" border=0>:]';
			}
		    } else {
			$img[$i] = $defimg;
			$img[$i]  = "$imgbase/$img[$i]" if ($imgbase ne '' and $img[$i] !~ m;^(http://|/););
			    if ($img[$i] !~ m;^http://;) {
				$img[$i]  = &canonpath($img[$i]);
                                &{$imgstyle{$imgstyle}}($img[$i], 
							 $txt{default},
							 $i,
							 $idlevel,
							 "",
							 $id) 
				    unless -e $img[$i] || 
					!exists($imgstyle{$imgstyle});
			    }
			$imgs[$i] = '<img name="nb_img_'.$jsid.'" src="'.$img[$i].'" alt="'.$alt{default}.'" border=0>'
		    }
		}
		
		if ($select eq $id and not $subselected) {
		    $O .= $imgs[1];
		}
		elsif ($select eq $id and $subselected) {
		    $js = '';
		    if ($#img == 2) {
			$js = qq# onMouseOver="nb_imgOver('nb_img_$jsid', '$hint'); return true"# .
			    qq# onMouseOut="nb_imgSelect('nb_img_$jsid'); return true"#;
			push(@preload, [ $jsid, "s:$img[1]", "o:$img[2]" ]);
		    }
		    elsif ($hint ne '') {
			$js = qq# onMouseOver="self.status = '$hint'; return true"# .
			    qq# onMouseOut="self.status = ''; return true"#;
		    }
		    $O .= '<a href="'.$url.'"'.$target.$js.'>' .
			$imgs[1] .
			    '</a>';
		}
		else { # not selected 
		    $js = '';
		    if ($#img == 2) {
			$js = qq# onMouseOver="nb_imgOver('nb_img_$jsid', '$hint'); return true"# .
			    qq# onMouseOut="nb_imgNormal('nb_img_$jsid'); return true"#;
			push(@preload, [ $jsid, "n:$img[0]", "o:$img[2]" ]);
		    }
		    elsif ($hint ne '') {
			$js = qq# onMouseOver="self.status = '$hint'; return true"# .
			    qq# onMouseOut="self.status = ''; return true"#;
		    }
		    $O .= '<a href="'.$url.'"'.$target.$js.'>' .
			$imgs[0] .
			    '</a>';
		}
	    }

	    #
	    #   EPILOG
	    #


	    $O .= $CFG->{SUBEPILOG}->[$idlevel];

	    #   output corresponding epilog for this type of button
	  L2: foreach $type (@Ltype) {
	      foreach $pos (($n, 'any')) {
		  if ($CFG->{EPILOG}->{$type}->{$pos}) {
		      $mcode = $CFG->{EPILOG}->{$type}->{$pos};
		      $mcode =~ s|^\s+||;
		      $mcode =~ s|\s+$||;
		      $O .= $mcode."\n";
		      last L2;
		  }
	      }
	  }
        }

    }

    #   output the global footer
    $mcode = $CFG->{FOOTER};
    $mcode =~ s|^\s+||;
    $mcode =~ s|\s+$||;
    $O .= $mcode."\n";

    #   prefix the output with some JavaScript
    #   aux functions and the preloading of used images
    if ($#preload >= 0 && ! $nopreload) {
        $P = '';
        $P .= q(<javascript>);
        $P .= "function nb_imgNormal(imgName) {\n";
        $P .= "    if (document.images) {\n";
        $P .= "        document[imgName].src = eval(imgName + \"_n.src\");\n";
        $P .= "        self.status = '';\n" unless $nohints;
        $P .= "    }\n";
        $P .= "}\n";
        $P .= "function nb_imgSelect(imgName) {\n";
        $P .= "    if (document.images) {\n";
        $P .= "        document[imgName].src = eval(imgName + \"_s.src\");\n";
        $P .= "        self.status = '';\n" unless $nohints;
        $P .= "    }\n";
        $P .= "}\n";
        $P .= "function nb_imgOver(imgName, descript) {\n";
        $P .= "    if (document.images) {\n";
        $P .= "        document[imgName].src = eval(imgName + \"_o.src\");\n";
        $P .= "        self.status = descript;\n" unless $nohints;
        $P .= "    }\n";
        $P .= "}\n";
        $P .= "if (document.images) {\n";
        foreach $p (@preload) {
            my $name = $p->[0];
            my ($normtag, $normpath) = ($p->[1] =~ m|^([nso]):(.+)$|);
            my ($overtag, $overpath) = ($p->[2] =~ m|^([nso]):(.+)$|);
            $P .= "    nb_img_${name}_${normtag} = new Image();\n";
            $P .= "    nb_img_${name}_${normtag}.src = \"$normpath\";\n";
            $P .= "    nb_img_${name}_${overtag} = new Image();\n";
            $P .= "    nb_img_${name}_${overtag}.src = \"$overpath\";\n";
        }
        $P .= "}\n";
        $P .= q(</javascript>);
        $O = $P.$O;
    }

    #   additionally apply an existing Perl filter
    if ($filter ne '') {
        eval("\$filter_func = sub {" . $filter . "};");
        $O = &{$filter_func}($O, $CFG, $select);
    }

    #   finally produce the HTML markup code
    print $O;
}:>
<restore imgstyle>
<restore languages>
<restore nopreload>
<restore nohints>
<restore txtonly>
<restore subselected>
<restore select>
<restore name>
</define-tag>

##EOF##
������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/tkwmd�������������������������������������������������������������������0000644�0001750�0001750�00000010111�10343637512�014760� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /usr/bin/perl -w
#
# tkwmd -- Tk frontend for the Website Meta Language Documentation
#
# Copyright (c) 1999 Denis Barbier <barbier@engelschall.com>
# This program is free software released under the GNU General
# Public License v2
# 
#    This program is not intended to replace wmd, i write it
#    to learn Perl::Tk. Bug reports and comments are welcome ;-)
#    Any ideas to format man pages into Tk widgets as tkman does
#    will be helpful.
#

use Tk;
require Tk::ErrorDialog;
require Tk::ROText;
use subs qw/printman/;
use strict;
no strict "refs";

my $tkwmd_version = '0.1';
my $tkwmd_date = '28/06/1999';

#    The main window
my $MW = MainWindow->new;
$MW->title('Website META Language Documentation');

#    The menubar contains 2 buttons
my $menubar = $MW->Frame(-relief => 'flat', -borderwidth => 2);
$menubar->pack(-fill => 'x');

#    Dialog box containig the ``About'' text
my $DIALOG_ABOUT = $MW->Dialog(
    -title          => 'About widget',
    -bitmap         => 'info',
    -default_button => 'OK',
    -buttons        => ['OK'],
    -text           => "tkwmd v.$tkwmd_version\n $tkwmd_date\n" .
                       "Denis Barbier",
);

my $about = $menubar->Button(-text => 'About',
      -command => [$DIALOG_ABOUT => 'Show']);
my $quit = $menubar->Button(-text => 'Quit', -command => [\&exit]);

$quit->pack(-side => 'left');
$about->pack(-side => 'right');

#    This region contains the text
my $FONT = '-*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*';
my $fd = $MW->Scrolled('ROText',
    -scrollbars => 'e',
    -wrap       => 'word',
    -width      => 60,
    -height     => 30,
    -font       => $FONT,
);

$fd->tagConfigure(qw/title -font -*-Helvetica-Bold-R-Normal--*-180-*-*-*-*-*-*/);
$fd->tagConfigure(qw/man -lmargin1 1c -lmargin2 1c -foreground blue/);

$fd->tagBind(qw/man <ButtonRelease-1>/ => sub {printman $fd->index('current')});

#    Header
$fd->insert('end', "Website META Language, Version 1.7.1 (05-06-1999)\n", 'title');
$fd->insert('end', "Copyright (c) 1996,1997,1998,1999 Ralf S. Engelschall\nOfficial homepage and distribution area:\n  http://www.engelschall.com/sw/wml/\n   ftp://ftp.engelschall.com/sw/wml/\n");

#    Sections
sub add_doc_menu {
    my ($name, @items) = @_;

    $fd->insert('end', "\n$name\n", 'title');
    foreach (@items) {
        $fd->insert('end', "$_\n", [split(' ', qq/man $_/)]);
    }
}

add_doc_menu('Basics', 
    qw(wml_intro wml_tutorial wml_faq wml_tags wml_barebone));
add_doc_menu('References', 
    qw(wml_std_html40 wml_std_html32 wml_std_html20 wml_std_css1
       wml_std_css2 wml_std_csspos));
add_doc_menu('Frontends', qw(wml wmk wmd wmb wmu));
add_doc_menu('Backends',
    qw(wml_p1_ipp wml_p2_mhc wml_p3_eperl wml_p4_gm4 wml_p5_divert
       wml_p6_asubst wml_p7_htmlfix wml_p8_htmlstrip wml_p9_slice));
add_doc_menu('Auxiliaries',
    qw(wml_aux_htmlinfo wml_aux_linklint wml_aux_weblint wml_aux_tidy
       wml_aux_htmlclean wml_aux_map2html wml_aux_txt2html
       wml_aux_freetable wml_aux_iselect));
add_doc_menu('Webdesign',
    qw(wml::des::all wml::des::gfont wml::des::imgbg wml::des::imgdot
       wml::des::lowsrc wml::des::navbar wml::des::preload
       wml::des::rollover wml::des::space wml::des::typography));
add_doc_menu('Formatting',
    qw(wml::fmt::all wml::fmt::isolatin wml::fmt::pod wml::fmt::sdf
       wml::fmt::text wml::fmt::url wml::fmt::verbatim wml::fmt::xtable));
add_doc_menu('Import',
    qw(wml::imp::all wml::imp::csmap wml::imp::fsview wml::imp::generic));
add_doc_menu('Standard',
    qw(wml::std::all wml::std::box wml::std::case wml::std::grid
       wml::std::href wml::std::lang wml::std::logo wml::std::info
       wml::std::page wml::std::tags wml::std::toc));
add_doc_menu('Support',
    qw(wml::sup::all wml::sup::hextriple wml::sup::path));
add_doc_menu('System',
    qw(wml::sys::all wml::sys::boot));

$fd->pack;

#    End of the definition of windows

my $e = $MW->ErrorDialog;
$e->Subwidget('error_dialog')->Subwidget('message')->configure(-bg => 'red');

MainLoop;

sub printman {
    my($index) = @_;

    my @tags = $fd->tagNames($index);
    my $command = $tags[1];
    system("xterm -e man $command");
}
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/wml.vim�����������������������������������������������������������������0000644�0001750�0001750�00000011365�10343637512�015237� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������" Vim syntax file
" Language:    WML
" Maintainer:  Gerfried Fuchs <alfie@innocent.com>
" URL:         http://alfie.ist.org/vim/syntax/wml.vim
" Last Change: 19 Sep 2000
"
" Comments are very welcome - but please make sure that you are commenting on
" the latest version of this file.
"
" Original Version: Craig Small <csmall@eye-net.com.au>

" A lot of the web stuff looks like HTML so we load that first
so $VIMRUNTIME/syntax/html.vim

if !exists("main_syntax")
  let main_syntax = 'wml'
endif

" Redfine htmlTag
syn clear htmlTag
syn region  htmlTag  start=+<[^/<]+ end=+>+  contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition

"
" Add in extra Arguments used by wml
syn keyword htmlTagName contained gfont imgbg imgdot lowsrc 
syn keyword htmlTagName contained navbar:define navbar:header
syn keyword htmlTagName contained navbar:footer navbar:prolog
syn keyword htmlTagName contained navbar:epilog navbar:button
syn keyword htmlTagName contained navbar:filter navbar:debug
syn keyword htmlTagName contained navbar:render
syn keyword htmlTagName contained preload rollover 
syn keyword htmlTagName contained space hspace vspace over
syn keyword htmlTagName contained ps ds pi ein big sc spaced headline
syn keyword htmlTagName contained ue subheadline zwue verbcode
syn keyword htmlTagName contained isolatin pod sdf text url verbatim
syn keyword htmlTagName contained xtable
syn keyword htmlTagName contained csmap fsview import box 
syn keyword htmlTagName contained case:upper case:lower
syn keyword htmlTagName contained grid cell info lang: logo page
syn keyword htmlTagName contained set-var restore
syn keyword htmlTagName contained array:push array:show set-var ifdef
syn keyword htmlTagName contained say m4 symbol dump enter divert
syn keyword htmlTagName contained toc 
" added due to request by Alfie [2000-09-19]
syn keyword htmlTagName contained wml card do refresh oneevent catch spawn

"
" The wml arguments
syn keyword htmlArg     contained adjust background base bdcolor bdspace
syn keyword htmlArg     contained bdwidth complete copyright created crop
syn keyword htmlArg     contained direction description domainname eperlfilter
syn keyword htmlArg     contained file hint imgbase imgstar interchar interline
syn keyword htmlArg     contained keephr keepindex keywords layout spacing
syn keyword htmlArg     contained padding nonetscape noscale notag notypo
syn keyword htmlArg     contained onload oversrc pos select slices style
syn keyword htmlArg     contained subselected txtcol_select txtcol_normal
syn keyword htmlArg     contained txtonly via
" added due to request by Alfie [2000-09-19]
syn keyword htmlArg     contained mode columns localsrc ordered


" Comments fixed   -- Alfie [2000-02-25]
" Lines starting with an # are usually comments
syn match   wmlComment  "#.*"
" The different exceptions to comments
syn match   wmlSharpBang   "^#!.*"
syn match   wmlUsed     contained "\s\s*[A-Za-z:]*"
syn match   wmlUse      "^\s*#\s*use\s*" contains=wmlUsed
syn match   wmlInclude  "^\s*#\s*include.*"

syn region  wmlBody     contained start=+<<+ end=+>>+

syn match   wmlLocationed  contained "[A-Za-z]*"
syn region  wmlLocation start=+<<+ end=+>>+ contains=wmlLocationed

" fixed Divert   -- Alfie [2000-02-21]
syn match   wmlDivert   "\.\.[a-zA-Z_]\+>>"
syn match   wmlDivertEnd   "<<\.\."

syn match   wmlDefineName  contained "\s\+[A-Za-z-]\+"
syn region  htmlTagName start="\<\(define-tag\|define-region\)" end="\>" contains=wmlDefineName

" The perl include stuff
if main_syntax != 'perl'
  " Perl script
  syn include @wmlPerlScript $VIMRUNTIME/syntax/perl.vim
  syn region perlScript start=+<perl>+ keepend end=+</perl>+ contains=@wmlPerlScript,wmlPerlTag
" eperl between '<:' and ':>'  -- Alfie [1999-12-26]
  syn region perlScript start=+<:+ keepend end=+:>+ contains=@wmlPerlScript,wmlPerlTag
  syn match    wmlPerlTag  contained "</*perl>" contains=wmlPerlTagN
  "syn match   wmlPerlTag  contained "</perl>" contains=wmlPerlTagN
  syn keyword  wmlPerlTagN contained perl 

  hi link   wmlPerlTag  htmlTag
  hi link   wmlPerlTagN htmlStatement
endif

if main_syntax == "html"
  syn sync match wmlHighlight groupthere NONE "</a-zA-Z]"
  syn sync match wmlHighlight groupthere perlScript "<perl>"
  syn sync match wmlHighlightSkip "^.*['\"].*$"
  syn sync minlines=10
endif

if !exists("did_wml_syntax_inits")
  let did_wml_syntax_hints = 1
  hi link wmlUse         Include
  hi link wmlUsed        String
  hi link wmlBody        Special
  hi link wmlDiverted    Label
  hi link wmlDivert      Delimiter
  hi link wmlDivertEnd   Delimiter
  hi link wmlLocationed  Label
  hi link wmlLocation    Delimiter
  hi link wmlDefineName  String
  hi link wmlComment     Comment
  hi link wmlInclude     Include
  hi link wmlSharpBang   PreProc
endif

let b:current_syntax = "wml"
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/README������������������������������������������������������������������0000644�0001750�0001750�00000001006�10343637512�014572� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
 This is the Website Meta Language contribution directory.
 The stuff you can find here is provided AS IS and without 
 any support and guarranty.
 These files contain information to contact their respective authors.

 wmg.cgi ............ The popular Webdesign Magnifying Glass (WMG)
 wml.spec.in ........ Specification file to build RedHat/Linux RPMS
 navbar-FH.wml ...... A modified version of navbar.wml
 mkwml .............. An alternative to WMk
 wml.vim ............ Syntax highlighting of WML files with VIM

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/wml.spec����������������������������������������������������������������0000644�0001750�0001750�00000002657�11002047116�015366� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Summary:    Website META Language
Name:       wml
Version:    2.0.11
Release:    1
Copyright:  GPL
Group:      Applications/Publishing/HTML
Source:     http://www.engelschall.com/sw/wml/distrib/%{name}-%{version}.tar.gz
Url:        http://www.engelschall.com/sw/wml
Packager:   Christian W. Zuckschwerdt <zany@triq.net>
BuildRoot:  %{_tmppath}/%{name}-buildroot

%description
WML is a free and extensible Webdesigner's off-line HTML generation
toolkit for Unix, distributed under the GNU General Public License
(GPL v2). It is written in ANSI C and Perl 5, build via a GNU Autoconf
based source tree and runs out-of-the-box on all major Unix derivates.
It can be used free of charge both in educational and commercial
environments.

%prep
%setup

%build
# we don't use the configure macro because libdir is special
./configure --prefix=%{_prefix} \
            --bindir=%{_bindir} \
            --libdir=%{_libdir}/%{name} \
            --mandir=%{_mandir}
make

%install
rm -rf $RPM_BUILD_ROOT
make prefix=$RPM_BUILD_ROOT/%{_prefix} \
     bindir=$RPM_BUILD_ROOT/%{_bindir} \
     libdir=$RPM_BUILD_ROOT/%{_libdir}/%{name} \
     mandir=$RPM_BUILD_ROOT/%{_mandir} \
     install

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%doc ANNOUNCE BUGREPORT ChangeLog
%doc COPYING COPYRIGHT COPYRIGHT.OTHER CREDITS
%doc NEWS README README.mp4h SUPPORT VERSION VERSION.HISTORY
%{_bindir}/*
%{_libdir}/%{name}/*
%{_mandir}/man?/*
%{_mandir}/cat?/*
���������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/mkwml�������������������������������������������������������������������0000755�0001750�0001750�00000010067�10343637512�014776� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl

#--- mkwml -------------------------------------------------------------------#
# Jim Bowlin <bowlin@sirius.com>
# My make program for the wml program suite.
#-----------------------------------------------------------------------------#

use strict;

my $usage=<<EO_USAGE;
Usage: mkwml [options]  [filespec filespec ...]

Options:  
  -nn  Just show the list of commands to process
  -n   Just show list of files to process
  -q   Is obeyed and passed onto wml
  -no-option=regex  ignores -option that matches regex in .wmlrc files
   (treats -o and --option seperately right now).
   Anything else starting with - gets passed to wml.  Use a single - to denote
   no options

Filespec:  
Only files that match (RE) the file spec will get processed.  If a spec begins
with ^ then it means NOT those files.
EO_USAGE

@ARGV or die $usage;

my @cmd_args;
my ($nop, $fop, $quiet, @no_opt, %rc_hash);

while (@ARGV and $ARGV[0] =~ /^-/) { 
    my $arg = shift @ARGV;
    $arg eq '-nn'      and do {$nop = 1;           next};
    $arg eq '-n'       and do {$fop = 1;           next};
    $arg =~ s/^-no-/-/ and do {push @no_opt, $arg; next};
    $arg eq '-q'       and $quiet = 1;
    length($arg) > 1   and push @cmd_args, $arg;
}

my $inc_files = make_filespec(grep /^[^^]/,  @ARGV);
my $exc_files = make_filespec(grep s/^\^//,  @ARGV);

my @files = `find -name '*.wml' -print`;
for (@files) {s!^\./!!; chomp}

@files = grep /$inc_files/o, @files;
$exc_files and @files = grep {$_ !~ /$exc_files/o} @files;

my ($opt_regex, %arg_regex, $errors);
for (@no_opt) {
    m/^(-\w|--\w+=)(.*)/ or do {print STDERR "$0: invalid flag -no$_\n"; $errors++; next};
    push @{$arg_regex{$1}}, $2;
}

$opt_regex = join "|", keys %arg_regex;
for (keys %arg_regex) {
    $arg_regex{$_} = join "|", @{$arg_regex{$_}};
}

0 and do {
    print "opt_regex: $opt_regex\n";
    for (sort keys %arg_regex) {
        print "$_ -no- $arg_regex{$_}\n";
    }
};

$errors and exit;

my $root_path = 'html';   #-- NOT PORTABLE (yet)

#--- main loop --------------------------------------------------------------#

$quiet or print join("\n", @files), "\n\n";

SRC_FILE:
foreach my $full (@files) { 
    my ($path, $file) = $full =~ m!(.*)/([^/]+$)! ? ($1, $2) : ("", $full);
    my $base = $file =~ /^([^\.]+)/ ? $1 : $file;
    my $rel_path = $path =~ m!^/?$root_path/(.*)! ? $1 : 'home';
    my @args = grab_rc($path);

    my @out_files = ();
    for my $arg (@args) {
        $arg =~ s/%BASE/$base/g;
        $arg =~ s/%DIR/$path/g;
        $opt_regex and do {                           #-- process -no--option
            $arg =~ m/^($opt_regex)(.*)/ or next;
            my ($option, $data) = ($1, $2);
            $data =~ $arg_regex{$option} and $arg = "";
            next;
        };  
        $arg =~ m/^(:?-o|--outputfile=)(.*)/ or next;
        my $out_file = $2;
        $out_file =~ s/^[^:]*://;
        $out_file =~ s/@[^@]*$//;
        push @out_files, $out_file;
    }

    @out_files or do {
        print STDERR "skipping $full\n";
        next SRC_FILE;
    };

    $fop and do { print "$full\n"; next};
    my $cmd = "wml -r -DBASE_NAME=$base -DREL_PATH=$rel_path @args $full";
    $quiet or print "$cmd\n";
    $nop or `$cmd`;
}

#--- Subroutines ------------------------------------------------------------#

sub make_filespec {
    my $spec = join "|", @_;
    $spec =~ s!\.!\\.!g;
    $spec =~ s!\*!.*!g;
    $spec=~ s!\@![^/]*!g;
    $spec;
}

sub grab_rc  {
    my $path = shift;
    my @args;
    my @paths = ($path);
    while($path =~ s!/[^/]+$!!) {unshift @paths, $path}
    unshift @paths, '.';

    for my $path (@paths) {
        unless ($rc_hash{$path}) {
            $rc_hash{$path} = [];
            my $rc_file = "$path/.wmlrc";
            -f $rc_file and @{$rc_hash{$path}} = read_rc($rc_file);
        }
        push @args, @{$rc_hash{$path}};
    }
    @args;
}

sub read_rc {
    my ($file) = @_;
    my @out;
    open(RC, $file) or return;
    while (<RC>) {
        s/\s+$//;
        s/^\s+//;
        m/^#/ and next;
        m/\S/ or next;
        push @out, split /\s+/, $_;
    }
    close RC;
    @out;
}

__END__


�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/wmg.cgi�����������������������������������������������������������������0000755�0001750�0001750�00000133676�11001451276�015207� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������:
eval 'exec perl -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  wmg.cgi -- webdesign magnifying glass
##  Copyright (c) 1998,1999 Ralf S. Engelschall, All Rights Reserved. 
##
##  This script is a webdesigner's tool to explore how
##  real-life webpages are constructed. It works by acting
##  as a filtering proxy which converts the webpage and
##  its inlined graphics on-the-fly. The amount of
##  conversion is controlled by a exploration level.
##
##  Disclaimer: I didn't use the CGI.pm module because
##              it leads to unexpected errors under the
##              combination Apache 1.2.[45] / Solaris 2.6 :-(
##


require 5.004;

#   import used third-party modules
use URI::URL;
use HTTP::Headers;
use HTTP::Request;
use LWP::UserAgent;
use Image::Size;
use GD;

#   switch to unbuffered I/O
$|++;

#   let us catch runtime errors...
eval {

##
##  configuration
##  [THIS SHOULD BE THE ONLY PLACE WHERE YOU EDIT SOMETHING]
##

#   determine our name
$server_name = $ENV{'SERVER_NAME'};

#   the URL to an optionally used proxy ('none' for no proxy)
$proxy_url = 'none';
$proxy_url = 'http://en1.engelschall.com:8080/' if ($server_name =~ m|^en1|);
$proxy_url = 'http://www-proxy.de.uu.net:3128/' if ($server_name =~ m|^www\.engelschall\.com$|);
$proxy_url = 'http://proxy.ee.ethz.ch:3128/'    if ($server_name =~ m|^www\.ch\.engelschall\.com$|);

#   comma seperated list of domains for 
#   which no proxy is used
$no_proxy_domains = 'none';

#   the URL to ourself for URL rewriting
#   
#   Note: I use it with a directory style URL through
#          the use of the following Apache/mod_rewrite
#          ruleset. Just index.cgi will not work! You
#          then also have to set $my_url to ../index.cgi!
#
#   RewriteEngine on
#   RewriteRule   ^$        wmg.cgi    [L]
#   RewriteRule   ^wmg\.cgi  -         [L]
#   RewriteRule   ^(.+)     wmg.cgi/$1 [T=application/x-httpd-cgi,L]
#
$my_url = 'http://'.$server_name.'/sw/wml/wmg/';
$my_url_sep = '/' if ($my_url !~ m|/$|);

#   the inital URL for the form
$init_url = 'http://'.$server_name.'/sw/wml/';

#   the name of this service
$our_name = 'WMG';
$our_vers = '1.1.0';


##
##  import of parameters
##

#   PATH_INFO
$path_info = $ENV{'PATH_INFO'};

#   QUERY_STRING
$query_string = $ENV{'QUERY_STRING'};
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
    $query_string = '';
    while (<STDIN>) { $query_string .= $_; }
}
%qs = ();
@pairs = split(/&/, $query_string);
foreach $pair (@pairs) {
    my ($name, $value) = split(/=/, $pair);
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg;
    $qs{$name} = $value;
}


##
##  helper functions
##

#   send a HTTP response for a complete page
sub send_page {
    my ($type, $data) = @_;
    print "Content-type: $type\n";
    print "Content-length: ".sprintf("%d", length($data))."\n";
    print "Connection: close\n";
    print "Server: $our_name/$our_vers\n";
    print "\n";
    print $data;
}

#   send a HTTP redirect
sub send_redirect {
    my ($url) = @_;
    print "Status: 302\n";
    print "Location: $url\n";
    print "URI: $url\n";
    print "Server: $our_name/$our_vers\n";
    print "Content-type: text/html\n";
    print "\n";
    print "New URL: <a href=\"$url\">$url</a>\n";
}

#   decode a UU buffer
sub uudecode {
    my($in) = @_;
    my($result,$file,$mode);

    $result = $mode = $file = '';
    while ($in =~ s/(.*?\n)//s) {
        my $line = $1;
        if ($file eq '' and !$mode){
            ($mode,$file) = $line =~ /^begin\s+(\d+)\s+(\S+)/ ;
            next;
        }
        next if $file eq '' and !$mode;
        last if $line =~ /^end/;
        $result .= uudecode_chunk($line);
    }
    wantarray ? ($result,$file,$mode) : $result;
}
sub uudecode_chunk {
    my($chunk) = @_;

    return '' if $chunk =~ /^(--|\#|CREATED)/;
    my $string = substr($chunk,0,int((((ord($chunk) - 32) & 077) + 2) / 3)*4+1);
    return unpack("u", $string);
}

##
##  processing
##

#
#   display input form on no parameters
#
if ($path_info eq '' and $query_string eq '') {
    $data = <<"EOT";
<html>
<head>
<title>webdesign magnifying glass</title>
</head>
<body bgcolor="#c0c0c0">
  <p>
  <br>
  <center>
    <p>
    <table bgcolor="#ffffff" cellspacing=0 cellpadding=10 border=2>
    <tr>
    <td align=center>
    <form method="POST" action="$my_url" 
          enctype="application/x-www-form-urlencoded">
      <table cellspacing=0 cellpadding=0 border=0>
      <tr>
        <td4>
          <img src="${my_url}${my_url_sep}head.gif" 
               alt="webdesign magnifying glass" width="511" height="219">
        </td>
      </tr>
      <tr>
        <td>
          <font size=+1 face="Arial,Helvetica">
          Copyright (c) 1998,1999 Ralf S. Engelschall, All Rights Reserved.
          </font>
        </td>
      </tr>
      </table>
      <br>
      <table cellspacing=0 cellpadding=0 border=0>
      <tr>
         <td><font size=+2 face="Arial,Helvetica"><b>URL:&nbsp;&nbsp;</b></font></td>
         <td colspan=2><input type="text" size=40 name="url" value="$init_url"></td>
      </tr>
      <tr>
         <td><font size=+2 face="Arial,Helvetica"><b>Level:&nbsp;&nbsp;</b></font></td>
         <td>
           <select name="level">
             <option value="0">0 [+just URL rewriting]
             <option value="1">1 [+visible 1pt-images]
             <option value="2">2 [+visible borders]
             <option value="3">3 [+substituted images]
             <option value="4" selected>4 [+removed colors]
           </select>
         </td>
         <td><font face="Arial,Helvetica" size=+2 color="#cc0000">
             <b><input type="submit" name="submit" value="magnify!"></b></font>
         </td>
      </tr>
      </table>
    </form>
    </td>
    </tr>
    </table>
  </center>
</body>
</html>
EOT
    &send_page('text/html', $data);
    exit(0);
}

#
#   send out the header image
#
if ($path_info eq '/head.gif') {
    $head_gif = '';
    while (<DATA>) {
        $head_gif .= $_;
    }
    &send_page('image/gif', &uudecode($head_gif));
    exit(0);
}

#
#   do a redirection for the form data to
#   get the inital canonical form of the URL
#
if ($path_info eq '' and $qs{'url'} ne '' and $qs{'level'} ne '') {
    $path = $qs{'url'};
    $path =~ s|^http://||;
    $level = $qs{'level'};
    &send_redirect($my_url.$my_url_sep."l=$level/$path");
    exit(0);
}

#
#   do the actual filtering for a particular URL
#   (this URL can be either a webpage itself or
#   some of the inlined images, etc.)
#

#   define an own user-agent which has the 
#   resolving of HTTP redirections disabled
#   because redirects have to go through us, too.
package LWP::MyUA;
@ISA = qw(LWP::UserAgent);
sub redirect_ok { return 0; }
package main;

#   create an user-agent object
$useragent = new LWP::MyUA;
$useragent->agent("$our_name/$our_vers");
$useragent->proxy('http', $proxy_url) if ($proxy_url ne 'none');
$useragent->no_proxy(split(/,/, $no_proxy_domains)) if ($no_proxy_domains ne 'none');

#   calculate the URL which has ourself as the prefix
if ($path_info =~ m|^/l=(\d)/(.+)$|) {
    ($level, $path_info) = ($1, $2);
}
$alt = '';
if ($path_info =~ m|^a=([^/]+)/(.+)$|) {
    ($alt, $path_info) = ($1, $2);
    $alt =~ s/X\(([a-fA-F0-9][a-fA-F0-9])\)/pack('C', hex($1))/eg;
}
$url = 'http://'.$path_info;
$url .= "?$query_string" if ($query_string ne '');
$file = $url;
$file =~ s|^.+/([^/]+)$|$1|;
$url = new URI::URL($url);

#   create the HTTP request
$headers = new HTTP::Headers;
$request = new HTTP::Request('GET', $url, $headers);

#   perfrom the HTTP request
$response = $useragent->request($request, undef, undef);

#   parse the HTTP response
$urlbase  = $response->base;
$contents = $response->content;
$type     = $response->content_type;

#   if a redirect was forced we perform it
#   but with an adjusted URL which again has
#   ourself as the prefix
if ($response->is_redirect) {
    $path = $response->header("Location");
    $path =~ s|^http://||;
    &send_redirect($my_url.$my_url_sep."l=$level/".$path);
    exit(0);
}

#
#   now do the actual filtering
#   (Note 1: Level 0 is always needed!)
#   (Note 2: It's an `if' for each level, not an `elsif'!)
#
$isnewimage = 0;
if ($level >= 0) {
    #
    #   rewrite all URLs in HTML files
    #   to make sure we are always the prefix
    #
    if ($type eq 'text/html') {
        $contents =~ s/(<img\s+)(.+?)(>)/$1.&fixattr_imgsrc($2).$3/isge;
        $contents =~ s/(<frame\s+)(.+?)(>)/$1.&fixattr_framesrc($2).$3/isge;
        $contents =~ s/(<a\s+)(.+?)(>)/$1.&fixattr_ahref($2).$3/isge;
        $contents =~ s/(<script\s+[^>]+?javascript.+?>)(.+?)(<\/script>)/$1.&fixattr_js($2).$3/isge;
        sub fixattr_imgsrc {
            my ($attr) = @_;
            my $alt = ''; 
            $attr =~ s|(alt\s*=\s*")([^"]+)(")|$alt = $2, $1.$2.$3|isge;
            $attr =~ s|(alt\s*=\s*)([^"]\S+)|$alt = $2, $1.$2.$3|isge;
            if ($alt ne '') {
                $alt =~ s/([^a-zA-Z0-9])/sprintf("X(%02x)", ord($1))/eg;
                $alt = "a=$alt/";
            }
            $attr =~ s|(src\s*=\s*")([^"]+)(")|$1.&fixurl($2, $alt).$3|isge;
            $attr =~ s|(src\s*=\s*)([^"]\S+)|$1.&fixurl($2, $alt)|isge;
            return $attr;
        }
        sub fixattr_framesrc {
            my ($attr) = @_;
            $attr =~ s|(src\s*=\s*")([^"]+)(")|$1.&fixurl($2, '').$3|isge;
            $attr =~ s|(src\s*=\s*)([^"]\S+)|$1.&fixurl($2, '')|isge;
            return $attr;
        }
        sub fixattr_ahref {
            my ($attr) = @_;
            $attr =~ s|(href\s*=\s*")([^"]+)(")|$1.&fixurl($2, '').$3|isge;
            $attr =~ s|(href\s*=\s*)([^"]\S+)|$1.&fixurl($2, '')|isge;
            return $attr;
        }
        sub fixattr_js {
            my ($attr) = @_;
            $attr =~ s/(\.src\s*=\s*')([^']+\.(?:gif|jpg))(')/$1.&fixurl($2, '').$3/isge;
            $attr =~ s/(\.src\s*=\s*")([^"]+\.(?:gif|jpg))(")/$1.&fixurl($2, '').$3/isge;
            return $attr;
        }
        sub fixurl {
            my ($url, $more) = @_;
            my $u = new URI::URL $url, $urlbase;
            $url = $u->abs->as_string;
            $url =~ s|^http://||;
            $url = $my_url.$my_url_sep."l=$level/".$more.$url;
            return $url;
        }
    }
}
if ($level >= 1) {
    #
    #   replace all transparent 1pt dot-images with a red image
    #
    if ($type eq 'image/gif') {
        ($w, $h, $t) = Image::Size::imgsize(\$contents);
        if ($w*$h == 1) {
            #   read image into GD
            $tmpimg = newFromGif GD::Image($contents);
            unlink($tmpfile);
            if ($tmpimg->transparent != -1) {
                my $im = new GD::Image($w, $h);
                ($r1, $g1, $b1) = (255, 0, 0);
                ($r2, $g2, $b2) = (255, 0, 0);
                my $col1 = $im->colorAllocate($r1, $g1, $b1);
                my $col2 = $im->colorAllocate($r2, $r2, $b2);
                $contents = $im->gif;
                $isnewimage = 1;
            }
        }
    }
}
if ($level >= 2) {
    #   
    #   replace all border=0 attributes with border=1
    #
    if ($type eq 'text/html') {
        $contents =~ s|border\s*=\s*"?0"?|border=1|sgi;
        sub fix_table_border {
            my ($str) = @_;
            if ($str !~ m|border\s*=|) {
                $str = $str."border=1";
            }
            return $str;
        }
        $contents =~ s/(<table\s+)(.+?)(>)/$1.&fix_table_border($2).$3/isge;
    }
}
if ($level >= 3) {
    #
    #   remove any background images
    #
    if ($type eq 'text/html') {
        sub fix_bg {
            my ($str) = @_;
            $str =~ s/(background\s*=\s*')([^']+\.(?:gif|jpg))(')/''/isge;
            $str =~ s/(background\s*=\s*")([^"]+\.(?:gif|jpg))(")/''/isge;
            return $str;
        }
        $contents =~ s/(<body\s+)(.+?)(>)/$1.&fix_bg($2).$3/isge;
    }
    #
    #   replace all non-transparent images with a blank one
    #
    if ($type =~ m|^image/.*| and not $isnewimage) {
        ($w, $h, $t) = Image::Size::imgsize(\$contents);
        my $im = new GD::Image($w, $h);
        ($r1, $g1, $b1) = (230, 230, 230);
        ($r2, $g2, $b2) = (100, 100, 100);
        ($r3, $g3, $b3) = (0, 0, 0);
        my $col1 = $im->colorAllocate($r1, $g1, $b1);
        my $col2 = $im->colorAllocate($r2, $g2, $b2);
        my $col3 = $im->colorAllocate($r3, $g3, $b3);
        $im->rectangle(0, 0, $w-1, $h-1, $col2);
        $im->string(gdSmallFont,1,1, sprintf("%s %dx%d", $t, $w, $h), $col3);
        $im->string(gdSmallFont,1,12, "$alt", $col3) if ($alt ne '');
        $im->string(gdSmallFont,1,12, "[$file]", $col3) if ($alt eq '');
        $contents = $im->gif;
        $type = 'image/gif';
    }
}
if ($level >= 4) {
    #   
    #   remove all color attributes
    #
    if ($type eq 'text/html') {
        $contents =~ s|bgcolor="?#?[0-9a-hA-H]{6}"?||isg;
        $contents =~ s/bgcolor="?(black|white|red|yellow)"?//isg;
        $contents =~ s|color="?#?[0-9a-hA-H]{6}"?||isg;
        $contents =~ s/color="?(black|white|red|yellow)"?//isg;
        $contents =~ s|text="?#?[0-9a-hA-H]{6}"?||isg;
        $contents =~ s/text="?(black|white|red|yellow)"?//isg;
        $contents =~ s|link="?#?[0-9a-hA-H]{6}"?||isg;
        $contents =~ s/link="?(black|white|red|yellow)"?//isg;
        $contents =~ s|vlink="?#?[0-9a-hA-H]{6}"?||isg;
        $contents =~ s/vlink="?(black|white|red|yellow)"?//isg;
        $contents =~ s|alink="?#?[0-9a-hA-H]{6}"?||isg;
        $contents =~ s/alink="?(black|white|red|yellow)"?//isg;
        $contents =~ s|<font\s*>(.*?)</font>|$1|isg;
    }
}

#  
#   Puhhh... now the filtering is done.
#   All we now have to do is to send the
#   stuff to the user...
#
&send_page($type, $contents);

#   die gracefully
exit(0);

#   ...the runtime error handler:
};
if ($@) {
    my $text = $@;
    print "Content-type: text/html\n";
    print "Connection: close\n";
    print "\n";
    print "<h1>Internal Error</h1>\n";
    print $text;
}

##EOF##
__DATA__
begin 664 wmg.jpg
M_]C_X``02D9)1@`!`0```0`!``#_VP!#``@&!@<&!0@'!P<)"0@*#!0-#`L+
M#!D2$P\4'1H?'AT:'!P@)"XG("(L(QP<*#<I+#`Q-#0T'R<Y/3@R/"XS-#+_
MVP!#`0D)"0P+#!@-#1@R(1PA,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R
M,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C+_P@`1"`#;`?\#2"(``A$!`Q$!_\0`
M&P`!``(#`0$```````````````4&`@,$!P'_Q``9`0$!`0$!`0``````````
M`````0(#!`7_V@`,`T@``A`#$````;^#@^5=TEH53.K0JWPM2IHMBN:ZLZI:
M:N:F"YJ8+FI@N:F"YJ8+GE2I3*Q=M'O&*$````%-LFIW#-`.2J:EV&:``,#-
M1KMJ9C-````@.7?A)LPS&K[CLU=73S9I\W<^R71U:=E88;,(VZ<\S-\'U\'U
M\'WEZ>9(Z]^?>@G!I^U?HN\+NI]>DPO?18O,3%=M=4]4=L14S#=_2=LY6^+%
MN<#'[#LKTO$;GHD#S<O.]\[7>&K=!Q^X[IF"ELH2S><V/;?\@IPS[J-9#HPK
M-D-\WYMZ#ET#G:GR_'?.?W1S$G(UV_\`.Q?9T<//6Y1]W+WW)HTY\':KFGM+
M2J^[4L2%RB84N>J6.B.=T"OV*$F[<?//1:7TF_1PVO:,YHRU%5[\)6R/VRFC
M-@K;4I2K!0[#%'/<ZQVDY29R#.K[U_;-.JR1&;VUN:D2M62#WU"2L5:;--F\
M^E<6'GZW9-R&OU!OW.^=7>D7?3N'&TV/ZWBZ0\SMYHT7^J6OZ7'YYGZ7Y9X_
MKZODAHQZLY6#L7E\7'CV;[X('.\4GZ6.O@[>;35T=\86V<\^M:2PB&FX2;M1
MLD(.7VJK<_M)RU^U*J]AWBOYSHK$YUCF@;.('78AQ5?N@HF>VK56O68N:DBL
MSG5QQ4[#YOZ;I$S%5^[<EJBK;$%/G.UV;WD"6A<^?-Z,].&G.K+8:/W<5JK?
M-GSZU+*T\W+Z,?TR&/RO#Q]\+.=L3_F\AT_4Q$8RG?6&C#0<LAMY3T(20TW"
M3=M2IUFJQQSMP\A)W'U;Q<]D\QN?,4^3G?-3VGRWND"%Q]7\//2ZG8*F92'I
MGAQZK2+!"D/OF9@K-XBX\GJO]D2NW/S2_D#'REZ*O;?(9XX.BP6L\O\`7O"?
M<SL!Y]S=G1VSC+<V_G>5EMCYT:]D?.?=S&G?JYR9CLK45;JG/AYG9K3B5;AN
MNT\_G9_:?1$--PDW;1X"?@#T/QCV?Q@][\0]O\0+169R$+KYO:*P6*7LGF9[
M)X5/0)?JY8ZX>Q^`>_\`@!>XB7B#HF(>8+/Y1[7XJ<WJWG/J9XA?Z!?S@O=$
MO9XQ/0/K1!VWR'O*_P"Y^&>YG81Y6][9N:^C=MCAR8RY\FY'+IZ=9HQZ,33W
MQZR7^]2M.&[(Y?O4-'3\Q)K*O]AJFX2;S=&OK&/%WAP]PUQ4R.+'O'G?!Z34
MCO\`*?09X[=W9QG9']`BHS76#U'/?PD?YK>N877'B/O1EN.7HPXS*B^D<AY[
M8>/6>?\`N\3."%FH)(S+YGM]DN'JCDP^ZHSVY\$8<_3H,,=^&W/M?([Y>"EC
MH^<VPV?<<C7NT#;T\$M$?-PDW*``````!4?-Y:TE0AO=/"R_PDW"$G!^DU8K
M%SILV1^,;,D=ZC#2!Y?*PEO-7I]?L``!C!3U?3@SQZ]&W+Z1N>O?&Z.VQ\=D
M=GB,<L!GCF;;)5[@<>'=]CDQ[/M<6[H^1W.3K(:;A)NT``````#RK==J$6[R
MB\4<O\)8H@@KS`0Q8,8V2+5STC@,KS3[H=<72OAQ^]>:^G``"MV2`3@VX[EU
M:.G28Z=FLUQ<UQ3IQ]@R^?5Q][.340UBK'95VRHW67/"%E8SW8?21WQ7=$7.
MP,]:``````!YI!>SPY3:OZM+F>8````````(Z1%1SY\K/NOXC[BQ,^7IA)T[
M_G'V)]R^;;C&)E_A$97.)J`TR<::,=N-=<S64>B37D.XOT]YM9HL;3N4````
M`````````````#SSNT:^^>AEKXW+'YC&W3G\,<LMYJ?,B/L$AAMQ_.U9Q\LM
M]*C'W[9+YHO]:RA?F?PP9?*RE8A%SGO+<3V1Y5?8F`H``````````````%?V
MS8A--A%1X[T3S_[?12>NVBN=$V6$38A$V(1-B$38@,;"*S'W8>6<?KT/9YQ]
MGH$^?,A\O%)]1.T2@```````````````````````````.7J%1K/JA*'?!0``
M````````````/__$`#$0``$$`0,!!@8!!0$!``````,``0($!1$2$Q0&$!4A
M-#4@(C`Q,C-0(R0V0$%"8/_:``@!2``!!0+N>[5B_75%UU1=?477U%U]1==4
M775%U]1=?4775%UU1==4775%UU1==4775%UU1==4775%UU1==4775%UE9=97
M_B#U8\DZL=KU!G%Q1G)ZL6+.JT5$(69PA=GIN\6Q[1D3%#-/P4*\%"O!0KP4
M*\%"O!0KP4*\%"O!0KP4*\%"O!0IQ/`/'&8OIFN'B>G.1*OP69/"M"[8>?QS
M?2'765!]8?2_]1*TCO\`:$M\33X@BGR!,5Q142CE-`+S1\F4"0*YS1KCC\T"
MDX_H6)S$'GM;E9LM6:O>C8(4C"%XK#N+D8#+&S%Z\\K'4>4@[QDTXV/4@O#K
MU&ROF$T#P*6`82ROF2^,]8?['=HL3*0B\<JVHRP-`QH`A+*^<,K%TQ8$%UE5
M,[;"92$7'E(N[Y2#.]IFJ0R8Y3)E(LX,E`D^^6J;EU\UYI^7='D4F)KK+C_J
MIWEM9R;G=](O/74NL7GKJM5JM5JM5JM58'SA'C6!)9`>^I4ELMY.>VJA$_M/
M,I;A-24Z,2CNTVKMC#.Q;'J:=+J&N46#"F9PV+YG)9ITNH:Y18$!_LR9WWTJ
M;6%;H1$*B9Q6,A-Y6Z58)XEQ:@"->LKYG8-:N]@I<9#C4_9H1><WQ3;/L@3W
MU^Z=F#38D./E@F-"+A./?TDT(90OO*MY5O*MY5O*MY5O*MY5O*MY5O*MY5O*
MMY5O*MY5O*K4INZDVZ+LXR9(N^5D/'6B;3$XX>^U/\QPN;)!NS:K6/"S8]3C
M_16_2(O[:/HKOHQ_LN>L#&R\'%>=HU+#2NT9%G,1!H=HPU7M]2%7_P!N*TW(
MFG+/V:KZI$_93])W1CNL=-K)JDW1Z\H5Z_K.ZS:A54\J>2'EC,AW`$74RVV[
MM@)29(S9R.4E"]:RFZA5RP#.V8K.2SE2UU/+5X()AV`]]O\`+NR$-EMM3%R,
M-:>Y]F,'M!<$XK-&Z.`K.0'$=&T<I+'J:-R(8W;T"#JB<UBZ)Q6:-V(87;L"
MC'^S)">)Z%N($7(!A"K<L2*;)3YH9($FNE"4F/B_==`Y*P32`0N3G,:G[-5]
M4B?LI^D[AB&4AM@S.>#1LAK=)7]8G?1KAN0PQS+.<)BF$LQR^Z.)S4FKFEBY
M4['2EKN4,^:VOZHI6*MB0I[NOQ(."CWV_P`NZW4ZE`QW"8D.07A*'!AC."%B
M$L436&*EJ(,`0)C-Y)XR$H-BI:@KPKQ,"!X2Q3ZCQD(M'%[96I5XBZ<!B-C)
ML@&Q]9&IAM)\650Q3Z[!AK\=)'M](XWK7#0IUQ(C[BB#SXT6-XRJ6+W2"/B%
MW-NYFG-UK)'W.`./L1.I,[QL-H6C<Z,MNS*W8V_-2ICN$."-2X#7=1E%P5;-
MB-W,6#]58,:=X-297@&W+*Y,UF$\;9ZK']UO\O\`3S=0UNMB<9<K9#M'8GSU
MJ9[;T!3#0[K<)$I^"9!6ZO4PE3L#=X6YL''%F\8M&/Q2D[%Y&74.B'EL%DW(
M7NR-%RIQ.RC%]85I#=MXR-%-%PPK0F,(Q\M(DG-BK,P#R./NXU[8Y-'M/3E=
ML7,'.=:WW6_R6>LFK!#F;@IDR%LLL?G"@>UE[=F=7*VZQ"71"HV,Q=L3EXF*
M%#-G$;(7H4*Y\I</(&4NUIOE;VMRT>&!#F+@RFR5P\J&8L5S9VP6O5'EKT59
MM%MEJW[%)BY'(0?!VR6JN>N%K#J7;QY>*WEG[1ZR#FK@GG?MDEB,L;J<ED(T
M`&R5P\@96[6EXK>5:3RJ]QI2B;4FCO-WD&3L,4][N9UQLF"^FAX2A\A`ZSCQ
MCW9';TEWD%'Q.S%->O`(]S)2QU.]8+='D+,Z,<O;XBW;M&]#*V8]]O\`)=I?
M3X<$+&2RU41,<S:O"I7@"R-A6J-:%[!='BL<>UGZDA+-%>=CL]4@4MRK"Y7^
MRO\`^-XX,3Y`M0!:ZR[[L)@O=>T/N79K]?:0'R]G"[;F?+R9+%@VX9=IE@ZX
M[&0RU41,<)]ILZ5R93L[4A-9&I"W353T?<5]"_=""\E`,8J.LH;5M4&^1_).
MI00;48J]CFNAGACD4L.0DRXW?"87>K'$$W0PLPJUC'K!#5>UDPXVP/OM_DNT
MOI\![IDO;8?L5[W#K9U.SM.F6^?P&K7K+-">%KLY8C&=@\*P'?5[_P#C>']U
M[LK[%@O=>T/N79K]>1!U-#'%X,C9)U%R8.FP:[3+LY[ADO;8?LS@WAE>SEB.
MR[8C6IJIZ/NFVIH"?B@QG?C,A_AW1G%HO.*WQ3RBI;9*K:>O+<VL20FF+"2W
MQ92)"$N8:U9<HW?77OM_DNTOI\![IDO;8?L5[W`U:9NSU&\2@:SE;>29VT>]
M0CD:1:5NM,=/(WW=M'O_`.-X?W7NROL6"]U[0^Y=FOUK)`Z;(8BOU&2O>WKM
M,NSGN&2]MA^S*XWKQ3J6ZY(4LC>[JGH^[C9S/.$GU@F+)F%^ON>4MTI26Z2U
MDM9+R=JA8<L)`@[SJS3N!QS&.)'V,YF`RE&M&=6<81;716_R1`B,PZM<4I1:
M<>AJ=STJLI0A`<"8FB60*=>JGI5'?-ELU+..S!`V#9ZE`?G)P5H]!"I6')=#
M361/5J5Z%^@>V2L`LA@$%9#)PQ\LC=Z^UV=K;`NS2CT--$`$R'6`&4HM./0U
M%FK%RM?QF9D$MK.U&!&+RD&'&!7"N*OHS2VZIN*+M.&H_P!;IW464OOWO%M7
MU9_$HZ>(,[^*0U\2;7Q)-D&9>(KQ-M/%AJM>A9);_+Z9ZXK(B=FPN[=F6UJ8
M>K4DBVJX7&<)FYPKM'YTL%[JIW:HWO5ZN6D+LV*,HQB(;Y"G%QE&5D0HQ,V0
MIR=GU:S5#;&3LT)WCV9CK3Q-6E+N(_+>G'<9Q1TB.&[IPJ'ZW3>;N^C3UDVP
MFCP(GB33:5,S[:C"FO#:Z\,KKPVOJU"LZE0K1715-/#0+PNL@4A5YV_R^OF\
ME*K`02VC&I7<?W9GV;!>ZYW($YZ.+/?C=H&H$[/W9E;*9$ERP'#W#AC7N5[=
MFR2CC'D>[9)A+PX8*-SJOBK_`#3GNYGYF4(E=^(JA^MU%M&?=,KP(F<BUFM2
M+=-1E+<#2%R((.3A9<;NVU0@MKLN.+RXV:(@P"K?Y?7S4GEENS8FZ:R)C55F
M?9L%[K=+1JJ7:&`VNY`U]^SGN%JM.I8JYNU5'7[05BRRPGNXL9)@*'M&>*IY
M:I:E\,OQI>FF[,;=%;]TN4C*+_TX,M5J\9<DUQ:+8VFWRVJ,-$1]MF;;8RBT
M)/&,$\8Z[6V:1*P]!2[K?Y?7SX''D<'D1U99'+5Q55F?9L%[K?/*Q>QF'K=-
MVAD)B]G&_OIWL=;L$[/4YJ[6Z2WA+408J$,;F(6^SX8!9WBXW>0_@?[4W_MG
MT<WR*$Q03G$A-K'7:I2U3M\WE%MK::,ZVLM&311/*QT_F];6/3NNF?25;<NG
M=Y=-YP!MFK?Y?7O#J6A/@S2D'LZ3NR@2&Q&&JV!9/+8LP;(;5P<28J[T^(I&
M<MO%6JLHV;,&K8VW;G:P>ZB2O9JS<UJPV-PA2E^('ROI)Y;2+0B=B.M)LTFW
M-PB1#["#/ODVCO\`(OE46BFG%<DR68Y0Z%:YFZ@G'S.\N:28TW>$YSG!B-)6
MW_J?7[04YQLT,@3'EL]H2&#6K%MFA'8/_2,W'>C]U)UN\E_U2_)M5YK_`)YK
MSVGGQU`-Y]P[A@H64@[!F\HOOBVZ32Y2:"W[+?J/KNVK$Q5$CQPV/BXQ##'_
M`$[HG(#75:IW[_\`JT^9OL^NB:"9G99%Y.6,6A'N?NT0[9Q./*CT#:H&3::6
M_4?P_)_7?R^(KEYA/-U\NK-!?(R?CA"D"1DX8HM#<4E2P)/\0S%$HY(J'FJT
MT,HS1_A2/I8C+?#[?#L\]CKC=WXGT=N-HMU18W"P;Q"QM\1.O$#:$.YH3J.Z
M(`@G^*+RBA9.V)!SD'0KU8_\&2N5S,`K/L(T?NM5JM>[R31U;D848UI'EMI\
M?%07%07%07%07'07'04&IP1J-(R-CBC=VVO\6B#<L`6.N/<!_`.";EXR+852
MK/-=':92@2"WP7)!1Y)+HK14.KQ/L*MA5L*MA5L*MA5L*MA5L*G$9U$)H0:J
M39/$RDC53@^/"0=@?PVC+:W^C]T?&5SO8Q5@*?R?OJ"X:O\`-FK!.Q\(R+6.
M!\;2F0__`,__`/_$`"<1``$#`P($!P````````````$``A$#$B$%0`00(F`3
M%"`Q,D%0_]H`"`$#`0$_`?5E965E96?PAM9036EYM:CIE>%8[V.X',/%L+Q!
M'+2@)<?M-?Q'F+2.E:E:*V%$[VE5=2?>U'571\<ISS4-SE,=@RI4]M4W-!ZQ
M*>6ETM$;^G3-0P$]EACOO__$`"P1``(!`@0$!00#```````````!`A$2`R$Q
M41`@0$$$$U!2@10B,F$P<='_V@`(`0(!`3\!$H;E,/<IA[E,/<IA[EN%N6X/
MN+<'W%N#[BW!]Q;@^XDH+\7SN-%7BHUY91I_!VXO7G9&*<2$$UF0C74M256.
M*I5#I3,M354**2JR-*9"BJ59:FJH44E5CM[$H#4%D2@D.,43C33A8J'EHG&U
MC=#SHF)XK"P]61DIJZ//AL_&B)9(;RR*RH258D,EF2SCD05$5^W(3E03DD22
M:J-YHE!MDNQBZF)IPQO!XLL9SJJ/]L^@QKXRKH]W_AB.K,?L4C;^SR/,GD2Q
MY>&5FPG55YDZ#;8Y-ZBDT.39>QR;%)HO8I-#DV*;0Y-EU7]PULR<MAMO4<F^
M&97+,E2N0XJ2HQ>'6YB>=@SS/IGBJ,M]>JE0^1Z\?[ZSX'KRV,LD62+)%CZ7
MY/D>O&]CE4N9?(ND7R+GTOP?`]?06GV%^^2G4-4XMT$Z\:\E.E=K7,G'N70V
M+H;#:[>A5]4__\0`21```0,!`P@$"P4'!``'`````0`"`Q$2(3$$$!,B,T%1
M<3)AD9(@(S1"4G)S@:&QT11B@J+!)#!`4++A\`5#8Y,5-5-@@^+Q_]H`"`%(
M``8_`LQ!RB($;B\+RJ'OA>50]\+RJ'OA>50]\+RJ'OA>50]\+RJ'OA>50]\+
MRJ'OA>50]\+RJ'OA>50]\+RJ'OA>50]\+RJ'OA>50]\+RJ'OA>50]\+RJ'OA
M>50]\+RJ'OA>50]\+;L[5MF=O\H),SQKZ2Z,&AJJNGN=_P`+5=)1HX0@%6?M
M%3UP!"N4&W2FQ:B'92Z_6V8XJFE&%!^SA-;I>NZ`7JR<H-,-F$7-G<*TKJ!6
MWS.KU,`6VD[%MI.Q;:3L6VD[%MI.Q;:3L6VD[%MI.Q;:3L6VD[%MI.Q;:3L3
M6F<EC0`!HZIP$Q-G6Z%-]?WDC1(:!Q3'/-2?!>YIH0$T:0X_N''J6U*:>K]V
MZ_>G1@]$7JJJG.&X;RF286F@XK"MU<5O18'&T.Q;U7`[QP5ZDL5HQU%;=5`\
M0AU\?W%J,5=:`OJK,C([#JZS0<*<\S26DU5@-(N3GG<MF[,YE@FBTSM1O6M2
M.O,K786]8O0<TU!4OKE,;0N??=[U?%=S5IA5IYH%JQ7=94C""UQ";S52:!48
MPNZ\%KQ=A5IAJ%:>5JQ=I6O&1R*+VFTU>2M[`@[`45(V6NO!4>RSUA$6"5I[
M)IP0%@CKJJ,9:ZR@U[;!/@263>M:S3J"_LO[(T<VG6U&W3JLA?[=.MJQ%OJ%
MRZ4?N:KB+2UBRSP`6J:'DM=P/((ZS*<D;9!Y#]R8](YEX-H(RC*'NH#<1CF=
M]V]1GKHK/I',V0^C4KK<5HAT(]4+225H<`$'L)LFZ]:(X.P4OKE%[R0P<%I(
MR;.\%-X&XHM\UERMO)#>I:1A);OJF\T(1@+RBYYU1P6DCK=B"@/-=<4X;FW!
M&V[6]&J\4[W.3F-X7GCFBB&\5*LX#>5XMSK77OS-_P`WH-&)-%=(;6:-W$9W
M@6Z@TN;5.:[2DN)UK"Z64]BK7*#S"L"V72.WA.K6AW571+OQ+8_F"V/Y@MC^
M8+8_F"V/Y@MC^8+8_F"V/Y@MC^8+8_F"V/Y@MC^8+8_F"V/Y@MC^8+8_F"V/
MY@G`L(NKB.']LQ:<"B-[2H@,+-5DYZKT1OK90.YMZ=S0L:6SNH51PD(ZRF.,
M9`!4OKE,]ZE]7,_FHU)R3>:DYKQ.DL_=*H=*1S0\4Y:2/I;PM9A"U9#[U("*
M/`S1^S"EXW9GTPJF_P";U%ZV9W-1\L\HOZ;L%K.I@-5#7Q3G%]:4^84/KYVV
MP[6X!,U@"TUNWIY-'6L.I:KT;J'<5D;@^D;GV)!1"$']FM",W;R%E;II#]GC
M-AK`V\N_P%3OR<OBGCI5KVWB]11.<[2.`UBV@<51K)G,M6=(&:M5E`9E&D>)
M;(!BH&B_>FT;*]Q%HM:R\#K398G58?`=ZOUSG[UZ8WC1J]4JSNK5%_I%.&XW
MA:*0TI@41$ZT\[^"L.UAZ7!2^N48Y.CN*T<5]<2FMW8E.X.O"T<F&XK1Q7@X
ME-YK2;G(LDN:;ZK5=:=N`09TZG>O%C5''>M:K?<@8AS-,5,_=8IFCD;BT?!6
MVJRUEFN^N9O^;U%ZV9W-1\L^4:2-KZ2&EH53HVY'`:;['$:OQJO),FJ*UU.S
M]4^2**+=9<T#BH?7S53BTOLDUH[<K$;;3D6/:6O&(*%D@5QJJF_FI8V-)<*/
M:!_G6I'N8[[4Z73V;-^/#M4&4OCEKIG/D#!KC#Z+*I8H\L?5H:'RWEVL-U%D
M$#<DF8Z"EMSFT`IP5,ACRR&4NOA<*L7^H>)DOR@.Z.(UL%)E+QET<<PJTQ7'
MD531R1VG6K,AJ?`=ZOUSMUK)'4FR:2U3=93F<11;;\J:P;@K+QR*U9&GFM>0
M?A5E@3GZ6EHUZ*%'4<!C3%7RBG)49[RK+PM644ZPC;=:.Y`Z;#[JIE#FM8?2
M*L9/E<3R<&U59)6-"LMRF*UO)>%I&.H3YS;P5<]B\9)W4YHHQ@%Y7_F$7^>]
M-CL6M7%63#8)W@JH9?Q*>1O*9'6S5-?I:T->CF)TV/W4UE:TSS4<X>-W%=.<
M?B"VTO;_`&3O&2NPNKUJ*1U@`.J;\Q`-#Q3M>W?TN*+M';!'O",I;2Z@'4@V
MS7J4KYQ:;&ZPUBT41.C<RT&UZ*<J-J:8NXE-E?/(Z/[1HBTNNO4VBFDC;!&V
MMEU+R?[K)XCELD#'0M)=:NP3FQ_ZV^1U-QP^*?D7_B,VJ*VZGZJ'(X)Y"^*,
MN>X.H2HI":NI9=SSN]7Z_P`)&V!EHA]<:)DLL-E@!OM!,R<'4#;1ZRB(([=,
M5#'(*/:V\9YV,%7.C<!V+R?\[?JA0T>,%LS^%62)B.NJ\9J-0:,!X<H`K:E-
MUFJK1N%>AN[5N[G]U6HN(\WKYJ.,P](TK:SZ9E+A>T-O*O!"%D7JU(".%Z,D
M,KHW'&EX*,LDHM.-+<CJ51);K<$&/`%,`."_U*G2CD#Q\5E>5NN,\PNZ@LF=
ME#+<0@;5HY(1Y+DSXY'W5I_=90YQH`R_L"RC+<GA9):U?&;E/D,MSND!UYW>
MK]<T1AD+"77T1<Z0R78.5IV42>YU$6Y272LI<=ZVAC;N:PT0.E<]N]KC5?:S
MT+-1UJZ0QC<UERTCCE36^D24UN4/TD1Q)Q"TCKW&YK>*JZ=PZFF@0.E<X>B^
M]>4/63S-D(D=9JY![I72`>:55V4/'4TT":)9'21'$.-:*-T,A:2_$(N^T.-!
MO6DF-74I@G"!P%K&Y"N4/UA:"?I7VGM=B>"A;"\L<XUJ%+^TOI'$YY[%Y2]9
M/H9"RU:K3W)Q,ADJV@M;NM5=E,O>3<GRAY>U]P)Q!5>E([HM5790_DTT"VKG
M#T7WKREZB<34E@)SO+;CI77UHO\`[!7T[P5EU&X;ZIKVC`UJ5KY13D5?/\UJ
MS?-6NGSO5NP`3B&C]%9VA)PX#WJR'4=P4%@VAIOT4THD9%K4!EP]W$K*&MRG
M2AL5MCS%9WA9')/*U\4[:V`W!/R\3L:RMT=C`5HI(WOJT9.UXNWT'U4,DF6,
MBM/(<XLJX\A1/B#PZ4RV&2.;3X(13S-E8(R^YM*W']5%,9]+:.O"(:61SSN]
M7ZYH/63&R"K14T4IL-JQMIII@@%H1$VQ2E**6,8,>6J".4NL_=YE-D?.0]E]
MDNK\$^-C'OM`C"@S1,W,B:I)Y!71W-KQ3HGCU3P.;)?P_)0QOO:77HPF-EDC
MAAFR(G$V?Z5'R/R0]F%E',*'*!NU"I(O3;\E8_\`3:`LMG/GL<!R`S9+^+]%
MXQH<&MM4*E-AM6-M--,$PC$.">W<P!H3\I>*EILMZD]KAK`5:>!S0>S;\L\N
MK6KW`ZI*V0][#<M75%*$TQ6%3Q*;4UN0S>\YZ[_B$89VBP[SQ=VJ)C)=$(\*
M"J!D_P!0>]S35EIMP*EDDRRT^5E@G1_YP61TDJ<E&%GIX=F"DA9%EK'EU6P4
MJWM3)6Y287F%K)`!7<H70Y522.NL6<5(2)<ITCPXEESF'CUIKOVB2'1D223"
MFXX*.,Y>\P1FH:T4/;G=ZOUS0>LAZI64>S*;SS93[5WS63-C-'R6A7@*E6&<
MW..Y/DE>YY:TG@,T;CYT35+`XT+KVI\KS<T*JR7\/R4'/],^0\F_TJ/D?DA[
M,+*.84T=+Z5'-0/W6J%2R8VWFBDA]&!U>=,V2_B_12>R/S"RCV93>:D.YU'!
M2Y.3K5MCK4DCCNNZSF@]FWY9Y<.F_%5:TT[532T`^XMO^1-Y(9KRL5BL<PCD
M/BMQ]%4JM1X.ZY7."&L+\+T`YP!."Z;<;/O6(X*R)&D\*^`[U?KF@]9#U2LH
M]F4WGFRGVKOFLDE8*Z(NKRJM)'0U%"#O0R=C``[S6;U1,H:/`JQRHZ&0$;P$
MT.$I;QE)H$0LE_#\E!S_`$SY#R;_`$J/D?DA[,+*.8S31[JU')1#<W7/N64^
MR=\LV2_B_12>R/S"RCV93>:!;02LZ)X]2UH9&N&\!5?I;(\Z4G-![-ORSRN-
M[0\GF5:=DST0,E?UJ@R:5-Y(9B!'7WA;(]H6R/:%LCVA;/XA64-*USGL&I11
M.^S/J!V(,,,II@-X"/B);+#7WG@BUF3ULFXEQZOU*L&&C6N/G'B+_FK#8GD,
MW;C7K0'V>2A%5H6,DKC5XHK\<SO5^N8"6-CZ>D*JU'!&QW%K0$6N`+3B"O)8
M?^L9BYV30DG$E@5AC0UHW`*T[)VUZKEXF)K.M5.2PU]F$S0R/CA++@VX+]JD
MD?&1SHB8WF1VX62NLJ&&:-KK+!4.%;T',R>)KAO#!F\E@_ZPH]-DXDCK1K;(
MN38X,C$<AKK6`%:D@C>[BYH*.BB8RN-EM$P.C+K?!:6Q8`;9HGY0X=.YO)%K
M@"#B"O)8/^L(:6)CZ86FU5J*&-AXM;1%K@"TX@KR6'_K"-B:1L;@"VA3AE<C
MWL=OQHG:%YD>1=JH-:*DX*-GHM`S&STW7-3&6@&@'I;RM:6$^Y5!8/>NFWM3
M>2&:O@UWH.;T@:A`B&1UU:A6OLTE2,;L%30RU]RI]GFKR7D\WP5V2S=@7D\W
MP5?L\U%LI/@BQK'"@K>G>K]?WFCF9::O%SO;S%5?E1[G]T'@%[QYSMV:DLT;
M#P+E6*5C_5*VK.\H?7_11\C\LU'Y1$#PM*.QEL8<W<*%5EG<\<`*(-:`UK1V
M*ARF+OJL<C7C[IKFK(]K!Q<:*@RF+OJH6CF9:'R7B\H>WUA5:V5$\F*VQI<_
MTG9[.Z,?%-%*W'=571$?@"OAK7_C6R9W4WDAGU39/&BVIK7&RA23=P0H^BOD
M^"-35/BE>6@:POHNE)WU_N=]&^2OKJZ1Y_\`D0M2/'.15TSJ>U6,O?7G]Y%[
M+52*7E.]7Z_P`@A-)7B\\`K$;2]Y0E<TL^\TYLC_``_TJ/D?DCDD;K+&]*F]
M.=&6M8+JN0;+0VL"$_)Y'6K(JTG@G-#CH6G5;^J$K(Q9.%3BFQM9(R8]&BTD
MI#Y@*<RKRZ25Y5K16O5*HQQ;"W:`X?\`[X<K^+RA9<0:'!;9QNX!&L[FTZ@O
M*G=T)O)#,X`X%.QZL$-6Y=#XKH?%=#XH:EW-,!&.JK/V=X'&VC6"07;W7!4,
M-D8"_P#S@K'V=]D>B4S]GD;K6KS6F";6%UN@O!1>8WN<;Z5P7DDMV&LC9!OZ
MT[U?K_`3=5!\%++YQ?94L;L'-S9'^'^E1\C\E;RAD9<[[M259R;)&M'7]`FZ
M:SJX!H4GLC\PG1/&&'6FQZLC&W"TAIXS&>.(1T&OYXIO0>PV7MP7C86/Y7*R
MWQ<A\UV_PBFGBA6.W<57[+C]X(_LM3ZP7DSN\$WD@<SB+%YWJFIVKH%ROC(5
M-"[M51&4=2]-(],(T9,2=6Y&L4[Q=U[TYABRAW7BI-7*<>&*&IE&&+4[4FWG
M6PY(>)EX85SN]7Z_P&DIJR"J?#,;+'WAW`IXBE;)(X4%DUS9'^'^E1\C\E*]
MWI4')1SRC2N>+5^`4,$8:+`)(;UJ0_\`'^H1R62R^F#G85ZBM0R,Y%/@MVK.
M]2/F?1C'W*WHQ;W[G)\D4KFV16CL$"#0A-)Q(\$IJ%7!MQQ6M/&?<%M(Z\5M
M&]J;R0S&YQO0HQZI9D5;+^16$O:JV95T'IC1Q:@=+)=@."III>U;>7M6WE[4
M?'24X55=/+VK;S=Y!VD>ZFXYG>K]?X`P3RL:=VM>$?L\T,S1P<K642``>:S-
MD@BC>\ZO1%=R8Z2"5C:&]S"-R?-&PNB>:W;EH8990/1:M.^-[GN=T:5=S*FB
MFBFC;)%2U9(1K&7L])MZL-GE:/1#BM6-P!\]V"CB@?KQ\<'+7CDC(WJP99I!
MZ-HE-DREMB(7V3B[PY8_1>5<ZGNJMJ.XMJ.XMH.XMH.XJ.HY;-G8G-`-`>*U
MBX>]4MO6U/:MJ>U5TKNU$@UH*JU:-UZH^^ZE6H6<I%3=9+5?/$'7]B(;E+#K
M4%R\JCW4N5V5Q5I?<B&Y3&XTN%%KN!%.&_,6_<K\_P"`^U`5C>!4\"BY@#@[
M%I3HXX1':%*VJH11-J3\$U@P:*?P=?-D;\?W!V6._%7:+W!?[2_VJHWQ(FTR
M[@G5I5QH*(NSXAXX/O0:6-8^O2<+D-%)DYX45:Y,*(F-^3X740\=`.*\803Q
M"/LOK_`4*ULF9^&[Y*[)Q[W$JS&QK!P:/X2K1KLU@K0P/AD@,K7>L(ZJYL=$
M=6.BPCOQ0`:SM36#`"Y!OA=.T.#[T!+DC.;51M@'@X40I@C[+Z_RB5OFEW8?
M#=1IQ]%4?'4<D/%7K9%;(W*V6TLX)V5/87;FM5DY-5O5N1$5L78%MRUHC3BW
MP_%RO;[UXYHDNI7`K7M1\PK4;PX=7\FE]<H5-_'PB;;A5;1RZ;N2II'*V^1U
M/FK<FK$$&LBA#1_R*NBB[Z'BXK_OH^+A[ZM/R6%P/6BYH#1ZU0M=OO%X\.K7
M%IZEM+8X.7CXRWK;>M29O+^1R$-Q<=ZZ`/O5;-H<-X6KX5RUR'.0?E#[#.&]
M".C2T;B%LHNZMG'W5LX^ZMG'W5LX^ZMG'V+4#17@%Z#N+5XLB5OQ5'`@]?[C
MQ<I`X&]$NZ;30T_D-O1RG@*MHMB_M'U6Q?VCZJ^!]>((^JZ(<.NXK7AD;\5O
M[%=>O%P./715>0T<-ZJW)WVO2)!_5;)_:/JMB_M'U6Q?VCZK8O[1]5L7]H^J
MV+^T?5;%_:/JMB_M'U6Q?VCZH^*=?UCZJR(W\ZM5F2-\M_\`N%I7BVN9S((7
MC(B.L7CPY'D8N_D^"P'\$39L.XM56>-;U8JA!!X'P(V;P/YY21@*K!)9^ZY4
MDB/,(22,+6-X[_\`W!__Q``J$`$``@$"!`8"`P$!```````!`!$A,4%187'P
M$(&1H;'!T?$@0.%0,/_:``@!2``!/R'P>O5(",[R^YWE]_P222[R^YWE]^*2
M7>7W.\ON=Y?<[R^YWE]SO+[G>7W.\ON=Y?<[R^YWE]SO+[G>7W+-%O3&85Q'
M8_Y`2^4Z@'7JZ<H@,:PQ:FO+296X"MJ]]YFB1,1@P%3N6C]&9ABJV?BQOJ3)
M08#9_L:HNRX&C@]HH99@NUUUC.O$LNM-8QLO#/0GZ;/TV?IL_39^FS]-GZ;/
MTV?IL_39^FS]-CQK.:45I>97'G#4\WB?^A<P04:7,K16^;_'/H08E*D#@_\`
M!!-1)/T!$4U0O_GG60[P;@W=Q4DN.;-5M/6*BRB&H\-24%>$VQ9I+0)6R>:V
M.>)T?5$N`NSV7QY2OT9D!28U;7I<=1-7G,,N*+KCTCW"S6=ZCZF86-AK5J>%
MRCGZRNOK*Z^LKKZRNOK*Z^LKKZQ*?&K"ERX2*X^ER(P1?`:-N8=);:Y6LR!A
MNH*@AY^&5+U8PMG(!11QHE(,XD'`T23OO&4G#(8K+>?6TY8S<W(H^^0=UQ1P
M@6#D?.>S_,<F#58TYI-(ZB!QLA`_P3#&;&[!U:<8M43QLA4J'3PJT\SNA&*.
M<T@]8XEPZ&&K'6#,QQ9UJ*D*U841>L<2IH)`-V?P2:&:#K3,>RW6VE3DN->=
M.J#>7@3'*9LB]QWPEBC9I?=3044UU$O,H.9WPC,9CE,2BYJBXS<VK;$M*K:X
M@%";+5]Z3!NVL(N\.."2O9*\_25Y^DKS])7GZ2O/TE>?I*-LT')47)I:)8>?
MA9#5!G>5>)S`)Y:RH:I@](9G6>_64RX:.9JR]_("."-8V,5-BL<&=]XPF`*-
MRRU@.@C%>>N7*V!SWAJ8M!J9F"%#43V?YB$Z+JLN8'KF8\6FL7B7NRU?$=+@
M`C2]6@4QQF\_/\DUJ+O$5X,E5?1VE3M!?`(9-28'X/@1HCH2ST7<Q$53J1F=
M1OKXY3MMLI7!XI1!;HF6XK]XC2W_`#$7;"4A;YRUR=6FI<-*F1<YR'.0YR'.
M0YR'.0YR'.0YR'.0YR'.0YR'.0YR'.0YR%CV>PU:^KP'3!3&ABIYD#_<']3$
M>5_;[9E?9^>?B6R8?5M$J.MHAWAU(3D'9$F5U!G?>,IAZO5E,G%"[*UB5G6_
MS*X.#\LIE[7/9_F-;8MBR;@7$5LU%YB%H,95J,N\0KK9$]#P5DI23NM$\"Y.
M1[QT."GOX--J.O6?`CV3P]W^?X/98[TE[G)EK'*@'%J&N^OK$-GD;](0FRY3
MV9GM_P!^(SJ6!L#K/*A+T)PCH'0ATG1U37&D5.B./8\Y4VZEIR9XZ+Z3!Y$!
MSQE7K\3$0?CR&[]D%2&MAH-&R'<C&,N:\X"8*[ZX+U]IUXB,0IKMZ2N69%S0
M=)MH*_P!=1>^N7CO)H";P<T.FD%D-)/C[F\_<E[ZXNAVQ5&7RF`<KT,)*@PJ
MFD5B#+5ACOO&6HEK`NHC9&QK$(Q@^03&>:[K$EY>P+J7B4777E/9_F5L8]>9
M+K6*4T8V2D-$G2V><J,3Y!G\9D]=QM\2M71L(<[%>;L\#1L]AO`5\FH[D1"8
MIR>GA\"/9/#W?Y_@^W3(TC'.J.3?29SK?IZ/2T%O*X*:,]O^_"PHM%T31HL^
MK>6@\`G0)*I64841+6=2N:^QFJC31T7I!BJJPL4^2@PEU8%<@\WK%9JQU)1D
MQ6LR418$#5Y?$*MJM`=XUE$8AI:F7$9)@6<31Q['Q*#*%*&AL%::5_#L^7B&
M_6<Y7!0WNA]PVVKK<)V_O--JKK-F#0U(3".LFD0X"YBG-W=F[TTV6]8,O6.A
MS5/9(BFV74U9Y6R:G@P"PJB84'/G-55K[W+0YH:,\H;JB,O:"(#JF?Q+>Q8M
M#!*^3`6\DYJ?4S`5P$S0*IL5E9V1!K+`Y5RF&I7N6.U$9MNH>@E3UEJ8EW5[
MW-FZIN]_#15:^]S8\U=5?C<-^C2XZX8<7:+X?M!02MSI@B-A%PWARE3$BU_'
MA8YA#@YQ=6#OY)9^#(-)Q(#*X.W0OWRP3E.\:RQ#@HU?650+$M>ZQR?S'JG0
MWETT=,KQFY8MI>C9CU](@JZ+!)PY>R7`1'HYVY-8^X:67(S\?.4[><&!TZN,
M9JTZB7G/`OSF*!YFF/?7S\>SY?U&3)PIA3QE*(#9U.3%/0@&XOXB?5Q@#S9B
M2Q9=>GC2T9WJJKP0/B`G3I-:=:.7Q.3',$&HXF<P&:"@_G=F`R)?4FDL]"O/
M%RP4PUTUUTD=%B2JY!4"3$6=/.J\6WJ\'RUC8+I8)M-]7`RT4OD2L!ZJ.I'?
MG%MO:"LX'XC6F]5]`B"+%%ULS&]A'IL^EPX*&>@^?:*,I,N\Z]ZAN);Q5:_"
M%P44[$KN55;`=M38"$#QA@&M=2O3Q[/EX$.2%NQ,Z&`V+XS-7X(#R):'*S)>
MN\1)R]'5WF5[Y<)YZ2X"L$:VT(JOK_I:LQ6VPU'B(KU+<IAO%J_$3DWAKTF\
MC;4)Y_44D,O2YC3T-6QEKLLN'$4\]$O(C(BJX#B,I_(=TIBEPP%4U)4KK@#$
M,2H;%TZQ2-71I3#-N?EC'W%:G6I1^_:-CJR<%7O4_9SW5P5_J,K*'0K(NV/)
M!Z$O(:WO89WAZIA?<\HA-Z&\B9UNZOHO2?LY8J:.[7BB0%"--MX:"JK;\,LQ
M7D?4HBK8,CF]#I#-A(;$?/*?@@YF]$2F<1@!,XP!0H^<2^B&`3A%X6YN]/.U
M,6:`UO=0GF)N]DTT%MUM:%^82\\(&5\"M,LL6Z#-!OQR1JLJ`=P'KQA:1U4S
M=?53#9R0%4'1E%R2+IO79H>K&\IZ=L'&,-H8'K<L;E<]Z^/9\O![C\0A)E>C
M1B)8J@HTG.QJ":O8M76:"XO)J"N67*G`$7<*EA?07,AW5&0\%X_();]0>.(-
M%M^^,&VJ/$VF(I'4G>\T#;1G$,U[0U*@`3R>#Z&$QVWBG>.+.Z\Y>!J5]S[E
MN.+SJOPLO`X\Q<_<KYGKH_;[>-U%CD+%L/N)8J@HTCZN`]8@'X0OY8,;F7=5
MK[D/2OW?@=HX/%ZBJRA35Z2[MYBKRRZW7/>*IGT>QN&VT3OF=R6!E3*PL]7U
M*3NG'PL]<]8"@NFB-=!A5H-#5T;\Y=\%O15C<E$.LSS`K<95<K1D<`P]%P#\
MEKJZM9?4"46=<,E0HKSMJ`TWC0A.)\LB<B\V4''507>[*^4?QQC$%>H]X)DH
M-N3:Z\>SY>#W'X\+]MX3VCP[SQ3-%R.H7)ZD?N7J.!QEE7UO2.'^^`<89YA7
MU#Z4[MZU(!8N=>41%JMSO>:>[?+^%7;>*=XXL[KSE*V?E627BU2G)P_,<B[#
MHO$#<">9OW_A>#MO">T1%&'T%?(PY0QKR4_!"W%,'H'AVC@\1([C@-,ZDQV*
MBZL\XLN(4IS[SD_3`O30*\_UX5.AMVYQI^,?T)^DE:K,\I?F6$[8F%1:6$/4
M,<E>:N%*H,KYI],<@?$U8OXBS1H<7M(B7YUZ)5UMV\&P74%2`M2---;>/9\O
M![C\>%^V\)[1X=YXHH3$SB>?8B4>`.(H=:R+Y^$1EJ-,!R/1S-'DRTM,,3R2
M#4VGO!]3E8U.]YI[M\OX5=MXIWCBSNO/PI0KU]DER%OVNM3O/%_"\';>$]HA
M*=6-!Q2M)F$>R10%#>,#E?UX=HX/$S29#C8(88:*5-/6#*'@$_,%`!H4?F<"
MZ)]OJ++P#>M$T?A03(N9DYA+K24#*RK4SBN);"L-YJVVA6SUY0RAE64@'C$0
M=C4;4K"\MF\TAIH#W?1E%F"<&1RZ/HF4AN.P&W5CVQ+CJ7J5>0KS?,E=1WBR
MUBV8&/%6GAV?+P&A<@.GK-AZ63V@0TH%B0%LO[-O!L#6B5](*T?5@\HVMFMW
MXLN+QU!E\]8J165<GM`\Q#Z$V^(Z:W9<O&4E+A#/.YU*;;LQW)&`":)2#$\Z
M\.Z?J:34U#'88;!*"ECB3#E*LE><+`.Q6])6JREJJIC-0%K<7E]8].*S<&OO
M\0\#4"Q)W3]3I*ZIZQHGE(U7E`AI0+$@+9?V;2HE8<-*?<]X:N"FY2#Z%"(!
MYW$P*H&[$9U]!/"\/R3`G3SLN/\`8VZ1088/6-BQUH3\4Y[/%[OKPM=.\=ZB
M>9/,CU)0[6CPEWZ$G.7@!&!7SU]("C3FJ^J#5L-C_4S,-J4Q[RG.X5^4M*&[
M@^Y7RETV><]TE'YG;?E$:^77C.SY?^AT1MG;F1TF\#_&%RQRK&EWI;\AX<E4
M(?2.@!K2U/U:,0-CBG5.V\7A4Z]QN5$Z@BMUM9PA\3>/^[*(!`,`F8'T3FM0
M?AX<A^$>\S`^B`2".B2EK5-E<F8`'`?Q@,`Z/W``#OVG3AX]HR[)?E73LD<<
M!1K+SADL<`H5S@./;2FB:8O=]0S-BMX$F4XDQ3>,'I'9)5'B>,?0(*NKN<(>
MD%#66=(ZH%YO:^\V=RJO"ZQMQM+Z.,SN#X*ZPM8`"]K""T6FK-3PG[K*)\SE
M+B=GR_H,B@!UY7.%,KZ^UB.UX5\L>).V\4>X`9M:772.$FS.7@2H:%OPQ]V5
MF=B?$(8J!HUNE?@W5$1_#5H7Y[D1'G8*%A;`@MU_$P1!J"OI%)6X/HK^;ROO
M)KZC!LLX,Y.,(&11:PPG&WL[`2AWE;5VQ6GG]>#:;X:5@J$*+K5N]HZSQ+#6
M.;F0?9,U.W6;+PQMQQ-@$U<JV0E_/U#UXW?/,,DE\Z5UO+-!_O,VWG/$189S
M*-)\YAC6PMR<7I[04SJY)6"B.^[+M73IT&(X/E0S>>O(F$3"[M.SY?T%Z:5/
M1"T]TY`/W"RM!XD[;Q0[;D5C8:IYUV=8MTE\0%U?QX8$GB\G9LDK"50,APL@
MCL_3?9'!%$U=>7K&GIM<&"`3Q:_N7K4Z%6Y._P#)4QL1*I5%MQ-+3%A63.9H
MKB6Y97,FVY96`,-"&PNB:YQ^H@&5^XK!BUZNFJ:MY6$=I0<!C5FK@:QB`&-%
MN/J+8QL1M?"D(8GE4\[VT@W1.I0?F'&554S,._,CK*A+6#NL'O$Q11Y7B^_E
MPBWNQ:,AV:^D5'9TA=9O7A=\/'L^7]`RTF'F%/UZRY&+&G,C5[CB7NIXD[;Q
M1MUR#@'!*RQ0;K:M_.4:V``85\36^C(<)N`OP<27"CL6GO,%+C'F7+"7B>@T
M=[Q@?1_K6L7_`"XKASVCED6)LP3Z"O6OXFRXDMPU,;[6KG)"P6'%]"!.9;$)
M_@\\CHD=?U$7*:SRB;`Z3&IWF(#0X*8$-U7DQ9KU,)88#I4!,#=%+,V9K]X<
M=@V8Y`C8L7>/;TEW`X%,<)D&MR1-#6S`*JHH:QNC'6"HK<MTLBHK9Z^'9\OZ
M`H5RDB\8;[L9SJ0@GZ]1?/;P*XA(Z#IAS1:0U;QQW+F[NHSGA"<=((U)555,
M$-NOJMF\X/&.GGPFSI*+V@*TK13JO>&L9W.E=>C+=HE5/1G-$3V,:*WX)6Q_
M-*!5;RNSV2&"^N7Z3^8_Y#\Q2O:?F."]-^915EYLP^4_18AH4`5("59G%[F%
M69*=F8:X>,%YJ!S&8I&"1Q855YD-L[:!ZRTC8U$8@D0IQI;#6U9F4VHEG<KX
M])I+K4;^-^I*+L(\.;#I<?H;AEA,S1CYBCEK\>&EFWT*_H;.P!;&,^50AI5O
M(M$1.T'A@CF-0[#BP](`>7]-GV!\F'ZBI2Y22AS1;CHZ_7A:_,X'NE%J$%H-
MISETEJ\JVM8A9I5TF#-%=;Q&L-*-8EWDO"IZ--`>I;*'2C$PJ^!H,'+E-(4;
M8MSC.TVH6F%\<]1E]U&RXG2K@.IUG!GN7Q_0@@".HRW`>J5@[1:LY89!_40N
M4!-ZVA2<9/!<^+HZ_7@KG&K,&AS<%XYP.M%M>D15.[,ZRO*VJS%:/B^+/@!4
M`-HD3QT&]'B88`JD)772MY;&K@_$WTU[E*BKABN$]R^/^1#=PD\S[_/&-P9<
MOP=3K]>`&<"IRN6R3,&,#.656&DSZQG"-1TV(ZUV%;ZX]8IP]$O9_>0UDFDV
M0AMZN?E,T_K)6ZWX.(G@G@EF8G?0<(QW!7I4G3>51:ZQ[3G@=7_QM)6-IQS!
MK^PM[,;5)3+EQ<G7ZEQ20"M"*Q+'!?1-@2JJ9`0Z+Z(@+;K.B\)BZP'Z1!8P
M6RAE6@NV_E$TT-K?B8X`S>\^4)">?TKC87L,S73^2O-1U*7RC<(I'H)KU>)I
M_P"'=Q%&/&%&IN)S[QS:/&/YB%"U9PW(TU8BS)K*<2"9R:PMPEQ[HT7(YC_9
M?2<F]^)E6FT)_/+G.A%%5\&PN7"9.1'CR1CT1N1$*E>%>"2HAU('73H]X18<
M,G@_\&^Z%[H=]=8"!X*E9@>TM(16<,9["D^`3Z0NUZ%09,N@6+>+MS#HD&?P
MF7WB=_Y#TJ5*E2I4H<IC:(MJ`@K"_.6A9M:A[QLM^X7<5:HD%.C?\=I2PTGB
M!_Q^4](#H7E_10%)9+XEW*EK5RU3E[Y!&5*V-9=O$]?^XCYO3,0JO,$7B\FR
M9$EE:M_WZO7_`(/_V@`,`T@``@`#````$/.(`.C-OOOOOO7/////,_//_//.
M,_////%NV&<N#KH``$_[S)5ID4EGUL,@P+%(F?&@V(300"3S0PU"L%EU`B-/
MK9K&$TE?_O+((5Q!7&G/`0O+CG_;;W?;RV;WQ?DO'_!O@30<8KM,-"O"-`-,
M.)+,`(,&%*-!!/`;M;_"H,2;60O***&`.#***`/+%%%(%.,-"@G@G`;NAJ//
M#/+'&,#-`"(&/(&'#.P&@[1Q/E'":5O///////#"*/.")(-//%\BE10UT;GT
M8XO///////.()&/`)#)//.WI!+,\V]D;13]///////##'////////+-6S^5]
MWQ&O&E%]//////////////////+/-XYQV/RT"2H#I>_///////////////#+
M'S__`#SSSQPZF9H'SSSSSSSSSSSSSSSSSSSSSSSSSSSSRQO[SSSSSSSSSSSS
MSSS_Q``F$0`#``$$`@$$`P$``````````1$A$"!!43%`83!Q@:&1T>'P_]H`
M"`$#`0$_$#)65E967H7H7H7H7H7H*\[[JWM3NYIMIID=MVJ<[79@KD;R-C96
M7O2ODO0QOHKY**B9D3*Q/2YI0V!=16^!*E&^D\^?ZS_HT.$?S@:F'O9Y%D1@
M7D8L,9R8,,6B8M"T72,F4IY%X&N,2_BY^/W2Y`MS,28=[O`U29:5\>7^/SFB
M3/8]D(0A$0A$0A"$ZT2TFQ47FQK_`+]CTI5VX\/*7WG?/X>W5O)YE[2U>GV$
M_>OP4?9!!!47U'NA!)$1$1$7J<_07L,3*5E=/U6AZB=6_O9?83UL1+[N#FNT
MYTZM&3;?4S2[8R,C(]M+Z<(R?0FJ]^>C_\0`)1$!``(!`@8#`0$!````````
M`0`1(3%A$"!`09'P48'1L7&A_]H`"`$"`0$_$(DS3Z?R>T?R>T?R>T?R>T?R
M%.7XFX\3<>)N/$W'B;CQ"BQ^JC7;F>YQ<V<JZ^9,RLW%,*S%$`(U>(AL&(I>
M()?(5>8ATB![RP0*?A"(NG*/9'ARU%CIAHWARU-1@%`F42BKYB>8=7@,#W^1
M$O/OU"`(`MA?,3GSIGW:'4L>?,D6T,O>-5%S):J,%0+L%)AEN6HBXI-!`UER
MPBF$62XD_M-":?`=U!0A6`[&S"L$`6DLL:R/KQ""F)H=HY8QHU6,NW:7"7:[
MO4<UM#(=^9%9%+9J*8TFLLW9AEF$&;LTF8Y8%0S4&%+LEOP0L"TX*`I>#HH_
ML00.UX8%+<M;K+I+I#77M_LLQ;RM\';3%P**ZE"K/CY_8@]G_?R:G'"5E$KJ
MEO*7+/3-3D/B"Y";4VIM1$M.D(.#1YF?;^36X@`48V(NH/`2G1FY-Z;D7*7I
M#2=C5YGO7]FMRNG4$J5P895`A2OC48KIT5/$S;*%\-.11P5TA%DN)7*8POB`
MW14ODJ)T=S$OF[W%+;+E\'K[B]!__\0`*A`!`0`"`0,#!`("`P$``````1$`
M(3%!46%Q@?`0D:'!L=$@\4!0X3#_V@`(`4@``3\0^B%T&`,1%HCT^NC5\4_>
M?%/WGQ3]_75J^*?O/BG[_P#M*E2I4J5*E2I4J5*""$*AA/#UQWU1%"[_`&NI
MS=?]0N.L08A34KV.TQ3RH('I"4FSS?.5XX([-HCT#ABG>T[L7O8IN3A7GAPA
M@T&")>Z,%Q()O%R84T%$[:28$T#R#!2E!%W:E06U]>,.$"10"B;-\#:<X\E+
MJ@CYD"MK"YP5T!11-<[:]7?.'(B#Q;R2^<^9_O/F?[SYG^\^9_O/F?[SYG^\
M^9_O/F?[SYG^\^9_O/F?[SYG^\';C#$')M*T3TQ5_P"VI:C<1E90H?\`T.0[
MM00'&--WJ!81QX#_`!2<B,L;YQF8HYA3Q_\`!F8T=D'/@?ZQF:T=U#_YNFK-
M-I!Z:P/1YNRDVR<(EI>-4I'%6D/OC$'U!1[[>'I^^<`8L,`A3;D]?OD^40[(
M+MV=>V.C*`&A4!K">AKJN-NB.P7=]]\XC&-"M$'?O?AT'`<M3<17P;YR()GE
MSE7%`!)R.\0`LA"T+ZYUV!N\#:;<I!9-RY3-`(HB@=ZN5--7'1V2[XQ4W^RE
MI'Q^<[#'K_O)[_=_O)[_`'?[R>_W?[R>_P!W^\GO]W^\GO\`=_O#+X`B800S
M77"DF;R@X#5D2B([^B@6H11.;WOXS=3Q$C)KYVP%%=#E['WPJ(L6=?1\,O("
MG/YUA6[:"K*AQRLT8['_`#OL#_."WC6B/4@_S@<\JZ.?`=^`,HD12%7A.!RI
M)+ENGLF_QFE2TNE[)TPN@:.JNP=7#,7H1+[`S[XH-(RSL0;]3/G>S`D'50#R
MX)(-;1Z:5_&%*/N\>R'\X\%Z9I79.CFR2T&U[!UPZ.@8E]@?YP*F:3?BA^\`
M+V>Z&Q'A\.?.?U@F:'=`E?8##@0S?/0BOXQP=9HSU(/VN)S@"P#R8^VGQ<NI
M@#O*8]W#AUFK?0B_>8V5'+KT%A/\"0F@XGJR\/3#H]="W/'-CVFL=E0/*9K+
M!71HPH5MJQ.HDYZN][,"9ZTCA6VG;\'*-DT<`\+UT\ZF"IW98"M01U/&'.$,
M::KO>N/<WC")SHFWKT=7\=N<OU;:.YD7S+A,UU?6A/.6D&3$:VWQ,VX!3UI@
MH22.+Y>IE7@MP>IOII^_C-@9')=_;"!56;19\2SXEGQ+/B6?$L^)8+AW6VK#
M9U>_0RFX:X$UK=;QR?2"+[9:?PN;]@A>G_ID0.TGAM^0^^*`402EZY3,%//[
M`YT'\I_8<=VDZ!")YI/;!],1VP,5?6_;*3`!65-]F/QQAJASPE9ZE^QGP'?D
MA**#E.W@*97_`$&BTP1`U?YP3L-1I%@^SO"0U'IHY>MU[&:+),%.6IHP4,A8
M:\-`U=?;/G>S'0@"=38/@(^_C$-)SHRLO0"??-1^=\)1\8AW)1JNE[/XN-R\
M(-"_E_C'Y(0+0]3_`.8<.<!73N`Z=I[X(-I!NC;_`%]&)B*Z@`>E'[&!N.VO
MH>7-IX@$\-!'$11(GT3!S8'%6&#I3HB-[3D/?$((D3LXR-;?>-_F_4@BD,!T
M=79S@U0<HW=71`\XMH4(2.H_H_/?)WQL'9H4L/Z&4^3!6YJ+M_!TQ=;+62HT
MUSKESD$V<@CM?M_PKKKKKKKKKKKKKKKKKF;^D0V%6K'`'Z'+5EW$CFU(5X3^
MS'2T,_/8??)C`R[*R?#C(9-?25_DYL06^W1^3?;.1DCZW`Y'6N/`.71[=\>B
MY8?QP@1,^`[\)2*J]7]4PL)E-]^GYF,->VIWSD%.^M83IQ5G?=@83)=]XGYF
M?.]F,O+7V`#\8G`O>$"Z$WQA/`Q<#LB[R,R+8:WB!@!DL((NK(;[8C5CRX>S
MQ@[7?^2;EAUAS0[.WI]`-4<0R>2>@:_D^DDZ<]JGT3\GW^GSO=GXK^7ZF6$`
MH6<9`WS'CI;ATKF)&2H0W3C3IF@=-202BUK7/;)I#G"JRO@RFX]L^,[8>?HN
M*E&`7J.;H]>V;(S-H&Z$QC4_>\7WE*;]@<Q/.G>^%5`$370/;V]1,OM0X/D.
M3SAQ1#=MH4BZ`DPJ=78%)=1'P/7A4P68V1A39MFGC-_T5F8V!&=93BF:)1PZ
M`>M['`71TPD$F#LA#2TT4TSC0\X2>$="+O;NR^AVX[+!&KWB/"*88JS1$8B.
MQ$G^%G<R(*#:+Q[?6-H<]73^1??#<S>((/Q@`B&.A\/MGV<?1/XR$)OO:/SB
M3!J]%+/9I[9972Z4-C.$5\9I"`%*=;U>TP4\XD'2IIO'?SGP'?CQ(NE7D0W.
MNO./6<LA#8#OD^7',(UZ#5^_'OE&0CID53V:8P(T\V<B&Y=Z[N3<(A!!H!WS
M'VSYWLP'H;3H43[`_?`&([22C0W$#[8@]F@R^7H?G'N%!")6J#@/-P0@^>"&
M]1V.>_;"C'[8^R&_C"E5!Q3)KQO;WR<6O>BH_P`?E]%@EC50-^W[<)5*<!N1
M\8LWE=`\\"/WQ$42)]$_)]_I\[W9^*_E^J0T90*MEXL,`RM!Z#KW>@:";QTQ
MH;>;7MU.LXZ9+8#LFJ!Z[,^$[8><IP&AJSH'5R7Y&PH=`PG!XG;#RL6P`/%7
MOBF9`.ZV.M(G":Q_<Z$@/[X^V&BD\[SW<:#Q9T,'+9K"90'!)/5P(G&)R1`0
M!Y1*B\1T;A,:V["`&"]D(T-8"A)R`8C&VE38/0Z59"%EK"3D776;RY1T%R'1
MJI2Z1R.[I_01QG*%XKAUOG[(N!N,@:H5_P`/Q'UT^#71F:Y.WYR%LT<AB&ZX
MM]LDB:Q:33/'/TU':8LFAM]W>5*NV@O<?UB#==0L]AQ83_*$^[)]G#/4:;7N
MO5SUNC]AEY\X0I!J<.5:7PXPQ]2Z_E,;I=NVOE[>,H0@UT7N.`5G143[.\YE
M"1::B['KG1*9TL;G2VJ!8I7?3ABM$%D*]5AXPTAV^#NT!E0T$+P6P/'WPV"(
M0#W@Q]1^^'GOAK[5CP&>6*^[Q]G%4(X:LJ>=;5[9_K\-.O`)98D>WYQ^APPR
MZ0`LK?&=8V2U==Z/68U%;NXI,6F@Z.#X4ST\L]'B\/IU2F=I6Y^*_B5GU-#Y
M3.^5,\!HZX\@Z:B(HO20Y9T[XM&`'IN)SVAS3"!7;WP\Z8Z2.H0N^_OG7$##
MF5::CK.<`42X):[AV*\YH>HF1PCIHQ&?IVCDT,16;2GO.EPRL$*:4YK]\>M5
M;)"@<K@7<."&XG92@O)T<*V+2\K89HE6E0H+G?/9)D_*QT$=,AM[.V:8PAZU
MHN1KK9.L@DJ`J\N6?ICW=(_X8[V>GT;I]/HQ?('-5V51P*V>7&1Z@M6\OD3Z
MGXC_`(GTN^?16L.4S@-=55#2O+VQ8&70`%[@">5P>4BRULJ!N/7IDM03*5U4
MC[/UT)`$1`KHJG/T\EQ;UP>5XUSTRIK5_*G+/!BO^;6&:K:"SL!Q[X6X\W0"
M'^9&"N2G0!WO/&*A(8ST;/@TO'3"&NH0*`H=*":Z4Q6"U*A/99R'1RU1P0D=
M.AKB_2SKB^A50:%MY'B3^<LSE$7;<3P_9R05VIW76NWKA0!-%!G"'SG&>A18
M.$21TY9$$+W(H>@`>`!<91S5NW8X*M7H.(91=D."@KW9D&*O&E#PVOOHT*('
MK*,3/90K+13A+GI@2"P\"Q:9XG,SA:"4#*^@./GAA:)";D](?.5_W!H!'=57
MM]?XCZ:^TQB"HX5=XM7P@VSM3%U*T]$R`>QE,)$1RA6PNM\6WG+W+L@/!%>N
MNP8X"_+A`TKR=>_&=J$F"0.ZH>/;-33'J.Q.SW]C.M)$'6MMU;UP<9Y$'4\D
M.4;KB8IH:*&?7L.KZ=S$5]1P.T6_>N&M:+QW<CU1B.4D`T=N,W8\XVIOJAEH
M4&5U!86"C[8406GI@0/O7!(\=(:JV3MP\>0Q'F#DIZ:,W<(!4AL2.EP*,`@8
M5"!.KA45&RU.#.7`.E%#DZ)P-/;)(-*;`:]S[<=$2IIA'PN2&NKFGMO?^6?Z
M1_6>:NX=+?2OOCWA,UZ:!M`2>?;%+"V&O1`/8Q8$]\7"MA8;NT\U<V*G2G/4
MBG'-#R#$5H[T$#[[P",S1">6WA'[Y_I']8G[D1(57W^M!PH2>B&L7%@YP$G*
M-UR-1Z9?6JR:O+`<Y3Z]!D:"[G5.3.`F^ZFUL.5#>NO;*JIZM'UG\7[',4CL
M/NE?GH!G,R(%-QZ^/Y[J[`<,9/$4[_?'(51!#"L(,=(\[V.;$TQ<I`C9QS*;
MR+4(A44-\:\Y*5%2`O037;*BP3NDDU2$I`8:7(_$&<"CV1S#T3RJ5")`UTK#
M<RTDF<(8D*4!5X2M*W@P\:!FOP+M,XWXQ%&!3P(0%VZVF^[1D>0PL(KH1FRP
MP;;0M.D4HGA'N8:LU%.>$L)U=IPKB1GT_$?77.]M-703J5&=9C-G!D;P3H@D
MXWBBL2"]*S%49!LR*NJ]^<5Q;2W3C^,+D.4DPJ.I_&"B&:(<+ZH>3-B+P"AN
MMZ]OH[]&![9O5'[,!+Q:BBQW`)[N0Q^$2G`T/3<O<UAEQ(CT?HH#>@_!%+PZ
M>^.K*:'-,&D=Z^BY5>\K7Z[`OS?;*\:@'1OLT^\S3A+=[`^'6;^)4XY+^)[8
ML^;4[BGJA]3,)!S`*G#-]]L9LX,C>"=$$G&\?**7D"8[A+.VC_+]L!326@`'
MF`/3??)!:=H%(]F1//I_B`CDU$F@PR@G1VILS;]/[$-T-T<I>U@S(`$[`@E@
MWKMT86-3=A5N=2[27CSG&=1B'3-+7^SFC2XDPA["Y#"MN#[GMA`K^15Z$TX8
M2+2QZ`'!)S<!UI4PVBN'^^,DR*`),@@`">K=Y*(0`$&Q8&C^C8\T(3BN+L37
M(-><0/!-1[2TW`Q*.\$*\%9/#03DZTXF3CK!>1`Y&D!#9I%D5H-=J'36;;7G
M`1E'F+"TVDV3B0BUOT_$?77^.[&?"=V?/]SZ^EAUR?<*:+TMYF`&`L-B*ZJK
MQU^[BYN0A4:#?3K]".0<]-F>T??(3QZEA"[L1#L/;'2.W>70>5@>N<SJ4[O_
M`,%'KNP+\WVSOPD>O"'JD]\UTW0AOGV67C`0;4H/:&"X-$=4C]TO^#*_A.[/
MG^YCH!<>I*P-75L"$0[I:=GUR[@RY00/5GM7_$`'*`L"A5#35.>4RO+[NHK8
MIHU]AVVFE(%P/;!<E_CUPQ$]/P><@'AAS0X7%=5XQZQ?5_6=G^[^L7_[?UEQ
M(Z-4?76)Y=0JET+U_A@A92C:.$LZ@B@`>ND=8-X78"".>=_:],YY-`!8D%Y0
M+Z"Y8,>.]&OAR8-<GB*ZW7HS?@WQO%VP\7V>OC'IC.:#D'7#SVQ(N;A:[/9V
M?7\1]=?X[L9\)W9\_P!SZ^E8B1U+\=AMX5Z.!,Y4M%Z;$>'"J)0)\Q3ZNG&V
M81\<'9,.31NM%AO@XX@[XP;41I)PU#[.-&O2C[CS]BXJK5DG6,_^"CUW8%^;
M[?2>YV,@:8]+/;/P3L;'WG[_`./IE?PG=GS_`',K[+@HY3MU'H^K@^BSXIUT
MGU''?L`77=5]C_B`06-$J4+V(/:\\8[AVZ=DXSGCK<=;:H'B%].L(4<#2=L&
M,^A^#%_']!N`F&SV6X`T/GWQ^(_SB_@?G'KG\.^&J003M)V]L!6?9"VL@@QU
M3T,-Z76P#98U2I(ZDRC1J6A$A#1YE[X<6B1G6PMH`"]P6X!!5!(`-M3>HE9,
MI<>K-#**[G,-=W2E?@*.DC1H+V5-98(A+.07S=72!76'A&!F!H<J3BI)K1EI
MC.K4/A?I^(^FT-HE7<`S!@8(.1Y*!QZJBZ7(CI,%`AHE1^AA-V,FJK2KNY<7
M$ZY5@(55]\$A:HY>\(PJ&)2+LNH]\4\JDJ>5>3CA65K40&B%>^/Y6UU00"\<
MC-[\93T?1UJB`7F7%6QXP;1Z!A3&0J$=)-*F)W:MM)H4:^M1&-!CPYP``FL0
M7$Y`2G+LIA\V&O#@H6;<8%H@-G%@O+E1^P]@-WUPB#N"@E2&]O8,>8,XW78\
M.F7$G()$1'2)J?2IUVKJO+(98<=C%0E8:AB@909X,>JHNER(Z3!0(:)4<"X^
M<,`$U:+Z.^!0^:;GIS$=S>C&W22P0431SJX#Q9548!C@58V[`_7TUY.>+1?;
MG!:QJX#6O)?+;D!@H0@NIV=,&5(*I#@YZ8P+(?EO!-+_`.)GX/$"'..!!LQ,
MKS[6/R,^4SYC%-1`$[.T_.3V\0S]/#X<.)JXU*FQ(@WU6-;A@=0([S?YQ56U
ML=<X'*@CM1Y,10WBFPGIOT<"`]0"5:ODK<'%)B5`"JKQD<V=$*Z8=<?[W!#'
M5HH`FEWO/Q'_`-/=XO@5T0V/DQ23V3'N.F4';9O[J_C%9-2DNX`#YBG?Z?[>
M2";AD?K]U1U[Y\!_>"6%443E/KL7*2,=ZEIF[='0NY8L=PA/@M)Z1],*!R<"
M:/!,8GGD%GK'6)"'DQ]T_0:TZ/N@C"+[X$;Z5W@0VJ*)X<:@#6O=`V/\]<5+
MOB$]QS0=N@_NO^,`%T!6<P`>H+.OU<M4B[NB^VH]\)<L)`X+'U_G$DPO6>[[
MCG'VH=6K[!EG2X8)?AVP_ACX,$]K#[N,YME=,>*@8L`WCYUQM9M(M3D=2QRT
M6!-.2Q(<_C+9W50^Z)S@2)`V1N^\PIRM0D73CIWQ8&IG-2O$BSS@"$$@-2%A
MOF7VS3!L13L[PHCJ3R.+N],-K"2J@6&^>=8365/5"S>]I]S`*T5,A>K;$9YQ
M810>1B_G$E0!U5@-V58TCP]:&?B/^!OQ:ZTTO8D0>D>L<0*3!J]T:#RN!NEB
M`7J4R]G3Y^GR/+Z;+,+DDRB=`FN]O!(9%F$1@"J"7CG'<:/DQV;!$I2=>N)U
MCL!5#R@L=JG$Q.+W)5(=5E+P,.M")FG1P@O#TLR&MHE=Z#7<:DMSI54/<,['
M+Q8Z+,T+$]B['0'L!CYA*,_NK[7-M.I+>U<+N1#GL_Y4V.C3=?88VRD`0:9\
M:Q'%-'+NKUDN%:`Z\O1.B<8($V`4?.+^$?!B&;TP6WEYPR8/%N!5$7E9E\BV
MTC<O+MF_9A"H9TNNOXXPP(&@$DJGEA,E)2V!MG$]=8L!0;A=B'C5<7RLB$*R
M><,Q>O9@_)RR$6V0VNQ=CLTT+VUZ`77`T:-")=SSH,E"DYM8T@5;R1;!!I'`
M1:1V-=P[8?;%(B-H7I`&MC5P<HQH"!>H#=6G4U@B_P"6TQ="'`6NGC*$B1.A
MLOHEV5P),F+<+/Y<_$?\#$6T/>`_8K[Y#UH]1.??\3"IJ]Z,T^HQ]OI\CR^F
MS?\``O/=J>A5#SE6Q0@5[H2X+;8P\B*O#E^BMK704+[743^L:@"O#\!#1Y'!
M#-@RW2T"G@?7%FIQZU'3EB2<R9$YTFP\/VC@[II8?+POH&%[33N8:-+0<UG'
M^3<V5/MEAP+DKM_*Y.X5>1]M.A@\.`/(""5W9,II]O@]%W]LD/8`(!P<Y,CV
M/L95)TS%FZ82C6WZ`)3DU??!0+#`CQVPVU64CR?%Y'+,.YY!%IVV!6XGJ&=U
M9_[/]8-NH:91IPSS@JWPEH0M%YB=,@J@GJABN[$$UHF4(-G1LMQ:A!1.(`>B
M%=\71<UV>!=-3H)H#R\R/4@9)17FO"=7H04:"@A>;!I;0,V9D)^H3%NA)SH/
M4;A2F@ILHW!$V<.CEQ$^GXC_`('>(BG4Q>NE@+HO&`B=@DWTF^="\L^91L!!
ML=K]/D>7TV;3I[K`'L?>O7+9'EI%(<@8[;Z&.;[VJDAH9<[)WRVD)GJWZS1O
M(PZJC7#9+P+U>1W`'[%7[XLQR#*`*;CN)AWE/]Y+JU4#'+L8&GO33LM/?+6;
MZJ%2`1KG>`4(]$&B/?)'$_9!?\=DI0IR9N=0B>>OYP-D-(A<>\+H^#L05C>C
MTQR=*:L.#3A-_$]<2SC]9A1K0PJCC<E*1:S1Q2373MYP`+T`.1+]F/":[."7
M$6!>'MH_&<]&R;!6S2:N<G4HH<)/P??*-QQN]`:.AC)K=+2JT.+0WYQQ@#`>
M(.OIC6T%"$$@).GDMY<5MAJ!1$K70FO'?&@:4T=`G`XWMY9SGC?'8!1@)`U/
M2G5QDH4)@@0)PR^[W<<PB"45/3H63`G`MUB9OYK$OXA!IMX6[[]NWT_$?\#:
M6I(?T!>SP\CB0D*8!LY@L>KQCFXV,QPH#V#]+:3*HE0,-X0TH`J!4!SC`TJV
MR@-A5CQ$,WY!B"EW!LWVZX`4.]A$"IL#>][FJ(?GL3A0'`Z>9.N#@EWZG<&_
M?]W!_"D/OI#FCH3E>:&WI7"]M&FPI.-&GM!Z)=IV!-=1T^HX=<(`KQR>V`'A
M'&-BY=RQZ!NG^*"1X<MJ!:FRAXP)$DM!K;W288(.8R5+@ET+D`*@2=`YZ,?D
M7\8S8B9'8`T88"^[A4(\0VY'V-(<4JO#U'&4JVV_/?SB9BS:+U_K]XMAR%W1
M6,[,?;&-1*#+TWT_\PAK,'A".#UTP@UD8Z4CVY>N(Q"`#(7P6S2<5YPW!3RU
M$1=%7QO>+X)CPJCG91>ARWNCRLH!;!'-@'.CKO!9>CD>2K1`>?P`L\.B(*.V
MV][TF4@TA<"J>(CI.3Z#$C:)`<V_'3_@*1P=9@>`B'O3"N/<0(T1.$KO?+CJ
M]/@(]`SKO'9,:_*3H'_AO.SJ5-`#^/\`A[H;B\'Z3\<#R/[<->?H`AW8BVX\
M9<-@I:'JW3D5`0DF+PZ_6*0PI@UJ3KU7WP=68BHUI>]<`#B:8H.]],W"NB0-
M@$BFW\8])H)$<T[\W$;&+#B-WSB7:;-B:GOC('4CA[[YV?.N&42#FCR)0Q*8
M#NB!0>H4<'R^@87TA4&OLB:,Y'G9LPZ*"A$.'#B2P)8[;A*K":I2Y@T3IYQ)
M7="+V=/7VG_!/AA:`HG9,5,'-?A1E%;X#[*8'[>E?*!M_P"(V!;(OE[BF"V4
MJ/-Y==.<-=Y6<6Y<>,N6"ERF9M[C3CME&BNUF&G?6)"+`AVNNCT<00%O3II>
MV@QK2PQ<NF%DA/,P\EO5/>/-&'?!\4&IR[JSL&$H:==7S_'W,H[_`#FK6'OB
M<DR:3JB[/4QHC!'C2<C6N=FLDI5H@K;1W\_UFMHLY]`[TN^^`H)`>)T3Q_U)
M\)*/AN*->!OU!T9K:.-_1<>=<GZ*I#UF\29K52J7IOKD.4"TBX$=:AS^,?`"
MCN<31OM_&;()##=U3A]5_P!9-IY"-CJ<[6^X]L.FJB3?7Q_YWP#5QB0TU78"
M34=PF*#C'$![J;AUU/+AM"+),\G)BVJ=BH]G-F)]#?&#("><U_'1_P`'6+:+
M8E<%BM/IS]L:$W_>5\]J-?-!QQ?^FWV$*H"^WW.R#A$7FA7;Z#_/XS<H.C_@
M'.%DQ3UU^>V*"@C=,IVF!.'*FJ=/G;-W@()#SZF$Z`.IL.AVW?;-/!U3HSW5
M(O3`[Q%PAZ.NLI/<A7ZY>F7T4BP="FP:?LXZ$FH1?3J_WVPP#&P'2=#U..WC
M#'LKM.P@</?C6L)&#JGV'?G-&H3QDZXFL29,B$SJN`:_N8`(#H=.U-_/2#.M
MNY]N3""A_P#',P1*-/\`HB=H:-%)U[;QD]K2'IK&C/;1?PC_`!/CKEZ6Y7)Y
M,!P![/.(;05SXS_?936Q.62XJ":'L!]76$5&AJ?3CE==$WAR^"V.NAP_.\-$
MHFAWN)SMWYSXC^LU33S/]<AY?GIGR_\`6;KM]7]9_,<_ZP;.<6.S#>38;V]5
M>IQS@KKPL^ZY]L3]R^OSCA/&=V!'`Z&L=/.3TU.LV86+"$_M\/;_`%*GC["A
MVIT[C_T+\)OR(0G>/7KG!0`S`-,<>[6I=Z\CPXX&MGIY4/GO6%3J2^Z?GM8I
M=['^OGN4\%?G!\_.'P\43!]%_P"_3>$0K8@Q'6TIX['YP]Q7.OWT]L6:O_\`
M!#APX<.'#@D>%N)`)NQ8Y_;!E<0K<XX:M-9XW486A`AU]5RH(M]&Z)'I<#DK
MAI[F(:0\9+B:Q,2><8^C&(`AG@.#U7_IUVKO.QGX$`9/^`],FD2CD(Q\YWG&
M:HQ>@'DX?;$DS8D(X)[X4\8-0%6@.KTQ^'A?EM_[R@%)Q'H\F#U)H/M/."1C
719^B8PDI*CX([AS]O^_0(!/)_P!#_]D`
`
end
������������������������������������������������������������������wml-2.0.12.orig/wml_contrib/wml1to2�����������������������������������������������������������������0000755�0001750�0001750�00000012445�10343637512�015156� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������:
eval 'exec perl -S $0 ${1+"$@"}'
    if $running_under_some_shell;

#
#  wml1to2 --  Upgrade input files from WML 1.x to WML 2.x
#  Copyright 2000 Denis Barbier. All rights reserved.
#  This program is free software released under the GNU General
#  Public License v2.
#
#     This tool updates input files to make them suitable with WML 2.x
#     Transformation is made in place, so making backups before running
#     this script is a wise idea.
#
#     Documentation can be viewed with
#         perldoc wml1to2
#

sub usage {
    print STDERR "Usage: wml1to2 file1 file2 ...\n\n";
    print STDERR "   Warning: files are written in place, so make sure you\n";
    print STDERR "            performed backups before running this script\n\n";
}

$warn = 0;
sub WarnIfPresent {
    my ($pattern, $string) = @_;
    if ($string =~ m|\b$pattern\b|s) {
        print STDERR "Warning: $pattern found\n";
        $warn = 1;
    }
}

if ($#ARGV == -1) {
    &usage;
    exit(1);
}

foreach (@ARGV) {
    if (m/^-/) {
        &usage;
        exit(1);
    } elsif (! -f) {
        print STDERR "File " . $_ . " not found: skipped\n";
        next;
    }

    #   Okay, processing can take place
    my ($infile, $outfile) = ($_, $_ . ".".$$);
    if (-e $outfile) {
        print STDERR "File " . $outfile . " does already exist, so input file "
                     . $infile . " is skipped\n";
    }

    #   Read input file
    local($/) = undef;
    open(IN, "< $infile") or die "Unable to read file " . $infile;;
    my ($text) = <IN>;
    close(IN);

    $_ = $text;

    #   Perform substitution.  See README.mp4h for details
    #      Macro definitions
    s|<defsubst|<define-tag|g;
    s|</defsubst|</define-tag|g;

    s|<define-container(\s+[^\s>]+)|<define-tag$1 endtag=required|sg;
    s|</define-container|</define-tag|g;

    s|<defmacro(\s+[^\s>]+)|<define-tag$1 endtag=required|sg;
    s|</defmacro|</define-tag|g;

    s|\%[qx]body|\%body|g;

    #      Grouping
    s|<prog\b|<group|g;
    s|<concat\b|<group|g;

    #      Arithmetic functions
    s|<sub\b|<substract|g;
    s|<mul\b|<multiply|g;
    s|<mod\b|<modulo|g;

    #      Diversion tags
    s|<<([a-zA-Z][a-zA-Z0-9_]*)>>|{#$1#}|g;
    s|\.\.(\!?[a-zA-Z][a-zA-Z0-9_]*\!?)>>|{#$1#:|g;
    s|<<\.\.|:##}|g;
    s|<<(\!?[a-zA-Z][a-zA-Z0-9_]*\!?)\.\.|:#$1#}|g;

    s|({#\!?[a-zA-Z][a-zA-Z0-9_]*\!?):|$1#:|g;
    s|:#}|:##}|g;
    s|:(\!?[a-zA-Z][a-zA-Z0-9_]*\!?#})|:#$1|g;

    #      Detect possible cause of problems
    &WarnIfPresent('define-container', $_);
    &WarnIfPresent('<define-function', $_);
    &WarnIfPresent('<defun', $_);
    &WarnIfPresent('<defweakmacro', $_);
    &WarnIfPresent('<div', $_);
    &WarnIfPresent('<%%eval', $_);

    $text = $_;

    #   And prints text to file
    open(OUT, "> $outfile") or die "Unable to write to file " . $outfile;
    print OUT $text;
    close(OUT);
    rename($outfile, $infile) or die "Unable to write to file " .  $infile;
}

if ($warn) {
    print STDERR "Check previous warnings carefully and make sure there is no trouble with them.\n";
}

1;

##EOF##
__END__

=head1 NAME

wml1to2 - Make WML input files ready for WML 2.x

=head1 SYNOPSIS

B<wml1to2>
I<inputfile>
[I<inputfile>]
...

To apply this script recursively on all files of a directory, call

    find my_path -type f -exec wml1to2 {} \;

It is also possible to process only WML input files, e.g.

    find my_path -name \*.wml -exec wml1to2 {} \;

See the find(1) manpage for details.

=head1 DESCRIPTION

This program transforms files to make them suitable for WML 2.x.  As
transformations are performed in place, you should always backup your
datas before applying this program.  You have been warned.

This paragraph explains which operations are performed to input text.
For more details on incompatibilities between WML 1.x and WML 2.x, read
the C<README.mp4h> file shipped with the distribution.

=over 4

=item Macro Functions

The C<E<lt>define-tagE<gt>> command replaces C<E<lt>defsubstE<gt>>, C<E<lt>define-containerE<gt>> and
C<E<lt>defmacroE<gt>>.  On the other hand, C<E<lt>define-functionE<gt>>, C<E<lt>defunE<gt>> and 
C<E<lt>defweakmacroE<gt>> have no equivalent and should be rewritten.

Special sequences C<%qbody> and C<%xbody> are replaced by C<%body>.

=item Group Functions

The C<E<lt>groupE<gt>> command replaces C<E<lt>progE<gt>> and C<E<lt>concatE<gt>>.

=item Arithmetic Functions

This was necessary because C<E<lt>divE<gt>> is a valid HTML tag, so division is
now performed with C<E<lt>divideE<gt>>.  But it is not an easy task to
determine if a C<E<lt>divE<gt>> tag has to be replaced by
C<E<lt>divideE<gt>>, so a warning is raised and no transformations are
performed.

Other mathematical functions also use a longer name: C<E<lt>mulE<gt>> is
replaced by C<E<lt>multiplyE<gt>>, C<E<lt>subE<gt>> by C<E<lt>substractE<gt>>
and C<E<lt>modE<gt>> by C<E<lt>moduloE<gt>>.

=item Diversion Tags

In WML 1.x, casual diversion commands are
C<E<lt>E<lt>NAMEE<gt>E<gt>>, C<..NAMEE<gt>E<gt>> and C<E<lt>E<lt>NAME..>,
but strange results may occur if these names have been defined by
wml_p2_mp4h.
For this reason, these forms have been deprecated since WML 1.7.3 in
favor of C<{#NAME#}>, C<{#NAME:> and C<:NAME#}>.  This caused some
performance problems, and eventually WML 2.x use C<{#NAME#}>,
C<{#NAME#:> and C<:#NAME#}>.

=back

=head1 AUTHOR

 Denis Barbier
 barbier@engelschall.com

=cut

���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/INSTALL.CYGWIN����������������������������������������������������������������������0000644�0001750�0001750�00000000250�10466446313�013426� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Cygwin users need to cd into config and type "make" before building wml.

Alternatively, you can nullify the SUBDIRS variable in 
wml_backend/p2_mp4h/modules/Makefile.
��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/NEWS��������������������������������������������������������������������������������0000644�0001750�0001750�00000030466�10343637577�012121� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
  N E W S
  =======

  This file summarizes *major* changes to the WML sources, i.e.
  between each *revision* (1.x -> 1.(x+1)).  Take this logfile
  for detailed information about user related or visible changes.
  ___________________________________________________________________________

  Major changes between 1.7 and 2.0:

      - Several improvements in wml_p1_ipp:
          The -S and -I flags are now processed in right-to-left order
          so that these flags in .wmlrc files have precedence over
          .wmlrc files above.

          Variable substitutions can now be nested and new constructs
          have been added. The only restriction is that parenthesis
          inside variable expansion are forbidden in inner expressions.

          New automatic variables are provided to ease generation of
          diaporamas (automatic references to previous and next files).

          Block comments are no more supported by wml_p1_ipp.

      - Meta-HTML is replaced by mp4h for Pass 2: the new parser has a
        syntax very similar to the one of Meta-HTML, and tags have been
        defined to ensure maximum compatibility.  Please read
        README.mp4h and the wml_p2_mp4h documentation for details on how
        to migrate from Meta-HTML to mp4h.

      - Allow nesting of wml_p3_eperl commands: this is one of the
        biggest challenge of WML 2.0 whereas it is entirely transparent
        for end users.  Read the wml_macros(7) manpage for details on
        how to write nestable macros.

      - Promote alternate syntax in wml_p5_divert: until wml-1.7.0,
        pass 5 used expressions containing angle characters.  In many
        situations this could confuse pass 2, and so an alternate form
        without angle characters is preferred.  Old syntax is still
        valid but should be avoided.  Note also that WML 1.7.3 and
        1.7.4 provided a slightly different syntax which is not
        supported anymore.

      - New include files:
          wml::std::label implements labels and references
          wml::mod::version ensures that a recent enough WML is run
          wml::mod::MakeMaker is to help writing portable WML modules

      - Wwwtable is replaced by freetable, a GPL replacement.  Syntax
        is very similar and input files should work without changes.

      - Support for both GIF and PNG formats.
        Logos are shipped in both formats, and generated images may be
        written in GIF (without the patented LZW algorithm) or PNG (if
        PNG library and headers are found) formats.
        Modified versions of libgd and GD are used to support both
        formats.

      - Change format of ISO dates
        Format was previously dd-mm-yyyy and it has been changed to
        yyyy-mm-dd to conform to ISO standards.

      - A global base name may be used for generated images: instead of
        defining IMGB_BASE, IMGDOT_BASE,... it is now possible to define
        IMAGE_BASE and all generated images will refer to this variable.

      - Better processing on files in other directories: the main goal
        is to allow use of the VPATH feature of GNU make to build
        webpages into a test area before compiling webpages.  This
        does only apply to the wml binary, since there is no reason
        to mix WMk and Makefiles.

  Major changes between 1.6 and 1.7:

      - Enhanced time dependency checks for wmk: wml accepts a new
        flag to mimic how gcc handles dependency checks. This way,
        wmk rebuilds the target when it is older than the source
        file or than any file included during pass 1.

      - Easier multi-lingual files generation: instead of using
        the pseudo-shebang line, one can put the -o flags into
        the RC-Files. Moreover some new commands have been
        included in wml::std::lang to help writing compact and
        self-explanatory source files.

      - Defining variable without value: until now, the -D flag
        accepted a var=value pair, and returned an error if no
        value or an empty value was found. This was confusing
        because major programming language accepts these two
        forms, and because it was impossible to undefine a
        variable. Now -Dvar is equivalent to -Dvar=1 and
        -Dvar="" allows you to clear a variable.

      - Big changes in configuration stuff: it is now done with
        the same files as Apache 1.3, instead of the GNU ones.

      - Improve include files: new functionalities have been
        added especially into wml::std::toc, wml::std::lang and
        wml::des::navbar. Bug fixes have been committed to deal
        with quotes inside attributes.

      - Y2K fixes : all programs have been checked. It does not
        mean that WML is fully y2k compliant, but we do our best.
        Anyway, WML does use dates for a) check time dependency
        (WMk) and b) print current date.

      - Help to write cleaner HTML pages : the htmlfix program
        is improved, and new third party tools are put in
        wml_aux : HTML-Clean and tidy.

      - Add a keyword search in WMd: the Website Meta Language
        Documentation browser becomes more friendly with this
        nice tool.

      - Denis Barbier <barbier@imacs.polytechnique.fr> is the
        new maintainer of WML.

  Major changes between 1.5 and 1.6:

      - Big source and installation tree cleanup: the configure
        option --enable-compat was removed, the files
        wml_include/OBSOLETE* were removed, the wml_p*/ subdirs
        were moved to wml_backend/wml_p*/, etc.  pp. And in
        addition to this reorganization the backends and
        auxiliary programs are now installed in PREFIX/lib/exec/
        instead of PREFIX/bin/.

      - Cleanup of include files: tag names were renamed
        (especially in wml::des::navbar) to avoid namespace
        conflicts, tags were merged (especially in
        wml::std::box), tags were generalized (especially the new
        wml::std::logo), double-defined tags were removed
        (especially wml::sup::stack and wml::usr::rse), etc. pp.

      - Revised a wrong design decision of the early days:
        Comments are now supported in Pass 1 and not in Pass 8
        and they are now supported in a more general way:
        EOL-mode (#) and Block-mode (/*...*/) comments.  This
        pass shift was done to get rid of comments as quick as
        possible. This way we now really can comment out _any_
        stuff and as a side effect processing is a little bit
        faster.

      - A new manpage was introduced: wml_tags(7), a permuted
        index of all defined WML meta-tags.

      - A lot of minor stuff was fixed, added or at least
        generalized: the WML -p, -V and -P options, RC-File
        parsing, HTMLfix quotation parsing, slice errors, etc.

  Major changes between 1.4 and 1.5:

      - New Platform Portability Test Suite: A PORTING.text
        script was added to the distribution which can be used to
        run a portability test and which displays a platform
        entry line on success which then can be added to the
        PORTING.L file. The PORTING text file now is
        automatically build out of the PORTING.L entries.

      - New GNU Autoconf option: ``--with-cc=PATH''. This
        equivalent to setting CC=PATH before running the
        ``configure'' script but follows the same idea as
        --with-perl=PATH.

      - The maintainer files for the packaging mechanisms of
        various Unix derivates have been added as
        wml_contrib/pkg/ for reference. Currently there are files
        for the FreeBSD Ports area, the Debian dpkg mechanism and
        the RedHat Package Manager.

      - Added new include file: wml::std::lang. This provides a
        high-level interface for multi-lingual support via
        Slices.

  Major changes between 1.3 and 1.4:

      - The source distribution again was cutted down by
        approximately 100 KB, especially by removing unnecessary
        database support for Meta-HTML in the wml_p2_mhc/*
        subtree.

      - Now Speedup mode (introduced in 1.3) is the default
        processing mode and the -s option now stand for --safe
        and can be used to use the slow but more safe
        forking-based approach of starting the Perl-based WML
        passes. The trick of the Speedup mode is that the
        frontend `wml' precompiles the Perl scripts into its
        memory and evaluates them with the current interpreter
        instead of using the system() call.

      - A new Curses-based frontend named WMd (WML Documentation)
        was added for nice and easy access to all WML manual
        pages (works correct even without correct MANPATH).  The
        reason is because WML has a lot of single manpages with
        non-trivial names and such a startup page simplifies
        access to the documentation.  The side effect is that you
        now need a SVR4-compatible Curses-library (like NCurses
        or S-Lang) to build WML. The used tool for browsing is
        iSelect which was added to the distribution under
        wml_aux/iselect/

      - The long-awaited internal <protect [pass=SPEC]>..</protect>
        container tag was added. This can be used to protect
        *any* data from being processed by any WML pass.  While
        such protections can be applied after any pass, the final
        output data is unprotected after pass 9 only. Use this
        new feature for protecting page contents which would
        conflict with any WML functionality.

      - Now the long-awaited new wml::des::navbar killer include
        file replaces the old version. This is a complete new
        approach to create navigation bars. It is based on the
        idea of defining a grammar-like structure and let this
        structure be rendered later. The structure itself is
        completely independed of the used HTML markup code, so any
        type of navigation bar can be created. There is although
        additional support for rollover effects and Plain-Text
        variants.

      - Divert (WML Pass 5) now supports named leave tags, i.e.
        you can leave a diversion by name which has the effect of
        leaving it and all other diversions which were entered
        from within it. This way one can use a templates more
        then once in an input file.

      - Now ePerl and thus WML supports the Perl Locale
        environment which makes WML support international
        character sets, for instance in the <sc>..</sc> container
        tag from wml::des::typography

      - A new wml::des::preload include file was added
        for minimal preloading support of images.

      - Another frontend: WMb -- Website META Language Bug
        Reporting Tool.  This can be used to easily sumbit a bug
        report to the WML author.

      - System variables like WML_GEN_HOSTNAME now can be
        overwritten by -D options on the command line or in
        .wmlrc files. For instance this is useful to overwrite
        informations for the <info> tag from wml::std::info with
        correct values.

      - Various 3rd-party software upgrades:
        ePerl 2.2.8, Bit-Vector 5.0b1, Slice 1.2.7

      - Numerous minor enhancements, portability changes and
        bugfixes were done on the various WML passes and WML
        include files. See the file ChangeLog for more details.

  Major changes between 1.2 and 1.3:

      -  New options -s which speeds up processing by avoiding fork()s
      -  New feature in HTMLfix (pass 7): out-commenting HTML tags (<xx#>)
      -  New feature in HTMLfix (pass 7): post-indenting (<indent>)
      -  Cleanup of all WMk and WML options, including GNU long-options
      -  Enhanced WML -v1 output (table format)

  Major changes between 1.1 and 1.2:

      -  HTML tag overwrite support (via <tag*> and </tag*>)
      -  Pass 8 (HTMLStrip) overhauled (removed incorrect stripping)
      -  Pass 1 (IPP) enhanced (new __FILE__, __LINE__ and $(VAR) stuff)
      -  Perl compatibility changes ("use lib" replaced by "BEGIN/@INC" variant)
      -  New manual pages: wml_intro(7) and wml_tutorial(7)
      -  Cleaned up distribution [Step 2] (removed unnecessary stuff)
      -  Upgrade to ePerl 2.2.3

  Major changes between 1.0 and 1.1:

      -  Fixed command line argument bugs (especially -DXXX=YYYY)
      -  Changed GNU Autoconf option --with-closedworld to --with-openworld
      -  Cleaned up distribution [Step 1] (removed unnecessary stuff)
      -  Upgrade to Slice 1.2.4

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_frontend/�����������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524774�014102� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_frontend/wmd.src����������������������������������������������������������������0000644�0001750�0001750�00000015136�10343637513�015403� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@PATH_PERL@
eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  WMd -- Website META Language Documentation Browser
##  
##  Copyright (c) 1996-2001 Ralf S. Engelschall.
##  Copyright (c) 1999-2001 Denis Barbier.
##  
##  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 2 of the License, 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, write to
##  
##      Free Software Foundation, Inc.
##      59 Temple Place - Suite 330
##      Boston, MA  02111-1307, USA
##  
##  Notice, that ``free software'' addresses the fact that this program
##  is __distributed__ under the term of the GNU General Public License
##  and because of this, it can be redistributed and modified under the
##  conditions of this license, but the software remains __copyrighted__
##  by the author. Don't intermix this with the general meaning of 
##  Public Domain software or such a derivated distribution label.
##  
##  The author reserves the right to distribute following releases of
##  this program under different conditions or license agreements.
##

require 5.003;

BEGIN { $^W = 0; } # get rid of nasty warnings

$VERSION = "@WML_VERSION@";

use lib "@INSTALLPRIVLIB@";
use lib "@INSTALLARCHLIB@";

use Getopt::Long 2.13;


##
##  PROCESS ARGUMENT LINE
##

sub usage {
    my ($progname) = @_;
    my ($o);

    print STDERR "Usage: $progname [options] [path ...]\n";
    print STDERR "\n";
    print STDERR "Giving Feedback:\n";
    print STDERR "  -V, --version[=NUM]    display version and build information\n";
    print STDERR "  -h, --help             display this usage summary\n";
    print STDERR "\n";
    exit(1);
}

sub version {
    system("wml -V$opt_V");
    exit(0);
}

#   options
$opt_V = -1;
$opt_h = 0;

sub ProcessOptions {
    $Getopt::Long::bundling = 1;
    $Getopt::Long::getopt_compat = 0;
    $SIG{'__WARN__'} = sub { 
        print STDERR "WMd:Error: $_[0]";
    };
    if (not Getopt::Long::GetOptions(
            "V|version:i",
            "h|help"
    )) {
        print STDERR "Try `$0 --help' for more information.\n";
        exit(0);
    }
    &usage($0) if ($opt_h);
    $SIG{'__WARN__'} = undef;
}
&ProcessOptions();

#   fix the version level
if ($opt_V == 0) {
    $opt_V = 1; # Getopt::Long sets 0 if -V only
}
if ($opt_V == -1) {
    $opt_V = 0; # we operate with 0 for not set
}
&version if ($opt_V);


##
##  This variable eases port on some OS.  For instance if htmlclean is
##  part of your system, you do not want to include it within WML.
##  When defining
##     %map = ('wml_aux_htmlclean' => 'htmlclean');
##  the `wml_aux_htmlclean' entry in WMd will display the htmlclean
##  manpage.
##  By default there is no mapping
%map = ();
if (-r "@libdir@/data/wmd.map") {
    if (open(MAP, "< @libdir@/data/wmd.map")) {
        while (<MAP>) {
            s/^\s*(.*?)\s*=\s*(.*?)\s*$/$map{$1} = $2/e;
        }
        close(MAP);
    }
}

##
##  Find browser
##

$browser      = '@libdir@/exec/wml_aux_iselect';
$browser_file = '@libdir@/data/wmd.txt';

$reader_man  = 'MANPATH="@mandir@:$MANPATH"; export MANPATH; man';

$reader_url  = '';
@reader_progs = qw(w3m lynx);
WWW_PROG: foreach $prog (@reader_progs) {
    foreach $dir (split(/:/, $ENV{'PATH'})) {
        if (-x "$dir/$prog") {
            $reader_url = "$dir/$prog";
            last WWW_PROG;
        }
    }
}

$p = 10;
while (1) {
    $rc = `$browser -n "Website META Language" -t "Documentation Browser" -p$p -P <$browser_file`;
    last if ($rc eq '');
    $rc =~ m|^(\d+):(.*)|;
    ($p, $line) = ($1, $2);
    if ((($page, $sec) = $line =~ m|^\s*(\S+)\((\d)\)\s+|)) {
        if (exists $map{$page}) {
            $page = $map{$page};
        }
        system("$reader_man $page");
        system("$reader_man wmd_missing") if $?;
    }
    elsif (($url) = ($line =~ m/^\s*((?:http|ftp):\/\/\S+)/)) {
        if ($reader_url) {
            system("$reader_url $url");
        }
        else {
            print STDERR "wmd:Error:  cannot access URL $url\n";
            print STDERR "wmd:Reason: require one of the following programs in \$PATH: ".
                         join(' ', @reader_progs)."\n";
            sleep(4);
        }
    }
    elsif (($keyword) = ($line =~ m/^\s*search=(.+)$/)) {
        @L = glob("@mandir@/*/wml* @mandir@/*/wm[bdku]\.[1-9]*");
        %F = ();
        foreach $f (@L) {
            $n = $f; 
            $n =~ s%^.+?/(wm[bdklu](?:[:_].+?|))\.([1-9])(?:\.Z|\.z|\.gz|)$%$1($2)%;
            $metacat = 'cat';
            $metacat = 'gzip -d -c' if ($f =~ m/\.(?:Z|z|gz)$/);
            @R = `$metacat $f | grep -i '$keyword'`;
            for ($i = 0; $i <= $#R; $i++) {
                $F{$n}++;
            }
        }
        $L = '';
        $L .= "'' 'Keyword Search Result: $keyword' '' ";
        foreach $f (sort {$F{$b} <=> $F{$a}} (keys(%F))) {
            $L .= sprintf("'%-30s (%3d) <s>' ", $f, $F{$f});
        }
        $p2 = 4;
        while (1) {
            $rc = `$browser -n "Website META Language" -t "Documentation Browser (Keyword Search)" -p$p2 -P $L`;
            last if ($rc eq '');
            $rc =~ m|^(\d+):(.*)|;
            ($p2, $line) = ($1, $2);
            if ((($page, $sec) = $line =~ m|^\s*(\S+)\((\d)\)\s+|)) {
                system("$reader_man $page");
            }
        }
    }
}

#   exit gracefully
exit(0);

##EOF##
__END__

=head1 NAME

WMd - Website META Language Documentation Browser

=head1 VERSION

@WML_VERSION@

=head1 SYNOPSIS

B<wmd>
[B<-V>]
[B<-h>]

=head1 DESCRIPTION

This is the documentation browsing frontend to the I<Website META Language>
(WML), a free HTML generation toolkit for Unix.  See wml(1) for more details
on WML.  This frontend uses the Curses-based tool iSelect to provide an
interactive full-screen selection of all available WML manual pages.  Use this
program for quick access to the documentation from within your shell session
while working with WML.

=head1 OPTIONS

=over 4

=item B<-V>, B<--version>

Gives the version identification string of WMd. Use this to determine the
version of a installed WML toolkit. 

=item B<-h>, B<--help>

Prints the usage summary page.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 SEEALSO

wml(1)

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_frontend/wmd.txt����������������������������������������������������������������0000644�0001750�0001750�00000012644�10343637513�015434� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
Website META Language, Version 2.0.9 (18-Oct-2002)
Copyright (c) 1996-2001 Ralf S. Engelschall
Copyright (c) 1999-2001 Denis Barbier

Official homepage and distribution area:
http://www.engelschall.com/sw/wml/ <s>
 ftp://ftp.engelschall.com/sw/wml/ <s>

Keyword search the WML documentation <s:search=%[Keyword]S>

Basics:
wml_intro(7) .............<s> An introduction to WML's basic concepts
wml_tutorial(7) ..........<s> Understanding WML step-by-step 
wml_macros(7) ............<s> Writing WML powerful macros
wml_faq(7) ...............<s> Frequently Asked Questions on WML 
wml_tags(7) ..............<s> Permuted index of defined WML tags
wml_barebone(7) ..........<s> Bare Bones Guide to HTML 4.0

Standard References:
wml_std_xhtml10(7) .......<s> XHTML 1.0 Specification   (W3C REC 26-Jan-2000)
wml_std_html401(7) .......<s> HTML 4.01 Specification   (W3C REC 24-Dec-1999)
wml_std_html40(7) ........<s> HTML 4.0 Specification    (W3C REC 18-Dec-1997)
wml_std_html32(7) ........<s> HTML 3.2 Specification    (W3C REC 14-Jan-1997)
wml_std_html20(7) ........<s> HTML 2.0 Specification    (W3C REC 22-Sep-1995)
wml_std_css1(7) ..........<s> Cascading Style Sheets L1 (W3C REC 17-Dec-1996)
wml_std_css2(7) ..........<s> Cascading Style Sheets L2 (W3C REC 12-May-1998)
wml_std_csspos(7) ........<s> HTML Positioning with CSS (W3C WD  19-Aug-1997)
wml_std_wai10(7) .........<s> Web Content Accessibility (W3C REC 05-May-1999)

Frontends:
wml(1) ...................<s> Website META Language Control
wmk(1) ...................<s> Website META Language Make
wmd(1) ...................<s> Website META Language Documentation Browser
wmb(1) ...................<s> Website META Language Bug Reporting Tool
wmu(1) ...................<s> Website META Language Upgrade Tool

Backends:
wml_p1_ipp(1) ............<s> Include Pre-Processor
wml_p2_mp4h(1) ...........<s> Macro Processor for HTML
wml_p3_eperl(1) ..........<s> Embedded Perl 5 Language
wml_p4_gm4(1) ............<s> GNU m4 Macro Processor
wml_p5_divert(1) .........<s> Diversion Filter
wml_p6_asubst(1) .........<s> Area Substitution Filter
wml_p7_htmlfix(1) ........<s> HTML Fixup Filter
wml_p8_htmlstrip(1) ......<s> HTML Stripping Filter
wml_p9_slice(1) ..........<s> Slicing and Output Filter

Auxiliaries:
wml_aux_htmlinfo(1) ......<s> HTML Information
wml_aux_linklint(1) ......<s> Hyperlink Checker
wml_aux_weblint(1) .......<s> HTML Checker
wml_aux_tidy(1) ..........<s> HTML Clean up
wml_aux_htmlclean(1) .....<s> HTML Optimizer
wml_aux_map2html(1) ......<s> Server-Side to Client-Side Map Converter
wml_aux_txt2html(1) ......<s> Text to HTML Converter
wml_aux_freetable(1) .....<s> Table to HTML Converter
wml_aux_iselect(1) .......<s> Interactive Selection

Includes: Overview
wml::all(3) ..............<s> WML Include Files Of All Categories

Includes: Webdesign (des)
wml::des::all(3) .........<s> All of Webdesign (DES) category
wml::des::gfont(3) .......<s> Graphical Font Tag
wml::des::imgbg(3) .......<s> Background Images
wml::des::imgdot(3) ......<s> 1pt Dot-Images for Webdesign
wml::des::lowsrc(3) ......<s> Create Image and LOWSRC-Attribute
wml::des::navbar(3) ......<s> Navigation Bar
wml::des::preload(3) .....<s> Preload Page Contents
wml::des::rollover(3) ....<s> RollOver-Style Image-Button
wml::des::space(3) .......<s> Layout Space
wml::des::typography(3) ..<s> Typography

Includes: Formatting (fmt)
wml::fmt::all(3) .........<s> All of Formatting (FMT) category
wml::fmt::isolatin(3) ....<s> ISO-Latin-1 to HTML Entity Conversion
wml::fmt::pod(3) .........<s> Plain Old Document (POD) Format
wml::fmt::sdf(3) .........<s> Simple Document Format (SDF)
wml::fmt::text(3) ........<s> Plain ASCII with Special Formatting
wml::fmt::url(3) .........<s> Recognize Uniform Resource Locator
wml::fmt::verbatim(3) ....<s> Really Preformatted Verbatim Text
wml::fmt::xtable(3) ......<s> HTML tables through Advanced Syntax

Includes: Import (imp)
wml::imp::all(3) .........<s> All of Import (IMP) category
wml::imp::csmap(3) .......<s> Import External Server-Side Map
wml::imp::fsview(3) ......<s> View Box for Filesystem Resource
wml::imp::generic(3) .....<s> Generic Import Of External Resources

Includes: Standard (std)
wml::std::all(3) .........<s> All of Standard (STD) category
wml::std::box(3) .........<s> Easily Create Rectangular Box
wml::std::case(3) ........<s> Convert Tags to Upper or Lower Case
wml::std::grid(3) ........<s> Layout Grid
wml::std::href(3) ........<s> Enhanced Hyperlink
wml::std::info(3) ........<s> Page Information
wml::std::label(3) .......<s> Labels and References
wml::std::lang(3) ........<s> Multi-Lingual Support
wml::std::logo(3) ........<s> Logo Insertion
wml::std::page(3) ........<s> Standard HTML Page Header and Footer
wml::std::tags(3) ........<s> Standard Support Tags
wml::std::toc(3) .........<s> Table of Contents Generation

Includes: Support (sup)
wml::sup::all(3) .........<s> All of Support (SUP) category
wml::sup::hextriple(3) ...<s> Convert #rrggbb String to RGB Value
wml::sup::path(3) ........<s> Filesystem Path Manipulation

Includes: Modularity (mod)
wml::mod::all(3) .........<s> All of Modularity (MOD) category
wml::mod::MakeMaker(3) ...<s> Write Makefiles for modules
wml::mod::version(3) .....<s> Checks running WML version number

Includes: System (sys)
wml::sys::all(3) .........<s> All of System (SYS) category
wml::sys::bootp3(3) ......<s> WML Bootstrap Code for Pass 3
wml::sys::bootp4(3) ......<s> WML Bootstrap Code for Pass 4
wml::sys::compat1(3) .....<s> Backward Compatibility to WML 1.x

��������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_frontend/wml.src����������������������������������������������������������������0000644�0001750�0001750�00000150650�10343637513�015414� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@PATH_PERL@
eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  WML -- Website META Language
##  
##  Copyright (c) 1996-2001 Ralf S. Engelschall.
##  Copyright (c) 1999-2001 Denis Barbier.
##  
##  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 2 of the License, 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, write to
##  
##      Free Software Foundation, Inc.
##      59 Temple Place - Suite 330
##      Boston, MA  02111-1307, USA
##  
##  Notice, that ``free software'' addresses the fact that this program
##  is __distributed__ under the term of the GNU General Public License
##  and because of this, it can be redistributed and modified under the
##  conditions of this license, but the software remains __copyrighted__
##  by the author. Don't intermix this with the general meaning of 
##  Public Domain software or such a derivated distribution label.
##  
##  The author reserves the right to distribute following releases of
##  this program under different conditions or license agreements.
##

require 5.003;

BEGIN { $^W = 0; } # get rid of nasty warnings

$VERSION = "@WML_VERSION@";

use lib "@INSTALLPRIVLIB@";
use lib "@INSTALLARCHLIB@";

if ($ENV{'PATH'} !~ m|@bindir@|) {
    $ENV{'PATH'} = '@bindir@:'.$ENV{'PATH'};
}

use Getopt::Long 2.13;
use File::PathConvert;
use IO::File 1.06;
use Term::ReadKey;
use Cwd;

sub ctime {
    my ($time) = @_;
    return scalar(localtime($time));
}
 
sub isotime {
    my ($time) = @_;
  
    my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = 
        localtime($time);
    my ($str) = sprintf("%04d-%02d-%02d %02d:%02d:%02d",
         $year+1900, $mon+1, $mday, $hour, $min, $sec);
    return $str;
}

sub gmt_ctime {
    my ($time) = @_;
    return scalar(gmtime($time));
}
 
sub gmt_isotime {
    my ($time) = @_;
  
    my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = 
        gmtime($time);
    my ($str) = sprintf("%04d-%02d-%02d %02d:%02d:%02d",
         $year+1900, $mon+1, $mday, $hour, $min, $sec);
    return $str;
}

sub usage {
    my ($progname) = @_;

    print STDERR "Usage: $progname [options] [inputfile]\n";
    print STDERR "\n";
    print STDERR "Input Options:\n";
    print STDERR "  -I, --include=PATH      adds an include directory\n";
    print STDERR "  -i, --includefile=PATH  pre-include a particular include file\n";
    print STDERR "  -D, --define=NAME[=STR] define a variable\n";
    print STDERR "  -D, --define=NAME~PATH  define an auto-adjusted path variable\n";
    print STDERR "  -n, --noshebang         no shebang-line parsing (usually used by WMk)\n";
    print STDERR "  -r, --norcfile          no .wmlrc files are read\n";
    print STDERR "  -c, --nocd              read .wmlrc files without changing to input file directory\n";
    print STDERR "\n";
    print STDERR "Output Options:\n";
    print STDERR "  -O, --optimize=NUM      specify the output optimization level\n";
    print STDERR "  -o, --outputfile=PATH   specify the output file(s)\n";
    print STDERR "  -P, --prolog=PATH       specify one or more prolog filters\n";
    print STDERR "  -E, --epilog=PATH       specify one or more epilog filters\n";
    print STDERR "  -t, --settime           sets mtime of outputfile(s) to mtime+1 of inputfile\n";
    print STDERR "\n";
    print STDERR "Processing Options:\n";
    print STDERR "  -M, --depend[=OPTIONS]  dump dependencies as gcc does\n";
    print STDERR "  -p, --pass=STR          specify which passed should be run\n";
    print STDERR "  -W, --passoption[=PASS,OPTIONS]\n";
    print STDERR "                          set options for a specific pass\n";
    print STDERR "  -s, --safe              don't use precompile/inline hacks to speedup processing\n";
    print STDERR "  -v, --verbose[=NUM]     verbose mode\n";
    print STDERR "  -q, --quiet             quiet mode\n";
    print STDERR "\n";
    print STDERR "Giving Feedback:\n";
    print STDERR "  -V, --version[=NUM]     display version and build information\n";
    print STDERR "  -h, --help              display this usage summary\n";
    print STDERR "\n";
    exit(1);
}

sub ProcessOptions {
    local $SIG{'__WARN__'} = sub { 
        print STDERR "WML:Error: $_[0]";
    };
    $Getopt::Long::bundling = 1;
    $Getopt::Long::getopt_compat = 0;
    my (@list_options) = (
        "I|include=s@", 
        "i|includefile=s@", 
        "D|define=s@",
        "n|noshebang",
        "r|norcfile",
        "c|nocd",
        "O|optimize=i",
        "o|outputfile=s@",
        "P|prolog=s@",
        "E|epilog=s@",
        "t|settime",
        "p|pass=s@",
        "W|passoption=s@",
        "M|depend:s",
        "s|safe",
        "v|verbose:i",
        "q|quiet",
        "V|version:i",
        "h|help");
    if (not Getopt::Long::GetOptions(@list_options))
    {
        warn "Try `$0 --help' for more information.\n";
        exit(0);
    }
    &usage($0) if ($opt_h);
    foreach (@list_options) {
        if (m|=s|) {
            s/^(.)\|.*$/opt_$1/;
            my ($arg) = $1;
            if ($#$_ > -1 && $$_[0] =~ m|^=|) {
                warn "An equal sign has been detected after the `-$arg' option\n";
                warn "Try `$0 --help' for more information.\n\n";
                exit(0);
            }
        }
    }
}

#   pre-process argument line for option -r and -v
$opt_r = 0;
$opt_v = -1;
$opt_c = 0;
@ARGVLINE = @ARGV;
&ProcessOptions();
$src  = $ARGV[0];
@ARGV = @ARGVLINE;

#   reset with defaults (except $opt_r and $opt_v)
@opt_I = ();
@opt_i = ();
@opt_D = ();
$opt_n = 0;
$opt_O = '';
@opt_o = ();
@opt_P = ();
@opt_E = ();
$opt_t = 0;
@opt_p = ();
@opt_W = ();
$opt_M = '-';
$opt_s = 0;
$opt_q = 0;
$opt_V = -1;
$opt_h = 0;

#   save argument line
@ARGVLINE = @ARGV;
@ARGV = ();

#   helper function to split argument line
#   the same way Bourne-Shell does:
#   #1: foo=bar quux   => "foo=bar", "quux"
#   #2: "foo=bar quux" => "foo=bar quux"
#   #3: foo="bar quux" => "foo=bar quux"     <-- !!
sub split_argv {
    my ($str) = @_;
    my (@argv) = ();
    my ($r) = '';
    my ($prev) = '';

    while (1) {
        $prev = $str;
        next if $str =~ s|^"([^"\\]*(?:\\.[^"\\]*)*)"(.*)$|$r .= $1, $2|e;
        next if $str =~ s|^'([^'\\]*(?:\\.[^'\\]*)*)'(.*)$|$r .= $1, $2|e;
        next if $str =~ s|^([^\s"']+)(.*)$|$r .= $1, $2|e;
        if ($str =~ m|^[\s\n]+| || $str eq '') {
            if ($r ne '') {
                push(@argv, $r);
                $r = '';
            }
            $str =~ s|^[\s\n]+||;
            last if ($str eq '');
        }
        if ($str eq $prev) {
            #    breaks an infinite loop
            print STDERR "** WML:Error: options can not be correctly parsed\n";
            exit(1);
        }
    }
    return @argv;
}

sub CanonPath {
    my ($path) = @_;
 
    $pathL = '';
    while ($path ne $pathL) {
        $pathL = $path;
        $path =~ s|//|/|g;
        $path =~ s|/\./|/|g;
        $path =~ s|/\.$|/|g;
        $path =~ s|^\./(.)|$1|g;
        $path =~ s|([^/.][^/.]*)/\.\.||;
    }
    return $path;
}

#   escape options if not quoted but
#   when shell metachars exists
sub quotearg {
    my ($arg) = @_;
    if ($arg !~ m|^'.*'$|) {
        if ($arg =~ m|[\$"`]|) {
            $arg =~ s|([\$"`])|\\$1|sg;
        }
    }
    return $arg;
}
#   remove escape backslashes
sub unquotearg {
    my ($arg) = @_;
    $arg =~ s/\\([\$"`])/$1/g;
    return $arg;
}

#   1. process options in WMLOPTS variable
if ($var = $ENV{'WMLOPTS'}) {
    &verbose(2, "Reading WMLOPTS variable");
    $var =~ s|^\s+||;
    $var =~ s|\s+$||;
    #   arguments are not quoted because shell metacharacters
    #   have already been expanded, but dollar sign must be
    #   escaped
    $var =~ s|\$|\\\$|g;
    @ARGV = &split_argv($var);
    &ProcessOptions();
}

##
##  .wmlrc File Parsing
##
if (not $opt_r) {
    my $savedir = '';
    @DIR = ();

    #   First save current directory and go to input file directory
    if (not $opt_c and $src =~ m|/|) {
        $src =~ s|/+[^/]*$||;
        if (-d $src) {
            $savedir = Cwd::cwd;
            chdir($src);
        }
    }
    $src = '' if not $savedir;

    #   2. add all parent dirs .wmlrc files for options
    ($cwd = Cwd::cwd) =~ s|/$||;
    while ($cwd) {
        push(@DIR, $cwd);
        $cwd =~ s|/[^/]+$||;
    }

    #   Restore directory
    chdir($savedir) if $savedir;
    $cwd = Cwd::cwd;

    #   3. add ~/.wmlrc file for options
    @pwinfo = getpwuid($<);
    $home = $pwinfo[7];
    $home =~ s|/$||;
    if (-f "$home/.wmlrc") {
        push(@DIR, $home);
    }
    

    #   now parse these RC files
    foreach $dir (reverse(@DIR)) {
        if (-f "$dir/.wmlrc") {
            &verbose(2, "Reading RC file: $dir/.wmlrc\n");
            open(FP, "<$dir/.wmlrc") || error("Unable to load $dir/.wmlrc: $!");
            @ARGV = ();
            while (<FP>) {
                next if (m|^\s*\n$|);
                next if (m|^\s*#[#\s]*.*$|);
                s|^\s+||;
                s|\s+$||;
                s|\$([A-Za-z_][A-Za-z0-9_]*)|$ENV{$1}|ge;
                @X = &split_argv($_);
                push(@ARGV, @X);
            }
            close(FP) || error("Unable to close $dir/.wmlrc: $!");
            @opt_D_OLD = @opt_D;
            @opt_I_OLD = @opt_I;
            @opt_D = ();
            @opt_I = ();
            &ProcessOptions();
            @opt_D_NEW = @opt_D_OLD;
            @opt_I_NEW = @opt_I_OLD;

            #   adjust -D options
            $reldir = File::PathConvert::abs2rel("$dir", "$src");
            $reldir = "." if $reldir eq '';
            foreach $d (@opt_D) {
                if ($d =~ m|^([A-Za-z0-9_]+)~(.+)$|) {
                    ($var, $path) = ($1, $2);
                    if ($path !~ m|^/|) {
                        if ($path eq '.') {
                            $path = &CanonPath("$reldir");
                        }
                        else {
                            $path = &CanonPath("$reldir/$path");
                        }
                    }
                    $path = '""' if ($path eq '');
                    $d = "$var=$path";
                    push(@opt_D_NEW, $d);
                    next;
                }
                elsif ($d =~ m|^([A-Za-z0-9_]+)$|) {
                    $d = $d.'=1';
                }
                push(@opt_D_NEW, $d);
            }

            #   adjust -I options
            $reldir = File::PathConvert::abs2rel("$dir");
            $reldir = "." if $reldir eq '';
            foreach $path (@opt_I) {
                if ($path !~ m|^/|) {
                    if ($path eq '.') {
                        $path = &CanonPath("$reldir");
                    }
                    else {
                        $path = &CanonPath("$reldir/$path");
                    }
                    $path = '.' if ($path eq '');
                }
                push(@opt_I_NEW, $path);
            }

            @opt_D = @opt_D_NEW;
            @opt_I = @opt_I_NEW;
        }
    }

}

#   4. process the command line options 
@ARGV = @ARGVLINE;
@opt_D_OLD = @opt_D; @opt_D = (); # extra remember -D options from command line
&ProcessOptions();

#   quote the characters the shell have escaped
foreach $d (@opt_D) {
    push(@opt_D_ADD, &quotearg($d));
}
@opt_D = @opt_D_OLD;

#   fix the version level
if ($opt_V == 0) {
    $opt_V = 1; # Getopt::Long sets 0 if -V only
}
if ($opt_V == -1) {
    $opt_V = 0; # we operate with 0 for not set
}
if ($opt_V) {
    print STDERR "This is WML Version $VERSION\n";
    print STDERR "Copyright (c) 1996-2001 Ralf S. Engelschall.\n";
    print STDERR "Copyright (c) 1999-2001 Denis Barbier.\n";
    print STDERR "\n";
    print STDERR "This program is distributed in the hope that it will be useful,\n";
    print STDERR "but WITHOUT ANY WARRANTY; without even the implied warranty of\n";
    print STDERR "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n";
    print STDERR "GNU General Public License for more details.\n";
    if ($opt_V > 1) {
        print STDERR "\n";
        print STDERR "Built Environment:\n";
        print STDERR "    Host: ".'@built_system@'."\n";
        print STDERR "    Perl: ".'@perlvers@ (@perlprog@)'."\n";
        print STDERR "    User: ".'@built_user@'."\n";
        print STDERR "    Date: ".'@built_date@'."\n";
        print STDERR "Built Location:\n";
        print STDERR "    Prefix: ".'@prefix@'."\n";
        print STDERR "    BinDir: ".'@bindir@'."\n";
        print STDERR "    LibDir: ".'@libdir@'."\n";
        print STDERR "    ManDir: ".'@mandir@'."\n";
    }
    if ($opt_V > 2) {
        print STDERR "\n";
        print STDERR "Used Perl System:\n";
        print STDERR `@perlprog@ -V`;
    }
    exit(0);
}

#   If the -M was the last option and the user forgot
#   to put `--' to end options, we adjust it.
if ($opt_M !~ m%^(-|[MD]*)$% && $#ARGV == -1) {
    push(@ARGV,$opt_M);
    $opt_M = '';
}

#   set the input file
$src = $ARGV[0];

#   if no inputfile is given, WML reads from stdin
#   and forces quiet mode
if ($src eq '') {
    $src = '-';
    $opt_q = 1;
}

$tmpdir = $ENV{'TMPDIR'} || '/tmp';

#   if input is stdin we create a temporary file
$src_istmp = 0;
if ($src eq '-') {
    $src_istmp = 1;
    $src = "$tmpdir/wml.input.$$.tmp";
    unlink($src);
    open(TMP, ">$src") || error("Unable to write into $src: $!");
    while (<STDIN>) {
        print TMP $_
            or error("Unable to write into $src: $!");
    }
    close(TMP) || error("Unable to close $src: $!");
}

if (not $src_istmp and not -f $src) {
    print STDERR "** WML:Error: input file `$src' not found\n";
    exit(1);
}

#   now adjust -D options from command line
#   relative to path to source file
if (not $src_istmp) {
    $reldir = $src;
    $reldir =~ s,(:?/|^)[^/]+$,,;
    ($cwd = Cwd::cwd) =~ s|/$||;
    $reldir = File::PathConvert::abs2rel($cwd, "$cwd/$reldir");
    $reldir = "." if $reldir eq '';
}
else {
    $reldir = '.';
}
foreach $d (@opt_D_ADD) {
    if ($d =~ m|^([A-Za-z0-9_]+)~(.+)$|) {
        ($var, $path) = ($1, $2);
        if ($path !~ m|^/|) {
            if ($path eq '.') {
                $path = &CanonPath("$reldir");
            }   
            else {
                $path = &CanonPath("$reldir/$path");
            }
        }
        $path = '""' if ($path eq '');
        $d = "$var=$path";
    }
    elsif ($d =~ m|^([A-Za-z0-9_]+)$|) {
        $d = $d.'=1';
    }
    push(@opt_D, $d);
}


#   5. process the options from the pseudo-shebang line
if (not $opt_n) {
    open(TMP, "<$src") || error("Unable to load $src: $!");
    $shebang = '';
    while (1) {
        $shebang .= <TMP>;
        if ($shebang =~ m|^(.*)\\\s*$|s) {
            $shebang = $1;
            next;
        }
        last;
    }
    close(TMP) || error("Unable to close $src: $!");
    if ($shebang =~ m|^#!wml\s+(.+\S)\s*$|is) {
        #   split opts into arguments and process them
        @ARGV = &split_argv($1);
        &ProcessOptions();
    }
}

#   6. expand %DIR and %BASE in the -o flags
@opt_o_OLD = @opt_o; @opt_o = ();
foreach $opts (@opt_o_OLD) {
    my ($dir, $base);

    if ($src =~ m|^(.+)/([^/]+)$|) {
        ($dir, $base) = ($1, $2);
    }
    else {
        ($dir, $base) = ('.', $src);
    }
    $base =~ s|\.[a-zA-Z0-9]+$||;
    $opts =~ s|%DIR|$dir|sg;
    $opts =~ s|%BASE|$base|sg;
    push(@opt_o,$opts);
}

#   7. Undefine variables when requested
%new_opt_D = ();
foreach $d (@opt_D) {
    ($var, $val) = ($d =~ m|^(.+?)=(.*)$|);
    if ($val eq 'UNDEF') {
        delete $new_opt_D{$var};
    } else {
        $new_opt_D{$var} = $val;
    }
}
@opt_D = map { $_."=".$new_opt_D{$_} } keys %new_opt_D;

#   fix the verbose level
if ($opt_v == 0) {
    $opt_v = 1; # Getopt::Long sets 0 if -v only
}
if ($opt_v == -1) {
    $opt_v = 0; # we operate with 0 for not set
}

sub verbose {
    my ($level, $str) = @_;

    if ($opt_v >= $level) {
        print STDERR "** WML:Verbose: $str";
    }
}
sub error {
    my ($str) = @_;
    print STDERR "** WML:Error: $str\n";
    exit(1);
}

sub dosystem {
    my ($cmd) = @_;
    my ($rc);

    &verbose(2, "system: $cmd\n");
    $rc = system($cmd);
    return $rc;
}

sub precompile {
    my ($name, $in) = @_;
    my ($error, $func);

    $error = '';
    local $SIG{'__WARN__'} = sub { $error .= $_[0]; };
    local $SIG{'__DIE__'};

    $in =~ s|exit(\s*\(0\))|return$1|sg;
    $in =~ s|exit(\s*\([^0].*?\))|die$1|sg;
    eval("package $name; \$main = sub { \@ARGV = \@_; ".$in."; return 0; }; package main;");
    $error = "$@" if ($@);
    eval("\$func = \$${name}::main;");

    if ($error) {
        $@ = $error;
        return ($func, $error);
    }
    else {
        $@ = '';
        return ($func, '');
    }
}

sub dosource {
    my ($prog, $args) = @_;
    my ($rc, $fp, $src, @argv, $pkgname);
    my ($error, $func);

    &verbose(2, "source: $prog $args\n");
    &verbose(9, "loading: $prog\n");
    $pkgname = $prog;
    $pkgname =~ s|^.*/([^/]+)$|$1|;
    if ($prog !~ m|^/|) {
        foreach $p (split(/:/, $ENV{'PATH'})) {
            if (-f "$p/$prog") {
                $prog = "$p/$prog";
                last;
            }
        }
    }
    $fp = new IO::File;
    $fp->open($prog) || error("Unable to load $prog: $!");
    $src = '';
    while (<$fp>) {
        $src .= $_;
    }
    $fp->close() || error("Unable to close $prog: $!");
    &verbose(9, "loading: succeeded with $prog (".length($src)." bytes)\n");

    &verbose(9, "precompiling script: pkgname=$pkgname\n");
    ($func, $error) = &precompile($pkgname, $src);
    if ($error ne '') {
        &verbose(9, "precompiling script: error: $error\n");
    }
    else {
        &verbose(9, "precompiling script: succeeded\n");
    }

    &verbose(9, "splitting from args: $args\n");
    @argv = ();
    while ($args) {
        redo if $args =~ s|^\s*(-[a-zA-Z0-9]\S+)|push(@argv, &unquotearg($1)), ''|iges;
        redo if $args =~ s|^\s*(-[a-zA-Z0-9])|push(@argv, &unquotearg($1)), ''|iges;
        redo if $args =~ s|^\s*"(.*?(?!\\).)"|push(@argv, &unquotearg($1)), ''|iges;
        redo if $args =~ s|^\s*'([^']*)'|push(@argv, $1), ''|iges;
        redo if $args =~ s|^\s*(\S+)|push(@argv, &unquotearg($1)), ''|iges;
        redo if $args =~ s|^\s+$|''|iges;
    }
    &verbose(9, "splitting to argv: ".join("|", @argv)."\n");

    &verbose(9, "running script\n");
    eval "\$rc = \&{\$func}(\@argv);";
    &verbose(9, "running script: rc=$rc\n");
    $rc = 256 if not defined $rc;

    return $rc;
}

$PROTECT_COUNTER = 0;
%PROTECT_STORAGE = ();

sub protect {
    my ($file, $pass) = @_;
    my ($fp, $data, $prolog, $arg, $body, $key, $p, $pe);

    $fp = new IO::File;
    $fp->open("<$file") || error("Unable to load $file for protection: $!");
    $data = '';
    while (<$fp>) {
        $data .= $_;
    }
    $fp->close() || error("Unable to close $file: $!");
    $fp->open(">$file") || error("Unable to write into $file for protection: $!");
    #   First remove a shebang line
    if ($firstpass and $data =~ m/^#!wml/) {
        while ($data =~ s/^[^\n]*\\\n//s) { 1; }
        $data =~ s/^[^\n]*\n//s;
    }
    #   Following passes will pass through previous test
    $firstpass = 0 if $firstpass;

    #  This loop must take care of nestable <protect> tags 
    while ($data =~ s|^(.*)<protect(.*?)>(.*?)</protect>||is) {
        $p = '123456789';
        ($prolog, $arg, $body) = ($1, $2, $3);
        #    unquote the attribute
        $arg =~ s|(['"])(.*)\1\s*$|$2|;
        if ($arg =~ m|pass=([\d,-]*)|i) {
            $p = $1;
            $p =~ s|,||g;
            $p = "1$p" if $p =~ m|^-|;
            $p = "${p}9" if $p =~ m|-$|;
            $p =~ s|(\d)-(\d)|&expandrange($1, $2)|sge;
        }
        $pe = join ('', sort {$a <=> $b} (split('', $p)));
        $pe =~ s/^.*(\d)$/$1/;
        $key = sprintf("%06d", $PROTECT_COUNTER++);
        $PROTECT_STORAGE{$key} = {
                SPEC => $p,
                MAX  => $pe,
                ARG  => $arg,
                BODY => $body
        };
        $data = $prolog . "-=P[$key]=-" . $data;
    }

    #   And now unprotect passes
    while ($data =~ s|^(.*?)-=P\[(\d+)\]=-||s) {
        $key = $2;
        $fp->print($1) || error("Unable to write into $file for protection: $!");
        if ($PROTECT_STORAGE{$key}->{SPEC} =~ m/$pass/) {
            $fp->print("-=P[$key]=-")
                || error("Unable to write into $file for protection: $!");
        }
        else {
            $data = "<protect" . $PROTECT_STORAGE{$key}->{ARG} . ">" .
                    $PROTECT_STORAGE{$key}->{BODY} . "</protect>" . $data;
        }
    }
    $fp->print($data) || error("Unable to write into $file for protection: $!");
    $fp->close() || error("Unable to close $file: $!");
}

sub unprotect {
    my ($file, $pass) = @_;
    my ($fp, $data, $prefix, $key);

    $fp = new IO::File;
    $fp->open("<$file") || error("Unable to load $file for unprotection: $!");
    $data = '';
    while (<$fp>) {
        $data .= $_;
    }
    $fp->close() || error("Unable to close $file: $!");
    $fp->open(">$file") || error("Unable to write into $file for unprotection: $!");
    while ($data =~ m|^(.*?)-=P\[(\d+)\]=-(.*)$|s) {
        ($prefix, $key, $data) = ($1, $2, $3);
        if ($pass < 9 and $pass < $PROTECT_STORAGE{$key}->{MAX}) {
            $prefix .= "<protect" . $PROTECT_STORAGE{$key}->{ARG} . ">";
            $data = "</protect>" . $data;
        }
        $data = $prefix . $PROTECT_STORAGE{$key}->{BODY} . $data;
    }
    #    Remove useless <protect> tags
    $data =~ s|</?protect.*?>||gs if $pass == 9;
    $fp->print($data) || error("Unable to write into $file for unprotection: $!");
    $fp->close() || error("Unable to close $file: $!");
    foreach $key (%PROTECT_STORAGE) {
        $PROTECT_STORAGE{$key} = undef if $pass < 9;
    }
}

sub pass1 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($rc);

    if ($opt_s) {
        $rc = &dosystem("@libdir@/exec/wml_p1_ipp $opt -o $to $from");
    }
    else {
        $rc = &dosource("@libdir@/exec/wml_p1_ipp", "$opt -o $to $from");
    }
    return $rc;
}

sub pass2 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($buf, $rc);
    local(*TMP, *TO);

    ($cwd = Cwd::cwd) =~ s|/$||;
    $rc = &dosystem("@libdir@/exec/wml_p2_mp4h $opt -I '$cwd' $from >$tmp"); 

    #   remove asterisks which can be entered
    #   by the user to avoid tag interpolation
    open(TMP, "<$tmp") || error("Unable to load $tmp: $!");
    open(TO, ">$to") || error("Unable to write into $to: $!");
    $buf = '';
    while (<TMP>) {
        $buf .= $_;
    }
    $buf =~ s|<\*?([a-zA-Z][a-zA-Z0-9-_]*)\*?([^a-zA-Z0-9-_])|<$1$2|sg;
    $buf =~ s|<\*?(/[a-zA-Z][a-zA-Z0-9-_]*)\*?>|<$1>|sg;
    print TO $buf
        or error("Unable to write into $to: $!");

    close(TMP) || error("Unable to close $tmp: $!");
    close(TO) || error("Unable to close $to: $!");

    return $rc;
}

sub pass3 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($rc);

    $rc = &dosystem("@libdir@/exec/wml_p3_eperl $opt -P -k -B '<:' -E ':>' $from >$to");

    return $rc;
}

sub pass4 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($rc);

    $rc = &dosystem("@libdir@/exec/wml_p4_gm4 $opt --prefix-builtins <$from >$to");

    return $rc;
}

sub pass5 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($rc) = 0;

    if ($opt_s) {
        $rc = &dosystem("@libdir@/exec/wml_p5_divert $opt -o$to $from");
    }
    else {
        $rc = &dosource("@libdir@/exec/wml_p5_divert", "$opt -o$to $from");
    }
    return $rc;
}

sub pass6 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($rc) = 0;

    if ($opt_s) {
        $rc = &dosystem("@libdir@/exec/wml_p6_asubst $opt -o$to $from");
    }
    else {
        $rc = &dosource("@libdir@/exec/wml_p6_asubst", "$opt -o$to $from");
    }
    return $rc;
}

sub pass7 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($rc);

    if ($opt_s) {
        $rc = &dosystem("@libdir@/exec/wml_p7_htmlfix $opt -o$to $from");
    }
    else {
        $rc = &dosource("@libdir@/exec/wml_p7_htmlfix", "$opt -o$to $from");
    }
    return $rc;
}

sub pass8 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($rc);

    if ($opt_s) {
        $rc = &dosystem("@libdir@/exec/wml_p8_htmlstrip $opt -o $to $from");
    }
    else {
        $rc = &dosource("@libdir@/exec/wml_p8_htmlstrip", "$opt -o$to $from");
    }
    return $rc;
}

sub pass9 {
    my ($opt, $from, $to, $tmp) = @_;
    my ($rc, $shebang, @X);

    #   First check whether a shebang line is found and no
    #   output files were assigned on command line.
    #   This is needed to unprotect output files.
    if ($#opt_o == -1) {
        @ARGVLINE = @ARGV;
        @ARGV = ();
        open(SLICE,"<$from") || error("Unable to load $from: $!");
        while ($_ = <SLICE>) {
            if ($_ =~ m|%!slice\s+(.*)$|) {
                @X = &split_argv($1);
                push(@ARGV, @X);
            }
        }
        close(SLICE) || error("Unable to close $from: $!");
        if ($#ARGV > -1) {
            $out_istmp = 0;
            &ProcessOptions();
            &ProcessOutfiles();
            $opt = "$verbose $out";
        }
        @ARGV = @ARGVLINE;
    }
    #   slice contains "package" commands and
    #   other stuff, so we cannot source it.
    $rc = &dosystem("@libdir@/exec/wml_p9_slice $opt $from");

    return $rc;
}

#
#   predefine some useful variables
#

@pwinfo = getpwuid($<);

$gen_username = $pwinfo[0];
$gen_username =~ s|[\'\$\`\"]||g; # make safe for shell interpolation
$gen_username ||= 'UNKNOWN-USERNAME';

$gen_realname = $pwinfo[6];
$gen_realname =~ s|^([^\,]+)\,.*$|$1|;
$gen_realname =~ s|[\'\$\`\"]||g; # make safe for shell interpolation
$gen_realname ||= 'UNKNOWN-REALNAME';

$gen_hostname = `hostname`;
$gen_hostname =~ s|\n$||;
$gen_hostname ||= 'UNKNOWN-HOSTNAME';

if ($gen_hostname =~ m|^[a-zA-Z0-9_-]+$| and 
    -f "/etc/resolv.conf") {
    $domain = '';
    open(TMP, "</etc/resolv.conf")
        || error("Unable to load /etc/resolv.conf: $!");
    while (<TMP>) {
        if (m|^domain\s+\.?(\S+)|) {
            $domain = $1;
            last;
        }
    }
    close(TMP) || error("Unable to close /etc/resolv.conf: $!");
    if ($domain ne '') {
        $gen_hostname = "$gen_hostname.$domain";
    }
}
$gen_time = time();
$gen_ctime = &ctime(time());
$gen_isotime = &isotime(time());
$gen_gmt_ctime = &gmt_ctime(time());
$gen_gmt_isotime = &gmt_isotime(time());

($cwd = Cwd::cwd) =~ s|/+$||;
if ($src_istmp) {
    $src_dirname  = $cwd;
    $src_filename = 'STDIN';
    $src_basename = 'STDIN';
    $src_suffix   = '';
    $src_time     = $gen_time;
    $src_ctime    = $gen_ctime;
    $src_isotime  = $gen_isotime;
    $src_gmt_ctime  = $gen_gmt_ctime;
    $src_gmt_isotime= $gen_gmt_isotime;
    $src_username = $gen_username;
    $src_realname = $gen_realname;
}
else {
    if ($src =~ m|/|) {
        $src_dirname = $src;
        $src_dirname =~ s|/+[^/]*$||;
        $src_dirname = File::PathConvert::realpath("$src_dirname");
    }
    else {
        $src_dirname  = $cwd;
    }
    $src_filename = $src;
    $src_filename =~ s|^.*/+||;
    $src_basename = $src_filename;
    $src_basename =~ s|(\.[a-zA-Z0-9]+)$||;
    $src_suffix   = $1;
    ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
     $atime,$mtime,$ctime,$blksize,$blocks) = stat($src);
    $src_time  = $mtime;
    $src_ctime = &ctime($mtime);
    $src_isotime = &isotime($mtime);
    $src_gmt_ctime = &gmt_ctime($mtime);
    $src_gmt_isotime = &gmt_isotime($mtime);
    @pwinfo = getpwuid($uid);
    $src_username = $pwinfo[0] || 'UNKNOWN-USERNAME';
    $src_username =~ s|[\'\$\`\"]||g; # make safe for shell interpolation
    $src_realname = $pwinfo[6] || 'UNKNOWN-REALNAME';
    $src_realname =~ s|^([^\,]+)\,.*$|$1|;
    $src_realname =~ s|[\'\$\`\"]||g; # make safe for shell interpolation
}

unshift(@opt_D, "WML_SRC_DIRNAME=$src_dirname");
unshift(@opt_D, "WML_SRC_FILENAME=$src_filename");
unshift(@opt_D, "WML_SRC_BASENAME=$src_basename");
unshift(@opt_D, "WML_SRC_TIME=$src_time");
unshift(@opt_D, "WML_SRC_CTIME=$src_ctime");
unshift(@opt_D, "WML_SRC_ISOTIME=$src_isotime");
unshift(@opt_D, "WML_SRC_GMT_CTIME=$src_gmt_ctime");
unshift(@opt_D, "WML_SRC_GMT_ISOTIME=$src_gmt_isotime");
unshift(@opt_D, "WML_SRC_USERNAME=$src_username");
unshift(@opt_D, "WML_SRC_REALNAME=$src_realname");
unshift(@opt_D, "WML_GEN_TIME=$gen_time");
unshift(@opt_D, "WML_GEN_CTIME=$gen_ctime");
unshift(@opt_D, "WML_GEN_ISOTIME=$gen_isotime");
unshift(@opt_D, "WML_GEN_GMT_CTIME=$gen_gmt_ctime");
unshift(@opt_D, "WML_GEN_GMT_ISOTIME=$gen_gmt_isotime");
unshift(@opt_D, "WML_GEN_USERNAME=$gen_username");
unshift(@opt_D, "WML_GEN_REALNAME=$gen_realname");
unshift(@opt_D, "WML_GEN_HOSTNAME=$gen_hostname");
unshift(@opt_D, "WML_LOC_PREFIX=@prefix@");
unshift(@opt_D, "WML_LOC_BINDIR=@bindir@");
unshift(@opt_D, "WML_LOC_LIBDIR=@libdir@");
unshift(@opt_D, "WML_LOC_MANDIR=@mandir@");
unshift(@opt_D, "WML_VERSION=$VERSION");
unshift(@opt_D, "WML_TMPDIR=$tmpdir");

#   Create temporary file names as soon as $src_suffix is set
$tmp[0] = "$tmpdir/wml.$$.tmp1" . $src_suffix;
$tmp[1] = "$tmpdir/wml.$$.tmp2" . $src_suffix;
$tmp[2] = "$tmpdir/wml.$$.tmp3" . $src_suffix;
$tmp[3] = "$tmpdir/wml.$$.tmp4" . $src_suffix;

#   Flag set if some output goes to stdout
$out_istmp = 0;

#
#   generate options
#

#   canonicalize -p option(s)
if ($#opt_p == -1) {
    #   no option means all passes
    @opt_p = ( '1-9' );
}
if (not -s $src) {
    #   on empty input optimize to just use pass 9
    @opt_p = ( '9' );
}
$p = join('', @opt_p);
$p =~ s|,||g;
sub expandrange {
    my ($a, $b) = @_;
    $x = ''; 
    for ($i = $a; $i <= $b; $i++) { 
        $x .= $i;
    }
    return $x;
}
$p =~ s|(\d)-(\d)|&expandrange($1, $2)|sge;
if ($p =~ m/!$/) {
    $p =~ s/!$//;
    @p = split('', $p);
}
else {
    @p = sort {$a <=> $b} (split('', $p));
}

#   only pre-processing if -M option specified
@p = ( '1' ) if $opt_M ne '-';

#   determine includes
$inc = '';
foreach $i (@opt_I) {
    $inc .= " -I $i";
}

#   determine preloads
$preload = '';
foreach $p (@p) {
    $preload .= " -s 'sys/bootp${p}.wml'"
      if -f "@libdir@/include/sys/bootp${p}.wml" and $p =~ m/^[34]$/;
}
foreach $i (@opt_i) {
    if ($i =~ m|^<(.+)>$|) {
        $preload .= " -s '$1'";
    }
    else {
        $preload .= " -i '$i'";
    }
}

#   determine prologs
$prolog = '';
foreach $p (@opt_P) {
    $prolog .= ' -P "'.&quotearg($p).'"';
}

$defipp = '';
my $dummy;
foreach $d (@opt_D) {
    ($var, $dummy, $val) = ($d =~ m|^(.+?)=("?)(.*)\2\n*$|);
    $defipp .= " \"-D$var=$val\"";
}
$defipp .= " -M$opt_M" if $opt_M ne '-';
$defipp .= " -DIPP_SRC_REALNAME=$src_filename" if not $src_istmp;

$defmp4h = '';
foreach $d (@opt_D) {
    ($var, $dummy, $val) = ($d =~ m|^(.+?)=("?)(.*)\2\n*$|);
    $defmp4h .= " -D $var=\"$val\"";
}
$cnt=0;
foreach $o (@opt_o) {
    $defmp4h .= " -D SLICE_OUTPUT_FILENAME[$cnt]=\"$o\"" if $o =~ m|\*|;
    $cnt++;
}

$defeperl = '';
foreach $d (@opt_D) {
    ($var, $dummy, $val) = ($d =~ m|^(.+?)=("?)(.*)\2\n*$|);
    $defeperl .= " \"-d$var=$val\"";
}

$defgm4 = '';
foreach $d (@opt_D) {
    ($var, $dummy, $val) = ($d =~ m|^(.+?)=("?)(.*)\2\n*$|);
    $defgm4 .= " \"-Dm4_$var=$val\"";
}

sub ProcessOutfiles {
    my ($o);

    $out = '';
    @outfiles = ();
    foreach $o (@opt_o) {
        next if ($o =~ m|\*[^:]*$|);

        #   create option
        if ($o eq '-') {
            $out .= " -o '".&quotearg($tmp[3])."'";
            $out_istmp = 1;
        } elsif ($o =~ m/(.*):-$/) {
            $out .= " -o '".&quotearg($1.':'.$tmp[3])."'";
            $out_istmp = 1;
        } else {
            $out .= " -o '".&quotearg($o)."'";
        }

        #   unquote the filename
        $o =~ s|^(['"])(.*)\1$|$2|;
    
        #   create output file list for epilog filters
        if ($o =~ m|^([_A-Z0-9~!+u%n\-\\^x*{}()@]+):(.+)\@(.+)$|) {
            push(@outfiles, ($2 ne '-' ? $2 : $tmp[3]));
        }
        elsif ($o =~ m|^([_A-Z0-9~!+u%n\-\\^x*{}()@]+):(.+)$|) {
            push(@outfiles, ($2 ne '-' ? $2 : $tmp[3]));
        }
        elsif ($o =~ m|^(.+)\@(.+)$|) {
            push(@outfiles, ($1 ne '-' ? $1 : $tmp[3]));
        }
        else {
            push(@outfiles, ($o ne '-' ? $o : $tmp[3]));
        }
    }
}
&ProcessOutfiles();

$verbose = '';
if ($opt_v >= 3) {
    $verbose = '-v';
}

$optimize = '';
if ($opt_O ne '') {
    $optimize = "-O$opt_O";
}

if (not $src_istmp) {
    #  Input file is copied because of the protect/unprotect stuff
    $fpin = new IO::File;
    $fpin->open("<$src") || error("Unable to load $src: $!");
    $fpout = new IO::File;
    $fpout->open(">$tmp[0]") || error("Unable to write into $tmp[0]: $!");
    while (<$fpin>) {
        $fpout->print($_) || error("Unable to write into $tmp[0]: $!");
    }
    $fpout->close() || error("Unable to close $tmp[0]: $!");
    $fpin->close() || error("Unable to close $src: $!");

    $from  = $tmp[0];
    $to    = $tmp[1];
    $cnt   = 1;
}
else {
    $from  = $src;
    $to    = $tmp[0];
    $cnt   = 0;
}

if ($out eq '') {
    $out = " -o$tmp[3]";
    $out_istmp = 1;
}

$opt_pass1 = "$defipp $verbose -S @libdir@/include -n $src $inc $preload $prolog";
$opt_pass2 = "$defmp4h";
$opt_pass3 = "$defeperl";
$opt_pass4 = "$defgm4";
$opt_pass5 = "$verbose";
$opt_pass6 = "$verbose";
$opt_pass7 = "$verbose";
$opt_pass8 = "$verbose $optimize";
$opt_pass9 = "$verbose $out";


$pcnt  = 0;
@prop  = ( "-", "\\", "|", "/");
$last  = '';
$final = 0;
$pager = ($ENV{'PAGER'} || 'more');

#
#   clear out any existing CGI environments because some of our
#   passes (currently Pass 2 and 3) get totally confused by these
#   variables.
#
map { delete $ENV{$_} } qw(
    SERVER_SOFTWARE SERVER_NAME GATEWAY_INTERFACE SERVER_PROTOCOL
    SERVER_PORT REQUEST_METHOD PATH_INFO PATH_TRANSLATED SCRIPT_NAME
    QUERY_STRING REMOTE_HOST REMOTE_ADDR AUTH_TYPE REMOTE_USER REMOTE_IDENT
    CONTENT_TYPE CONTENT_LENGTH HTTP_ACCEPT HTTP_USER_AGENT
);

sub unlink_tmp {
    unlink($tmp[0]);
    unlink($tmp[1]);
    unlink($tmp[2]);
    unlink($tmp[3]);
    unlink($src) if ($src_istmp);
}

if ($opt_M ne '-') {
    if ($#outfiles > -1) {
        $o = '"'. join(' ',@outfiles) . '"';
        $opt_pass = '';
        foreach $a (@opt_W) {
            if ($a =~ m|^(\d),(.*)$|) {
                $opt_pass .= " $2 " if $1 == 1;
            }
        }
        eval "\$rc = \&pass1(\$opt_pass1 . \$opt_pass, \$src, \$o, \$tmp[2]);";
        if ($rc != 0) {
            if ($rc % 256 != 0) {
                printf(STDERR "** WML:Break: Error in Pass %d (status=%d, rc=%d).\n", 1, $rc % 256, $rc / 256);
            }
            else {
                printf(STDERR "** WML:Break: Error in Pass %d (rc=%d).\n", 1, $rc / 256);
            }
            &unlink_tmp();
            exit(1);
        }
    }
    &unlink_tmp();
    exit(0);
}

#
#   MAIN PROCESSING LOOP
#
@TIMES = ();
$firstpass = 1;
foreach $p (@p) {
    &verbose(2, "PASS $p:\n");
    print STDERR @prop[$pcnt++ % 4] . "\b" if (not $opt_q); 

    #   run pass
    ($u, $s, $cu, $cs) = times();
    $stime = $u + $s + $cu + $cs;
    &protect($from, $p);
    $opt_pass = '';
    foreach $a (@opt_W) {
        if ($a =~ m|^(\d),(.*)$|) {
            $opt_pass .= " $2 " if $1 == $p;
        }
    }
    eval "\$rc = \&pass$p(\$opt_pass$p . \$opt_pass, \$from, \$to, \$tmp[2]);";
    if ($rc != 0) {
        if ($rc % 256 != 0) {
            printf(STDERR "** WML:Break: Error in Pass %d (status=%d, rc=%d).\n", $p, $rc % 256, $rc / 256);
        }
        else {
            printf(STDERR "** WML:Break: Error in Pass %d (rc=%d).\n", $p, $rc / 256);
        }
        &unlink_tmp();
        exit(1);
    }
    &unprotect($to, $p) if ($p < 9); # pass 9 is a special case
    ($u, $s, $cu, $cs) = times();
    $etime = $u + $s + $cu + $cs;
    $dtime = $etime-$stime;
    $dtime = 0.01 if ($dtime < 0);
    $TIMES[$p] = $dtime;
    
    #   optionally view current result
    if ($opt_v >= 3 && $p < 9) {
        print STDERR "Want to see result after Pass$p [yNq]: ";
        ReadMode 4;
        $key = ReadKey(0);
        ReadMode 0;
        print STDERR "\n";
        if ($key =~ m|[Yy]|) {
            system("$pager $to");
        }
        elsif ($key =~ m|[qQ]|) {
            printf(STDERR "** WML:Break: Manual Stop.\n");
            &unlink_tmp();
            exit(1);
        }
    }

    #   step further
    $last  = $to;
    $final = 1 if $p == 9;
    $from  = $tmp[$cnt % 2];
    $to    = $tmp[($cnt+1) % 2];
    unlink($to);
    $cnt++;
    last if $p == 9;
}

if ($last ne '' and $final and $out_istmp) {
    &unprotect($tmp[3], 9);
} elsif ($last ne '' and not $final) {
    my $i = 0;
    my @fh = ();
    my $fp;
    &unprotect($last, 9);
    if ($#outfiles > -1) {
        foreach $o (@outfiles) {
            $fh[$i] = new IO::File "> $o";
            error("Unable to write into $o") if !defined $fh[$i];
            $i++;
        }
    } else {
        $fh[$i] = new IO::File "> $tmp[3]";
        error("Unable to write into $tmp[3]") if !defined $fh[$i];
    }
    open(FP, "<$last") || error("Unable to load $last: $!");
    while (<FP>) {
        foreach $fp (@fh) {
            print $fp $_
                or error("Unable to write into output file: $!");
        }
    }
    foreach $fp (@fh) {
        $fp->close() || error("Unable to close output file: $!");
    }
    close(FP) || error("Unable to close $last: $!");
}
#   Unprotect output files and run epilog filters
if ($#outfiles > -1) {
    #   unprotect all outputfiles
    foreach $o (@outfiles) {
        &unprotect($o, 9);
    }

    #   optionally set mtime of outputfiles
    #   to mtime of inputfile if inputfile was not STDIN
    if (not $src_istmp and $opt_t) {
        ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
         $atime,$mtime,$ctime,$blksize,$blocks) = stat($src);
         $atime = time();
         foreach $o (@outfiles) {
             utime($atime, $mtime+1, $o);
         }
    }

    #   run epilog filters
    foreach $o (@outfiles) {
        foreach $e (@opt_E) {
            if ($e =~ m|^htmlinfo(.*)|) {
                $e = "@libdir@/exec/wml_aux_htmlinfo$1";
            }
            elsif ($e =~ m|^linklint(.*)|) {
                $e = "@libdir@/exec/wml_aux_linklint$1";
                $e .= " -nocache -one -summary" if ($1 eq '');
            }
            elsif ($e =~ m|^weblint(.*)|) {
                $e = "@libdir@/exec/wml_aux_weblint$1";
            }
            elsif ($e =~ m|^tidy(.*)|) {
                $e = "@libdir@/exec/wml_aux_tidy$1";
                $e .= " -m" if ($1 eq '');
            }
            &verbose(2, "EPILOG: $e $o\n");
            $rc = system("$e $o");
            #   Tidy returns 1 on warnings and 2 on errors :(
            $rc = 0 if ($rc == 256 and $e =~ m|@libdir@/exec/wml_aux_tidy|);
            error("epilog failed: $e $o") if $rc != 0;
        }
    }
}

#   ... and eventually send to stdout
if ($out_istmp) {
    open(FP, "<$tmp[3]") || error("Unable to load $tmp[3]: $!");
    while (<FP>) {
        print $_;
    }
}

&unlink_tmp();

($u, $s, $cu, $cs) = times();
$at = $u + $s + $cu + $cs;
$i  = 1;
$pt = 0;
$timestr = '';
foreach $t (@TIMES[1..9]) {
    $pt += $t;
    if ($i == 2 or $i == 3) {
        $timestr .= sprintf($t ne '' ? "%5.2f " : "   -- ", $t);
    }
    else {
        $timestr .= sprintf($t ne '' ? "%4.2f " : "  -- ", $t);
    }
    $i++;
}
$timestr = sprintf("%4.2f | ", $at-$pt) . $timestr;
$timestr .= sprintf("| %6.2f", $at);
&verbose(1, "Processing time (seconds):\n");
&verbose(1, "main |  ipp  mp4h   epl  gm4  div asub hfix hstr slic |  TOTAL\n");
&verbose(1, "---- | ---- ----- ----- ---- ---- ---- ---- ---- ---- | ------\n");
&verbose(1, "$timestr\n");

#   exit gracefully
exit(0);

##EOF##
__END__

=head1 NAME

WML - Website META Language

=head1 VERSION

@WML_VERSION@

=head1 SYNOPSIS

B<wml>
[B<-I> I<PATH>]
[B<-i> I<PATH>]
[B<-D> I<NAME>B<=>I<STR>]
[B<-D> I<NAME>B<~>I<PATH>]
[B<-n>]
[B<-r>]
[B<-O> I<level>]
[B<-o> [I<SLICETERM>C<:>]I<PATH>[B<@>I<CHMODOPT>]]
[B<-P> I<PATH>]
[B<-E> I<PATH>]
[B<-t>] 
[B<-p> I<STR>]
[B<-W> I<STR>]
[B<-s>]
[B<-v> [I<NUM>]]
[B<-q>]
[I<inputfile>]

B<wml>
[B<-V> [I<NUM>]] 
[B<-h>] 

=head1 DESCRIPTION

This is the control program of the I<Website META Language> (WML), a free HTML
generation toolkit for Unix, internally consisting of 9 independent languages. 

The main idea of WML is a sequential filtering scheme where each language
provides one of 9 processing passes.  So F<wml> reads I<inputfile> (or from
F<stdin> if I<inputfile> is a dash or completely missing), applies passes 1-9
(or only the passes specified by B<-p>) and finally produces one or more
I<outputfile>s.

For more details on this processing scheme read the I<WML Introduction> under
wml_intro(7) and the I<WML Tutorial> under wml_tutorial(7).

=head1 OPTIONS

=over

=item B<-I>, B<--include=>I<PATH>

Adds a I<directory> to the list of user include paths. Use this option to set the
runtime environment for pass 1. See wml_p1_ipp(1) for more details.

=item B<-i>, B<--includefile=>I<PATH>

Pre-loads a particular include I<file>, i.e. virtually adds a

  #include "PATH"

at the top of I<inputfile>. Use this to automatically include default user
include files. If you want to include a systems include file you have to
surround the I<PATH> with angle brackets, for instance use ``C<-i>
C<"E<lt>foo/bar.wmlE<gt>">'' to include the file F<foo/bar.wml> from the
system include area.  Alternatively you can use the special syntax
``C<wml::foo::bar>'' as with the C<#use> directive.

=item B<-D>, B<--define=>I<NAME>B<=>I<STR>

Defines a variable which can be interpolated in pass 1 (IPP) via C<$(NAME)>, in
pass 2 (mp4h) via E<lt>C<get-var NAME>E<gt>, in pass 3 (ePerl) via
C<E<lt>:=$NAME:E<gt>> and in pass 4 (GNU m4) via C<m4_NAME>.
A special variant B<--define=>I<NAME>B<=UNDEF> does the opposite, it
deletes previous definitions (which may be different than undefining
these variables, e.g. with system defined variables).

=item B<-D>, B<--define=>I<NAME>B<~>I<PATH>

Similar to the above but defines a variable holding a pathname which is
autoadjusted (see below).  It can be interpolated in the same ways as the
C<NAME=STR> variant from above.

=item B<-n>, B<--noshebang>

This forces WML to ignore a possibly contained shebang line in I<inputfile>.
This is usually used by WMk, because WMk already parsed this line and supplied
the options to WML.

=item B<-r>, B<--norcfile>

This forces WML to ignore all F<.wmlrc> files.

=item B<-c>, B<--nocd>

When WML processes an input file from another directory, it jumps into
that directory before parsing F<.wmlrc> files, and jump back to current
directory after.  If this option is set, no directory change is made and
F<.wmlrc> files are read reative to current working directory.

=item B<-O>, B<--optimize=>I<NUM>

This is the optimization option which is passed directly to pass 8
(F<htmlfix>). It controls the amount of optimization/stripping which is
applied to the generated HTML markup code.

=item B<-o>, B<--outputfile=>I<SLICETERM>B<:>I<outputfile>[B<@>I<CHMODOPT>]

This redirects the output to a file. Usually the whole file will be send to
F<stdout> (same as C<ALL:->). You can use this option more than once to output
to more than one file while using the I<SLICETERM> as a set theory term of
slices to determine which contents will be included into each particular
output file.  The optional I<CHMODOPT> is intended for specifying options for
a finally applied F<chmod> command. For instance use ``C<u+x>'' to create a
file with the execution bit set (Apache's XBitHack feature).
See wml_p9_slice(1) for more details.

=item B<-P>, B<--prolog=>I<PATH>

Runs an prolog filter over the input file.  This program receives the data to
act on as STDIN and has to produce the filtered data on STDOUT.

=item B<-E>, B<--epilog=>I<PATH>

Runs an epilogue program over the finally resulting output files.  Currently
the following WML-specific programs are known: F<htmlinfo>, F<linklint>,
F<tidy> and F<weblint>.  But you can specify any program which is available in
your C<PATH>. This program receives the file to act on as its first command
line argument. Notice that output is not redirected to this file, so you have
to use a wrapper or program specific flags if you want to modify output files.

=item B<-t>, B<--settime>

This sets the modification time of all output files to the modification time
of I<intputfile> plus 1 second. This is useful because Webservers will
generate C<Last-Modified> headers and there the editing time is more important
than the generation time. The 1 second offset is for the dependencies
of Makefiles.

=item B<-M>, B<--depend>[B<=>I<OPTIONS>]

Output a rule suitable for `make' describing the dependencies of each output
file, as `gcc' does. It has only sense when the B<-o> option is used.
No processing is done except for the first pass.

The B<D> flag option writes the rule to a dependency file. The name of
this file is obtained by replacing the suffix of the output file by ".d".

The B<M> flag option deletes the system files from the list of dependencies.

=item B<-p>, B<--pass=>I<STR>

Specifies which of the passes described above are actually applied under
runtime. The argument I<STR> is a comma-separated list of pass numbers with
one special case: You can write C<X-Y> for all passes C<X...Y>.  When pass 9
is not part of I<STR> the resulting output is written to F<STDOUT>. Default is
the string ``C<1-9>''. 

=item B<-W>, B<--passoption=>I<NUM>,I<STR>

Set option I<STR> for the pass I<NUM>. 

=item B<-s>, B<--safe>

This disables some Perl hacks inside WML which speedup processing by reducing
the forking overhead when running the various passes.

Without this option WML pre-compiles the passes 1,5,6,7,8 (which are written
in Perl!) into a different namespace of the currently running Perl interpreter
instead of running them externally via C<system()>. The effect is that these
programs are run from within the same Perl interpreter thus saving five CPU-
and time-intensive C<fork()>'s. The actual gain is between 2 and 4 seconds of
processing time. Although experience showed that it works great, the
theoretical problem still is, that this approach is somewhat risky due to
internal Perl variable conflicts.

Use this option to disable these speedups by forcing WML to use the safe
C<fork()> approach.

=item B<-v>, B<--verbose>[B<=>I<NUM>]

This sets verbose mode (from 1 to 9) where some processing information will be
given on the console. Useful for debugging. This option also gets passed to
some of the filtering programs. Default is no verbosity and just B<-v> means
B<-v1>.

=item B<-q>, B<--quiet>

This sets quiet mode where the processing prop is no longer displayed.  Use
this option when running F<wml> as a batch job.  This option is automatically
forced when I<inputfile> is missing.  Then WML automatically reads from
F<stdin> in quiet mode.

=item B<-V>, B<--version>[B<=>I<NUM>]

Gives the version identification string and disclaimer (no I<NUM> or I<NUM>
E<gt>= 1), the WML build information (I<NUM> E<gt>= 2) and the Perl build
information (I<NUM> E<gt>= 3). Use this option to get a brief description of
your installed WML system, especially when reporting bugs to the author.

=item B<-h>, B<--help>

Prints the usage summary page.

=back

=head1 ENVIRONMENT

=head2 DEFINED VARIABLES

The following variables are always defined by F<wml> under runtime and are
usually interpolated via E<lt>C<get-var NAME>E<gt> inside Pass 2 and via
C<$NAME> in Pass 3.

=over 4

=item WML_SRC_DIRNAME

The current working directory from where F<wml> was started.
An absolute Unix filesystem path.

=item WML_SRC_FILENAME

The name of the I<inputfile> from the command line. Useful when running F<wml>
on a bulk of files and includefiles have to determine in which they are
included.

=item WML_SRC_BASENAME

The basename of the I<inputfile>, i.e. the C<WML_SRC_FILENAME>, but with the
extension already stripped.

=item WML_SRC_TIME

The last modification time of I<inputfile> in C<time()> format.
Useful inside footers when customized date format is needed.

=item WML_SRC_CTIME

The last modification time of I<inputfile> in C<ctime()> format.
Useful inside footers include files.

=item WML_SRC_ISOTIME

The last modification time of I<inputfile> in ISO C<yyyy-mm-dd hh:mm:ss> format.
Useful inside footers include files.

=item WML_SRC_USERNAME

The Unix username of the user who own I<inputfile>.

=item WML_SRC_REALNAME

The realname of the user who own I<inputfile>.

=item WML_GEN_TIME

The current time of generation in C<time()> format.
Useful inside footers when customized date format is needed.

=item WML_GEN_CTIME

The current time of generation in C<ctime()> format.
Useful inside footers include files.

=item WML_GEN_ISOTIME

The current time of generation in ISO C<yyyy-mm-dd hh:mm:ss> format.
Useful inside footers include files.

=item WML_GEN_USERNAME

The Unix username of the user who runs the F<wml> process.

=item WML_GEN_REALNAME

The realname of the user who runs the F<wml> process.

=item WML_GEN_HOSTNAME

The name of the host on which the F<wml> command runs.

=item WML_LOC_PREFIX

The location prefix where WML was installed to at built time.

=item WML_LOC_BINDIR

The directory where WML's binaries were installed to at built time.

=item WML_LOC_LIBDIR

The directory where WML's library files were installed to at built time.

=item WML_LOC_MANDIR

The directory where WML's manual pages were installed to at built time.

=item WML_VERSION

The version identification string of WML.  Use this for instance in HTML
comments inside header includes to identify the generation tools version.

=back

=head2 USED VARIABLES

=over 4

=item C<WMLOPTS>

This variable can contain a string of options.  Usually this is used by
Bourne-Shell users like

  $ WMLOPTS="-DNAME1=VALUE2 -DNAME2=VALUE2"
  $ export WMLOPTS

and by C-Shell users like

  $ setenv WMLOPTS "-DNAME1=VALUE2 -DNAME2=VALUE2"

to make sure some variables are defined for all runs of F<wml>.

=item C<PAGER>

This variable contains the pager WML is to use. WML uses a pager when
called with the B<--verbose=>I<NUM> or B<-v>I<NUM> option respectively and
I<NUM> is 3 or higher and therefore showing the processed data after
each pass.  Default is 'more'.

=item C<TMPDIR>

This variable contains the directory WML stores its temporary files in.
Default is '/tmp'.

=back

=head1 USER FILES

=over 4

=item F<$HOME/.wmlrc> and F<(../)*.wmlrc>

These files can also contain option strings, one option per line.  Usually the
contents is one or more B<-D> options, especially auto-adjusted ones:

  -DROOTREL~.
  -DROOTABS=http://thishost/thisarea/
     :
  -DNAME1=VALUE1
  -DNAME2=VALUE2
     :

=back

=head1 STANDARD INCLUDE FILES

WML is shipped with a standard set of include files.
You can directly include them via

  #use wml::category::name

and read their own documentation via

  $ man wml::category::name

See wml::all(3) for a description of all available include files.

=head1 SPECIAL FEATURES

The WML control frontend provides a few special features on its own:

=over 4

=item Shebang Line Support

WML recognizes a I<shebang> line (``C<#!wml> I<options>'') in the F<.wml>
files and automatically adds I<options> to its command line. This line is also
used by WMk. Two special features in contrast to shebang lines for the Unix
loader are available: WML's shebang line can be continued via a backslash
character and the constructs C<%DIR> and %<BASE> are interpolated (where
C<%DIR> is the path to the directory the source while resides and C<%BASE> is
the filename of the source file without any extension).

Example:

  #!wml -o (ALL-LANG_*)+LANG_EN:%BASE.en.html \
        -o (ALL-LANG_*)+LANG_DE:%BASE.de.html

=item Data Protection Container Tag

WML provides an own internal container tag named C<E<lt>protect
[pass=SPEC]E<gt>>...C<E<lt>/protectE<gt>> which can be used to protect any type
of data from being processed by any WML pass. When no C<pass> attribute is
given I<SPEC> defaults to C<1-9>. When you use C<pass> then I<SPEC> can be
either C<#->, C<-#>, C<#-#> or a comma separated list of passes, while
C<#> can be between C<1> and C<9>.

Example:

   <script language="JavaScript">
   <protect pass=2>
   ...
   output = "<PRE><DIV ALIGN=\"CENTER\"><B>" + help_string + "</B></DIV></PRE>"
   ...
   </protect>
   </script>

Warning:

Since WML 2.0.3, pass 1 includes extra stuff to help keeping information
about line numbers relevant (a la cpp).  So when writing

   <protect pass=2>
   #include 'foo'
   </protect>

these extra commands will not be interpreted during pass 2 and will
remain on output.  To suppress them, either compile with C<-W1,-N> flag,
or write

   <protect pass=2>
   #include 'foo' IPP_NOSYNCLINES
   </protect>

=back

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 SEEALSO

wmd(1),
wml_faq(7),
wml_intro(7),
wml_tutorial(7),
wml_tags(7),
wml::all(3).

=cut

����������������������������������������������������������������������������������������wml-2.0.12.orig/wml_frontend/wmu.src����������������������������������������������������������������0000644�0001750�0001750�00000022204�10343637513�015416� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@PATH_PERL@
eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  WMu -- Website META Language Upgrade Utility
##  
##  Copyright (c) 1996-2001 Ralf S. Engelschall.
##  Copyright (c) 1999-2001 Denis Barbier.
##  
##  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 2 of the License, 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, write to
##  
##      Free Software Foundation, Inc.
##      59 Temple Place - Suite 330
##      Boston, MA  02111-1307, USA
##  
##  Notice, that ``free software'' addresses the fact that this program
##  is __distributed__ under the term of the GNU General Public License
##  and because of this, it can be redistributed and modified under the
##  conditions of this license, but the software remains __copyrighted__
##  by the author. Don't intermix this with the general meaning of 
##  Public Domain software or such a derivated distribution label.
##  
##  The author reserves the right to distribute following releases of
##  this program under different conditions or license agreements.
##

require 5.003;

BEGIN { $^W = 0; } # get rid of nasty warnings

$VERSION = "@WML_VERSION@";

use lib "@INSTALLPRIVLIB@";
use lib "@INSTALLARCHLIB@";

use Getopt::Long 2.13;
use IO::Socket::INET;
use Term::ReadKey;


##
##  INIT
##

if ($ENV{'PATH'} !~ m|@bindir@|) {
    $ENV{'PATH'} = '@bindir@:'.$ENV{'PATH'};
}


##
##  PROCESS ARGUMENT LINE
##

sub usage {
    my ($progname) = @_;
    my ($o);

    print STDERR "Usage: $progname [options] [path ...]\n";
    print STDERR "\n";
    print STDERR "Giving Feedback:\n";
    print STDERR "  -V, --version[=NUM]    display version and build information\n";
    print STDERR "  -h, --help             display this usage summary\n";
    print STDERR "\n";
    exit(1);
}

sub version {
    system("wml -V$opt_V");
    exit(0);
}

#   options
$opt_V = -1;
$opt_h = 0;

sub ProcessOptions {
    $Getopt::Long::bundling = 1;
    $Getopt::Long::getopt_compat = 0;
    $SIG{'__WARN__'} = sub { 
        print STDERR "WMu:Error: $_[0]";
    };
    if (not Getopt::Long::GetOptions(
            "V|version:i",
            "h|help"
    )) {
        print STDERR "Try `$0 --help' for more information.\n";
        exit(0);
    }
    &usage($0) if ($opt_h);
    $SIG{'__WARN__'} = undef;
}
&ProcessOptions();

#   fix the version level
if ($opt_V == 0) {
    $opt_V = 1; # Getopt::Long sets 0 if -V only
}
if ($opt_V == -1) {
    $opt_V = 0; # we operate with 0 for not set
}
&version if ($opt_V);

sub GetTermKey {
    my ($prompt) = @_;
    my ($rc, $key);

    print STDERR "$prompt: [Ynq]";
    while (1) {
        ReadMode 4;
        $key = ReadKey(0);
        ReadMode 0;
        if ($key =~ m|[qQ]|) {
            print STDERR "\r$prompt  (Quiet)\n";
            print STDERR "WMu:Break: User cancelled operation\n";
            exit(0);
        }
        elsif ($key =~ m|[\nYy]|) {
            print STDERR "\r$prompt  (Yes)\n";
            $rc = 'y';
            last;
        }
        elsif ($key =~ m|[nN]|) {
            print STDERR "\r$prompt  (No) \n";
            $rc = 'n';
            last;
        }
    }
    return $rc;
}

print STDERR "This is WML UPGRADE (WMu), Version $VERSION\n";
print STDERR "Copyright (c) 1996-2001 Ralf S. Engelschall.\n";
print STDERR "\n";

##
##  Find latest version
##

sub GetURL {
    my ($method, $url, $display, $prefix) = @_;

    my ($host, $port, $path) = ($url =~ m/^http:\/\/([^\/:]+)(?::(\d)|)(\/.*)$/);
    $port = 80 if $port eq '';

    my $s = IO::Socket::INET->new(
        PeerAddr => $host,
        PeerPort => $port,
        Proto    => 'tcp'
    );
    if (not defined $s) {
        print STDERR sprintf("Unable to get %s%s\n", $prefix, $url);
        exit(1);
    }
    $s->autoflush(1);
    $s->send("$method $path HTTP/1.0\n" .
             "Host: $host\n" .
             "User-Agent: WML-wmu/$VERSION\n" .
             "\n");
    my $r = '';
    my $b = 0;
    my $max = '';
    print STDERR sprintf("%s%s\n", $prefix, $url) if $display;
    while (<$s>) {
        $r .= $_;
        $b += length($_);
        if ($max eq '' and $r =~ m|^Content-Length:\s+(\d+)\s*$|im) {
            $max = $1;
        }
        if ($max eq '') {
            print STDERR sprintf("%sRetrieved: %9d bytes\r", $prefix, $b) if $display;
        }
        else {
            print STDERR sprintf("%sRetrieved: %9d/%d bytes\r", $prefix, $b, $max) if $display;
        }
    }
    $s->close;
    print STDERR sprintf("%s                         \r", $prefix) if $display;

    my ($response, $headers, $body) = ($r =~ m|^(.+?)\r?\n(.+?)\r?\n\r?\n(.*)$|s);
    my ($rc) = ($response =~ m|^HTTP/1\.\d\s+(\d+)|s);

    if ($rc == 302 or $rc == 301) {
        ($url) = ($headers =~ m|^Location:\s+(.+?)$|im);
        return &GetURL($method, $url, $display, $prefix);
    }
    else {
        return ($response, $headers, $body);
    }
}

$url = "http://www.engelschall.com/sw/wml/distrib";

print STDERR "1. Determine latest version:\n";
($x, $x, $d) = &GetURL("GET", "$url/index.current", 0, '');
$d =~ s|^\s+||;
$d =~ s|\s+$||;
($v) = ($d =~ m|^wml-(.+).tar.gz$|);
$f = $d;
print STDERR "   Website META Language, Version $v\n";

if ($VERSION eq $v) {
    print STDERR "\n";
    print STDERR "No need to upgrade, you are still running the latest version.\n";
    exit(0);
}

print STDERR "2. Determine distribution details:\n";
($x, $h, $x) = &GetURL("HEAD", "$url/$d", 0, '');
$l = "UNKNOWN";
if ($h =~ m|^Content-Length:\s+(\d+)\s*$|im) {
    $l = $1;
}
$t = "UNKNOWN";
if ($h =~ m|^Last-Modified:\s+(.+?)\s*$|im) {
    $t = $1;
}
print STDERR "   $f, $l bytes, $t\n";

##
##  Fetch latest distribution tarball
##

if (! -f $d) {
    $rc = &GetTermKey("3. Retrieving distribution tarball");
    if ($rc eq 'y') {
        $tarball = &GetURL("GET", "$url/$d", 1, "   ");
        open(TB, ">$d");
        print TB $tarball;
        close(TB);
    }
    else {
        print "   [skipped]\n";
    }
}
else {
    print STDERR "3. Retrieving distribution tarball\n";
    print STDERR "   [tarball already exists]\n";
}

##
##  Extract distribution tarball
##

$x = $d;
$x =~ s|\.tar\.gz$||;
if (! -d $x) {
    $rc = &GetTermKey("4. Extracting distribution tarball");
    if ($rc eq 'y') {
        print STDERR "   ";
        system("gunzip <$d | tar xvf - | " .
               "$^X -n -e 's/^.*\$/./s; print STDERR \$_; \$i++; print STDERR \"\\n   \" if (\$i % 60 == 0);'");
        print STDERR "\n";
    }
}
else {
    print STDERR "4. Extracting distribution tarball\n";
    print STDERR "   [source tree already exists]\n";
}

##
##  Determine configuration
##

print STDERR "5. Determining configure arguments:\n";
$args = '@WML_CONFIG_ARGS@';
$args =~ s|^\s+||s;
$args =~ s|\s*\n$||s;
$x = $args;
$x =~ s|\s+--|\n   --|sg;
print STDERR "   $x\n";

##
##  Buidling the programs
##

$rc = &GetTermKey("6. Building Website META Language");
$d =~ s|\.tar\.gz$||;
if ($rc eq 'y') {
    print STDERR "   ";
    $rc = system("(cd $d; ./configure $args; make) 2>&1 | tee $d.log |" .
                 "$^X -n -e 's/^.*\$/./s; print STDERR \$_; \$i++; print STDERR \"\\n   \" if (\$i % 60 == 0);'");
    if ($rc != 0) {
        print STDERR "**WMu:Error: Build failed:\n";
        print STDERR `tail $d.log`;
        print STDERR "\n";
        exit(1);
    }
}
else {
        print STDERR "   [skipped]\n";
}

##
##  Installing the programs
##

$rc = &GetTermKey("7. Installing Website META Language");
if ($rc eq 'y') {
    print STDERR "   ";
    $rc = system("(cd $d; make install) 2>&1 | tee $d.log |" .
                 "$^X -n -e 's/^.*\$/./s; print STDERR \$_; \$i++; print STDERR \"\\n   \" if (\$i % 60 == 0);'");
    if ($rc != 0) {
        print STDERR "**WMu:Error: Install failed:\n";
        print STDERR `tail $d.log`;
        print STDERR "\n";
        exit(1);
    }
}
else {
        print STDERR "   [skipped]\n";
}

##
##  Cleaning up
##

$rc = &GetTermKey("8. Cleaning up");
if ($rc eq 'y') {
    system("rm -rf $d $d.log");
}
else {
        print STDERR "   [skipped]\n";
}


#   exit gracefully
exit(0);

##EOF##
__END__

=head1 NAME

WMu - Website META Language Upgrade Utility

=head1 VERSION

@WML_VERSION@

=head1 SYNOPSIS

B<wmu>
[B<-V>]
[B<-h>]

=head1 DESCRIPTION

This is the upgrade utility for the Website META Language. It automatically
determines if a new WML release exists, fetches it via HTTP, extracts the
distribution, builds the systems and installs it. Each of these steps just
have to interactively accepted by a keystroke.

=head1 OPTIONS

=over 4

=item B<-V>, B<--version>

Gives the version identification string of WMd. Use this to determine the
version of a installed WML toolkit. 

=item B<-h>, B<--help>

Prints the usage summary page.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 SEEALSO

wml(1)

=cut

��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_frontend/Makefile.in������������������������������������������������������������0000644�0001750�0001750�00000004277�10343637513�016154� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_frontend/Makefile
##  Copyright (c) 1997-2001 Ralf S. Engelschall, <rse@engelschall.com>
##  Copyright (c) 2000-2001 Denis Barbier
##

@SET_MAKE@
SHELL           = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s
INSTALL_DATA    = $(top_srcdir)/etc/shtool install -c -m 644

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man

WML_VERSION     = @WML_VERSION@
WML_CONFIG_ARGS = @WML_CONFIG_ARGS@

PATH_PERL       = @PATH_PERL@
INSTALLPRIVLIB  = @INSTALLPRIVLIB@
INSTALLARCHLIB  = @INSTALLARCHLIB@

built_system    = @built_system@
built_user      = @built_user@
built_date      = @built_date@
perlprog        = @perlprog@
perlvers        = @perlvers@

compat          = @compat@

SRC_FILES       = wmk.src wml.src wmb.src wmd.src wmu.src

MAN_FILES       = $(SRC_FILES:.src=.1) wmd_missing.1
EXE_FILES       = $(SRC_FILES:.src=.pl)

.SUFFIXES:
.SUFFIXES: .pl .1 .src

.src.pl:
	sed -e '/^=head1/,/^=cut/d' \
        -e '/^__END__/,$$d' \
        -e 's|\@WML_VERSION\@|$(WML_VERSION)|g' \
        -e 's|\@WML_CONFIG_ARGS\@|$(WML_CONFIG_ARGS)|g' \
        -e 's|\@perlprog\@|$(perlprog)|g' \
        -e 's|\@perlvers\@|$(perlvers)|g' \
        -e 's|\@built_system\@|$(built_system)|g' \
        -e 's|\@built_user\@|$(built_user)|g' \
        -e 's|\@built_date\@|$(built_date)|g' \
        -e 's|\@compat\@|$(compat)|g' \
        -e 's|\@prefix\@|$(prefix)|g' \
        -e 's|\@bindir\@|$(bindir)|g' \
        -e 's|\@libdir\@|$(libdir)|g' \
        -e 's|\@mandir\@|$(mandir)|g' \
        -e 's|\@PATH_PERL\@|$(PATH_PERL)|g' \
        -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \
        -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \
          <$< >$@ && chmod a+x $@

.src.1:
	cp $< $*.pod
	pod2man --section=1 --center="EN Tools" --release="EN Tools" $*.pod |\
    sed -e 's|\@WML_VERSION\@|$(WML_VERSION)|g' > $@
	rm -f $*.pod

all: $(EXE_FILES) $(MAN_FILES)

clean: 
	-rm -f $(EXE_FILES) $(MAN_FILES)

distclean: clean
	-rm -f Makefile

realclean: distclean

##EOF##
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_frontend/wmd_missing.src��������������������������������������������������������0000644�0001750�0001750�00000001000�10343637513�017115� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  WML Missing Documentation
##  Copyright (c) 2000-2001 Denis Barbier, All Rights Reserved. 
##

=head1 NAME

WML Missing Doc - Requested Program Not Installed

=head1 DESCRIPTION

WML is a bunch of programs, some are essential (like the 9 passes) but
other are optional.  If you are reading this manpage, this means that
you asked WMd to display the documentation of an optional program which
is not installed.

=head1 AUTHOR

 Denis Barbier
 barbier@engelschall.com

=head1 SEEALSO

wmd(1)

=cut

##EOF##
wml-2.0.12.orig/wml_frontend/wmk.src����������������������������������������������������������������0000644�0001750�0001750�00000050635�10343637513�015415� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@PATH_PERL@
eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  WMk -- Website META Language Make
##  
##  Copyright (c) 1996-2001 Ralf S. Engelschall.
##  Copyright (c) 1999-2001 Denis Barbier.
##  
##  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 2 of the License, 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, write to
##  
##      Free Software Foundation, Inc.
##      59 Temple Place - Suite 330
##      Boston, MA  02111-1307, USA
##  
##  Notice, that ``free software'' addresses the fact that this program
##  is __distributed__ under the term of the GNU General Public License
##  and because of this, it can be redistributed and modified under the
##  conditions of this license, but the software remains __copyrighted__
##  by the author. Don't intermix this with the general meaning of 
##  Public Domain software or such a derivated distribution label.
##  
##  The author reserves the right to distribute following releases of
##  this program under different conditions or license agreements.
##

require 5.003;

BEGIN { $^W = 0; } # get rid of nasty warnings

$VERSION = "@WML_VERSION@";

use lib "@INSTALLPRIVLIB@";
use lib "@INSTALLARCHLIB@";

use Term::Cap;
use Getopt::Long 2.13;
use Cwd;
use File::Find;

##
##  INIT
##

if ($ENV{'PATH'} !~ m|@bindir@|) {
    $ENV{'PATH'} = '@bindir@:'.$ENV{'PATH'};
}

$WML = $ENV{'WML'} || '@bindir@/wml';

eval "\$term = Tgetent Term::Cap { TERM => undef, OSPEED => 9600 }";
if ($@) {
    $bold = '';
    $norm = '';
}
else {
    $bold = $term->Tputs('md', 1, undef);
    $norm = $term->Tputs('me', 1, undef);
}

##
##  PROCESS ARGUMENT LINE
##

sub usage {
    my ($progname) = @_;
    my ($o);

    print STDERR "Usage: $progname [options] [path ...]\n";
    print STDERR "\n";
    print STDERR "Operation Options (WMk intern):\n";
    print STDERR "  -a, --all               run for all files recursively\n";
    print STDERR "  -A, --accept=WILDMAT    accept files via shell wildcard matching\n";
    print STDERR "  -F, --forget=WILDMAT    forget files which were previously accepted\n";
    print STDERR "  -o, --outputfile=PATH   specify the output file(s)\n";
    print STDERR "  -x, --exec-prolog=PATH  execute a prolog program in local context\n";
    print STDERR "  -X, --exec-epilog=PATH  execute a epilog program in local context\n";
    print STDERR "  -f, --force             force outpout generation\n";
    print STDERR "  -n, --nop               no operation (nop) mode\n";
    print STDERR "  -r, --norcfile          no .wmkrc and .wmlrc files are read\n";
    print STDERR "\n";
    $o = `$WML --help 2>&1`;
    $o =~ s|^.+?\n\n||s;
    $o =~ s|^.+?--noshebang.+?\n||m;
    $o =~ s|^.+?--norcfile.+?\n||m;
    $o =~ s|^.+?--outputfile.+?\n||m;
    print STDERR $o;
    exit(1);
}

sub ProcessOptions {
    $Getopt::Long::bundling = 1;
    $Getopt::Long::getopt_compat = 0;
    local $SIG{'__WARN__'} = sub {
        print STDERR "WMk:Error: $_[0]";
    };
    if (not Getopt::Long::GetOptions(
            "a|all",
            "A|accept=s@",
            "F|forget=s@",
            "x|exec-prolog=s@",
            "X|exec-epilog=s@",
            "f|force",
            "n|nop",
            "r|norcfile",
            "I|include=s@", 
            "i|includefile=s@", 
            "D|define=s@",
            "O|optimize=i",
            "o|outputfile=s@",
            "P|prologue=s@",
            "E|epilogue=s@",
            "t|settime",
            "p|pass=s@",
            "W|passoption=s@",
            "M|depend:s",
            "s|safe",
            "v|verbose:i",
            "q|quiet",
            "z|mp4h",
            "V|version:i",
            "h|help"
    )) {
        print STDERR "Try `$0 --help' for more information.\n";
        exit(0);
    }
    &usage($0) if ($opt_h);
}

sub error {
    my ($str) = @_;
    print STDERR "** WMK:Error: $str\n";
    exit(1);
}

#   save argument line
@ARGVLINE = @ARGV;

#   WMk options
$opt_a = 0;
@opt_A = ('*.wml');
@opt_F = ();
@opt_o = ();
@opt_x = ();
@opt_X = ();
$opt_f = 0;
$opt_r = 0;
$opt_n = 0;

#   WML options are read from the command line
@opt_I = ();
@opt_i = ();
@opt_D = ();
$opt_O = '';
@opt_P = ();
@opt_E = ();
$opt_t = 0;
@opt_p = ();
@opt_W = ();
$opt_M = '-';
$opt_s = 0;
$opt_v = -1;
$opt_q = 0;
$opt_h = 0;
$opt_V = -1;
$opt_z = 0;

&ProcessOptions();

#   fix the version level
if ($opt_V == 0) {
    $opt_V = 1; # Getopt::Long sets 0 if -V only
}
if ($opt_V == -1) {
    $opt_V = 0; # we operate with 0 for not set
}
if ($opt_V) {
    system("$WML -V$opt_V");
    exit(0);
}

#   If the -M was the last option and the user forgot
#   to put `--' to end options, we adjust it.
if ($opt_M !~ m%^(-|[MD]*)$% && $#ARGV == -1) {
    push(@ARGV,$opt_M);
    $opt_M = '';
}

##
##   CREATE WML COMMAND
##

#   escape options if not quoted but
#   when shell metachars exists
sub quotearg {
    my ($arg) = @_;
    if ($arg !~ m|^'.*'$| and $arg !~ m|^".*"$|) {
        if ($arg =~ m|[\[\]()!*?&"']|) {
            $arg =~ s|'|\\'|sg;
            $arg = "'".$arg."'";
        }
    }
    return $arg;
}

sub addquotedarg {
    my ($flag, $arg) = @_;
    return ' -'.$flag.' "'.&quotearg($arg).'"';
}

$Oq = '';
$Oq = ' -q' if ($opt_q);

$Oz = '';
$Oz = ' -z' if ($opt_z);

$Ov = '';
$Ov = ' -v' if ($opt_v == 0);
$Ov = ' -v'.$opt_v if ($opt_v > 0);

$Op = '';
foreach $a (@opt_p) { $Op .= ' -p'.$a; }

$OW = '';
foreach $a (@opt_W) { $OW .= &addquotedarg('W', $a); }

$OD = '';
foreach $a (@opt_D) { $OD .= &addquotedarg('D', $a); }

$OP = '';
foreach $a (@opt_P) { $OP .= &addquotedarg('P', $a); }

$OE = '';
foreach $a (@opt_E) { $OE .= &addquotedarg('E', $a); }

$OM = '';
$OM = " -M$opt_M" if ($opt_M ne '-');

$Ot = '';
$Ot = ' -t' if ($opt_t);

$Or = '';
$Or = ' -r' if ($opt_r);

$Os = '';
$Os = ' -s' if ($opt_s);

$OI = '';
foreach $a (@opt_I) { $OI .= &addquotedarg('I', $a); }

$Oi = '';
foreach $a (@opt_i) { $Oi .= &addquotedarg('i', $a); }

$OO = '';
$OO = ' -O'.$opt_O if ($opt_O ne '');

$wml_cmd = "$WML -n".$Oq.$Oz.$Ov.$Op.$OW.$OD.$OP.$OE.$OM.$Ot.$Os.$Or.$OI.$Oi.$OO;
$wml_ipp = "$WML -n -MM".$Oq.$Oz.$Ov.$Op.$OW.$OD.$OP.$OE.$OM.$Ot.$Os.$Or.$OI.$Oi.$OO;

$Oo = '';
foreach $a (@opt_o) { $Oo .= ' -o'.$a; }

#   store initial working directory
my $cwd = Cwd::cwd;

##  read $HOME/.wmkrc
my @pwinfo = getpwuid($<);
my $home = $pwinfo[7];
$home =~ s|/$||;
if (-f "$home/.wmkrc") {
        chdir ($home);
        &read_rcfile();
        chdir ($cwd);
}

##
##   FILESYSTEM PROCESSING
##

sub CanonPath {
    my ($path) = @_;

    $pathL = '';
    while ($path ne $pathL) {
        $pathL = $path;
        $path =~ s|//|/|g;
        $path =~ s|/\./|/|g;
        $path =~ s|/\.$|/|g;
        $path =~ s|^\./(.)|$1|g;
        $path =~ s|([^/.][^/.]*)/\.\.||;
    }
    return $path;
}

#    this variable is defined in read_rcfile
$matchF = '';

#   set the path to act on
if ($#ARGV == -1) {
    @P = ( '.' );
}
else {
    @P = @ARGV;
}
foreach $p (@P) {
    if (-d $p) {
        if ($opt_a) {
            #
            #   path is a directory and we run recursively
            #
            #   first look into .wmkrc in case -F option is found
            chdir($p);
            &read_rcfile();
            chdir($cwd);

            @dirs = ();
            sub wanted {
              -d $_ &&
              ( m#^${matchF}$# && ($File::Find::prune = 1)
                               || push (@dirs, $File::Find::name));
            }
            File::Find::find(\&wanted, $p);
            $dirC = '';
            foreach $dir (@dirs) {
                $dir =~ s|\n$||;
                chdir($dir);
                &read_rcfile() if $dir ne $p;
                @files = &determine_files();
                if ($#files > -1) {
                    #   a little bit verbosity
                    if ($dirC ne $dir) {
                        $dirC = $dir;
                        $dirtxt = &CanonPath($dir);
                        if ($dirtxt ne '.') {
                            print STDERR "${bold}[$dirtxt]${norm}\n";
                        }
                    }
                    foreach $exec (@opt_x_CUR) {
                        $rc = system($exec);
                        error("prolog failed: $exec") if $rc != 0;
                    }
                    foreach $file (@files) {
                        &process_file("$dir/$file", $dir, $file);
                    }
                    foreach $exec (@opt_X_CUR) {
                        $rc = system($exec);
                        error("epilog failed: $exec") if $rc != 0;
                    }
                }
                chdir($cwd);
            }
        }
        else {
            #
            #   path is a directory and we run locally
            #
            chdir($p);
            &read_rcfile();
            next if $p =~ m#^${matchF}$#;
            @files = &determine_files();
            foreach $exec (@opt_x_CUR) {
                $rc = system($exec);
                error("prolog failed: $exec") if $rc != 0;
            }
            foreach $file (@files) {
                &process_file("$p/$file", $p, $file);
            }
            foreach $exec (@opt_X_CUR) {
                $rc = system($exec);
                error("epilog failed: $exec") if $rc != 0;
            }
            chdir($cwd);
        }
    }
    elsif (-f $p) {
        #
        #   path is a file
        #
        next if $p =~ m#^${matchF}$#;

        my ($dir, $file) = ($p =~ m|^(.*?)([^/]+)$|);
        if ($dir) {
            chdir($dir);
            &read_rcfile();
            &process_file($p, $dir, $file);
            chdir($cwd);
        }
        else {
            &read_rcfile();
            &process_file($p, $dir, $file);
        }
    }
    else {
        error("path `$p' neither directory nor plain file");
    }
}

#   read .wmkrc files and command-line options
sub read_rcfile {
    my ($cwd, $dir, @DIR);
    @opt_A_SAV = @opt_A;
    @opt_F_SAV = @opt_F;
    @opt_x_SAV = @opt_x;
    @opt_X_SAV = @opt_X;
    @opt_o_SAV = @opt_o;
    @opt_A_CUR = @opt_A;
    @opt_F_CUR = @opt_F;
    @opt_x_CUR = @opt_x;
    @opt_X_CUR = @opt_X;
    $opt_o_CUR = '';
    if (not $opt_r) {
        ($cwd = Cwd::cwd) =~ s|/$||;
        while ($cwd) {
            push(@DIR, $cwd);
            $cwd =~ s|/[^/]+$||;
        }
        foreach $dir (reverse(@DIR)) {
            if (-f "$dir/.wmkrc") {
                open(FP, "<$dir/.wmkrc")
                        || error("Unable to load $dir/.wmkrc: $!");
                @ARGV = ();
                while (<FP>) {
                    next if (m|^\s*\n$|);
                    next if (m|^\s*#[#\s]*.*$|);
                    s|^\s+||;
                    s|\s+$||;
                    s|\$([A-Za-z_][A-Za-z0-9_]*)|$ENV{$1}|ge;
                    push(@ARGV, &split_argv($_));
                }
                close(FP) || error("Unable to close $dir/.wmkrc: $!");
                @opt_A = ();
                @opt_F = ();
                @opt_x = ();
                @opt_X = ();
                @opt_o = ();
                &ProcessOptions();
                @opt_A_CUR = (@opt_A_CUR, @opt_A);
                @opt_F_CUR = (@opt_F_CUR, @opt_F);
                @opt_x_CUR = (@opt_x_CUR, @opt_x);
                @opt_X_CUR = (@opt_X_CUR, @opt_X);
                if ($#opt_o > -1) {
                    $opt_o_CUR = '-o' . join(' -o', @opt_o);
                }
            }
        }
    }

    #   Add command-line options
    @opt_A = ();
    @opt_F = ();
    @opt_x = ();
    @opt_X = ();
    @opt_o = ();
    @ARGV  = @ARGVLINE;
    &ProcessOptions();
    @opt_A_CUR = (@opt_A_CUR, @opt_A);
    @opt_F_CUR = (@opt_F_CUR, @opt_F);
    @opt_x_CUR = (@opt_x_CUR, @opt_x);
    @opt_X_CUR = (@opt_X_CUR, @opt_X);
    if ($#opt_o > -1) {
        $opt_o_CUR = '-o' . join(' -o', @opt_o);
    }

    #    transforms filename wildcards into extended regexp
    if ($#opt_F_CUR > -1) {
        $matchF = '(' . join ('|', @opt_F_CUR) . ')';
        $matchF =~ s|\.|\\.|g;
        $matchF =~ s|\?|.|g;
        $matchF =~ s|\*|.*|g;
    }
    else {
        $matchF = '';
    }

    #   Restore values
    @opt_A = @opt_A_SAV;
    @opt_F = @opt_F_SAV;
    @opt_x = @opt_x_SAV;
    @opt_X = @opt_X_SAV;
    @opt_o = @opt_o_SAV;
}

#   determine files to act on
sub determine_files {
    my (@files, @filesA, @filesF, $fileA, $fileF, %files);

    #   determine files
    @filesA = glob(join(' ', @opt_A_CUR));
    @filesF = glob(join(' ', @opt_F_CUR));
    %files = ();
    foreach $fileA (@filesA) {
        $ok = 1;
        foreach $fileF (@filesF) {
            if ($fileA eq $fileF) {
                $ok = 0;
                last;
            }
        }
        $files{$fileA} = 1 if $ok;
    }
    @files = sort(keys(%files));

    return @files;
}

#   helper function to split argument line
#   the same way Bourne-Shell does:
#   #1: foo=bar quux   => "foo=bar", "quux"
#   #2: "foo=bar quux" => "foo=bar quux"
#   #3: foo="bar quux" => "foo=bar quux"     <-- !!
sub split_argv {
    my ($str) = @_;
    my (@argv) = ();
    my ($r) = '';

    while (1) {
        next if $str =~ s|^"([^"\\]*(?:\\.[^"\\]*)*)"(.*)$|$r .= $1, $2|e;
        next if $str =~ s|^'([^'\\]*(?:\\.[^'\\]*)*)'(.*)$|$r .= $1, $2|e;
        next if $str =~ s|^([^\s"']+)(.*)$|$r .= $1, $2|e;
        if ($str =~ m|^[\s\n]+| || $str eq '') {
            if ($r ne '') {
                push(@argv, $r);
                $r = '';
            }
            $str =~ s|^[\s\n]+||;
            last if ($str eq '');
        }
    }
    return @argv;
}

sub process_file {
    my ($path, $dir, $file) = @_;
    my ($shebang, $opts, $out);
    local (*FP);

    #   determine additional options
    $opts = $Oo;
    if ($opts eq '') {
        $opts = $opt_o_CUR;
        open(FP, "<$file") || error("Unable to load $file: $!");
        $shebang = '';
        while (1) {
            $shebang .= <FP>;
            if ($shebang =~ m|^(.*)\\\s*$|s) {
                $shebang = $1;
                next;
            }
            last;
        }
        if ($shebang =~ m|^#!wml\s+(.+\S)\s*$|is) {
           $opts = $1;
        }
        close(FP) || error("Unable to close $file: $!");
    }

    #   expand %DIR and %BASE
    my $base = $file;
    $base =~ s|\.[a-zA-Z0-9]+$||;
    $opts =~ s|%DIR|$dir|sg;
    $opts =~ s|%BASE|$base|sg;

    #   determine default output file
    if ($opts !~ m|-o|) {
        $opts .= " -o ${base}.html";
    }
    $opts =~ s|(\s*)(\S+)|' '.&quotearg($2)|sge;
    $opts =~ s|^\s+||;
    $opts =~ s|\s+$||;

    #   determine if invocation can be skipped
    if (not $opt_f) {
        my @outfiles = ();
        my $s = $opts;
        $s =~ s|-o\s*["']?(?:[^:]+:(?!:))?([^\s\@'"]+)|push(@outfiles, $1), ''|sge;
        $skipable = &skipable($file, @outfiles);
    }
    else {
        $skipable = 0;
    }
    
    if ($skipable) {
        print STDERR "$wml_cmd $opts $file  (${bold}skipped${norm})\n";
    }
    else {
        print STDERR "$wml_cmd $opts $file\n";
        if (not $opt_n) {
            $rc = system("$wml_cmd $opts $file");
            error("Error in WML (rc=$rc)") if $rc != 0;
        }
    }
}

#   is file skipable because not newer than
#   any of its output files
sub skipable {
    my ($file, @outfiles) = @_;
    my ($skipable, $outfile, $t, $dep, $incl);
    my (@IS, @OS);

    $skipable = 1;
    @IS = stat($file);
    local($/) = undef;
    open(DEP, "$wml_ipp -odummy $file |")
        || error("Unable to exec $wml_ipp: $!");
    $dep = <DEP>;
    close(DEP) || error("Unable to close exec $wml_ipp: $!");
    $dep =~ s/\\\s+/ /sg;
    if ($dep =~ m|^(.*):\s+(.*?)\s+(.*)$|) {
        foreach $incl (split(/\s+/,$3)) {
            if (-f $incl) {
                @OS = stat(_);
                if ($IS[9] < $OS[9]) { # 9=mtime
                    $IS[9] = $OS[9];
                }
            }
       } 
    }
    
    foreach $outfile (@outfiles) {
        if (-f $outfile) {
            @OS = stat(_);
            if ($IS[9] >= $OS[9]) { # 9=mtime
                $skipable = 0;
                last;
            }
        }
        else {
            $skipable = 0;
            last;
        }
    }
    return $skipable;
}


#   exit gracefully
exit(0);

##EOF##
__END__

=head1 NAME

WMk - Website META Language Make

=head1 VERSION

@WML_VERSION@

=head1 SYNOPSIS

B<wmk>
[B<-a>]
[B<-A> I<WILDMAT>]
[B<-F> I<WILDMAT>]
[B<-x> I<PATH>]
[B<-X> I<PATH>]
[B<-a>]
[B<-f>]
[B<-n>]
[B<-r>]
[I<WML-options>]
[I<path> ...]

B<wmk>
[B<-V>]
[B<-h>]

=head1 DESCRIPTION

This is the high-level frontend to the I<Website META Language> (WML), a free
HTML generation toolkit for Unix, internally consisting of 9 independent
languages.  See wml(1) for more details on WML.

Use this command to run F<wml> on a bunch of F<.wml> files either directly
given on the command line as I<path> or found via directory traversal in
I<path>.

WMk recognizes WML's I<shebang> lines (``C<#!wml> I<options>'') in the F<.wml>
files and automatically adds I<options> to the command line of F<wml> when
invoking it for this particular file.

=head1 OPTIONS

=over 4

=item B<-a>, B<--all>

Specifies that WMk should recursively process B<all> F<.wml> files it finds in
I<path>. 

=item B<-A>, B<--accept=>I<WILDMAT>

Accepts (=includes) all files matched by the shell wildcard pattern I<WILDMAT>
for processing. WMk always has a pre-configured ``C<-A *.wml>'' option which
forces it to process all WML files per default.   This option is only used
when I<path> is a directory.

=item B<-F>, B<--forget=>I<WILDMAT>

Forgets (=exclude) all files and directories matched by the shell wildcard
pattern I<WILDMAT> which were previously accepted by option B<-A>.

=item B<-o>, B<--outputfile=>I<PATH>

Specifies output files.  When this flag is used in F<.wmlrc>, the same
flag must be put in F<.wmkrc> to let WMk know when to rebuild these
output files.

=item B<-x>, B<--exec-prolog=>I<PATH>

Executes I<PATH> in the local context of I<path> B<before> the WML commands
are run.  This options is only used when I<path> is a directory.

=item B<-X>, B<--exec-epilog=>I<PATH>

Executes I<PATH> in the local context of I<path> B<after> the WML commands are
run.  This options is only used when I<path> is a directory.

=item B<-f>, B<--force>

Forces the creation of output files. Usually WMk tries to determine if the
input file was really modified and skips WML invocations if the output files
are still up-to-date.

=item B<-n>, B<--nop>

Sets I<no-operation> (nop) where WMk runs as usual but does not actually
invoce the F<wml> commands. Use this option to see what F<wmk> would do.

=item B<-r>, B<--norcfile>

This forces WMk to ignore all F<.wmkrc> and WML to ignore all F<.wmlrc> files.

=item B<-V>, B<--version>

Gives the version identification string of WMk. Use this to determine the
version of a installed WML toolkit. 

=item B<-h>, B<--help>

Prints the usage summary page.

=back

All I<WML-options> directly correspond to their counterparts in F<wml>(1)
because they are just forwarded by F<wmk> except the B<-n> and B<-o> options
which are implicitly created by F<wmk> for each F<wml> invocation.

=head1 USER FILES

=over 4

=item F<$HOME/.wmkrc> and F<(../)*.wmkrc>

These files can also contain option strings, one option per line.  One
may use this file to exclude some directories from being searched for
input files

  -F images
  -F templates
   ...

=back

=head1 CAVEAT

Auto-adjusted variables specfied as B<-DNAME~PATH> on the F<wmk>
command-line will not necessarily have the same effect as a similar
definition in a F<./.wmlrc> file.  This is because, when processing
sub-directories, F<wmk> changes its working directory to each of those
directories, which can influence the interpolation of such auto-adjusted
variables.  When specified on the command line, such variables are
interpolated with respect to F<wml>'s current working directory at the
time of its invocation.  So, if you wish such variables to be
interpolated relative to F<wmk>'s current working directory at the time
of its invocation, one can work-around this issue by specifying
B<-DNAME~PATH> in a F<.wmlrc> in that directory rather than specifying
it on the F<wmk> command-line.

=head1 AUTHORS

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

=head1 SEEALSO

wml(1), wml_intro(1)

=cut

���������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_frontend/wmb.src����������������������������������������������������������������0000644�0001750�0001750�00000021106�10343637513�015373� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@PATH_PERL@
eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  WMb -- Website META Language Bug Reporting Tool
##  
##  Copyright (c) 1996-2001 Ralf S. Engelschall.
##  Copyright (c) 1999-2001 Denis Barbier.
##  
##  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 2 of the License, 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, write to
##  
##      Free Software Foundation, Inc.
##      59 Temple Place - Suite 330
##      Boston, MA  02111-1307, USA
##  
##  Notice, that ``free software'' addresses the fact that this program
##  is __distributed__ under the term of the GNU General Public License
##  and because of this, it can be redistributed and modified under the
##  conditions of this license, but the software remains __copyrighted__
##  by the author. Don't intermix this with the general meaning of 
##  Public Domain software or such a derivated distribution label.
##  
##  The author reserves the right to distribute following releases of
##  this program under different conditions or license agreements.
##

require 5.003;

BEGIN { $^W = 0; } # get rid of nasty warnings

$VERSION = "@WML_VERSION@";

use lib "@INSTALLPRIVLIB@";
use lib "@INSTALLARCHLIB@";

use Getopt::Long 2.13;
use Term::ReadKey;


##
##  INIT
##

if ($ENV{'PATH'} !~ m|@bindir@|) {
    $ENV{'PATH'} = '@bindir@:'.$ENV{'PATH'};
}


##
##  PROCESS ARGUMENT LINE
##

sub usage {
    my ($progname) = @_;
    my ($o);

    print STDERR "Usage: $progname [options] [path ...]\n";
    print STDERR "\n";
    print STDERR "Giving Feedback:\n";
    print STDERR "  -V, --version[=NUM]    display version and build information\n";
    print STDERR "  -h, --help             display this usage summary\n";
    print STDERR "\n";
    exit(1);
}

sub version {
    system("wml -V$opt_V");
    exit(0);
}

#   options
$opt_V = -1;
$opt_h = 0;

sub ProcessOptions {
    $Getopt::Long::bundling = 1;
    $Getopt::Long::getopt_compat = 0;
    $SIG{'__WARN__'} = sub { 
        print STDERR "WMd:Error: $_[0]";
    };
    if (not Getopt::Long::GetOptions(
            "V|version:i",
            "h|help"
    )) {
        print STDERR "Try `$0 --help' for more information.\n";
        exit(0);
    }
    &usage($0) if ($opt_h);
    $SIG{'__WARN__'} = undef;
}
&ProcessOptions();

#   fix the version level
if ($opt_V == 0) {
    $opt_V = 1; # Getopt::Long sets 0 if -V only
}
if ($opt_V == -1) {
    $opt_V = 0; # we operate with 0 for not set
}
&version if ($opt_V);

##
##   Header
##
print STDERR "This is WML BUGREPORT (WMb), Version $VERSION\n";
print STDERR "Copyright (c) 1996-2001 Ralf S. Engelschall.\n";
print STDERR "\n";

##
##   Determining Information
##
print STDERR "Determining your information...";

@pwinfo = getpwuid($<);

$username = $pwinfo[0];
$username =~ s|[\'\$\`\"]||g;

$realname = $pwinfo[6];
$realname =~ s|^([^\,]+)\,.*$|$1|;

$hostname = `hostname`;
$hostname =~ s|\n$||;
if ($hostname =~ m|^[a-zA-Z0-9_-]+$| and -f "/etc/resolv.conf") {
    $domain = '';
    open(TMP, "</etc/resolv.conf");
    while (<TMP>) {
        if (m|^domain\s+\.?(\S+)|) {
            $domain = $1;
            last;
        }
    }
    close(TMP);
    if ($domain ne '') {
        $hostname = "$hostname.$domain";
    }
}

$version = `wml -V3 2>&1`;
$version =~ s|^.*?(Built)|Used WML System:\n$1|s;

$editor = $ENV{'EDITOR'} || 'vi';
$editoropt = '';
if ($editor =~ m|^vim?|) {
    $editoropt = '+17';
}

$mailer = '';
@M = ( 
    { PRG => 'elm'     , HDR => 0, OPT => '-s \'%s\' %t <%F', TST => '-d "$ENV{\'HOME\'}/.elm"' },
    { PRG => 'mutt'    , HDR => 0, OPT => '-s \'%s\' %t <%F', TST => '-f "$ENV{\'HOME\'}/.muttrc"' },
    { PRG => 'pine'    , HDR => 0, OPT => '-s \'%s\' %t <%F', TST => '-d "$ENV{\'HOME\'}/.pine"' },
    { PRG => 'mail'    , HDR => 0, OPT => '-s \'%s\' %t <%F', TST => '1' },
    { PRG => 'sendmail', HDR => 1, OPT => '%t <%F', TST => '1' },
);
LOOP: foreach $m (@M) {
    $prg = $m->{PRG};
    $hdr = $m->{HDR};
    $opt = $m->{OPT};
    $tst = $m->{TST};
    foreach $p (split(/:/, $ENV{'PATH'})) {
        if (-x "$p/$prg") {
            $rc = 0;
            eval "\$rc = 1 if ($tst)";
            if ($rc) {
                $mailer = "$p/$prg";
                $mailerhdr = "$hdr";
                $maileropt = "$opt";
                last LOOP;
            }
        }
    }
}

print STDERR "done.\n";

if ($mailer eq '') {
    print STDERR "\n";
    print STDERR "** Sorry, cannot find a useable MTA on your system for E-Mail.\n";
    print STDERR "** Please send the bug report online via HTTP by opening the URL\n";
    $v = $VERSION;
    $v =~ s|^([0-9.]+).*$|$1|;
    print STDERR "** http://www.engelschall.com/sw/bugreport/?package=WML&version=$v\n";
    print STDERR "\n";
    exit(0);
}


#
#   Creating message
#
print STDERR "Creating bug report skeleton...";

$tmpdir = $ENV{'TMPDIR'} || '/tmp';

$tmpfile  = "$tmpdir/wmb.$$.1.tmp";
$tmpfile2 = "$tmpdir/wmb.$$.2.tmp";
unlink($tmpfile);

open(MAIL, ">$tmpfile");
print MAIL <<'EOT';
+------------------------------------------------------+
| Please complete this bug report message by at least  |
| specifing the correct reply-to e-mail address and    |
| the detailed problem description.                    |
+------------------------------------------------------+
__        ___  __ _     
\ \      / / \/  | |      Website META Language
 \ \ /\ / / |\/| | |      Version @WML_VERSION@
  \ V  V /| |  | | |___ 
   \_/\_/ |_|  |_|_____|  BUG REPORT
_________________________________________________________

EOT
print MAIL "From:     $realname\n";
print MAIL "Reply-To: $username\@$hostname\n";
print MAIL "\n";
print MAIL "PROBLEM DESCRIPTION:\n";
print MAIL "\n";
print MAIL "\n";
print MAIL "PLATFORM CHARACTERISTICS:\n";
print MAIL $version;
close(MAIL);
print STDERR "done.\n";

#
#   Editing the message   
#
system("$editor $editoropt $tmpfile");


#
#   Send the message
#
print STDERR "Send report [Y/n]: ";
ReadMode 4;
$rc = ReadKey(0);
ReadMode 0;
print STDERR "\n";
if ($rc eq '' or $rc eq "\n" or $rc eq "\r") {
    $rc = 'y'; 
}
if ($rc =~ m|[yY]|) {
    print STDERR "Sending bug report...";

    open(FP, "<$tmpfile");
    while (<FP>) {
        if (m|^From:\s+(.+)\s*$|) {
            $from = $1;
        }
        if (m|^Reply-To:\s+(.+)\s*$|) {
            $replyto = $1;
        }
    }
    close(FP);

    $subject = "BUG REPORT: Website META Language $VERSION";
    $to = 'sw-wml@engelschall.com';
    $maileropt =~ s|%r|$replyto|g;
    $maileropt =~ s|%s|$subject|g;
    $maileropt =~ s|%t|$to|g;
    $maileropt =~ s|%F|$tmpfile2|g;

    open(IN, "<$tmpfile");
    $msg = '';
    while (<IN>) {
        $msg .= $_;
    }
    close(IN);
    $msg =~ s|^.+--.+?\-\+\n_|_|s;

    open(OUT, ">$tmpfile2");
    if ($mailerhdr) {
        print OUT "From: $replyto ($from)\n";
        print OUT "Reply-To: $replyto\n";
        print OUT "Subject: $subject\n";
        print OUT "To: $to\n";
        print OUT "\n";
    }
    print OUT $msg;
    close(OUT);

    system("$mailer $maileropt >/dev/null");
    print STDERR "done.\n";
    print STDERR "\n";
    print STDERR "Thanks for using WML and giving feedback.\n";
    print STDERR "\n";
}
else {
    print STDERR "\n";
    print STDERR "Stopped: No report send.\n";
    print STDERR "\n";
}

#
#   cleanup
#
unlink($tmpfile)  if (-f $tmpfile);
unlink($tmpfile2) if (-f $tmpfile2);

#   exit gracefully
exit(0);

##EOF##
__END__

=head1 NAME

WMb - Website META Language Bug Reporting Tool

=head1 VERSION

@WML_VERSION@

=head1 SYNOPSIS

B<wmb>
[B<-V>]
[B<-h>]

=head1 DESCRIPTION

This is the bug reporting tool for the I<Website META Language> (WML), a free
HTML generation toolkit for Unix.  See wml(1) for more details on WML.  Use
this program for quickly sending a bug report to the WML author via EMail.  As
an alternative (when this program does not work from your platform) you can
send the bug report manually to sw-wml@engelschall.com.

=head1 OPTIONS

=over 4

=item B<-V>, B<--version>

Gives the version identification string of WMb. Use this to determine the
version of a installed WML toolkit. 

=item B<-h>, B<--help>

Prints the usage summary page.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=head1 SEEALSO

wml(1)

=cut

����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_aux/����������������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524776�013062� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_aux/htmlinfo/�������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524775�014701� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_aux/htmlinfo/htmlinfo.src�������������������������������������������������������0000644�0001750�0001750�00000014741�10343637563�017240� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@PATH_PERL@
eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  htmlinfo -- HTML markup code information report
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##

require 5.003;

use lib "@INSTALLPRIVLIB@";
use lib "@INSTALLARCHLIB@";

use Term::Cap;
use IO::Handle 1.15;
use IO::File 1.06;
use Image::Size;

eval "\$term = Tgetent Term::Cap { TERM => undef, OSPEED => 9600 }";
if ($@) {
    $bold = '';
    $norm = '';
}
else {
    $bold = $term->Tputs('md', 1, undef);
    $norm = $term->Tputs('me', 1, undef);
}


#
#   open input file and read into buffer
#
if (($#ARGV == 0 and $ARGV[0] eq '-') or $#ARGV == -1) {
    $in = new IO::Handle;
    $in->fdopen(fileno(STDIN), "r");
    local ($/) = undef;
    $INPUT = <$in>;
    $in->close;
    $src = "STDIN";
}
elsif ($#ARGV == 0) {
    $in = new IO::File;
    $in->open($ARGV[0]);
    local ($/) = undef;
    $INPUT = <$in>;
    $in->close;
    $src = $ARGV[0];
}
else {
    print STDERR "Usage: htmlinfo file.html\n";
    exit(1);
}


#
#   process HTML tags in general
#
$atags = 0;
$ttags = 0;
$ctags = 0;
$htags = 0;
$ntags = 0;
$jtags = 0;
$mtags = 0;
$plain = $INPUT;
$plain =~ s|<[a-zA-Z]+.+?>|$atags++, ''|sge;
$comment = $INPUT;
$comment =~ s|<!--.+?-->|$ctags++, ''|sge;
$table = $INPUT;
$table =~ s|<table.+?>|$ttags++, ''|sge;
$href = $INPUT;
$href =~ s|<a.+?href.+?>|$htags++, ''|sge;
$href = $INPUT;
$href =~ s|<a.+?name.+?>|$ntags++, ''|sge;
$js = $INPUT;
$js =~ s|<script.+?JavaScript.+?>|$jtags++, ''|isge;
$meta = $INPUT;
$meta =~ s|<meta.+?>|$mtags++, ''|isge;
$abytes = length($INPUT);
$pbytes = length($plain);
$cbytes = $abytes - length($comment);
$hbytes = $abytes - $pbytes;


#
#   process IMG tags
#
$ubytes  = 0;
$bytes   = 0;
$xpixel  = 0;
$ypixel  = 0;
$vxpixel = 0;
$vypixel = 0;
$pixel   = 0;
$vpixel  = 0;
$images  = 0;
$uimages = 0;
$itags   = 0;
$bitags   = 0;
$vitags   = 0;
%IMAGE   = ();

sub ProcessImgTag {
    my ($tag) = @_;
    my ($image, $width, $height, $pwidth, $pheight);

    $itags++;

    if (   $tag =~ m|SRC\s*=\s*"([^"]*)"|is
        or $tag =~ m|SRC\s*=\s*(\S+)|is    ) {
        $image = $1;

        if (-f $image) {
            my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
                $atime,$mtime,$ctime,$blksize,$blocks) = stat(_);

            $vitags++;

            if ($IMAGE{$image} eq '') {
                $IMAGE{$image} = 1;
                $ubytes += $size;
                $uimages++;
            }
            $bytes += $size;
            $images++;

            #   determine specified width/height
            $width  = -1;
            $height = -1;
            if (   $tag =~ m|WIDTH\s*=\s*([0-9]+%?)|is
                or $tag =~ m|WIDTH\s*=\s*"([0-9]+%?)"|is) {
                $width = $1;
            }
            if (   $attr =~ m|HEIGHT\s*=\s*([0-9]+%?)|is
                or $attr =~ m|HEIGHT\s*=\s*"([0-9]+%?)"|is) {
                $height = $1;
            }

            #   determine physical width/height
            ($pwidth, $pheight) = Image::Size::imgsize($image);

            #   adjust physical counter
            $xpixel += $pwidth;
            $ypixel += $pheight;
            $pixel += ($pwidth * $pheight);

            #   adjust visual counter
            if ($width != -1) {
                if ($width =~ m|^(\d+)%$|) {
                    $vxpixel += int(($pwidth / 100) * $1);
                    $x = int(($pwidth / 100) * $1);
                }
                else {
                    $vxpixel += $width;
                    $x = $width;
                }
            }
            else {
                $vxpixel += $pwidth;
                $x = $pwidth;
            }
            if ($height != -1) {
                if ($height =~ m|^(\d+)%$|) {
                    $vypixel += int(($pheight / 100) * $1);
                    $y = int(($pheight / 100) * $1);
                }
                else {
                    $vypixel += $height;
                    $y = $height;
                }
            }
            else {
                $vypixel += $pheight;
                $y = $pheight;
            }
            $vpixel += ($x * $y);
        }
        else {
            $bitags++;
        }
    }
}

$buf = $INPUT;
$buf =~ s|(<IMG\s+[^>]+>)|&ProcessImgTag($1), ''|isge;
$spixel = int(sqrt($pixel));
$svpixel = int(sqrt($vpixel));

#
#  give information to user
#

print  STDERR "   \n"; # some spaces to erase the WML prop !!
print  STDERR "  ${bold}WEBPAGE SUMMARY$norm\n";
print  STDERR "  Source: $src\n";
print  STDERR "\n";

print  STDERR "  ${bold}NETWORK TRANSFER AMOUNT$norm              Bytes  Reqs\n";
print  STDERR "                                   --------- -----\n";
printf STDERR "    Plain ASCII Text             + %9d  }\n", $pbytes;
printf STDERR "    HTML Markup Code             + %9d  }  1\n", $hbytes;
print  STDERR "    ------------------------------ --------- -----\n";
printf STDERR "    Markup File                  = %9d %5d\n", $abytes, 1;
printf STDERR "    Embedded Image Objects       + %9d %5d\n", $ubytes, $itags;
print  STDERR "    ------------------------------ --------- -----\n";
printf STDERR "    Page Total                   = $bold%9d %5d$norm\n", $abytes + $ubytes, 1 + $itags;

print  STDERR "\n";
print  STDERR "  ${bold}IMAGE VISUAL DISPLAY AMOUNT$norm     Pixels Dimension\n";
print  STDERR "                                -------- ---------\n";
printf STDERR "    Physical Image Size:        %8d %9s\n", $pixel, "${spixel}x${spixel}";
printf STDERR "    Visual   Image Size:        $bold%8d %9s$norm\n", $vpixel, "${svpixel}x${svpixel}";
print  STDERR "\n";

print  STDERR "  ${bold}MARKUP DETAILS$norm           Tags Additional Info\n";
print  STDERR "                           ---- -----------------------\n";
printf STDERR "    Images     (<img>):    %4d unique: %d, broken: %d\n", $itags, $uimages, $bitags;
printf STDERR "    Comments   (<!-->):    %4d bytes: %d\n", $ctags, $cbytes;
printf STDERR "    Anchors    (<a>):      %4d href: %d, name: %d\n", $htags + $ntags, $htags, $ntags;
printf STDERR "    Tables     (<table>):  %4d\n", $ttags;
printf STDERR "    JavaScript (<script>): %4d\n", $jtags;
printf STDERR "    Meta Tags  (<meta>):   %4d\n", $mtags;
print  STDERR "\n";

exit(0);

##EOF##
__END__

=head1 NAME

htmlinfo - HTML markup code information report

=head1 SYNOPSIS

B<htmlinfo>
[I<inputfile>]

=head1 DESCRIPTION

The F<htmlinfo> program reads I<inputfile> or from C<stdin> and displays
a webpage contents report on B<STDERR>. 

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=cut

�������������������������������wml-2.0.12.orig/wml_aux/htmlinfo/Makefile.in��������������������������������������������������������0000644�0001750�0001750�00000002503�10343637563�016745� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_aux/htmlinfo/Makefile
##  Copyright (c) 1997-2000 Ralf S. Engelschall, <rse@engelschall.com>
##  Copyright (c) 2000 Denis Barbier
##

@SET_MAKE@
SHELL           = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s
INSTALL_SCRIPT  = $(top_srcdir)/etc/shtool install -c -m 755
INSTALL_DATA    = $(top_srcdir)/etc/shtool install -c -m 644

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man

PATH_PERL       = @PATH_PERL@
INSTALLPRIVLIB  = @INSTALLPRIVLIB@
INSTALLARCHLIB  = @INSTALLARCHLIB@

SRC_FILES       = htmlinfo.src

MAN_FILES       = $(SRC_FILES:.src=.1)
EXE_FILES       = $(SRC_FILES:.src=.pl)

.SUFFIXES:
.SUFFIXES: .pl .1 .src

.src.pl:
	sed -e 's|\@PATH_PERL\@|$(PATH_PERL)|g' \
        -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \
        -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \
          <$< >$@ && chmod a+x $@

.src.1:
	cp $< $*.pod
	pod2man --section=1 --center="EN Tools" --release="EN Tools" $*.pod >$@
	rm -f $*.pod

all: $(EXE_FILES) $(MAN_FILES)

clean: 
	-rm -f $(EXE_FILES) $(MAN_FILES)

distclean: clean
	-rm -f Makefile

realclean: distclean

##EOF##
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_aux/map2html/�������������������������������������������������������������������0000755�0001750�0001750�00000000000�11613524775�014605� 5����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_aux/map2html/map2html.src�������������������������������������������������������0000644�0001750�0001750�00000013047�10343637564�017047� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@PATH_PERL@
eval 'exec @PATH_PERL@ -S $0 ${1+"$@"}'
    if $running_under_some_shell;
##
##  map2html -- convert server-side to client-side imagemap 
##  Copyright (c) 1996-1998,1999 Ralf S. Engelschall, All Rights Reserved. 
##

require 5.003;

use lib "@INSTALLPRIVLIB@";
use lib "@INSTALLARCHLIB@";

use Getopt::Long;

#
#   process command line
#
sub usage {
    print STDERR "Usage: map2html [options] mapfile\n";
    print STDERR "   where options are\n";
    print STDERR "   -t type  map format: 'ncsa' or 'cern' (default)\n";
    print STDERR "   -d shape default area shape: 'def' (default) or 'rect'\n";
    print STDERR "   -n name  produce a map called <name> (default is filename)\n";
    print STDERR "   -o file  output file\n";
    print STDERR "   -h       help (this text)\n";
    print STDERR "   -v       version information\n";
    exit(1);
}
sub version {
    print STDERR "This is MAP2HTML, Version 1.1\n";
    exit(0);
}
$opt_v = 0;
$opt_h = 0;
$opt_o = "-";
$opt_t = "ncsa";
$opt_d = "def";
$opt_n = "";
$Getopt::Long::bundling = 1;
$Getopt::Long::getopt_compat = 0;
$rc = Getopt::Long::GetOptions("v|verbose", 
                               "t|type=s", 
                               "d|defshape=s", 
                               "n|name=s",
                               "o|outputfile=s",
                               "h|help");
if (not $rc or $opt_h or ($#ARGV == -1)) {
    &usage;
}
if ($opt_v) {
    &version;
}

$server    = $opt_t;
$defshape  = $opt_d;
$name      = $opt_n;
$default   = "";
$lastc     = "";
$alt       = "";
  
if ($opt_o eq "-") {
    *OUT = *STDOUT;
}
else {
    open(OUT, ">$opt_o") || die "Cannot open output file ``$opt_o''";
}

for $file (@ARGV) {
    &domap(*OUT, $file, $name);
}

if ($opt_o ne "-") {
    close(OUT);
}

sub domap {
    local(*OUT, $file, $name) = @_;
    local(*IN);
    
    open(IN, "<$file") || warn "Can't open: $file\n", return;
    if ($name eq "") {
        $name = $file;
    }
    print OUT "<MAP NAME=\"$name\">\n"; # header
    while(<IN>) {
        &doline(*OUT, $_);
    }
    print OUT "$default"; # the default URL must be last
    print OUT "</MAP>\n";
    close(IN);
    return;
}

sub doline {
    local(*OUT, $line) = @_;
    local(@coords);
    local($coords, $href, $type);
  
    $type='dodgy'; # make sure that it doesn't print anything unless it's set
    $line =~ s|\n$||;
    $line =~ s|
$||;
    if ($server =~ m|cern|i) {
        if ($line =~ m|^\s*default\s+(\S+)\s*$|i) {
            if ($defshape eq "rect") {
                $default = "<AREA SHAPE=RECT COORDS=\"0,0,9999,9999\" HREF=\"$1\" ALT=\"DEFAULT\">\n";
            }
            else {
                $default = "<AREA SHAPE=DEFAULT HREF=\"$1\" ALT=\"DEFAULT\">\n";
            }
            return;
        }
        elsif ($line =~ m/^\s*(circle|poly|rectangle)\s+([^\000]+)\s+(\S+)\s*$/i) {
            $type = $1;
            $href = $3;
            $coords = $2;
            $type =~ s/rectangle/rect/i; # CERN uses rectangle but we want rect
        }
        elsif ($line =~ m/^\s*#\s+(.+)\s*$/i) {
            $lastc = $1;
            print OUT "<!-- $1 -->\n";
        }
        else {
            chop($line);
            print OUT "<!-- Unrecognized line: $line -->\n";
            $lastc = "";
        }
    } elsif ($server =~ m|ncsa|i) {
        if ($line =~ m|^\s*default\s+(\S+)\s*$|i ) {
            if ($defshape eq "rect") {
                $default = "<AREA SHAPE=RECT COORDS=\"0,0,9999,9999\" HREF=\"$1\" ALT=\"DEFAULT\">\n";
            }
            else {
                $default = "<AREA SHAPE=DEFAULT HREF=\"$1\" ALT=\"DEFAULT\">\n";
            }
            return;
        }
        elsif ($line =~ m/^\s*(circle|poly|rect|point)\s+(\S+)\s+([^\000]+)$/i) {
            $type = $1;
            $href = $2;
            $coords = $3;
        }
        elsif ($line =~ m/^\s*#\s+(.+)\s*$/i) {
            $lastc = $1;
            print OUT "<!-- $1 -->\n";
        }
        else {
            chop($line);
            print OUT "<!-- Unrecognized line: $line -->\n";
            $lastc = "";
        }
    }
    else {
        print "Dodgy server set!\n";
        exit;
    }

    if ($type =~ m/(circle|poly|rect)/i) {
        # convert the coords to a comma separated list of numbers
        @coords = ();
        $type =~ tr|a-z|A-Z|;
        while($coords =~ s|^\D*(\d+)||) {
            push(@coords, $1);
        }
        $coords = join(",", @coords);
        if ($lastc ne "") {
            $alt = $lastc;
        }
        print OUT "<AREA SHAPE=$type COORDS=\"$coords\" HREF=\"$href\" ALT=\"$alt\">\n";
        $lastc = "";
        $alt = "";
    }
}
    
##EOF##
__END__

=head1 NAME

map2html - convert server-side to client-side imagemap 

=head1 SYNOPSIS

B<map2html>
[B<-t> I<type>]
[B<-d> I<shape>]
[B<-n> I<name>]
[B<-o> I<outputfile>]
[B<-v>]
[I<inputfile>]

=head1 DESCRIPTION

The F<map2html> program reads I<inputfile> and converts
its contents from a server-side map to a client-side map.

=head1 OPTIONS

=over

=item B<-t> I<type>

Sets the type of the server-side map. Either C<ncsa> (default) or C<cern>.

=item B<-d> I<shape>

Sets the default area shape. Either C<def> (default) or C<rect>.

=item B<-n> I<name>

Produce a map called I<name>. Default is I<inputfile>.

=item B<-o> I<outputfile>

This redirects the output to I<outputfile>. Usually the output will be send to
C<stdout> if no such option is specified or I<outputfile> is "C<->".

=item B<-v>

This sets verbose mode where some processing information will be given on the
console.

=back

=head1 AUTHOR

 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

=cut

�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_aux/map2html/Makefile.in��������������������������������������������������������0000644�0001750�0001750�00000002547�10343637564�016662� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_aux/map2html/Makefile
##  Copyright (c) 1997-2000 Ralf S. Engelschall, <rse@engelschall.com>
##  Copyright (c) 2000 Denis Barbier
##

@SET_MAKE@
SHELL           = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

INSTALL_PROGRAM = $(top_srcdir)/etc/shtool install -c -m 755 -s
INSTALL_DATA    = $(top_srcdir)/etc/shtool install -c -m 644

prefix          = @prefix@
exec_prefix     = $(prefix)
bindir          = $(prefix)/bin
libsubdir       = @libsubdir@
libdir          = $(prefix)/lib$(libsubdir)
mandir          = $(prefix)/man

PATH_PERL       = @PATH_PERL@
INSTALLPRIVLIB  = @INSTALLPRIVLIB@
INSTALLARCHLIB  = @INSTALLARCHLIB@

SRC_FILES       = map2html.src

MAN_FILES       = $(SRC_FILES:.src=.1)
EXE_FILES       = $(SRC_FILES:.src=.pl)

.SUFFIXES:
.SUFFIXES: .pl .1 .src

.src.pl:
	sed -e '/^=head1/,/^=cut/d' \
        -e '/^__END__/,$$d' \
	-e 's|\@PATH_PERL\@|$(PATH_PERL)|g' \
        -e 's|\@libdir\@|$(libdir)|g' \
        -e 's|\@INSTALLPRIVLIB\@|$(INSTALLPRIVLIB)|g' \
        -e 's|\@INSTALLARCHLIB\@|$(INSTALLARCHLIB)|g' \
          <$< >$@ && chmod a+x $@

.src.1:
	cp $< $*.pod
	pod2man --section=1 --center="EN Tools" --release="EN Tools" $*.pod >$@
	rm -f $*.pod

all: $(EXE_FILES) $(MAN_FILES)

clean: 
	-rm -f $(EXE_FILES) $(MAN_FILES)

distclean: clean
	-rm -f Makefile

realclean: distclean

##EOF##
���������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/wml_aux/Makefile.in�����������������������������������������������������������������0000644�0001750�0001750�00000002342�10343637577�015133� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������##
##  wml_aux/Makefile
##  Copyright (c) 1997 Ralf S. Engelschall, All Rights Reserved. 
##

# ------------------------------------------------
#   DEFINITIONS
# ------------------------------------------------

@SET_MAKE@
SHELL = /bin/sh

top_srcdir      = @top_srcdir@
srcdir          = @srcdir@
VPATH           = @srcdir@

SUBDIRS =             \
   iselect   \
   htmlclean \
   htmlinfo  \
   linklint  \
   map2html  \
   tidy      \
   txt2html  \
   weblint   \
   freetable

# ------------------------------------------------
#   TARGETS
# ------------------------------------------------

all:
	@set -e; \
	set dummy $(MAKEFLAGS); amf=$$2; \
	for dir in $(SUBDIRS); do \
	    echo "===> wml_aux/$$dir ($@)"; \
	    (cd $$dir && $(MAKE)) \
	    || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
	    echo "<=== wml_aux/$$dir"; \
	done && test -z "$$fail"

clean:
	-@for dir in $(SUBDIRS); do \
	    echo "===> wml_aux/$$dir ($@)"; \
	    (cd $$dir && $(MAKE) clean); \
	    echo "<=== wml_aux/$$dir"; \
	done

distclean: 
	-@for dir in $(SUBDIRS); do \
	    echo "===> wml_aux/$$dir ($@)"; \
	    (cd $$dir && $(MAKE) distclean); \
	    echo "<=== wml_aux/$$dir"; \
	done
	-@rm -f Makefile

realclean: distclean

##EOF##
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������wml-2.0.12.orig/COPYING�����������������������������������������������������������������������������0000644�0001750�0001750�00000043127�10343637577�012453� 0����������������������������������������������������������������������������������������������������ustar  �abe�����������������������������abe��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 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.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

	    How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) 19yy  <name of author>

    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 2 of the License, 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, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) 19yy name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.
�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������