# This program creates a program's manual from the .x skeleton and its --help
# output.
#
-# Usage: x-to-1 [OPTIONS] PERL HELP2MAN EXECUTABLE PROGRAM.x PROGRAM.1
+# Usage: x-to-1 [OPTIONS] PERL HELP2MAN [HELP2MAN-OPTIONS] EXECUTABLE PROGRAM.x PROGRAM.1
# where
#
# PERL The file name of the perl program.
# HELP2MAN Either the file name of the help2man perl script, or a complete
# command such as "$PERL -w -- help2man".
+# HELP2MAN-OPTIONS Options to pass to the help2man perl script.
# EXECUTABLE The file name of the program to invoke with --help.
# PROGRAM The name of the program.
# PROGRAM.x The .x skeleton is a file containing manual page text that is
esac
done
-if test $# != 5; then
- echo "Usage: x-to-1 [OPTIONS] PERL HELP2MAN executable program.x program.1" 1>&2
+if test $# -lt 5; then
+ echo "Usage: x-to-1 [OPTIONS] PERL HELP2MAN [HELP2MAN-OPTIONS] executable program.x program.1" 1>&2
exit 1
fi
-PERL="$1"
-HELP2MAN="$2"
-executable="$3"
-aux="$4"
-output="$5"
+
+# In order to construct a command that invokes HELP2MAN [HELP2MAN-OPTIONS] ...
+# we need 'eval'.
+command_for_print=
+command_for_eval=
+# Protecting special characters, hiding them from 'eval':
+# Double each backslash.
+sed_protect_1='s/\\/\\\\/g'
+# Escape each dollar, backquote, double-quote.
+sed_protect_2a='s/\$/\\$/g'
+sed_protect_2b='s/`/\\`/g'
+sed_protect_2c='s/"/\\"/g'
+# Add double-quotes at the beginning and end of the word.
+sed_protect_3a='1s/^/"/'
+sed_protect_3b='$s/$/"/'
+func_add_word_to_command ()
+{
+ command_for_print="${command_for_print:+$command_for_print }$1"
+ word_protected=`echo "$1" | sed -e "$sed_protect_1" -e "$sed_protect_2a" -e "$sed_protect_2b" -e "$sed_protect_2c" -e "$sed_protect_3a" -e "$sed_protect_3b"`
+ command_for_eval="${command_for_eval:+$command_for_eval }$word_protected"
+}
+
+PERL="$1"; shift
+HELP2MAN="$1"; shift
# Accommodate both possible forms of the HELP2MAN argument.
case "$HELP2MAN" in
*) HELP2MAN="$PERL $HELP2MAN" ;;
esac
+# Do word-splitting of $HELP2MAN, but carefully.
+for word in $HELP2MAN; do
+ func_add_word_to_command "$word"
+done
+
+# Now grok the HELP2MAN-OPTIONS.
+while test $# -gt 3; do
+ arg="$1"; shift
+ func_add_word_to_command "$arg"
+done
+
+# Grok the final arguments.
+executable="$1"
+aux="$2"
+output="$3"
+
progname=`basename $aux .x`
# configure determined whether perl exists.
case "$PERL" in
esac
if test @CROSS_COMPILING@ = no && test -f $executable && test $perlok = yes; then
echo "Updating man page $output"
- echo "$HELP2MAN --include=$aux $executable > $output"
+ func_add_word_to_command "--include=$aux"
+ func_add_word_to_command "$executable"
+ echo "$command_for_print > $output"
rm -f t-$progname.1
- $HELP2MAN --include=$aux $executable > t-$progname.1 || exit 1
+ eval $command_for_eval > t-$progname.1 || exit 1
if test -n "$update"; then
# In --update mode, don't overwrite the output if nothing would change.
if cmp t-$progname.1 $output >/dev/null 2>&1; then