diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-09-26 23:06:02 +0000 |
---|---|---|
committer | <> | 2015-02-03 11:56:22 +0000 |
commit | e0b511b834f3529395df67126a7314097c2cf97e (patch) | |
tree | 89945ae53183ab2acdc61659c8b0b3e57e4a1f3a /Pod-Simple-Texinfo | |
parent | 2d8ae7b161658c4a589172db0072fc99f76fa979 (diff) | |
download | texinfo-tarball-master.tar.gz |
Imported from /home/lorry/working-area/delta_texinfo-tarball/texinfo-5.2.tar.xz.HEADtexinfo-5.2master
Diffstat (limited to 'Pod-Simple-Texinfo')
-rw-r--r-- | Pod-Simple-Texinfo/Changes | 6 | ||||
-rw-r--r-- | Pod-Simple-Texinfo/MANIFEST | 7 | ||||
-rw-r--r-- | Pod-Simple-Texinfo/Makefile.PL | 17 | ||||
-rw-r--r-- | Pod-Simple-Texinfo/Makefile.am | 43 | ||||
-rw-r--r-- | Pod-Simple-Texinfo/Makefile.in | 1561 | ||||
-rw-r--r-- | Pod-Simple-Texinfo/README | 31 | ||||
-rw-r--r-- | Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm | 808 | ||||
-rwxr-xr-x | Pod-Simple-Texinfo/pod2texi.pl | 602 | ||||
-rwxr-xr-x | Pod-Simple-Texinfo/prove.sh | 20 | ||||
-rw-r--r-- | Pod-Simple-Texinfo/t/Pod-Simple-Texinfo.t | 313 |
10 files changed, 3408 insertions, 0 deletions
diff --git a/Pod-Simple-Texinfo/Changes b/Pod-Simple-Texinfo/Changes new file mode 100644 index 0000000..c585b0c --- /dev/null +++ b/Pod-Simple-Texinfo/Changes @@ -0,0 +1,6 @@ +Revision history for Perl extension Pod::Simple::Texinfo. + +0.01 Fri Dec 23 22:41:34 2011 + - original version; created by h2xs 1.23 with options + -XA -b 5.0.0 -n Pod::Simple::Texinfo + diff --git a/Pod-Simple-Texinfo/MANIFEST b/Pod-Simple-Texinfo/MANIFEST new file mode 100644 index 0000000..fa55eb8 --- /dev/null +++ b/Pod-Simple-Texinfo/MANIFEST @@ -0,0 +1,7 @@ +Changes +Makefile.PL +MANIFEST +README +t/Pod-Simple-Texinfo.t +lib/Pod/Simple/Texinfo.pm +pod2texi diff --git a/Pod-Simple-Texinfo/Makefile.PL b/Pod-Simple-Texinfo/Makefile.PL new file mode 100644 index 0000000..42eebef --- /dev/null +++ b/Pod-Simple-Texinfo/Makefile.PL @@ -0,0 +1,17 @@ +use 5.000; +use ExtUtils::MakeMaker; +# See lib/ExtUtils/MakeMaker.pm for details of how to influence +# the contents of the Makefile that is written. +WriteMakefile( + NAME => 'Pod::Simple::Texinfo', + VERSION_FROM => 'lib/Pod/Simple/Texinfo.pm', # finds $VERSION + EXE_FILES => [ 'pod2texi' ], + PREREQ_PM => { "Pod::Simple::PullParser" => 0, + "Texinfo::Parser" => 0, + "Getopt::Long" => 0, + "File::Spec" => 0, + "File::Basename" => 0, }, # e.g., Module::Name => 1.1 + ($] >= 5.005 ? ## Add these new keywords supported since 5.005 + (ABSTRACT_FROM => 'lib/Pod/Simple/Texinfo.pm', # retrieve abstract from module + AUTHOR => 'Patrice Dumas <pertusus@free.fr>') : ()), +); diff --git a/Pod-Simple-Texinfo/Makefile.am b/Pod-Simple-Texinfo/Makefile.am new file mode 100644 index 0000000..8c0d933 --- /dev/null +++ b/Pod-Simple-Texinfo/Makefile.am @@ -0,0 +1,43 @@ +# $Id: Makefile.am 5191 2013-02-23 00:11:18Z karl $ +# Makefile.am for texinfo/Pod-Simple_Texinfo. +# Copyright 2012 Free Software Foundation, Inc. +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +nodist_bin_SCRIPTS = pod2texi + +test_files = prove.sh + +EXTRA_DIST = Changes \ + Makefile.PL \ + MANIFEST \ + t/Pod-Simple-Texinfo.t \ + pod2texi.pl \ + $(test_files) + +modulesdir = $(pkgdatadir)/Pod-Simple-Texinfo/Pod/Simple/ + +dist_modules_DATA = \ + lib/Pod/Simple/Texinfo.pm + +pod2texi: pod2texi.pl Makefile + sed -e 's,[@]datadir[@],$(datadir),g' \ + -e 's,[@]PACKAGE[@],$(PACKAGE),g' \ + -e 's,[@]USE_EXTERNAL_LIBINTL[@],$(USE_EXTERNAL_LIBINTL),g' \ + -e 's,[@]USE_EXTERNAL_EASTASIANWIDTH[@],$(USE_EXTERNAL_EASTASIANWIDTH),g' \ + -e 's,[@]USE_EXTERNAL_UNIDECODE[@],$(USE_EXTERNAL_UNIDECODE),g' \ + -e '1 s,/usr/bin/env perl,$(PERL),g' \ + $(srcdir)/pod2texi.pl >$@ + chmod a+x $@ + +if POD_SIMPLE_TEXINFO_TESTS +TESTS = $(test_files) +endif + +DISTCLEANFILES = pod2texi diff --git a/Pod-Simple-Texinfo/Makefile.in b/Pod-Simple-Texinfo/Makefile.in new file mode 100644 index 0000000..0015cad --- /dev/null +++ b/Pod-Simple-Texinfo/Makefile.in @@ -0,0 +1,1561 @@ +# Makefile.in generated by automake 1.14 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# $Id: Makefile.am 5191 2013-02-23 00:11:18Z karl $ +# Makefile.am for texinfo/Pod-Simple_Texinfo. +# Copyright 2012 Free Software Foundation, Inc. +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = Pod-Simple-Texinfo +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(dist_modules_DATA) $(top_srcdir)/build-aux/test-driver \ + README +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/gnulib/m4/00gnulib.m4 \ + $(top_srcdir)/gnulib/m4/alloca.m4 \ + $(top_srcdir)/gnulib/m4/argz.m4 \ + $(top_srcdir)/gnulib/m4/btowc.m4 \ + $(top_srcdir)/gnulib/m4/codeset.m4 \ + $(top_srcdir)/gnulib/m4/configmake.m4 \ + $(top_srcdir)/gnulib/m4/eealloc.m4 \ + $(top_srcdir)/gnulib/m4/errno_h.m4 \ + $(top_srcdir)/gnulib/m4/error.m4 \ + $(top_srcdir)/gnulib/m4/extensions.m4 \ + $(top_srcdir)/gnulib/m4/extern-inline.m4 \ + $(top_srcdir)/gnulib/m4/fcntl-o.m4 \ + $(top_srcdir)/gnulib/m4/fcntl_h.m4 \ + $(top_srcdir)/gnulib/m4/getopt.m4 \ + $(top_srcdir)/gnulib/m4/gettext.m4 \ + $(top_srcdir)/gnulib/m4/gettimeofday.m4 \ + $(top_srcdir)/gnulib/m4/glibc21.m4 \ + $(top_srcdir)/gnulib/m4/gnulib-common.m4 \ + $(top_srcdir)/gnulib/m4/gnulib-comp.m4 \ + $(top_srcdir)/gnulib/m4/iconv.m4 \ + $(top_srcdir)/gnulib/m4/include_next.m4 \ + $(top_srcdir)/gnulib/m4/intlmacosx.m4 \ + $(top_srcdir)/gnulib/m4/iswblank.m4 \ + $(top_srcdir)/gnulib/m4/langinfo_h.m4 \ + $(top_srcdir)/gnulib/m4/largefile.m4 \ + $(top_srcdir)/gnulib/m4/lib-ld.m4 \ + $(top_srcdir)/gnulib/m4/lib-link.m4 \ + $(top_srcdir)/gnulib/m4/lib-prefix.m4 \ + $(top_srcdir)/gnulib/m4/libunistring-base.m4 \ + $(top_srcdir)/gnulib/m4/localcharset.m4 \ + $(top_srcdir)/gnulib/m4/locale-fr.m4 \ + $(top_srcdir)/gnulib/m4/locale-ja.m4 \ + $(top_srcdir)/gnulib/m4/locale-zh.m4 \ + $(top_srcdir)/gnulib/m4/locale_h.m4 \ + $(top_srcdir)/gnulib/m4/localeconv.m4 \ + $(top_srcdir)/gnulib/m4/lock.m4 \ + $(top_srcdir)/gnulib/m4/longlong.m4 \ + $(top_srcdir)/gnulib/m4/lstat.m4 \ + $(top_srcdir)/gnulib/m4/malloc.m4 \ + $(top_srcdir)/gnulib/m4/malloca.m4 \ + $(top_srcdir)/gnulib/m4/mbchar.m4 \ + $(top_srcdir)/gnulib/m4/mbiter.m4 \ + $(top_srcdir)/gnulib/m4/mbrtowc.m4 \ + $(top_srcdir)/gnulib/m4/mbsinit.m4 \ + $(top_srcdir)/gnulib/m4/mbslen.m4 \ + $(top_srcdir)/gnulib/m4/mbstate_t.m4 \ + $(top_srcdir)/gnulib/m4/mbswidth.m4 \ + $(top_srcdir)/gnulib/m4/mbtowc.m4 \ + $(top_srcdir)/gnulib/m4/memchr.m4 \ + $(top_srcdir)/gnulib/m4/memmem.m4 \ + $(top_srcdir)/gnulib/m4/mempcpy.m4 \ + $(top_srcdir)/gnulib/m4/mkstemp.m4 \ + $(top_srcdir)/gnulib/m4/mmap-anon.m4 \ + $(top_srcdir)/gnulib/m4/msvc-inval.m4 \ + $(top_srcdir)/gnulib/m4/msvc-nothrow.m4 \ + $(top_srcdir)/gnulib/m4/multiarch.m4 \ + $(top_srcdir)/gnulib/m4/nl_langinfo.m4 \ + $(top_srcdir)/gnulib/m4/nls.m4 \ + $(top_srcdir)/gnulib/m4/nocrash.m4 \ + $(top_srcdir)/gnulib/m4/off_t.m4 \ + $(top_srcdir)/gnulib/m4/onceonly.m4 \ + $(top_srcdir)/gnulib/m4/pathmax.m4 \ + $(top_srcdir)/gnulib/m4/po.m4 \ + $(top_srcdir)/gnulib/m4/progtest.m4 \ + $(top_srcdir)/gnulib/m4/regex.m4 \ + $(top_srcdir)/gnulib/m4/secure_getenv.m4 \ + $(top_srcdir)/gnulib/m4/ssize_t.m4 \ + $(top_srcdir)/gnulib/m4/stat.m4 \ + $(top_srcdir)/gnulib/m4/stdbool.m4 \ + $(top_srcdir)/gnulib/m4/stddef_h.m4 \ + $(top_srcdir)/gnulib/m4/stdint.m4 \ + $(top_srcdir)/gnulib/m4/stdlib_h.m4 \ + $(top_srcdir)/gnulib/m4/stpcpy.m4 \ + $(top_srcdir)/gnulib/m4/strdup.m4 \ + $(top_srcdir)/gnulib/m4/strerror.m4 \ + $(top_srcdir)/gnulib/m4/string_h.m4 \ + $(top_srcdir)/gnulib/m4/strndup.m4 \ + $(top_srcdir)/gnulib/m4/strnlen.m4 \ + $(top_srcdir)/gnulib/m4/strstr.m4 \ + $(top_srcdir)/gnulib/m4/sys_socket_h.m4 \ + $(top_srcdir)/gnulib/m4/sys_stat_h.m4 \ + $(top_srcdir)/gnulib/m4/sys_time_h.m4 \ + $(top_srcdir)/gnulib/m4/sys_types_h.m4 \ + $(top_srcdir)/gnulib/m4/tempname.m4 \ + $(top_srcdir)/gnulib/m4/threadlib.m4 \ + $(top_srcdir)/gnulib/m4/time_h.m4 \ + $(top_srcdir)/gnulib/m4/unistd_h.m4 \ + $(top_srcdir)/gnulib/m4/warn-on-use.m4 \ + $(top_srcdir)/gnulib/m4/wchar_h.m4 \ + $(top_srcdir)/gnulib/m4/wchar_t.m4 \ + $(top_srcdir)/gnulib/m4/wcrtomb.m4 \ + $(top_srcdir)/gnulib/m4/wctype_h.m4 \ + $(top_srcdir)/gnulib/m4/wcwidth.m4 \ + $(top_srcdir)/gnulib/m4/wint_t.m4 \ + $(top_srcdir)/gnulib/m4/xalloc.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(modulesdir)" +SCRIPTS = $(nodist_bin_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(dist_modules_DATA) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +pkglibexecdir = @pkglibexecdir@ +ACLOCAL = @ACLOCAL@ +ALLOCA = @ALLOCA@ +ALLOCA_H = @ALLOCA_H@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +APPLE_UNIVERSAL_BUILD = @APPLE_UNIVERSAL_BUILD@ +AR = @AR@ +ARFLAGS = @ARFLAGS@ +ARGZ_H = @ARGZ_H@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@ +BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@ +BITSIZEOF_SIZE_T = @BITSIZEOF_SIZE_T@ +BITSIZEOF_WCHAR_T = @BITSIZEOF_WCHAR_T@ +BITSIZEOF_WINT_T = @BITSIZEOF_WINT_T@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DIFF_A_OPTION = @DIFF_A_OPTION@ +DIFF_U_OPTION = @DIFF_U_OPTION@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EMULTIHOP_HIDDEN = @EMULTIHOP_HIDDEN@ +EMULTIHOP_VALUE = @EMULTIHOP_VALUE@ +ENOLINK_HIDDEN = @ENOLINK_HIDDEN@ +ENOLINK_VALUE = @ENOLINK_VALUE@ +EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@ +EOVERFLOW_VALUE = @EOVERFLOW_VALUE@ +ERRNO_H = @ERRNO_H@ +EXEEXT = @EXEEXT@ +GETOPT_H = @GETOPT_H@ +GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ +GLIBC21 = @GLIBC21@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GNULIB_ATOLL = @GNULIB_ATOLL@ +GNULIB_BTOWC = @GNULIB_BTOWC@ +GNULIB_CALLOC_POSIX = @GNULIB_CALLOC_POSIX@ +GNULIB_CANONICALIZE_FILE_NAME = @GNULIB_CANONICALIZE_FILE_NAME@ +GNULIB_CHDIR = @GNULIB_CHDIR@ +GNULIB_CHOWN = @GNULIB_CHOWN@ +GNULIB_CLOSE = @GNULIB_CLOSE@ +GNULIB_DUP = @GNULIB_DUP@ +GNULIB_DUP2 = @GNULIB_DUP2@ +GNULIB_DUP3 = @GNULIB_DUP3@ +GNULIB_DUPLOCALE = @GNULIB_DUPLOCALE@ +GNULIB_ENVIRON = @GNULIB_ENVIRON@ +GNULIB_EUIDACCESS = @GNULIB_EUIDACCESS@ +GNULIB_FACCESSAT = @GNULIB_FACCESSAT@ +GNULIB_FCHDIR = @GNULIB_FCHDIR@ +GNULIB_FCHMODAT = @GNULIB_FCHMODAT@ +GNULIB_FCHOWNAT = @GNULIB_FCHOWNAT@ +GNULIB_FCNTL = @GNULIB_FCNTL@ +GNULIB_FDATASYNC = @GNULIB_FDATASYNC@ +GNULIB_FFSL = @GNULIB_FFSL@ +GNULIB_FFSLL = @GNULIB_FFSLL@ +GNULIB_FSTAT = @GNULIB_FSTAT@ +GNULIB_FSTATAT = @GNULIB_FSTATAT@ +GNULIB_FSYNC = @GNULIB_FSYNC@ +GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@ +GNULIB_FUTIMENS = @GNULIB_FUTIMENS@ +GNULIB_GETCWD = @GNULIB_GETCWD@ +GNULIB_GETDOMAINNAME = @GNULIB_GETDOMAINNAME@ +GNULIB_GETDTABLESIZE = @GNULIB_GETDTABLESIZE@ +GNULIB_GETGROUPS = @GNULIB_GETGROUPS@ +GNULIB_GETHOSTNAME = @GNULIB_GETHOSTNAME@ +GNULIB_GETLOADAVG = @GNULIB_GETLOADAVG@ +GNULIB_GETLOGIN = @GNULIB_GETLOGIN@ +GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@ +GNULIB_GETPAGESIZE = @GNULIB_GETPAGESIZE@ +GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@ +GNULIB_GETTIMEOFDAY = @GNULIB_GETTIMEOFDAY@ +GNULIB_GETUSERSHELL = @GNULIB_GETUSERSHELL@ +GNULIB_GL_UNISTD_H_GETOPT = @GNULIB_GL_UNISTD_H_GETOPT@ +GNULIB_GRANTPT = @GNULIB_GRANTPT@ +GNULIB_GROUP_MEMBER = @GNULIB_GROUP_MEMBER@ +GNULIB_ISATTY = @GNULIB_ISATTY@ +GNULIB_ISWBLANK = @GNULIB_ISWBLANK@ +GNULIB_ISWCTYPE = @GNULIB_ISWCTYPE@ +GNULIB_LCHMOD = @GNULIB_LCHMOD@ +GNULIB_LCHOWN = @GNULIB_LCHOWN@ +GNULIB_LINK = @GNULIB_LINK@ +GNULIB_LINKAT = @GNULIB_LINKAT@ +GNULIB_LOCALECONV = @GNULIB_LOCALECONV@ +GNULIB_LSEEK = @GNULIB_LSEEK@ +GNULIB_LSTAT = @GNULIB_LSTAT@ +GNULIB_MALLOC_POSIX = @GNULIB_MALLOC_POSIX@ +GNULIB_MBRLEN = @GNULIB_MBRLEN@ +GNULIB_MBRTOWC = @GNULIB_MBRTOWC@ +GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@ +GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@ +GNULIB_MBSCHR = @GNULIB_MBSCHR@ +GNULIB_MBSCSPN = @GNULIB_MBSCSPN@ +GNULIB_MBSINIT = @GNULIB_MBSINIT@ +GNULIB_MBSLEN = @GNULIB_MBSLEN@ +GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@ +GNULIB_MBSNLEN = @GNULIB_MBSNLEN@ +GNULIB_MBSNRTOWCS = @GNULIB_MBSNRTOWCS@ +GNULIB_MBSPBRK = @GNULIB_MBSPBRK@ +GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@ +GNULIB_MBSRCHR = @GNULIB_MBSRCHR@ +GNULIB_MBSRTOWCS = @GNULIB_MBSRTOWCS@ +GNULIB_MBSSEP = @GNULIB_MBSSEP@ +GNULIB_MBSSPN = @GNULIB_MBSSPN@ +GNULIB_MBSSTR = @GNULIB_MBSSTR@ +GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@ +GNULIB_MBTOWC = @GNULIB_MBTOWC@ +GNULIB_MEMCHR = @GNULIB_MEMCHR@ +GNULIB_MEMMEM = @GNULIB_MEMMEM@ +GNULIB_MEMPCPY = @GNULIB_MEMPCPY@ +GNULIB_MEMRCHR = @GNULIB_MEMRCHR@ +GNULIB_MKDIRAT = @GNULIB_MKDIRAT@ +GNULIB_MKDTEMP = @GNULIB_MKDTEMP@ +GNULIB_MKFIFO = @GNULIB_MKFIFO@ +GNULIB_MKFIFOAT = @GNULIB_MKFIFOAT@ +GNULIB_MKNOD = @GNULIB_MKNOD@ +GNULIB_MKNODAT = @GNULIB_MKNODAT@ +GNULIB_MKOSTEMP = @GNULIB_MKOSTEMP@ +GNULIB_MKOSTEMPS = @GNULIB_MKOSTEMPS@ +GNULIB_MKSTEMP = @GNULIB_MKSTEMP@ +GNULIB_MKSTEMPS = @GNULIB_MKSTEMPS@ +GNULIB_MKTIME = @GNULIB_MKTIME@ +GNULIB_NANOSLEEP = @GNULIB_NANOSLEEP@ +GNULIB_NL_LANGINFO = @GNULIB_NL_LANGINFO@ +GNULIB_NONBLOCKING = @GNULIB_NONBLOCKING@ +GNULIB_OPEN = @GNULIB_OPEN@ +GNULIB_OPENAT = @GNULIB_OPENAT@ +GNULIB_PIPE = @GNULIB_PIPE@ +GNULIB_PIPE2 = @GNULIB_PIPE2@ +GNULIB_POSIX_OPENPT = @GNULIB_POSIX_OPENPT@ +GNULIB_PREAD = @GNULIB_PREAD@ +GNULIB_PTSNAME = @GNULIB_PTSNAME@ +GNULIB_PTSNAME_R = @GNULIB_PTSNAME_R@ +GNULIB_PUTENV = @GNULIB_PUTENV@ +GNULIB_PWRITE = @GNULIB_PWRITE@ +GNULIB_RANDOM = @GNULIB_RANDOM@ +GNULIB_RANDOM_R = @GNULIB_RANDOM_R@ +GNULIB_RAWMEMCHR = @GNULIB_RAWMEMCHR@ +GNULIB_READ = @GNULIB_READ@ +GNULIB_READLINK = @GNULIB_READLINK@ +GNULIB_READLINKAT = @GNULIB_READLINKAT@ +GNULIB_REALLOC_POSIX = @GNULIB_REALLOC_POSIX@ +GNULIB_REALPATH = @GNULIB_REALPATH@ +GNULIB_RMDIR = @GNULIB_RMDIR@ +GNULIB_RPMATCH = @GNULIB_RPMATCH@ +GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@ +GNULIB_SETENV = @GNULIB_SETENV@ +GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@ +GNULIB_SETLOCALE = @GNULIB_SETLOCALE@ +GNULIB_SLEEP = @GNULIB_SLEEP@ +GNULIB_STAT = @GNULIB_STAT@ +GNULIB_STPCPY = @GNULIB_STPCPY@ +GNULIB_STPNCPY = @GNULIB_STPNCPY@ +GNULIB_STRCASESTR = @GNULIB_STRCASESTR@ +GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@ +GNULIB_STRDUP = @GNULIB_STRDUP@ +GNULIB_STRERROR = @GNULIB_STRERROR@ +GNULIB_STRERROR_R = @GNULIB_STRERROR_R@ +GNULIB_STRNCAT = @GNULIB_STRNCAT@ +GNULIB_STRNDUP = @GNULIB_STRNDUP@ +GNULIB_STRNLEN = @GNULIB_STRNLEN@ +GNULIB_STRPBRK = @GNULIB_STRPBRK@ +GNULIB_STRPTIME = @GNULIB_STRPTIME@ +GNULIB_STRSEP = @GNULIB_STRSEP@ +GNULIB_STRSIGNAL = @GNULIB_STRSIGNAL@ +GNULIB_STRSTR = @GNULIB_STRSTR@ +GNULIB_STRTOD = @GNULIB_STRTOD@ +GNULIB_STRTOK_R = @GNULIB_STRTOK_R@ +GNULIB_STRTOLL = @GNULIB_STRTOLL@ +GNULIB_STRTOULL = @GNULIB_STRTOULL@ +GNULIB_STRVERSCMP = @GNULIB_STRVERSCMP@ +GNULIB_SYMLINK = @GNULIB_SYMLINK@ +GNULIB_SYMLINKAT = @GNULIB_SYMLINKAT@ +GNULIB_SYSTEM_POSIX = @GNULIB_SYSTEM_POSIX@ +GNULIB_TIMEGM = @GNULIB_TIMEGM@ +GNULIB_TIME_R = @GNULIB_TIME_R@ +GNULIB_TOWCTRANS = @GNULIB_TOWCTRANS@ +GNULIB_TTYNAME_R = @GNULIB_TTYNAME_R@ +GNULIB_UNISTD_H_NONBLOCKING = @GNULIB_UNISTD_H_NONBLOCKING@ +GNULIB_UNISTD_H_SIGPIPE = @GNULIB_UNISTD_H_SIGPIPE@ +GNULIB_UNLINK = @GNULIB_UNLINK@ +GNULIB_UNLINKAT = @GNULIB_UNLINKAT@ +GNULIB_UNLOCKPT = @GNULIB_UNLOCKPT@ +GNULIB_UNSETENV = @GNULIB_UNSETENV@ +GNULIB_USLEEP = @GNULIB_USLEEP@ +GNULIB_UTIMENSAT = @GNULIB_UTIMENSAT@ +GNULIB_WCPCPY = @GNULIB_WCPCPY@ +GNULIB_WCPNCPY = @GNULIB_WCPNCPY@ +GNULIB_WCRTOMB = @GNULIB_WCRTOMB@ +GNULIB_WCSCASECMP = @GNULIB_WCSCASECMP@ +GNULIB_WCSCAT = @GNULIB_WCSCAT@ +GNULIB_WCSCHR = @GNULIB_WCSCHR@ +GNULIB_WCSCMP = @GNULIB_WCSCMP@ +GNULIB_WCSCOLL = @GNULIB_WCSCOLL@ +GNULIB_WCSCPY = @GNULIB_WCSCPY@ +GNULIB_WCSCSPN = @GNULIB_WCSCSPN@ +GNULIB_WCSDUP = @GNULIB_WCSDUP@ +GNULIB_WCSLEN = @GNULIB_WCSLEN@ +GNULIB_WCSNCASECMP = @GNULIB_WCSNCASECMP@ +GNULIB_WCSNCAT = @GNULIB_WCSNCAT@ +GNULIB_WCSNCMP = @GNULIB_WCSNCMP@ +GNULIB_WCSNCPY = @GNULIB_WCSNCPY@ +GNULIB_WCSNLEN = @GNULIB_WCSNLEN@ +GNULIB_WCSNRTOMBS = @GNULIB_WCSNRTOMBS@ +GNULIB_WCSPBRK = @GNULIB_WCSPBRK@ +GNULIB_WCSRCHR = @GNULIB_WCSRCHR@ +GNULIB_WCSRTOMBS = @GNULIB_WCSRTOMBS@ +GNULIB_WCSSPN = @GNULIB_WCSSPN@ +GNULIB_WCSSTR = @GNULIB_WCSSTR@ +GNULIB_WCSTOK = @GNULIB_WCSTOK@ +GNULIB_WCSWIDTH = @GNULIB_WCSWIDTH@ +GNULIB_WCSXFRM = @GNULIB_WCSXFRM@ +GNULIB_WCTOB = @GNULIB_WCTOB@ +GNULIB_WCTOMB = @GNULIB_WCTOMB@ +GNULIB_WCTRANS = @GNULIB_WCTRANS@ +GNULIB_WCTYPE = @GNULIB_WCTYPE@ +GNULIB_WCWIDTH = @GNULIB_WCWIDTH@ +GNULIB_WMEMCHR = @GNULIB_WMEMCHR@ +GNULIB_WMEMCMP = @GNULIB_WMEMCMP@ +GNULIB_WMEMCPY = @GNULIB_WMEMCPY@ +GNULIB_WMEMMOVE = @GNULIB_WMEMMOVE@ +GNULIB_WMEMSET = @GNULIB_WMEMSET@ +GNULIB_WRITE = @GNULIB_WRITE@ +GNULIB__EXIT = @GNULIB__EXIT@ +GREP = @GREP@ +HAVE_ATOLL = @HAVE_ATOLL@ +HAVE_BTOWC = @HAVE_BTOWC@ +HAVE_CANONICALIZE_FILE_NAME = @HAVE_CANONICALIZE_FILE_NAME@ +HAVE_CHOWN = @HAVE_CHOWN@ +HAVE_DECL_ENVIRON = @HAVE_DECL_ENVIRON@ +HAVE_DECL_FCHDIR = @HAVE_DECL_FCHDIR@ +HAVE_DECL_FDATASYNC = @HAVE_DECL_FDATASYNC@ +HAVE_DECL_GETDOMAINNAME = @HAVE_DECL_GETDOMAINNAME@ +HAVE_DECL_GETLOADAVG = @HAVE_DECL_GETLOADAVG@ +HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@ +HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@ +HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@ +HAVE_DECL_LOCALTIME_R = @HAVE_DECL_LOCALTIME_R@ +HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@ +HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@ +HAVE_DECL_SETENV = @HAVE_DECL_SETENV@ +HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@ +HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@ +HAVE_DECL_STRERROR_R = @HAVE_DECL_STRERROR_R@ +HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@ +HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@ +HAVE_DECL_STRSIGNAL = @HAVE_DECL_STRSIGNAL@ +HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@ +HAVE_DECL_TTYNAME_R = @HAVE_DECL_TTYNAME_R@ +HAVE_DECL_UNSETENV = @HAVE_DECL_UNSETENV@ +HAVE_DECL_WCTOB = @HAVE_DECL_WCTOB@ +HAVE_DECL_WCWIDTH = @HAVE_DECL_WCWIDTH@ +HAVE_DUP2 = @HAVE_DUP2@ +HAVE_DUP3 = @HAVE_DUP3@ +HAVE_DUPLOCALE = @HAVE_DUPLOCALE@ +HAVE_EUIDACCESS = @HAVE_EUIDACCESS@ +HAVE_FACCESSAT = @HAVE_FACCESSAT@ +HAVE_FCHDIR = @HAVE_FCHDIR@ +HAVE_FCHMODAT = @HAVE_FCHMODAT@ +HAVE_FCHOWNAT = @HAVE_FCHOWNAT@ +HAVE_FCNTL = @HAVE_FCNTL@ +HAVE_FDATASYNC = @HAVE_FDATASYNC@ +HAVE_FEATURES_H = @HAVE_FEATURES_H@ +HAVE_FFSL = @HAVE_FFSL@ +HAVE_FFSLL = @HAVE_FFSLL@ +HAVE_FSTATAT = @HAVE_FSTATAT@ +HAVE_FSYNC = @HAVE_FSYNC@ +HAVE_FTRUNCATE = @HAVE_FTRUNCATE@ +HAVE_FUTIMENS = @HAVE_FUTIMENS@ +HAVE_GETDTABLESIZE = @HAVE_GETDTABLESIZE@ +HAVE_GETGROUPS = @HAVE_GETGROUPS@ +HAVE_GETHOSTNAME = @HAVE_GETHOSTNAME@ +HAVE_GETLOGIN = @HAVE_GETLOGIN@ +HAVE_GETOPT_H = @HAVE_GETOPT_H@ +HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@ +HAVE_GETSUBOPT = @HAVE_GETSUBOPT@ +HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@ +HAVE_GRANTPT = @HAVE_GRANTPT@ +HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@ +HAVE_INTTYPES_H = @HAVE_INTTYPES_H@ +HAVE_ISWBLANK = @HAVE_ISWBLANK@ +HAVE_ISWCNTRL = @HAVE_ISWCNTRL@ +HAVE_LANGINFO_CODESET = @HAVE_LANGINFO_CODESET@ +HAVE_LANGINFO_ERA = @HAVE_LANGINFO_ERA@ +HAVE_LANGINFO_H = @HAVE_LANGINFO_H@ +HAVE_LANGINFO_T_FMT_AMPM = @HAVE_LANGINFO_T_FMT_AMPM@ +HAVE_LANGINFO_YESEXPR = @HAVE_LANGINFO_YESEXPR@ +HAVE_LCHMOD = @HAVE_LCHMOD@ +HAVE_LCHOWN = @HAVE_LCHOWN@ +HAVE_LINK = @HAVE_LINK@ +HAVE_LINKAT = @HAVE_LINKAT@ +HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@ +HAVE_LSTAT = @HAVE_LSTAT@ +HAVE_MBRLEN = @HAVE_MBRLEN@ +HAVE_MBRTOWC = @HAVE_MBRTOWC@ +HAVE_MBSINIT = @HAVE_MBSINIT@ +HAVE_MBSLEN = @HAVE_MBSLEN@ +HAVE_MBSNRTOWCS = @HAVE_MBSNRTOWCS@ +HAVE_MBSRTOWCS = @HAVE_MBSRTOWCS@ +HAVE_MEMCHR = @HAVE_MEMCHR@ +HAVE_MEMPCPY = @HAVE_MEMPCPY@ +HAVE_MKDIRAT = @HAVE_MKDIRAT@ +HAVE_MKDTEMP = @HAVE_MKDTEMP@ +HAVE_MKFIFO = @HAVE_MKFIFO@ +HAVE_MKFIFOAT = @HAVE_MKFIFOAT@ +HAVE_MKNOD = @HAVE_MKNOD@ +HAVE_MKNODAT = @HAVE_MKNODAT@ +HAVE_MKOSTEMP = @HAVE_MKOSTEMP@ +HAVE_MKOSTEMPS = @HAVE_MKOSTEMPS@ +HAVE_MKSTEMP = @HAVE_MKSTEMP@ +HAVE_MKSTEMPS = @HAVE_MKSTEMPS@ +HAVE_MSVC_INVALID_PARAMETER_HANDLER = @HAVE_MSVC_INVALID_PARAMETER_HANDLER@ +HAVE_NANOSLEEP = @HAVE_NANOSLEEP@ +HAVE_NL_LANGINFO = @HAVE_NL_LANGINFO@ +HAVE_OPENAT = @HAVE_OPENAT@ +HAVE_OS_H = @HAVE_OS_H@ +HAVE_PIPE = @HAVE_PIPE@ +HAVE_PIPE2 = @HAVE_PIPE2@ +HAVE_POSIX_OPENPT = @HAVE_POSIX_OPENPT@ +HAVE_PREAD = @HAVE_PREAD@ +HAVE_PTSNAME = @HAVE_PTSNAME@ +HAVE_PTSNAME_R = @HAVE_PTSNAME_R@ +HAVE_PWRITE = @HAVE_PWRITE@ +HAVE_RANDOM = @HAVE_RANDOM@ +HAVE_RANDOM_H = @HAVE_RANDOM_H@ +HAVE_RANDOM_R = @HAVE_RANDOM_R@ +HAVE_RAWMEMCHR = @HAVE_RAWMEMCHR@ +HAVE_READLINK = @HAVE_READLINK@ +HAVE_READLINKAT = @HAVE_READLINKAT@ +HAVE_REALPATH = @HAVE_REALPATH@ +HAVE_RPMATCH = @HAVE_RPMATCH@ +HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@ +HAVE_SETENV = @HAVE_SETENV@ +HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@ +HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@ +HAVE_SIGNED_WCHAR_T = @HAVE_SIGNED_WCHAR_T@ +HAVE_SIGNED_WINT_T = @HAVE_SIGNED_WINT_T@ +HAVE_SLEEP = @HAVE_SLEEP@ +HAVE_STDINT_H = @HAVE_STDINT_H@ +HAVE_STPCPY = @HAVE_STPCPY@ +HAVE_STPNCPY = @HAVE_STPNCPY@ +HAVE_STRCASESTR = @HAVE_STRCASESTR@ +HAVE_STRCHRNUL = @HAVE_STRCHRNUL@ +HAVE_STRPBRK = @HAVE_STRPBRK@ +HAVE_STRPTIME = @HAVE_STRPTIME@ +HAVE_STRSEP = @HAVE_STRSEP@ +HAVE_STRTOD = @HAVE_STRTOD@ +HAVE_STRTOLL = @HAVE_STRTOLL@ +HAVE_STRTOULL = @HAVE_STRTOULL@ +HAVE_STRUCT_RANDOM_DATA = @HAVE_STRUCT_RANDOM_DATA@ +HAVE_STRUCT_TIMEVAL = @HAVE_STRUCT_TIMEVAL@ +HAVE_STRVERSCMP = @HAVE_STRVERSCMP@ +HAVE_SYMLINK = @HAVE_SYMLINK@ +HAVE_SYMLINKAT = @HAVE_SYMLINKAT@ +HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@ +HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@ +HAVE_SYS_LOADAVG_H = @HAVE_SYS_LOADAVG_H@ +HAVE_SYS_PARAM_H = @HAVE_SYS_PARAM_H@ +HAVE_SYS_TIME_H = @HAVE_SYS_TIME_H@ +HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@ +HAVE_TIMEGM = @HAVE_TIMEGM@ +HAVE_UNISTD_H = @HAVE_UNISTD_H@ +HAVE_UNLINKAT = @HAVE_UNLINKAT@ +HAVE_UNLOCKPT = @HAVE_UNLOCKPT@ +HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@ +HAVE_USLEEP = @HAVE_USLEEP@ +HAVE_UTIMENSAT = @HAVE_UTIMENSAT@ +HAVE_WCHAR_H = @HAVE_WCHAR_H@ +HAVE_WCHAR_T = @HAVE_WCHAR_T@ +HAVE_WCPCPY = @HAVE_WCPCPY@ +HAVE_WCPNCPY = @HAVE_WCPNCPY@ +HAVE_WCRTOMB = @HAVE_WCRTOMB@ +HAVE_WCSCASECMP = @HAVE_WCSCASECMP@ +HAVE_WCSCAT = @HAVE_WCSCAT@ +HAVE_WCSCHR = @HAVE_WCSCHR@ +HAVE_WCSCMP = @HAVE_WCSCMP@ +HAVE_WCSCOLL = @HAVE_WCSCOLL@ +HAVE_WCSCPY = @HAVE_WCSCPY@ +HAVE_WCSCSPN = @HAVE_WCSCSPN@ +HAVE_WCSDUP = @HAVE_WCSDUP@ +HAVE_WCSLEN = @HAVE_WCSLEN@ +HAVE_WCSNCASECMP = @HAVE_WCSNCASECMP@ +HAVE_WCSNCAT = @HAVE_WCSNCAT@ +HAVE_WCSNCMP = @HAVE_WCSNCMP@ +HAVE_WCSNCPY = @HAVE_WCSNCPY@ +HAVE_WCSNLEN = @HAVE_WCSNLEN@ +HAVE_WCSNRTOMBS = @HAVE_WCSNRTOMBS@ +HAVE_WCSPBRK = @HAVE_WCSPBRK@ +HAVE_WCSRCHR = @HAVE_WCSRCHR@ +HAVE_WCSRTOMBS = @HAVE_WCSRTOMBS@ +HAVE_WCSSPN = @HAVE_WCSSPN@ +HAVE_WCSSTR = @HAVE_WCSSTR@ +HAVE_WCSTOK = @HAVE_WCSTOK@ +HAVE_WCSWIDTH = @HAVE_WCSWIDTH@ +HAVE_WCSXFRM = @HAVE_WCSXFRM@ +HAVE_WCTRANS_T = @HAVE_WCTRANS_T@ +HAVE_WCTYPE_H = @HAVE_WCTYPE_H@ +HAVE_WCTYPE_T = @HAVE_WCTYPE_T@ +HAVE_WINSOCK2_H = @HAVE_WINSOCK2_H@ +HAVE_WINT_T = @HAVE_WINT_T@ +HAVE_WMEMCHR = @HAVE_WMEMCHR@ +HAVE_WMEMCMP = @HAVE_WMEMCMP@ +HAVE_WMEMCPY = @HAVE_WMEMCPY@ +HAVE_WMEMMOVE = @HAVE_WMEMMOVE@ +HAVE_WMEMSET = @HAVE_WMEMSET@ +HAVE_XLOCALE_H = @HAVE_XLOCALE_H@ +HAVE__BOOL = @HAVE__BOOL@ +HAVE__EXIT = @HAVE__EXIT@ +HELP2MAN = @HELP2MAN@ +INCLUDE_NEXT = @INCLUDE_NEXT@ +INCLUDE_NEXT_AS_FIRST_DIRECTIVE = @INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LDFLAGS = @LDFLAGS@ +LIBGNU_LIBDEPS = @LIBGNU_LIBDEPS@ +LIBGNU_LTLIBDEPS = @LIBGNU_LTLIBDEPS@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMULTITHREAD = @LIBMULTITHREAD@ +LIBOBJS = @LIBOBJS@ +LIBPTH = @LIBPTH@ +LIBPTH_PREFIX = @LIBPTH_PREFIX@ +LIBS = @LIBS@ +LIBTHREAD = @LIBTHREAD@ +LIBUNISTRING_UNITYPES_H = @LIBUNISTRING_UNITYPES_H@ +LIBUNISTRING_UNIWIDTH_H = @LIBUNISTRING_UNIWIDTH_H@ +LN_S = @LN_S@ +LOCALCHARSET_TESTS_ENVIRONMENT = @LOCALCHARSET_TESTS_ENVIRONMENT@ +LOCALE_FR = @LOCALE_FR@ +LOCALE_FR_UTF8 = @LOCALE_FR_UTF8@ +LOCALE_JA = @LOCALE_JA@ +LOCALE_ZH_CN = @LOCALE_ZH_CN@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBMULTITHREAD = @LTLIBMULTITHREAD@ +LTLIBOBJS = @LTLIBOBJS@ +LTLIBPTH = @LTLIBPTH@ +LTLIBTHREAD = @LTLIBTHREAD@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NEXT_AS_FIRST_DIRECTIVE_ERRNO_H = @NEXT_AS_FIRST_DIRECTIVE_ERRNO_H@ +NEXT_AS_FIRST_DIRECTIVE_FCNTL_H = @NEXT_AS_FIRST_DIRECTIVE_FCNTL_H@ +NEXT_AS_FIRST_DIRECTIVE_GETOPT_H = @NEXT_AS_FIRST_DIRECTIVE_GETOPT_H@ +NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H = @NEXT_AS_FIRST_DIRECTIVE_LANGINFO_H@ +NEXT_AS_FIRST_DIRECTIVE_LOCALE_H = @NEXT_AS_FIRST_DIRECTIVE_LOCALE_H@ +NEXT_AS_FIRST_DIRECTIVE_STDDEF_H = @NEXT_AS_FIRST_DIRECTIVE_STDDEF_H@ +NEXT_AS_FIRST_DIRECTIVE_STDINT_H = @NEXT_AS_FIRST_DIRECTIVE_STDINT_H@ +NEXT_AS_FIRST_DIRECTIVE_STDLIB_H = @NEXT_AS_FIRST_DIRECTIVE_STDLIB_H@ +NEXT_AS_FIRST_DIRECTIVE_STRING_H = @NEXT_AS_FIRST_DIRECTIVE_STRING_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_STAT_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H = @NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H@ +NEXT_AS_FIRST_DIRECTIVE_TIME_H = @NEXT_AS_FIRST_DIRECTIVE_TIME_H@ +NEXT_AS_FIRST_DIRECTIVE_UNISTD_H = @NEXT_AS_FIRST_DIRECTIVE_UNISTD_H@ +NEXT_AS_FIRST_DIRECTIVE_WCHAR_H = @NEXT_AS_FIRST_DIRECTIVE_WCHAR_H@ +NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H = @NEXT_AS_FIRST_DIRECTIVE_WCTYPE_H@ +NEXT_ERRNO_H = @NEXT_ERRNO_H@ +NEXT_FCNTL_H = @NEXT_FCNTL_H@ +NEXT_GETOPT_H = @NEXT_GETOPT_H@ +NEXT_LANGINFO_H = @NEXT_LANGINFO_H@ +NEXT_LOCALE_H = @NEXT_LOCALE_H@ +NEXT_STDDEF_H = @NEXT_STDDEF_H@ +NEXT_STDINT_H = @NEXT_STDINT_H@ +NEXT_STDLIB_H = @NEXT_STDLIB_H@ +NEXT_STRING_H = @NEXT_STRING_H@ +NEXT_SYS_STAT_H = @NEXT_SYS_STAT_H@ +NEXT_SYS_TIME_H = @NEXT_SYS_TIME_H@ +NEXT_SYS_TYPES_H = @NEXT_SYS_TYPES_H@ +NEXT_TIME_H = @NEXT_TIME_H@ +NEXT_UNISTD_H = @NEXT_UNISTD_H@ +NEXT_WCHAR_H = @NEXT_WCHAR_H@ +NEXT_WCTYPE_H = @NEXT_WCTYPE_H@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_DATE = @PACKAGE_DATE@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +POSUB = @POSUB@ +PRAGMA_COLUMNS = @PRAGMA_COLUMNS@ +PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@ +PROVE = @PROVE@ +PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@ +PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@ +RANLIB = @RANLIB@ +REPLACE_BTOWC = @REPLACE_BTOWC@ +REPLACE_CALLOC = @REPLACE_CALLOC@ +REPLACE_CANONICALIZE_FILE_NAME = @REPLACE_CANONICALIZE_FILE_NAME@ +REPLACE_CHOWN = @REPLACE_CHOWN@ +REPLACE_CLOSE = @REPLACE_CLOSE@ +REPLACE_DUP = @REPLACE_DUP@ +REPLACE_DUP2 = @REPLACE_DUP2@ +REPLACE_DUPLOCALE = @REPLACE_DUPLOCALE@ +REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@ +REPLACE_FCNTL = @REPLACE_FCNTL@ +REPLACE_FSTAT = @REPLACE_FSTAT@ +REPLACE_FSTATAT = @REPLACE_FSTATAT@ +REPLACE_FTRUNCATE = @REPLACE_FTRUNCATE@ +REPLACE_FUTIMENS = @REPLACE_FUTIMENS@ +REPLACE_GETCWD = @REPLACE_GETCWD@ +REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@ +REPLACE_GETGROUPS = @REPLACE_GETGROUPS@ +REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@ +REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@ +REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@ +REPLACE_ISATTY = @REPLACE_ISATTY@ +REPLACE_ISWBLANK = @REPLACE_ISWBLANK@ +REPLACE_ISWCNTRL = @REPLACE_ISWCNTRL@ +REPLACE_LCHOWN = @REPLACE_LCHOWN@ +REPLACE_LINK = @REPLACE_LINK@ +REPLACE_LINKAT = @REPLACE_LINKAT@ +REPLACE_LOCALECONV = @REPLACE_LOCALECONV@ +REPLACE_LOCALTIME_R = @REPLACE_LOCALTIME_R@ +REPLACE_LSEEK = @REPLACE_LSEEK@ +REPLACE_LSTAT = @REPLACE_LSTAT@ +REPLACE_MALLOC = @REPLACE_MALLOC@ +REPLACE_MBRLEN = @REPLACE_MBRLEN@ +REPLACE_MBRTOWC = @REPLACE_MBRTOWC@ +REPLACE_MBSINIT = @REPLACE_MBSINIT@ +REPLACE_MBSNRTOWCS = @REPLACE_MBSNRTOWCS@ +REPLACE_MBSRTOWCS = @REPLACE_MBSRTOWCS@ +REPLACE_MBSTATE_T = @REPLACE_MBSTATE_T@ +REPLACE_MBTOWC = @REPLACE_MBTOWC@ +REPLACE_MEMCHR = @REPLACE_MEMCHR@ +REPLACE_MEMMEM = @REPLACE_MEMMEM@ +REPLACE_MKDIR = @REPLACE_MKDIR@ +REPLACE_MKFIFO = @REPLACE_MKFIFO@ +REPLACE_MKNOD = @REPLACE_MKNOD@ +REPLACE_MKSTEMP = @REPLACE_MKSTEMP@ +REPLACE_MKTIME = @REPLACE_MKTIME@ +REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@ +REPLACE_NL_LANGINFO = @REPLACE_NL_LANGINFO@ +REPLACE_NULL = @REPLACE_NULL@ +REPLACE_OPEN = @REPLACE_OPEN@ +REPLACE_OPENAT = @REPLACE_OPENAT@ +REPLACE_PREAD = @REPLACE_PREAD@ +REPLACE_PTSNAME = @REPLACE_PTSNAME@ +REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@ +REPLACE_PUTENV = @REPLACE_PUTENV@ +REPLACE_PWRITE = @REPLACE_PWRITE@ +REPLACE_RANDOM_R = @REPLACE_RANDOM_R@ +REPLACE_READ = @REPLACE_READ@ +REPLACE_READLINK = @REPLACE_READLINK@ +REPLACE_REALLOC = @REPLACE_REALLOC@ +REPLACE_REALPATH = @REPLACE_REALPATH@ +REPLACE_RMDIR = @REPLACE_RMDIR@ +REPLACE_SETENV = @REPLACE_SETENV@ +REPLACE_SETLOCALE = @REPLACE_SETLOCALE@ +REPLACE_SLEEP = @REPLACE_SLEEP@ +REPLACE_STAT = @REPLACE_STAT@ +REPLACE_STPNCPY = @REPLACE_STPNCPY@ +REPLACE_STRCASESTR = @REPLACE_STRCASESTR@ +REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@ +REPLACE_STRDUP = @REPLACE_STRDUP@ +REPLACE_STRERROR = @REPLACE_STRERROR@ +REPLACE_STRERROR_R = @REPLACE_STRERROR_R@ +REPLACE_STRNCAT = @REPLACE_STRNCAT@ +REPLACE_STRNDUP = @REPLACE_STRNDUP@ +REPLACE_STRNLEN = @REPLACE_STRNLEN@ +REPLACE_STRSIGNAL = @REPLACE_STRSIGNAL@ +REPLACE_STRSTR = @REPLACE_STRSTR@ +REPLACE_STRTOD = @REPLACE_STRTOD@ +REPLACE_STRTOK_R = @REPLACE_STRTOK_R@ +REPLACE_STRUCT_LCONV = @REPLACE_STRUCT_LCONV@ +REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@ +REPLACE_SYMLINK = @REPLACE_SYMLINK@ +REPLACE_TIMEGM = @REPLACE_TIMEGM@ +REPLACE_TOWLOWER = @REPLACE_TOWLOWER@ +REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@ +REPLACE_UNLINK = @REPLACE_UNLINK@ +REPLACE_UNLINKAT = @REPLACE_UNLINKAT@ +REPLACE_UNSETENV = @REPLACE_UNSETENV@ +REPLACE_USLEEP = @REPLACE_USLEEP@ +REPLACE_UTIMENSAT = @REPLACE_UTIMENSAT@ +REPLACE_WCRTOMB = @REPLACE_WCRTOMB@ +REPLACE_WCSNRTOMBS = @REPLACE_WCSNRTOMBS@ +REPLACE_WCSRTOMBS = @REPLACE_WCSRTOMBS@ +REPLACE_WCSWIDTH = @REPLACE_WCSWIDTH@ +REPLACE_WCTOB = @REPLACE_WCTOB@ +REPLACE_WCTOMB = @REPLACE_WCTOMB@ +REPLACE_WCWIDTH = @REPLACE_WCWIDTH@ +REPLACE_WRITE = @REPLACE_WRITE@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIG_ATOMIC_T_SUFFIX = @SIG_ATOMIC_T_SUFFIX@ +SIZE_T_SUFFIX = @SIZE_T_SUFFIX@ +STDBOOL_H = @STDBOOL_H@ +STDDEF_H = @STDDEF_H@ +STDINT_H = @STDINT_H@ +STRIP = @STRIP@ +SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@ +TERMLIBS = @TERMLIBS@ +TEXINFO_DTD_VERSION = @TEXINFO_DTD_VERSION@ +TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@ +UNDEFINE_STRTOK_R = @UNDEFINE_STRTOK_R@ +UNISTD_H_HAVE_WINSOCK2_H = @UNISTD_H_HAVE_WINSOCK2_H@ +UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS = @UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS@ +USE_EXTERNAL_EASTASIANWIDTH = @USE_EXTERNAL_EASTASIANWIDTH@ +USE_EXTERNAL_LIBINTL = @USE_EXTERNAL_LIBINTL@ +USE_EXTERNAL_UNIDECODE = @USE_EXTERNAL_UNIDECODE@ +USE_NLS = @USE_NLS@ +USE_UNICODE = @USE_UNICODE@ +VERSION = @VERSION@ +WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@ +WINDOWS_64_BIT_OFF_T = @WINDOWS_64_BIT_OFF_T@ +WINDOWS_64_BIT_ST_SIZE = @WINDOWS_64_BIT_ST_SIZE@ +WINT_T_SUFFIX = @WINT_T_SUFFIX@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +gl_LIBOBJS = @gl_LIBOBJS@ +gl_LTLIBOBJS = @gl_LTLIBOBJS@ +gltests_LIBOBJS = @gltests_LIBOBJS@ +gltests_LTLIBOBJS = @gltests_LTLIBOBJS@ +gltests_WITNESS = @gltests_WITNESS@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +lispdir = @lispdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +native_tools = @native_tools@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +nodist_bin_SCRIPTS = pod2texi +test_files = prove.sh +EXTRA_DIST = Changes \ + Makefile.PL \ + MANIFEST \ + t/Pod-Simple-Texinfo.t \ + pod2texi.pl \ + $(test_files) + +modulesdir = $(pkgdatadir)/Pod-Simple-Texinfo/Pod/Simple/ +dist_modules_DATA = \ + lib/Pod/Simple/Texinfo.pm + +@POD_SIMPLE_TEXINFO_TESTS_TRUE@TESTS = $(test_files) +DISTCLEANFILES = pod2texi +all: all-am + +.SUFFIXES: +.SUFFIXES: .log .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Pod-Simple-Texinfo/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Pod-Simple-Texinfo/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-nodist_binSCRIPTS: $(nodist_bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(nodist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-nodist_binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(nodist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) +install-dist_modulesDATA: $(dist_modules_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_modules_DATA)'; test -n "$(modulesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(modulesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(modulesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(modulesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(modulesdir)" || exit $$?; \ + done + +uninstall-dist_modulesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_modules_DATA)'; test -n "$(modulesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(modulesdir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +prove.sh.log: prove.sh + @p='prove.sh'; \ + b='prove.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(SCRIPTS) $(DATA) +installdirs: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(modulesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-dist_modulesDATA + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-nodist_binSCRIPTS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_modulesDATA uninstall-nodist_binSCRIPTS + +.MAKE: check-am install-am install-strip + +.PHONY: all all-am check check-TESTS check-am clean clean-generic \ + cscopelist-am ctags-am distclean distclean-generic distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dist_modulesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-nodist_binSCRIPTS install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am recheck tags-am uninstall uninstall-am \ + uninstall-dist_modulesDATA uninstall-nodist_binSCRIPTS + + +pod2texi: pod2texi.pl Makefile + sed -e 's,[@]datadir[@],$(datadir),g' \ + -e 's,[@]PACKAGE[@],$(PACKAGE),g' \ + -e 's,[@]USE_EXTERNAL_LIBINTL[@],$(USE_EXTERNAL_LIBINTL),g' \ + -e 's,[@]USE_EXTERNAL_EASTASIANWIDTH[@],$(USE_EXTERNAL_EASTASIANWIDTH),g' \ + -e 's,[@]USE_EXTERNAL_UNIDECODE[@],$(USE_EXTERNAL_UNIDECODE),g' \ + -e '1 s,/usr/bin/env perl,$(PERL),g' \ + $(srcdir)/pod2texi.pl >$@ + chmod a+x $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/Pod-Simple-Texinfo/README b/Pod-Simple-Texinfo/README new file mode 100644 index 0000000..cac61e5 --- /dev/null +++ b/Pod-Simple-Texinfo/README @@ -0,0 +1,31 @@ +Pod-Simple-Texinfo version 0.01 +=============================== + +Pod::Simple based Pod formatter to render Texinfo. + +INSTALLATION + +To install this module type the following: + + perl Makefile.PL + make + make test + make install + +DEPENDENCIES + +This module requires these other modules and libraries: + +Pod::Simple::PullParser, Texinfo::Parser. + +COPYRIGHT AND LICENCE + +Copyright (C) 2011, 2012 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, +or (at your option) any later version. + +_url_escape is general_url_escape from Pod::Simple::HTML. + diff --git a/Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm b/Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm new file mode 100644 index 0000000..7f6cca6 --- /dev/null +++ b/Pod-Simple-Texinfo/lib/Pod/Simple/Texinfo.pm @@ -0,0 +1,808 @@ +# Texinfo.pm: format Pod as Texinfo. +# +# Copyright 2011, 2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. +# +# Original author: Patrice Dumas <pertusus@free.fr> +# Parts from L<Pod::Simple::HTML>. + + +package Pod::Simple::Texinfo; + +require 5; +use strict; + +use Carp qw(cluck); +#use Pod::Simple::Debug (3); +use Pod::Simple::PullParser (); + +use Texinfo::Convert::NodeNameNormalization qw(normalize_node); +use Texinfo::Parser qw(parse_texi_line parse_texi_text); +use Texinfo::Convert::Texinfo; +use Texinfo::Convert::TextContent; +use Texinfo::Common qw(protect_comma_in_tree protect_first_parenthesis + protect_hashchar_at_line_beginning); + +use vars qw( + @ISA $VERSION +); + +@ISA = ('Pod::Simple::PullParser'); +$VERSION = '0.01'; + +#use UNIVERSAL (); + +# Allows being called from the comand line as +# perl -w -MPod::Simple::Texinfo -e Pod::Simple::Texinfo::go thingy.pod +sub go { Pod::Simple::Texinfo->parse_from_file(@ARGV); exit 0 } + +my %head_commands_level; +foreach my $level (1 .. 4) { + $head_commands_level{'head'.$level} = $level; +} + +my @numbered_sectioning_commands = ('part', 'chapter', 'section', 'subsection', + 'subsubsection'); +my @unnumbered_sectioning_commands = ('part', 'unnumbered', 'unnumberedsec', + 'unnumberedsubsec', 'unnumberedsubsubsec'); + +my @raw_formats = ('html', 'HTML', 'docbook', 'DocBook', 'texinfo', + 'Texinfo'); + +# from other Pod::Simple modules. Creates accessor subroutine. +__PACKAGE__->_accessorize( + 'texinfo_sectioning_base_level', + 'texinfo_short_title', + 'texinfo_man_url_prefix', + 'texinfo_sectioning_style', + 'texinfo_add_upper_sectioning_command', + 'texinfo_section_nodes', + 'texinfo_internal_pod_manuals', +); + +my $sectioning_style = 'numbered'; +#my $sectioning_base_level = 2; +my $sectioning_base_level = 0; +my $man_url_prefix = 'http://man.he.net/man'; + +sub new +{ + my $class = shift; + my $new = $class->SUPER::new(@_); + $new->accept_targets(@raw_formats); + $new->preserve_whitespace(1); + $new->texinfo_section_nodes(0); + $new->texinfo_sectioning_base_level ($sectioning_base_level); + $new->texinfo_man_url_prefix ($man_url_prefix); + $new->texinfo_sectioning_style ($sectioning_style); + $new->texinfo_add_upper_sectioning_command(1); + return $new; +} + +sub run +{ + my $self = shift; + + # In case the caller changed the formats + my @formats = $self->accept_targets(); + foreach my $format (@formats) { + if (lc($format) eq 'texinfo') { + $self->{'texinfo_raw_format_commands'}->{$format} = ''; + $self->{'texinfo_if_format_commands'}->{':'.$format} = ''; + } else { + $self->{'texinfo_raw_format_commands'}->{$format} = lc($format); + $self->{'texinfo_if_format_commands'}->{':'.$format} = lc($format); + } + } + my $base_level = $self->texinfo_sectioning_base_level; + $base_level = 1 if ($base_level <= 1); + if ($self->texinfo_sectioning_style eq 'numbered') { + $self->{'texinfo_sectioning_commands'} = \@numbered_sectioning_commands; + } else { + $self->{'texinfo_sectioning_commands'} = \@unnumbered_sectioning_commands; + } + foreach my $heading_command (keys(%head_commands_level)) { + my $level = $head_commands_level{$heading_command} + $base_level -1; + if (!defined($self->{'texinfo_sectioning_commands'}->[$level])) { + $self->{'texinfo_head_commands'}->{$heading_command} + = $self->{'texinfo_sectioning_commands'}->[-1]; + } else { + $self->{'texinfo_head_commands'}->{$heading_command} + = $self->{'texinfo_sectioning_commands'}->[$level]; + } + } + $self->{'texinfo_internal_pod_manuals_hash'} = {}; + my $manuals = $self->texinfo_internal_pod_manuals(); + if ($manuals) { + foreach my $manual (@$manuals) { + $self->{'texinfo_internal_pod_manuals_hash'}->{$manual} = 1; + } + } + + if ($self->bare_output()) { + $self->_convert_pod(); + } else { + $self->_preamble(); + $self->_convert_pod(); + $self->_postamble(); + } +} + +my $STDIN_DOCU_NAME = 'stdin'; +sub _preamble($) +{ + my $self = shift; + + my $fh = $self->{'output_fh'}; + + if (!defined($self->texinfo_short_title)) { + my $short_title = $self->get_short_title(); + if (defined($short_title) and $short_title =~ m/\S/) { + $self->texinfo_short_title($short_title); + } + } + + if ($self->texinfo_sectioning_base_level == 0) { + #print STDERR "$fh\n"; + print $fh '\input texinfo'."\n"; + my $setfilename; + if (defined($self->texinfo_short_title)) { + $setfilename = _pod_title_to_file_name($self->texinfo_short_title); + } else { + # FIXME maybe output filename would be better than source_filename? + my $source_filename = $self->source_filename(); + if (defined($source_filename) and $source_filename ne '') { + if ($source_filename eq '-') { + $setfilename = $STDIN_DOCU_NAME; + } else { + $setfilename = $source_filename; + $setfilename =~ s/\.(pod|pm)$//i; + } + } + } + if (defined($setfilename) and $setfilename =~ m/\S/) { + $setfilename = _protect_text($setfilename, 1); + $setfilename .= '.info'; + print $fh "\@setfilename $setfilename\n\n" + } + # FIXME depend on =encoding + print $fh '@documentencoding utf-8'."\n\n"; + + my $title = $self->get_title(); + if (defined($title) and $title =~ m/\S/) { + print $fh "\@settitle "._protect_text($title, 1)."\n\n"; + } + print $fh "\@node Top\n"; + if (defined($self->texinfo_short_title)) { + print $fh "\@top "._protect_text($self->texinfo_short_title, 1)."\n\n"; + } + } elsif (defined($self->texinfo_short_title) + and $self->texinfo_add_upper_sectioning_command) { + my $level = $self->texinfo_sectioning_base_level() - 1; + my $name = _protect_text($self->texinfo_short_title, 1); + my $node_name = _prepare_anchor($self, $name); + + my $anchor = ''; + my $node = ''; + if ($node_name =~ /\S/) { + if (!$self->texinfo_section_nodes + or $self->{'texinfo_sectioning_commands'}->[$level] eq 'part') { + $anchor = "\@anchor{$node_name}\n"; + } else { + $node = "\@node $node_name\n"; + } + } + print $fh "$node\@$self->{'texinfo_sectioning_commands'}->[$level] " + ._protect_text($self->texinfo_short_title, 1)."\n$anchor\n"; + } +} + +# 'out' is out of the context, for now for index entries. +sub _output($$$;$) +{ + my $fh = shift; + my $accumulated_stack = shift; + my $text = shift; + my $out = shift; + + if (scalar(@$accumulated_stack)) { + if ($out) { + $accumulated_stack->[-1]->{'out'} .= $text; + } else { + $accumulated_stack->[-1]->{'text'} .= $text; + } + } else { + print $fh $text; + } +} + +sub _begin_context($$) +{ + my $accumulated_stack = shift; + my $tag = shift; + push @$accumulated_stack, {'text' => '', 'tag' => $tag, + 'out' => ''}; +} + +sub _end_context($) +{ + my $accumulated_stack = shift; + my $previous_context = pop @$accumulated_stack; + return ($previous_context->{'text'}, $previous_context->{'out'}); +} + +sub _protect_text($;$) +{ + my $text = shift; + my $remove_new_lines = shift; + cluck if (!defined($text)); + $text =~ s/\n/ /g if ($remove_new_lines); + $text =~ s/([\@\{\}])/\@$1/g; + return $text; +} + +sub _pod_title_to_file_name($) +{ + my $name = shift; + $name =~ s/\s+/_/g; + $name =~ s/::/-/g; + $name =~ s/[^\w\.-]//g; + $name = '_' if ($name eq ''); + return $name; +} + +sub _protect_comma($) +{ + my $texinfo = shift; + my $tree = parse_texi_line(undef, $texinfo); + $tree = protect_comma_in_tree($tree); + return Texinfo::Convert::Texinfo::convert($tree); +} + +sub _protect_hashchar($) +{ + my $texinfo = shift; + # protect # first in line + if ($texinfo =~ /#/) { + my $tree = parse_texi_text(undef, $texinfo); + protect_hashchar_at_line_beginning(undef, $tree); + return Texinfo::Convert::Texinfo::convert($tree); + } else { + return $texinfo; + } +} + +sub _reference_to_text_in_texi($) +{ + my $texinfo = shift; + my $tree = parse_texi_text(undef, $texinfo); + Texinfo::Structuring::reference_to_arg_in_tree(undef, $tree); + return Texinfo::Convert::Texinfo::convert($tree); +} + +sub _section_manual_to_node_name($$$) +{ + my $self = shift; + my $manual = shift; + my $section = shift; + my $base_level = shift; + + if (defined($manual) and $base_level > 0) { + return _protect_text($manual, 1). " $section"; + } else { + return $section; + } +} + +sub _normalize_texinfo_name($$) +{ + # Pod may be more forgiven than Texinfo, so we go through + # a normalization, by parsing and converting back to Texinfo + my $name = shift; + my $command = shift; + my $texinfo_text; + if ($command eq 'anchor') { + $texinfo_text = "\@anchor{$name}"; + } else { + # item is not correct since it cannot happen outside of a table + # context, so we use @center which accepts the same on the line + if ($command eq 'item') { + $command = 'center'; + } + $texinfo_text = "\@$command $name\n"; + } + my $tree = parse_texi_text(undef, $texinfo_text); + if ($command eq 'anchor') { + #print STDERR "GGG $tree->{'contents'}->[0]->{'cmdname'}\n"; + $tree->{'contents'}->[0]->{'args'}->[-0]->{'contents'} + = protect_first_parenthesis($tree->{'contents'}->[0]->{'args'}->[-0]->{'contents'}); + } + my $fixed_text = Texinfo::Convert::Texinfo::convert($tree, 1); + my $result = $fixed_text; + if ($command eq 'anchor') { + $result =~ s/^\@anchor\{(.*)\}$/$1/s; + } else { + chomp($result); + $result =~ s/^\@$command (.*)$/$1/s; + } + return $result; +} + +sub _node_name($$) +{ + my $self = shift; + my $texinfo_node_name = shift; + + chomp $texinfo_node_name; + $texinfo_node_name + = $self->_section_manual_to_node_name($self->texinfo_short_title, + $texinfo_node_name, + $self->texinfo_sectioning_base_level); + # also change refs to text + return _reference_to_text_in_texi($texinfo_node_name); +} + +sub _prepare_anchor($$) +{ + my $self = shift; + my $texinfo_node_name = shift; + + my $node = _normalize_texinfo_name($texinfo_node_name, 'anchor'); + + if ($node !~ /\S/) { + return ''; + } + # Now we know that we have something. + my $node_tree = parse_texi_line(undef, $node); + my $normalized_base = normalize_node($node_tree); + my $normalized = $normalized_base; + my $number_appended = 0; + while ($self->{'texinfo_nodes'}->{$normalized}) { + $number_appended++; + $normalized = "${normalized_base}-$number_appended"; + } + my $node_name; + if ($number_appended) { + $texinfo_node_name = "$node $number_appended"; + $node_tree = parse_texi_line(undef, $texinfo_node_name); + } + $node_tree = protect_comma_in_tree($node_tree); + $self->{'texinfo_nodes'}->{$normalized} = $node_tree; + my $final_node_name = Texinfo::Convert::Texinfo::convert($node_tree, 1); + return $final_node_name; +} + +# from Pod::Simple::HTML general_url_escape +sub _url_escape($) +{ + my $string = shift; + + $string =~ s/([^\x00-\xFF])/join '', map sprintf('%%%02X',$_), unpack 'C*', $1/eg; + # express Unicode things as urlencode(utf(orig)). + + # A pretty conservative escaping, behoovey even for query components + # of a URL (see RFC 2396) + + $string =~ s/([^-_\.!~*()abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789])/sprintf('%%%02X',ord($1))/eg; + # Yes, stipulate the list without a range, so that this can work right on + # all charsets that this module happens to run under. + # Altho, hmm, what about that ord? Presumably that won't work right + # under non-ASCII charsets. Something should be done + # about that, I guess? + + return $string; +} + +my %tag_commands = ( + 'F' => 'file', + 'S' => 'w', + 'I' => 'emph', + 'B' => 'strong', # or @b? + 'C' => 'code' +); + +my %environment_commands = ( + 'Verbatim' => 'verbatim', + 'over-text' => 'table @asis', + 'over-bullet' => 'itemize', + 'over-number' => 'enumerate', + 'over-block' => 'quotation', +); + +my %line_commands = ( + 'item-bullet' => 'item', + 'item-text' => 'item', + 'item-number' => 'item', + 'encoding' => 'documentencoding' +); + +foreach my $tag (keys(%head_commands_level)) { + $line_commands{$tag} = 1; +} + +my %tags_index_before; +my %context_tags; +foreach my $context_tag (keys(%line_commands), 'L', 'X', 'Para') { + $context_tags{$context_tag} = 1; +} + +# do not appear as parsed token +# E entity/character +sub _convert_pod($) +{ + my $self = shift; + + my $fh = $self->{'output_fh'}; + + my ($token, $type, $tagname, $top_seen); + + my @accumulated_output; + my @format_stack; + while($token = $self->get_token()) { + my $type = $token->type(); + #print STDERR "* type $type\n"; + #print STDERR $token->dump()."\n"; + if ($type eq 'start') { + my $tagname = $token->tagname(); + if ($context_tags{$tagname}) { + if ($tagname eq 'L') { + my $linktype = $token->attr('type'); + my $content_implicit = $token->attr('content-implicit'); + #print STDERR " L: $linktype\n"; + my ($url_arg, $texinfo_node, $texinfo_manual, $texinfo_section); + if ($linktype eq 'man') { + # NOTE: the .'' is here to force the $token->attr to ba a real + # string and not an object. + # NOTE 2: It is not clear that setting the url should be done + # here, maybe this should be in the Texinfo HTML converter. + # However, there is a 'man' category here and not in Texinfo, + # so the information is more precise in pod. + my $replacement_arg = $token->attr('to').''; + # regexp from Pod::Simple::HTML resolve_man_page_link + # since it is very small, it is likely that copyright cannot be + # claimed for that part. + $replacement_arg =~ /^([^(]+)(?:[(](\d+)[)])?$/; + my $page = $1; + my $section = $2; + if (defined($page) and $page ne '') { + $section = 1 if (!defined($section)); + # it is unlikely that there is a comma because of _url_escape + # but to be sure there is still a call to _protect_comma. + $url_arg + = _protect_comma(_protect_text( + $self->texinfo_man_url_prefix + ."$section/"._url_escape($page))); + } else { + $url_arg = ''; + } + $replacement_arg = _protect_text($replacement_arg); + _output($fh, \@accumulated_output, "\@url{$url_arg,, $replacement_arg}"); + } elsif ($linktype eq 'url') { + # NOTE: the .'' is here to force the $token->attr to be a real + # string and not an object. + $url_arg = _protect_comma(_protect_text($token->attr('to').'')); + } elsif ($linktype eq 'pod') { + my $manual = $token->attr('to'); + my $section = $token->attr('section'); + $manual .= '' if (defined($manual)); + $section .= '' if (defined($section)); + if (0) { + my $section_text = 'UNDEF'; + if (defined($section)) { + $section_text = $section; + } + my $manual_text = 'UNDEF'; + if (defined($manual)) { + $manual_text = $manual; + } + print STDERR "L: $linktype $manual_text/$section_text\n"; + } + if (defined($manual)) { + if (! defined($section) or $section !~ m/\S/) { + if ($self->{'texinfo_internal_pod_manuals_hash'}->{$manual}) { + $section = 'NAME'; + } + } + if ($self->{'texinfo_internal_pod_manuals_hash'}->{$manual}) { + $texinfo_node = + $self->_section_manual_to_node_name($manual, $section, + $self->texinfo_sectioning_base_level); + } else { + $texinfo_manual = _protect_text(_pod_title_to_file_name($manual)); + if (defined($section)) { + $texinfo_node = $section; + } else { + $texinfo_node = ''; + } + } + } elsif (defined($section) and $section =~ m/\S/) { + $texinfo_node = + $self->_section_manual_to_node_name( + $self->texinfo_short_title, $section, + $self->texinfo_sectioning_base_level); + $texinfo_section = _normalize_texinfo_name( + _protect_comma(_protect_text($section)), 'section'); + } + $texinfo_node = _normalize_texinfo_name( + _protect_comma(_protect_text($texinfo_node)), 'anchor'); + + # for pod, 'to' is the pod manual name. Then 'section' is the + # section. + } + push @format_stack, [$linktype, $content_implicit, $url_arg, + $texinfo_manual, $texinfo_node, $texinfo_section]; + #if (defined($to)) { + # print STDERR " | $to\n"; + #} else { + # print STDERR "\n"; + #} + #print STDERR $token->dump."\n"; + } + _begin_context(\@accumulated_output, $tagname); + } elsif ($tag_commands{$tagname}) { + _output($fh, \@accumulated_output, "\@$tag_commands{$tagname}\{"); + } elsif ($environment_commands{$tagname}) { + _output($fh, \@accumulated_output, "\@$environment_commands{$tagname}\n"); + if ($tagname eq 'Verbatim') { + push @format_stack, 'verbatim'; + } + } elsif ($tagname eq 'for') { + my $target = $token->attr('target'); + push @format_stack, $target; + if ($self->{'texinfo_raw_format_commands'}->{$target}) { + _output($fh, \@accumulated_output, + "\@$self->{'texinfo_raw_format_commands'}->{$target}\n"); + } elsif ($self->{'texinfo_if_format_commands'}->{$target}) { + _output($fh, \@accumulated_output, + "\@if$self->{'texinfo_if_format_commands'}->{$target}\n"); + } + } + } elsif ($type eq 'text') { + my $text; + if (@format_stack and !ref($format_stack[-1]) + and ((defined($self->{'texinfo_raw_format_commands'}->{$format_stack[-1]}) + and !$self->{'texinfo_raw_format_commands'}->{$format_stack[-1]}) + or ($format_stack[-1] eq 'verbatim'))) { + $text = $token->text(); + } else { + $text = _protect_text($token->text()); + if (@format_stack and !ref($format_stack[-1]) + and ($self->{'texinfo_raw_format_commands'}->{$format_stack[-1]})) { + $text =~ s/^(\s*)#(\s*(line)? (\d+)(( "([^"]+)")(\s+\d+)*)?\s*)$/$1\@hashchar{}$2/mg; + } + } + _output($fh, \@accumulated_output, $text); + } elsif ($type eq 'end') { + my $tagname = $token->tagname(); + if ($context_tags{$tagname}) { + my ($result, $out) = _end_context(\@accumulated_output); + my $texinfo_node = ''; + if ($line_commands{$tagname}) { + + my ($command, $command_argument); + if ($head_commands_level{$tagname}) { + $command = $self->{'texinfo_head_commands'}->{$tagname}; + } elsif ($line_commands{$tagname}) { + $command = $line_commands{$tagname}; + } + + if ($head_commands_level{$tagname} or $tagname eq 'item-text') { + chomp ($result); + $result =~ s/\n/ /g; + $result =~ s/^\s*//; + $result =~ s/\s*$//; + + $command_argument = _normalize_texinfo_name($result, $command); + if ($result =~ /\S/ and $command_argument !~ /\S/) { + # use some raw text if the expansion lead to an empty section + my $tree = parse_texi_line(undef, $result); + my $converter = Texinfo::Convert::TextContent->converter(); + $command_argument = _protect_text($converter->convert_tree($tree)); + } + + my $anchor = ''; + my $node_name = _prepare_anchor($self, _node_name($self, $result)); + if ($node_name =~ /\S/) { + if ($tagname eq 'item-text' or !$self->texinfo_section_nodes) { + $anchor = "\n\@anchor{$node_name}"; + } else { + $texinfo_node = "\@node $node_name\n"; + } + } + $command_argument .= $anchor; + } else { + $command_argument = $result; + } + _output($fh, \@accumulated_output, + "$texinfo_node\@$command $command_argument\n$out\n"); + } elsif ($tagname eq 'Para') { + _output($fh, \@accumulated_output, $out. + _protect_hashchar($result)."\n\n"); + } elsif ($tagname eq 'L') { + my $format = pop @format_stack; + my ($linktype, $content_implicit, $url_arg, + $texinfo_manual, $texinfo_node, $texinfo_section) = @$format; + if ($linktype ne 'man') { + my $explanation; + if (defined($result) and $result =~ m/\S/ and !$content_implicit) { + $explanation = ' '. _protect_comma($result); + } + if ($linktype eq 'url') { + if (defined($explanation)) { + _output($fh, \@accumulated_output, + "\@url{$url_arg,$explanation}"); + } else { + _output($fh, \@accumulated_output, + "\@url{$url_arg}"); + } + } elsif ($linktype eq 'pod') { + if (defined($texinfo_manual)) { + $explanation = '' if (!defined($explanation)); + _output($fh, \@accumulated_output, + "\@ref{$texinfo_node,$explanation,, $texinfo_manual}"); + } elsif (defined($explanation)) { + _output($fh, \@accumulated_output, + "\@ref{$texinfo_node,$explanation,$explanation}"); + } else { + if (defined($texinfo_section) + and $texinfo_section ne $texinfo_node) { + _output($fh, \@accumulated_output, + "\@ref{$texinfo_node,, $texinfo_section}"); + } else { + _output($fh, \@accumulated_output, + "\@ref{$texinfo_node}"); + } + } + } + } + } elsif ($tagname eq 'X') { + my $next_token = $self->get_token(); + if ($next_token) { + if ($next_token->type() eq 'text') { + my $next_text = $next_token->text; + $next_text =~ s/^\s*//; + $next_token->text($next_text); + #_output($fh, \@accumulated_output, "\n"); + } + $self->unget_token($next_token); + } + chomp ($result); + $result =~ s/\n/ /g; + $result .= "\n"; + _output($fh, \@accumulated_output, "\@cindex $result", 1); + } + } elsif ($tag_commands{$tagname}) { + _output($fh, \@accumulated_output, "}"); + } elsif ($environment_commands{$tagname}) { + if ($tagname eq 'Verbatim') { + pop @format_stack; + _output($fh, \@accumulated_output, "\n"); + } + my $tag = $environment_commands{$tagname}; + $tag =~ s/ .*//; + _output($fh, \@accumulated_output, "\@end $tag\n\n"); + } elsif ($tagname eq 'for') { + my $target = pop @format_stack; + if ($self->{'texinfo_raw_format_commands'}->{$target}) { + _output($fh, \@accumulated_output, + "\n\@end $self->{'texinfo_raw_format_commands'}->{$target}\n"); + } elsif ($self->{'texinfo_if_format_commands'}->{$target}) { + _output($fh, \@accumulated_output, + "\@end if$self->{'texinfo_if_format_commands'}->{$target}\n"); + } + } + } + } +} + +sub _postamble($) +{ + my $self = shift; + + my $fh = $self->{'output_fh'}; + if ($self->texinfo_sectioning_base_level == 0) { + #print STDERR "$fh\n"; + print $fh "\@bye\n"; + } +} + +1; + +__END__ + +=head1 NAME + +Pod::Simple::Texinfo - format Pod as Texinfo + +=head1 SYNOPSIS + + # From the command like + perl -MPod::Simple::Texinfo -e Pod::Simple::Texinfo::go thingy.pod + + # From perl + my $new = Pod::Simple::Texinfo->new; + $new->texinfo_sectioning_style('unnumbered'); + my $from = shift @ARGV; + my $to = $from; + $to =~ s/\.(pod|pm)$/.texi/i; + $new->parse_from_file($from, $to); + +=head1 DESCRIPTION + +This class is for making a Texinfo rendering of a Pod document. + +This is a subclass of L<Pod::Simple::PullParser> and inherits all its +methods (and options). + +It supports producing a standalone manual per Pod (the default) or +render the Pod as a chapter, see L</texinfo_sectioning_base_level>. + +=head1 METHODS + +=over + +=item texinfo_sectioning_base_level + +Sets the level of the head1 commands. 1 is for the @chapter/@unnumbered +level. If set to 0, the head1 commands level is still 1, but the output +manual is considered to be a standalone manual. If not 0, the pod file is +rendered as a fragment of a Texinfo manual. + +=item texinfo_man_url_prefix + +String used as a prefix for man page urls. Default +is C<http://man.he.net/man>. + +=item texinfo_sectioning_style + +Default is C<numbered>, using the numbered sectioning Texinfo @-commands +(@chapter, @section...), any other value would lead to using unnumbered +sectioning command variants (@unnumbered...). + +=item texinfo_add_upper_sectioning_command + +If set (the default case), a sectioning command is added at the beginning +of the output for the whole document, using the module name, at the level +above the level set by L<texinfo_sectioning_base_level>. So there will be +a C<@part> if the level is equal to 1, a C<@chapter> if the level is equal +to 2 and so on and so forth. If the base level is 0, a C<@top> command is +output instead. + +=item texinfo_section_nodes + +If set, add C<@node> and not C<@anchor> for each sectioning command. + +=back + +=head1 SEE ALSO + +L<Pod::Simple>. L<Pod::Simple::PullParser>. The Texinfo manual. + +=head1 COPYRIGHT + +Copyright (C) 2011, 2012 Free Software Foundation, Inc. + +This library is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, +or (at your option) any later version. + +C<_url_escape> is C<general_url_escape> from L<Pod::Simple::HTML>. + +=head1 AUTHOR + +Patrice Dumas E<lt>pertusus@free.frE<gt>. Parts from L<Pod::Simple::HTML>. + +=cut diff --git a/Pod-Simple-Texinfo/pod2texi.pl b/Pod-Simple-Texinfo/pod2texi.pl new file mode 100755 index 0000000..1f6ac5b --- /dev/null +++ b/Pod-Simple-Texinfo/pod2texi.pl @@ -0,0 +1,602 @@ +#! /usr/bin/env perl +# $Id: pod2texi.pl 5292 2013-08-10 10:58:05Z pertusus $ +# pod2texi -- convert Pod to Texinfo. +# Copyright 2012, 2013 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 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, see <http://www.gnu.org/licenses/>. +# +# Original author: Patrice Dumas <pertusus@free.fr> + +use strict; +use Getopt::Long qw(GetOptions); +# for dirname. +use File::Basename; +use File::Spec; + +Getopt::Long::Configure("gnu_getopt"); +#use Pod::Simple::Debug (4); + +BEGIN +{ + # emulate -w + $^W = 1; + my ($real_command_name, $command_directory, $command_suffix) + = fileparse($0, '.pl'); + + my $datadir = '@datadir@'; + my $package = '@PACKAGE@'; + my $updir = File::Spec->updir(); + + my $texinfolibdir; + my $lib_dir; + + # in-source run + if (($command_suffix eq '.pl' and !(defined($ENV{'TEXINFO_DEV_SOURCE'}) + and $ENV{'TEXINFO_DEV_SOURCE'} eq 0)) or $ENV{'TEXINFO_DEV_SOURCE'}) { + my $srcdir = defined $ENV{'srcdir'} ? $ENV{'srcdir'} : $command_directory; + $texinfolibdir = File::Spec->catdir($srcdir, $updir, 'tp'); + $lib_dir = File::Spec->catdir($texinfolibdir, 'maintain'); + unshift @INC, (File::Spec->catdir($srcdir, 'lib'), $texinfolibdir); + } elsif ($datadir ne '@' .'datadir@' and $package ne '@' . 'PACKAGE@' + and $datadir ne '') { + $texinfolibdir = File::Spec->catdir($datadir, $package); + # try to make package relocatable, will only work if standard relative paths + # are used + if (! -f File::Spec->catfile($texinfolibdir, 'Texinfo', 'Parser.pm') + and -f File::Spec->catfile($command_directory, $updir, 'share', + 'texinfo', 'Texinfo', 'Parser.pm')) { + $texinfolibdir = File::Spec->catdir($command_directory, $updir, + 'share', 'texinfo'); + } + $lib_dir = $texinfolibdir; + unshift @INC, (File::Spec->catdir($texinfolibdir, 'Pod-Simple-Texinfo'), + $texinfolibdir); + } + + # '@USE_EXTERNAL_LIBINTL @ and similar are substituted in the + # makefile using values from configure + if (defined($texinfolibdir)) { + if ('@USE_EXTERNAL_LIBINTL@' ne 'yes') { + unshift @INC, (File::Spec->catdir($lib_dir, 'lib', 'libintl-perl', 'lib')); + } + if ('@USE_EXTERNAL_EASTASIANWIDTH@' ne 'yes') { + unshift @INC, (File::Spec->catdir($lib_dir, 'lib', 'Unicode-EastAsianWidth', 'lib')); + } + if ('@USE_EXTERNAL_UNIDECODE@' ne 'yes') { + unshift @INC, (File::Spec->catdir($lib_dir, 'lib', 'Text-Unidecode', 'lib')); + } + } +} + +use Pod::Simple::Texinfo; +use Texinfo::Common; +use Texinfo::Parser; +use Texinfo::Structuring; + +{ +# A fake package to be able to use Pod::Simple::PullParser without generating +# any output. +package Pod::Simple::PullParserRun; + +use vars qw(@ISA); +@ISA = ('Pod::Simple::PullParser'); +sub new +{ + return shift->SUPER::new(@_); +} +sub run(){}; +} + +my ($real_command_name, $directories, $suffix) = fileparse($0); + +# placeholder for string translations, not used for now +sub __($) +{ + return $_[0]; +} + +sub pod2texi_help() +{ + return __("Usage: pod2texi [OPTION]... POD... + +Translate Perl pod documentation file(s) to Texinfo. There are two +basic modes of operation. First, by default, each pod is translated to +a standalone Texinfo manual. + +Second, if C<--base-level> is set higher than 0, each pod is translated +to a file suitable for C<\@include>, and one more file with all the +C<\@include>s is generated, intended to be C<\@include>d in turn within +a hand-written top-level file. + +Options: + --base-level=NUM|NAME level of the head1 commands; default 0. + --debug=NUM set debugging level. + --help display this help and exit. + --no-fill-section-gaps do not fill sectioning gaps. + --no-section-nodes use anchors for sections instead of nodes. + --output=NAME output to NAME for the first or main manual + instead of standard output. + --preamble=STR insert STR as beginning boilerplate. + --subdir=NAME put files included in the main manual in NAME. + --top top for the main manual. + --unnumbered-sections use unumbered sections. + --version display version information and exit. + +Email bug reports to bug-texinfo\@gnu.org, +general questions and discussion to help-texinfo\@gnu.org. +Texinfo home page: http://www.gnu.org/software/texinfo/\n"); +} + +my $base_level = 0; +my $unnumbered_sections = 0; +my $output = '-'; +my $top = 'top'; +my $preamble = undef; +my $subdir; +my $section_nodes = 1; +my $fill_sectioning_gaps = 1; +my $debug = 0; + +my $result_options = Getopt::Long::GetOptions ( + 'help|h' => sub { print pod2texi_help(); exit 0; }, + 'version|V' => sub {print "$real_command_name $Pod::Simple::Texinfo::VERSION\n\n"; + printf __("Copyright (C) %s Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law.\n"), "2013"; + exit 0;}, + 'base-level=s' => sub { + if ($_[1] =~ /^[0-4]$/) { + $base_level = $_[1]; + } elsif (defined($Texinfo::Common::command_structuring_level{$_[1]})) { + $base_level = $Texinfo::Common::command_structuring_level{$_[1]}; + } else { + die sprintf(__("%s: wrong argument for --base-level\n"), + $real_command_name); + } + }, + 'unnumbered-sections!' => \$unnumbered_sections, + 'output|o=s' => \$output, + 'preamble=s' => \$preamble, + 'subdir=s' => \$subdir, + 'top=s' => \$top, + 'section-nodes!' => \$section_nodes, + 'fill-section-gaps!' => \$fill_sectioning_gaps, + 'debug=i' => \$debug, +); + +exit 1 if (!$result_options); + +if (defined($subdir)) { + if (! -d $subdir) { + if (!mkdir($subdir)) { + die sprintf(__("%s: could not create directory %s: %s"), + $real_command_name, $subdir, $!); + } + } +} + +my $STDOUT_DOCU_NAME = 'stdout'; + +my @manuals; +my @all_manual_names; + +my @input_files = @ARGV; + +# use STDIN if not a tty, like makeinfo does +@input_files = ('-') if (!scalar(@input_files) and !-t STDIN); +die sprintf(__("%s: missing file argument;\n"), $real_command_name) + .sprintf(__("try `%s --help' for more information\n"), $real_command_name) + unless (scalar(@input_files) >= 1); + +my @processed_files; +# First gather all the manual names +if ($base_level > 0) { + foreach my $file (@input_files) { + # we don't want to read from STDIN, as the input read would be lost + # same with named pipe and socket... + # FIXME are there other file that have the same problem? + next if ($file eq '-' or -p $file or -S $file); + # not really used, only the manual name is used. + my $parser = Pod::Simple::PullParserRun->new(); + $parser->parse_file($file); + my $short_title = $parser->get_short_title(); + if (defined($short_title) and $short_title =~ m/\S/) { + push @manuals, $short_title; + push @all_manual_names, $short_title; + #print STDERR "NEW MANUAL: $short_title\n"; + } else { + if (!$parser->content_seen) { + warn sprintf(__("%s: ignoring %s without content\n"), + $real_command_name, $file); + next; + } + push @all_manual_names, undef; + } + push @processed_files, $file; + } +} else { + @processed_files = @input_files; +} + +sub _fix_texinfo_tree($$$$;$) +{ + my $self = shift; + my $manual_texi = shift; + my $section_nodes = shift; + my $fill_gaps_in_sectioning = shift; + my $do_master_menu = shift; + + my $parser = Texinfo::Parser::parser(); + my $tree = $parser->parse_texi_text($manual_texi); + + if ($fill_gaps_in_sectioning) { + my ($added_sections, $added_nodes); + ($tree->{'contents'}, $added_sections) + = Texinfo::Structuring::fill_gaps_in_sectioning($tree); + # there should already be nodes associated with other sections. Therefore + # new nodes should only be created for the $added_sections. + if ($section_nodes) { + ($tree->{'contents'}, $added_nodes) + = Texinfo::Structuring::insert_nodes_for_sectioning_commands($parser, $tree); + if ($self and $self->texinfo_sectioning_base_level > 0) { + # prepend the manual name + foreach my $node (@$added_nodes) { + # First remove the old normalized entry + delete $parser->{'labels'}->{$node->{'extra'}->{'normalized'}}; + # now get the number + my $node_texi = Texinfo::Convert::Texinfo::convert( + {'contents' => $node->{'extra'}->{'node_content'}}); + # We could have kept the asis, too, it is kept when !section_nodes + $node_texi =~ s/^\s*(\@asis\{\})?\s*//; + # complete with manual name + my $complete_node_name = $self->_node_name($node_texi); + # now recreate node arg, similar with Texinfo::Structuring::_new_node + my $tree = Texinfo::Parser::parse_texi_text(undef, $complete_node_name); + my $node_arg = $node->{'args'}->[0]; + $node_arg->{'contents'} = $tree->{'contents'}; + push @{$node_arg->{'contents'}}, + {'type' => 'spaces_at_end', 'text' => "\n"}; + unshift @{$node_arg->{'contents'}}, + {'extra' => {'command' => $node}, + 'text' => ' ', + 'type' => 'empty_spaces_after_command'}; + foreach my $content (@{$node_arg->{'contents'}}) { + $content->{'parent'} = $node_arg; + } + # Last parse and register node + my $parsed_node = Texinfo::Parser::_parse_node_manual($node_arg); + #push @{$node->{'extra'}->{'nodes_manuals'}}, $parsed_node; + @{$node->{'extra'}->{'nodes_manuals'}} = ($parsed_node); + if (!Texinfo::Parser::_register_label($parser, $node, $parsed_node, undef)) { + print STDERR "BUG: node not unique, register failed: $parsed_node->{'normalized'}\n"; + } + } + } + } + } + my $structure = Texinfo::Structuring::sectioning_structure($parser, $tree); + Texinfo::Structuring::complete_tree_nodes_menus($parser, $tree) + if ($section_nodes); + Texinfo::Structuring::regenerate_master_menu($parser) if ($do_master_menu); + return ($parser, $tree); +} + +sub _fix_texinfo_manual($$$$;$) +{ + my $self = shift; + my $manual_texi = shift; + my $section_nodes = shift; + my $fill_gaps_in_sectioning = shift; + my $do_master_menu = shift; + my ($parser, $tree) = _fix_texinfo_tree($self, $manual_texi, $section_nodes, + $fill_gaps_in_sectioning, $do_master_menu); + return Texinfo::Convert::Texinfo::convert($tree); +} + +sub _do_top_node_menu($) +{ + my $manual_texi = shift; + my ($parser, $tree) = _fix_texinfo_tree(undef, $manual_texi, 1, 0, 1); + my $labels = $parser->labels_information(); + my $top_node_menu = $labels->{'Top'}->{'menus'}->[0]; + if ($top_node_menu) { + return Texinfo::Convert::Texinfo::convert($top_node_menu); + } else { + return ''; + } +} + +my $file_nr = 0; +# Full manual is collected to generate the top node menu, if $section_nodes +my $full_manual = ''; +my @included; +foreach my $file (@processed_files) { + my $manual_texi = ''; + my $outfile; + my $name = shift @all_manual_names; + if ($base_level == 0 and !$file_nr) { + $outfile = $output; + } else { + if (defined($name)) { + $outfile = Pod::Simple::Texinfo::_pod_title_to_file_name($name); + $outfile .= '.texi'; + } else { + if ($file eq '-') { + $outfile = $STDOUT_DOCU_NAME; + } else { + $outfile = $file; + } + if ($outfile =~ /\.(pm|pod)$/) { + $outfile =~ s/\.(pm|pod)$/.texi/i; + } else { + $outfile .= '.texi'; + } + } + $outfile = File::Spec->catfile($subdir, $outfile) + if (defined($subdir)); + } + + my $new = Pod::Simple::Texinfo->new(); + + push @included, [$name, $outfile, $file] if ($base_level > 0); + my $fh; + if ($outfile eq '-') { + $fh = *STDOUT; + } else { + open (OUT, ">$outfile") or die sprintf(__("%s: could not open %s for writing: %s\n"), + $real_command_name, $outfile, $!); + $fh = *OUT; + } + # FIXME should use =encoding + binmode($fh, ':encoding(utf8)'); + + $new->output_string(\$manual_texi); + + $new->texinfo_sectioning_base_level($base_level); + if ($section_nodes) { + $new->texinfo_section_nodes(1); + } + if ($unnumbered_sections) { + $new->texinfo_sectioning_style('unnumbered'); + } + if ($base_level > 0 and @manuals) { + $new->texinfo_internal_pod_manuals(\@manuals); + } + + print STDERR "processing $file -> $outfile ($name)\n" if ($debug); + $new->parse_file($file); + + if ($section_nodes or $fill_sectioning_gaps) { + if ($debug > 4) { + # print to a file + open (DBGFILE, ">$outfile-dbg") or die sprintf(__("%s: could not open %s: %s\n"), + $real_command_name, "$outfile-dbg", $!); + binmode(DBGFILE, ':encoding(utf8)'); + print DBGFILE $manual_texi; + + } + $manual_texi = _fix_texinfo_manual($new, $manual_texi, $section_nodes, + $fill_sectioning_gaps); + $full_manual .= $manual_texi if ($section_nodes); + } + print $fh $manual_texi; + + if ($outfile ne '-') { + close($fh) or die sprintf(__("%s: error on closing %s: %s\n"), + $real_command_name, $outfile, $!); + } + + if ($base_level > 0) { + if (!$new->content_seen) { + # this should only happen for input coming from pipe or the like + warn sprintf(__("%s: removing %s as input file %s has no content\n"), + $real_command_name, $outfile, $file); + unlink ($outfile); + pop @included; + # if we didn't gather the short title, try now, and rename out file if found + } elsif (!defined($name)) { + my $short_title = $new->texinfo_short_title; + if (defined($short_title) and $short_title =~ /\S/) { + push @manuals, $short_title; + pop @included; + my $new_outfile + = Pod::Simple::Texinfo::_pod_title_to_file_name($short_title); + $new_outfile .= '.texi'; + $new_outfile = File::Spec->catfile($subdir, $new_outfile) + if (defined($subdir)); + if ($new_outfile ne $outfile) { + unless (rename ($outfile, $new_outfile)) { + die sprintf(__("%s: rename %s failed: %s\n"), + $real_command_name, $outfile, $!); + } + } + push @included, [$short_title, $new_outfile, $file]; + } + } + } + $file_nr++; +} + +if ($base_level > 0) { + my $fh; + if ($output ne '-') { + open (OUT, ">$output") or die sprintf(__("%s: could not open %s for writing: %s\n"), + $real_command_name, $output, $!); + $fh = *OUT; + } else { + $fh = *STDOUT; + } + + # FIXME should use =encoding + binmode($fh, ':encoding(utf8)'); + + my $outfile_name = $output; + + $outfile_name = $STDOUT_DOCU_NAME if ($outfile_name eq '-'); + $outfile_name =~ s/\.te?x(i|info)?$//; + $outfile_name .= '.info'; + + if (! defined ($preamble)) { + $preamble = '\input texinfo +@setfilename ' . Pod::Simple::Texinfo::_protect_text($outfile_name) . " +\@documentencoding utf-8 +\@settitle $top + +\@contents + +\@ifnottex +\@node Top +\@top $top +\@end ifnottex\n\n"; + } + + print $fh $preamble; + if ($section_nodes) { + #print STDERR "\@node Top\n\@top top\n".$full_manual; + my $menu = _do_top_node_menu("\@node Top\n\@top top\n".$full_manual); + print $fh $menu."\n"; + } + foreach my $include (@included) { + my $file = $include->[1]; + print $fh "\@include ".Pod::Simple::Texinfo::_protect_text($file)."\n"; + } + print $fh "\n\@bye\n"; + + if ($output ne '-') { + close($fh) or die sprintf(__("%s: error on closing %s: %s\n"), + $real_command_name, $output, $!); + } +} + +if (defined($output) and $output eq '-') { + close(STDOUT) or die sprintf(__("%s: error on closing stdout: %s\n"), + $real_command_name, $!); +} + +1; + +__END__ + +=head1 NAME + +pod2texi - convert Pod to Texinfo + +=head1 SYNOPSIS + + pod2texi [OPTION]... POD... + +=head1 DESCRIPTION + +Translate Pod file(s) to Texinfo. There are two basic modes of +operation. First, by default, each pod is translated to a standalone +Texinfo manual. + +Second, if C<--base-level> is set higher than 0, each pod is translated +to a file suitable for C<@include>, and one more file with all the +C<@include>s is generated, intended to be C<@include>d in turn within a +hand-written top-level file. + +=head1 OPTIONS + +=over + +=item B<--base-level>=I<NUM|NAME> + +Sets the level of the C<head1> commands. It may be an integer or a +Texinfo sectioning command (without the C<@>): 1 corresponds to the +C<@chapter>/C<@unnumbered> level, 2 to the C<@section> level, and so on. +The default is 0, meaning that C<head1> commands are still output as +chapters, but the output is arranged as a standalone manual. + +If the level is not 0, the pod file is rendered as a fragment of a +Texinfo manual suitable for C<@include>. In this case, each pod file +has an additional sectioning command covering the entire file, one level +above the C<--base-level> value. Therefore, to make each pod file a +chapter in a large manual, you should use C<section> as the base level. + +For an example of making Texinfo out of the Perl documentation itself, +see C<contrib/perldoc-all> in the Texinfo source distribution, with +output available at L<http://www.gnu.org/software/perl/manual>. + +=item B<--debug>=I<NUM> + +Set debugging level to I<NUM>. + +=item B<--help> + +Display help and exit. + +=item B<--output>=I<NAME> + +Name for the first manual, or the main manual if there is a main manual. +Default is to write to standard output. + +=item B<--no-section-nodes> + +Use anchors for sections instead of nodes. + +=item B<--no-fill-section-gaps> + +Do not fill sectioning gaps with empty C<@unnumbered> files. +Ordinarily, it's good to keep the sectioning hierarchy intact. + +=item B<--preamble>=I<STR> + +Insert I<STR> as top boilerplate before includes. The default is a +minimal beginning for a Texinfo document, and sets C<@documentencoding> +to C<utf-8> (because the output is written that way). + +=item B<--subdir>=I<NAME> + +If there is a main manual with include files (each corresponding to +an input pod file), then those include files are put in directory I<NAME>. + +=item B<--unnumbered-sections> + +Use unnumbered sectioning commands (C<@unnumbered>, ...) instead of the +default numbered sectioning Texinfo @-commands (C<@chapter>, +C<@section>, ...). + +=item B<--top>=I<TOP> + +Name of the C<@top> element for the main manual. May contain Texinfo code. + +=item B<--version> + +Display version information and exit. + +=back + +=head1 SEE ALSO + +L<Pod::Simple::Texinfo>. L<perlpod>. The Texinfo manual. +Texinfo home page: L<http://www.gnu.org/software/texinfo/> + +=head1 COPYRIGHT + +Copyright (C) 2013 Free Software Foundation, Inc. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3 of the License, +or (at your option) any later version. + +There is NO WARRANTY, to the extent permitted by law. + +=head1 AUTHOR + +Patrice Dumas E<lt>bug-texinfo@gnu.orgE<gt>. + +=cut diff --git a/Pod-Simple-Texinfo/prove.sh b/Pod-Simple-Texinfo/prove.sh new file mode 100755 index 0000000..91c7e04 --- /dev/null +++ b/Pod-Simple-Texinfo/prove.sh @@ -0,0 +1,20 @@ +#! /bin/sh -x +# $Id: prove.sh 5191 2013-02-23 00:11:18Z karl $ +# Copyright 2010, 2012 Free Software Foundation, Inc. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. + +if test z"$srcdir" = 'z'; then + srcdir='.' +fi + +#prove -I "$tpdir" -I "$srcdir"/lib "$srcdir"/t/*.t + +tpdir=$srcdir/../tp +prove -I "$tpdir" -I "$tpdir"/maintain/lib/Unicode-EastAsianWidth/lib/ \ + -I "$tpdir"/maintain/lib/libintl-perl/lib \ + -I "$tpdir"/maintain/lib/Text-Unidecode/lib/ \ + -I "$srcdir"/lib \ + "$srcdir"/t/*.t diff --git a/Pod-Simple-Texinfo/t/Pod-Simple-Texinfo.t b/Pod-Simple-Texinfo/t/Pod-Simple-Texinfo.t new file mode 100644 index 0000000..0e4417f --- /dev/null +++ b/Pod-Simple-Texinfo/t/Pod-Simple-Texinfo.t @@ -0,0 +1,313 @@ +# Before `make install' is performed this script should be runnable with +# `make test'. After `make install' it should work as `perl Pod-Simple-Texinfo.t' + +######################### + +# change 'tests => 1' to 'tests => last_test_to_print'; + +use Test::More; +BEGIN { plan tests => 17 }; +use Pod::Simple::Texinfo; +ok(1); # If we made it this far, we're ok. + +######################### + +sub run_test($$$;$$) +{ + my $in = shift; + my $out = shift; + my $name = shift; + my $test_nodes = shift; + my $sectioning_base_level = shift; + + my $parser = Pod::Simple::Texinfo->new(); + $parser->set_source(\$in); + $parser->texinfo_section_nodes(1) + if ($test_nodes); + if (defined($sectioning_base_level)) { + $parser->texinfo_sectioning_base_level($sectioning_base_level); + my $short_title = $parser->get_short_title(); + $parser->texinfo_short_title($short_title); + } + my $result; + $parser->output_string(\$result); + $parser->bare_output(1); + $parser->run(); + if (defined($out)) { + is ($result, $out, $name); + } else { + print "$name:\n"; + print STDERR $result; + } +} + +run_test ('=head1 T +X<aaa> +', +'@chapter T +@anchor{T} +@cindex aaa + +', 'index in head'); + +TODO: { + +local $TODO = 'Pod::Simple not ignoring correctly X<>'; + +run_test ('=head1 NAME +X<aaa> +', +'@node NAME aaa NAME +@section NAME +@cindex aaa + +', 'index in head node', 1, 2); + +} + +run_test ('=head1 NAME + +T@c + +=head1 @{} +', +'@node T@@c NAME +@section NAME + +T@@c + +@node T@@c @@@{@} +@section @@@{@} + +', 'protected characters', 1, 2); + +run_test ('=head1 T + +Para X<bb> +in para X<cc> +qtil X<ff> ggg +n X<ww> X<ff> C<aa>. +C<JJ> X<tt>. +X<-r>X<+p> +X<fff> +X<WWW> +I<GG>X<DD>C<MM>. +', +'@chapter T +@anchor{T} + +@cindex bb +@cindex cc +@cindex ff +@cindex ww +@cindex ff +@cindex tt +@cindex -r +@cindex +p +@cindex fff +@cindex WWW +@cindex DD +Para in para qtil ggg +n @code{aa}. +@code{JJ} . +@emph{GG}@code{MM}. + +', 'index in paragaph'); + +run_test('=over + +=item a +X<it> b + +=item c +X<C<code>> + +Para + +=back +', +'@table @asis +@item a b +@anchor{a b} +@cindex it + +@item c +@anchor{c} +@cindex @code{code} + +Para + +@end table + +', 'index in item-text'); + +run_test('=over + +=item L</somewhere> + +=back +', '@table @asis +@item @ref{somewhere} +@anchor{somewhere} + +@end table + +', 'ref in item'); + +run_test('=head1 NAME + +=head1 NAME +', '@chapter NAME +@anchor{NAME} + +@chapter NAME +@anchor{NAME 1} + +', 'double ref'); + +run_test('=head1 head with +new line +', '@chapter head with new line +@anchor{head with new line} + +', 'head with new line'); + +run_test('=head1 L</somewhere> +', '@chapter @ref{somewhere} +@anchor{somewhere} + +', 'ref in section'); + +run_test('=over + +=item a L<pod2text|pod2text> + +=item a L<pod2latex|pod2latex> + +=back +', '@table @asis +@item a @ref{, pod2text,, pod2text} +@anchor{a pod2text} + +@item a @ref{, pod2latex,, pod2latex} +@anchor{a pod2latex} + +@end table + +', 'duplicate anchors ref'); + +run_test('=head1 a, b', '@chapter a, b +@anchor{a@comma{} b} + +', 'comma in head1'); + +run_test('=head1 a, b + +=over + +=item c, d + +=back + +L</a, b>. L</c, d>. +', '@chapter a, b +@anchor{a@comma{} b} + +@table @asis +@item c, d +@anchor{c@comma{} d} + +@end table + +@ref{a@comma{} b}. @ref{c@comma{} d}. + +', 'comma in refs'); + +run_test('=head1 (man) t + +L</(man) t>', '@chapter (man) t +@anchor{@asis{(}man) t} + +@ref{@asis{(}man) t,, (man) t} + +', 'node beginning with a parenthesis'); + +run_test('=head1 head + +# line 4 "ggggg" +and + # line 5 "fff" + +# line 4 "bbb" +# 7 "aaaa" +', '@chapter head +@anchor{head} + +@hashchar{} line 4 "ggggg" +and + @hashchar{} line 5 "fff" + +@hashchar{} line 4 "bbb" +@hashchar{} 7 "aaaa" + +', 'cpp lines'); + +run_test('=head1 head + + # line 4 "ggggg" + and @ + # line 5 "fff" + +Text + + # line 4 "bbb" + # 7 "aaaa" +','@chapter head +@anchor{head} + +@verbatim + # line 4 "ggggg" + and @ + # line 5 "fff" +@end verbatim + +Text + +@verbatim + # line 4 "bbb" + # 7 "aaaa" +@end verbatim + +', 'cpp lines in verbatim'); + +run_test('=head1 head + +=for html + # line 4 "ggggg" + <html> @ + +=begin html + + # line 8 "kkk" + and @ + # line 5 "fff" + +=end html +', '@chapter head +@anchor{head} + +@html + + @hashchar{} line 4 "ggggg" + <html> @@ +@end html +@html + @hashchar{} line 8 "kkk" + and @@ + @hashchar{} line 5 "fff" + +@end html +','cpp lines in formats'); + +1; + |