diff --git a/Makefile.am b/Makefile.am index cbbe124..496f993 100644 --- a/Makefile.am +++ b/Makefile.am @@ -68,7 +68,7 @@ EXTRA_DIST = xmlto.spec \ doc/xmlif.xml \ xmlto.mak -GEN_MANPAGE = FORMAT_DIR=$(top_srcdir)/format $(XMLTO_BASH_PATH) ./xmlto --skip-validation -o $(@D) man $< +GEN_MANPAGE = FORMAT_DIR=$(top_srcdir)/format $(XMLTO_SH_PATH) ./xmlto --skip-validation -o $(@D) man $< man/man1/xmlto.1: doc/xmlto.xml ; $(GEN_MANPAGE) man/man1/xmlif.1: doc/xmlif.xml ; $(GEN_MANPAGE) diff --git a/configure.ac b/configure.ac index 675dcb8..e5e3b7a 100644 --- a/configure.ac +++ b/configure.ac @@ -18,8 +18,11 @@ AC_CHECK_PROG([MKTEMP], [mktemp],, [mktemp]) AC_ARG_VAR([FIND], [Name of the GNU `find' program.]) AC_CHECK_PROG([FIND], [find],, [find] ) -AC_ARG_VAR([XMLTO_BASH_PATH], [Name and path of the GNU `bash' shell.]) -AC_PATH_PROG([XMLTO_BASH_PATH], [bash], [/bin/bash]) +AC_ARG_VAR([XMLTO_SH_PATH], [Name and path of the POSIX `sh' shell.]) +AC_ARG_VAR([XMLTO_BASH_PATH], [Deprecated alias for XMLTO_SH_PATH.]) +AS_IF([test -n "$XMLTO_BASH_PATH" && test -z "$XMLTO_SH_PATH"], + [XMLTO_SH_PATH=$XMLTO_BASH_PATH]) +AC_PATH_PROG([XMLTO_SH_PATH], [sh], [/bin/sh]) AC_ARG_VAR([GETOPT], [Name of the `getopt' program (requires longopt support).]) AC_CHECK_PROG([GETOPT], [getopt],, [getopt]) diff --git a/format/docbook/epub b/format/docbook/epub index 118d605..7acf1d4 100755 --- a/format/docbook/epub +++ b/format/docbook/epub @@ -1,4 +1,4 @@ -if [ -z "`type -t $ZIP_PATH`" ] +if ! command -v "$ZIP_PATH" >/dev/null 2>&1 then echo >&2 "Missing zip utility at $ZIP_PATH, conversion to epub not possible." echo >&2 "Exiting !" @@ -26,7 +26,7 @@ case "$1" in do ${GCP_PATH:-cp} -R -P -p -- $INPUT_DIR/$CSS_SOURCE $CSS_DEST_DIR/ done - echo -n "application/epub+zip" > mimetype + printf '%s' 'application/epub+zip' > mimetype EPUB_NAME=$(basename "${XSLT_PROCESSED%.*}").epub [ -e "$XSLT_PROCESSED" ] && rm "$XSLT_PROCESSED" ${ZIP_PATH} -0Xq $EPUB_NAME mimetype diff --git a/format/docbook/txt b/format/docbook/txt index fe42a1f..f356b47 100755 --- a/format/docbook/txt +++ b/format/docbook/txt @@ -1,14 +1,14 @@ case "$USE_BACKEND" in DEFAULT|DBLATEX) - if [ -n "`type -t $W3M_PATH`" ] + if command -v "$W3M_PATH" >/dev/null 2>&1 then CONVERT="$W3M_PATH" ARGS="-T text/html -dump" - elif [ -n "`type -t $LYNX_PATH`" ] + elif command -v "$LYNX_PATH" >/dev/null 2>&1 then CONVERT="$LYNX_PATH" ARGS="-force_html -dump -nolist -width=72" - elif [ -n "`type -t $LINKS_PATH`" ] + elif command -v "$LINKS_PATH" >/dev/null 2>&1 then CONVERT="$LINKS_PATH" ARGS="-dump" diff --git a/format/fo/dvi b/format/fo/dvi index 6615048..82794cc 100755 --- a/format/fo/dvi +++ b/format/fo/dvi @@ -6,7 +6,7 @@ post-process) then echo >&2 "Post-process XSL-FO to DVI" fi - if [ -z "`type -t $XMLTEX_PATH`" ] + if ! command -v "$XMLTEX_PATH" >/dev/null 2>&1 then echo >&2 "Can't process, xmltex tool not found at $XMLTEX_PATH." exit 3 diff --git a/format/fo/pdf b/format/fo/pdf index 9e586b3..63936eb 100755 --- a/format/fo/pdf +++ b/format/fo/pdf @@ -8,7 +8,7 @@ DEFAULT|DBLATEX) then echo >&2 "Post-process XSL-FO to PDF" fi - if [ -z "`type -t $PDFXMLTEX_PATH`" ] + if ! command -v "$PDFXMLTEX_PATH" >/dev/null 2>&1 then echo >&2 "Can't process, pdfxmltex tool not found at $PDFXMLTEX_PATH." exit 3 diff --git a/format/xhtml1/txt b/format/xhtml1/txt index eb1c07a..2c843c2 100755 --- a/format/xhtml1/txt +++ b/format/xhtml1/txt @@ -1,14 +1,14 @@ case "$USE_BACKEND" in DEFAULT|DBLATEX) - if [ -n "`type -t $W3M_PATH`" ] + if command -v "$W3M_PATH" >/dev/null 2>&1 then CONVERT="$W3M_PATH" ARGS="-T text/html -dump" - elif [ -n "`type -t $LYNX_PATH`" ] + elif command -v "$LYNX_PATH" >/dev/null 2>&1 then CONVERT="$LYNX_PATH" ARGS="-force_html -dump -nolist -width=72" - elif [ -n "`type -t $LINKS_PATH`" ] + elif command -v "$LINKS_PATH" >/dev/null 2>&1 then CONVERT="$LINKS_PATH" ARGS="-dump" diff --git a/xmlif/test/run-test b/xmlif/test/run-test index a7ddbca..f007928 100755 --- a/xmlif/test/run-test +++ b/xmlif/test/run-test @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh XMLIF=${top_builddir}/xmlif/xmlif INPUT=${top_srcdir}/xmlif/test/test.xml diff --git a/xmlto.in b/xmlto.in index d5a81a8..f75bfe3 100755 --- a/xmlto.in +++ b/xmlto.in @@ -1,4 +1,4 @@ -#!@XMLTO_BASH_PATH@ +#!@XMLTO_SH_PATH@ # # @PACKAGE@ - apply an XSL stylesheet to an XML document # Copyright (C) 2001, 2002, 2003 Tim Waugh @@ -19,7 +19,7 @@ # Utilities that we need that aren't everywhere FIND=@FIND@ # This must be GNU find (need -maxdepth) MKTEMP=@MKTEMP@ # See http://www.mktemp.org if missing on your system -BASH=@XMLTO_BASH_PATH@ # GNU bash, for running the format scripts +SH=@XMLTO_SH_PATH@ # POSIX sh, for running the format scripts GETOPT=@GETOPT@ # a getopt that supports --longoptions TAIL=@TAIL@ # a tail that supports -n (posix) GREP=@GREP@ # GNU grep, for searching patterns @@ -78,28 +78,41 @@ EOF # * Remembers the temporary file's name so it can be deleted on exit # * If the failure message is empty or missing, exits on failure make_temp () { - local dirflag="" prefix="@PACKAGE@" - [ "$1" = "-d" ] && { dirflag="-d"; shift; } - [ -n "$1" ] && prefix="@PACKAGE@-$1" + make_temp_dirflag= + make_temp_prefix="@PACKAGE@" + if [ "$1" = "-d" ] + then + make_temp_dirflag="-d" + shift + fi + if [ -n "$1" ] + then + make_temp_prefix="@PACKAGE@-$1" + fi - if eval $2='$(${MKTEMP} $dirflag "${TMPDIR:-/tmp}/${prefix}.XXXXXX")' + if eval "$2=\$(${MKTEMP} $make_temp_dirflag \"\${TMPDIR:-/tmp}/${make_temp_prefix}.XXXXXX\")" then - CLEANFILES="$CLEANFILES ${!2}" + eval "make_temp_path=\${$2}" + CLEANFILES="$CLEANFILES $make_temp_path" + unset make_temp_dirflag make_temp_path make_temp_prefix return 0 elif [ -z "$3" ] then + unset make_temp_dirflag make_temp_prefix echo >&2 "mktemp failed!" exit 2 else + unset make_temp_dirflag make_temp_prefix echo >&2 "mktemp failed. $3" return 2 fi } compute_searchpath () { - local oldIFS="${IFS}" + compute_searchpath_oldIFS="${IFS}" IFS=":" - for asearchpath in "$1"; do + for asearchpath in $1 + do # wrangle relative paths into absolute ones so that the user # isn't surprised if he does ``--searchpath .'' case "${asearchpath}" in @@ -111,7 +124,8 @@ compute_searchpath () { # and only after the first iteration. XML_SEARCHPATH_SEPARATOR=":" done - IFS="${oldIFS}" + IFS="${compute_searchpath_oldIFS}" + unset compute_searchpath_oldIFS } # Allow FORMAT_DIR to be over-ridden, so that we can be @@ -135,7 +149,7 @@ XSL_MODS= # List of files to remove after exit CLEANFILES= -trap -- 'cd /; [ -z "$CLEANFILES" ] || rm -rf $CLEANFILES' EXIT +trap 'cd /; [ -z "$CLEANFILES" ] || rm -rf $CLEANFILES' 0 XSLTOPTS= SEARCHPATH= @@ -145,13 +159,13 @@ XMLLINT_PATH=@XMLLINT@ XSLTPROC_PATH=@XSLTPROC@ # Try to setup papersize using libpaper first ... -if type "$PAPERCONF_PATH" >/dev/null 2>&1 +if command -v "$PAPERCONF_PATH" >/dev/null 2>&1 then papername=`"$PAPERCONF_PATH" -n` paperheight=`"$PAPERCONF_PATH" -mh | sed 's/ //g'` paperwidth=`"$PAPERCONF_PATH" -mw | sed 's/ //g'` - if [ -n "$paperheight" -a -n "$paperwidth" ] + if [ -n "$paperheight" ] && [ -n "$paperwidth" ] then make_temp xsl papersizemod "Using default paper type." && cat << EOF > "$papersizemod" @@ -176,7 +190,7 @@ EOF fi # ... or use magic paper size, based on LC_PAPER -elif type "$LOCALE_PATH" >/dev/null 2>&1 +elif command -v "$LOCALE_PATH" >/dev/null 2>&1 then # For paper sizes we know about, specify them. h=$("$LOCALE_PATH" LC_PAPER 2>/dev/null | head -n 1) @@ -199,7 +213,7 @@ EOF fi # Magic encoding, based on locale -if type "$LOCALE_PATH" >/dev/null 2>&1 +if command -v "$LOCALE_PATH" >/dev/null 2>&1 then charmap=$("$LOCALE_PATH" charmap 2>/dev/null) @@ -249,12 +263,12 @@ XMLTEX_PATH=@XMLTEX@ PDFXMLTEX_PATH=@PDFXMLTEX@ #check if we could use fop/dblatex backend as default(if not, use passivetex) -if [ x"$USE_BACKEND" = xFOP ] && ! type "$FOP_PATH" >/dev/null 2>&1 +if [ x"$USE_BACKEND" = xFOP ] && ! command -v "$FOP_PATH" >/dev/null 2>&1 then echo >&2 "@PACKAGE@: Warning: fop not found or not executable." echo >&2 "@PACKAGE@: Using default backend..." USE_BACKEND=DEFAULT -elif type "$FOP_PATH" >/dev/null 2>&1 +elif command -v "$FOP_PATH" >/dev/null 2>&1 then # we should enable fop.extensions for fop 0_17,0_18 and 0_20*, # fop1.extensions for the rest @@ -265,7 +279,7 @@ then fi fi if [ x"$USE_BACKEND" = xDBLATEX ] && \ - ! type "$DBLATEX_PATH" >/dev/null 2>&1 + ! command -v "$DBLATEX_PATH" >/dev/null 2>&1 then echo >&2 "@PACKAGE@: Warning: dblatex not found or not executable." echo >&2 "@PACKAGE@: Using default backend..." @@ -315,7 +329,7 @@ while [ "$#" -gt "0" ]; do ;; -o) OUTPUT_DIR="$2" - if type -p cygpath >/dev/null; then + if command -v cygpath >/dev/null 2>&1; then OUTPUT_DIR=$(cygpath "$OUTPUT_DIR") fi case "$OUTPUT_DIR" in @@ -362,7 +376,7 @@ while [ "$#" -gt "0" ]; do shift 2 ;; --noclean) - trap -- 'cd /; [ -z "$CLEANFILES" ] || echo "$CLEANFILES"' EXIT + trap 'cd /; [ -z "$CLEANFILES" ] || echo "$CLEANFILES"' 0 shift ;; --noautosize) @@ -371,7 +385,7 @@ while [ "$#" -gt "0" ]; do ;; --with-fop) ##use fop instead of passivetex where possible - if ! type "$FOP_PATH" >/dev/null 2>&1 + if ! command -v "$FOP_PATH" >/dev/null 2>&1 then echo >&2 Warning: fop not found or not executable. echo >&2 Using default backend... @@ -382,7 +396,7 @@ while [ "$#" -gt "0" ]; do ;; --with-dblatex) ##use dblatex instead of passivetex where possible - if ! type "$DBLATEX_PATH" >/dev/null 2>&1 + if ! command -v "$DBLATEX_PATH" >/dev/null 2>&1 then echo >&2 Warning: dblatex not found or not executable. echo >&2 Using default backend... @@ -426,7 +440,7 @@ case "$2" in *) INPUT_FILE="$PWD/$2" ;; esac -if [ -z "$DEST_FORMAT" -o -z "$INPUT_FILE" ] +if [ -z "$DEST_FORMAT" ] || [ -z "$INPUT_FILE" ] then usage exit 1 @@ -454,7 +468,7 @@ rootel_xpath='concat("{", namespace-uri(/*), "}", local-name(/*))' rootel="$("$XMLLINT_PATH" --xpath "$rootel_xpath" "$INPUT_FILE" 2>/dev/null)" -case $(echo $rootel) in +case $rootel in "{http://www.w3.org/1999/XSL/Format}root") SOURCE_FORMAT="fo" ;; @@ -498,13 +512,13 @@ export PDFXMLTEX_PATH export USE_BACKEND if [ -z "$STYLESHEET" ] then - STYLESHEET="$(${BASH} "$FORMAT" stylesheet)" || exit 1 + STYLESHEET="$(${SH} "$FORMAT" stylesheet)" || exit 1 [ "$VERBOSE" -ge 1 ] && echo >&2 "Stylesheet: ${STYLESHEET}" fi # We might need to create a temporary stylesheet if there are # XSL fragments that need adding. -if [ -n "$XSL_MODS" -a -n "$STYLESHEET" ] +if [ -n "$XSL_MODS" ] && [ -n "$STYLESHEET" ] then REAL_STYLESHEET="$STYLESHEET" [ "$VERBOSE" -ge 1 ] && echo >&2 "Real stylesheet: ${REAL_STYLESHEET}" @@ -536,7 +550,7 @@ cd "$XSLT_PROCESSED_DIR" if [ "$SKIP_VALIDATION" -eq 0 ] && [ "$SOURCE_FORMAT" != "fo" ] then #do we have xmllint validation tool? - if ! type "$XMLLINT_PATH" >/dev/null 2>&1 + if ! command -v "$XMLLINT_PATH" >/dev/null 2>&1 then echo >&2 "@PACKAGE@: xmllint validation tool not found or not executable." echo >&2 "@PACKAGE@: Skipping validation... " \ @@ -572,7 +586,7 @@ XSLTOPTS="${XSLTPARAMS} ${XSLTOPTS}" if [ "$PROFILE" -eq 1 ] || [ -n "${STYLESHEET}" ] then #do we have xsltproc tool? - if ! type "$XSLTPROC_PATH" >/dev/null 2>&1 + if ! command -v "$XSLTPROC_PATH" >/dev/null 2>&1 then echo >&2 "@PACKAGE@: Can't continue, xsltproc tool not found or not executable." exit 3 @@ -653,6 +667,6 @@ export SEARCHPATH if [ "$VERBOSE" -gt 2 ] then # Extremely verbose - BASH="${BASH} -x" + SH="${SH} -x" fi -${BASH} "$FORMAT" post-process || exit 1 +${SH} "$FORMAT" post-process || exit 1 diff --git a/xmlto.spec.in b/xmlto.spec.in index b9eb4a2..763f76d 100644 --- a/xmlto.spec.in +++ b/xmlto.spec.in @@ -57,7 +57,7 @@ xhtml1 source format. %autosetup -p1 %build -%configure BASH=/bin/bash +%configure XMLTO_SH_PATH=/bin/sh %make_build %check