# Reject names that are not valid shell variable names.
expr "x$ac_feature" : ".*[^-_$ac_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
ac_feature=`echo $ac_feature | sed 's/-/_/g'`
eval "enable_$ac_feature=no" ;;
# Reject names that are not valid shell variable names.
expr "x$ac_feature" : ".*[^-_$ac_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid feature name: $ac_feature" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
ac_feature=`echo $ac_feature | sed 's/-/_/g'`
case $ac_option in
*=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
# Reject names that are not valid shell variable names.
expr "x$ac_package" : ".*[^-_$ac_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid package name: $ac_package" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
ac_package=`echo $ac_package| sed 's/-/_/g'`
case $ac_option in
*=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
# Reject names that are not valid shell variable names.
expr "x$ac_package" : ".*[^-_$ac_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid package name: $ac_package" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
ac_package=`echo $ac_package | sed 's/-/_/g'`
eval "with_$ac_package=no" ;;
-*) { echo "$as_me: error: unrecognized option: $ac_option
Try \`$0 --help' for more information." >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
;;
*=*)
# Reject names that are not valid shell variable names.
expr "x$ac_envvar" : ".*[^_$ac_cr_alnum]" >/dev/null &&
{ echo "$as_me: error: invalid variable name: $ac_envvar" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
eval "$ac_envvar='$ac_optarg'"
export $ac_envvar ;;
if test -n "$ac_prev"; then
ac_option=--`echo $ac_prev | sed 's/_/-/g'`
{ echo "$as_me: error: missing argument to $ac_option" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
fi
# Be sure to have absolute paths.
[\\/$]* | ?:[\\/]* ) ;;
NONE ) ;;
*) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
- { false; exit; }; };;
+ { (exit 1); exit; }; };;
esac
done
if test ! -r $srcdir/$ac_unique_file; then
if test "$ac_srcdir_defaulted" = yes; then
{ echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
else
{ echo "$as_me: error: cannot find sources in $srcdir" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
fi
fi
srcdir=`echo "$srcdir" | sed 's%\([^/]\)/*$%\1%'`
done
if test -z "$ac_aux_dir"; then
{ echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
fi
ac_config_guess="$SHELL $ac_aux_dir/config.guess"
ac_config_sub="$SHELL $ac_aux_dir/config.sub"
# happened. Such a system could not be considered "sane".
{ echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
alias in your environment" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
fi
test "$2" = conftestfile
else
{ echo "$as_me: error: newly created file is older than distributed files!
Check your system clock" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
fi
rm -f conftest*
echo "$as_me:961: result: yes" >&5
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
{ echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
fi
cat >>confdefs.h <<EOF
echo "${ECHO_T}$ac_cv_prog_gnu_m4" >&6
if test x"$ac_cv_prog_gnu_m4" != xyes; then
{ echo "$as_me: error: GNU m4 1.4 is required" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
fi
# This is needed because Automake does not seem to realize there is
# an AC_SUBST inside AC_PROG_GNU_M4. Grmph!
# Conflict between --help and --header
{ echo "$as_me: error: ambiguous option: $ac_option
Try \`$0 --help' for more information." >&2
- { false; exit; }; };;
+ { (exit 1); exit; }; };;
--help | --hel | -h )
echo "$ac_cs_usage"; exit 0 ;;
--debug | --d* | -d )
# This is an error.
-*) { echo "$as_me: error: unrecognized option: $1
Try \`$0 --help' for more information." >&2
- { false; exit; }; } ;;
+ { (exit 1); exit; }; } ;;
*) { echo "$as_me: error: invalid argument: $1" >&2
- { false; exit; }; };;
+ { (exit 1); exit; }; };;
esac
shift
done
} ||
{
echo "$me: cannot create a temporary directory in $TMPDIR" >&2
- { false; exit; }
+ { (exit 1); exit; }
}
EOF
[\\/$]* | ?:[\\/]*)
# Absolute
test -f "$f" || { echo "$as_me: error: cannot find input file: $f" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
echo $f;;
*) # Relative
if test -f "$f"; then
else
# /dev/null tree
{ echo "$as_me: error: cannot find input file: $f" >&2
- { false; exit; }; }
+ { (exit 1); exit; }; }
fi;;
esac
- done` || { false; exit; }
+ done` || { (exit 1); exit; }
EOF
cat >>$CONFIG_STATUS <<EOF
sed "$ac_vpsub
chmod +x $CONFIG_STATUS
ac_clean_files=$ac_clean_files_save
-test "$no_create" = yes || $SHELL $CONFIG_STATUS || { false; exit; }
+test "$no_create" = yes || $SHELL $CONFIG_STATUS || { (exit 1); exit; }
@cindex @command{!}
You can't use @command{!}, you'll have to rewrite your code.
+
@item @command{break}
+@c ------------------
@cindex @command{break}
The use of @samp{break 2} etc. is safe.
+
@item @command{case}
+@c -----------------
@cindex @command{case}
You don't need to quote the argument, no splitting is performed.
OK
@end example
+
@item @command{echo}
+@c -----------------
@cindex @command{echo}
The simple @code{echo} is probably the most surprising source of
portability troubles.
problem is truly @command{echo}: all the shells understand @samp{'\n'}
as the string composed of a backslash and an n.
+
@item @command{exit}
+@c -----------------
@cindex @command{exit}
@c FIXME: A better merging between this item and `trap' is welcome.
Some shell scripts, such as those generated by @command{autoconf}, use a
@code{exit 1}. Instead of calling @code{exit} directly, use the
@code{AC_MSG_ERROR} macro that has a workaround for this problem.
+
@item @command{export}
+@c -------------------
@cindex @command{export}
The builtin @command{export} dubs @dfn{environment variable} a shell
variable. Each update of exported variables corresponds to an update of
Therefore you should @command{export} again each environment variable
you update.
+
+@item @command{false}
+@c ------------------
+@cindex @command{false}
+Don't expect @command{false} to exit with status 1: The native Bourne
+shell of Solaris 2.8 exits with status 255.
+
+
@item @command{for}
+@c ----------------
@cindex @command{for}
To loop over positional arguments, use
@end example
@item @command{set}
+@c ----------------
@cindex @command{set}
This builtin faces the usual problem with arguments starting with a
dash. Modern shells, such as Bash or Zsh understand @samp{--} to
@end example
@item @command{shift}
+@c ------------------
@cindex @command{shift}
Not only is @command{shift}ing a bad idea when there is nothing left to
shift, but in addition it is not portable: the shell of @sc{mips
risc/os} 4.52 refuses it.
@item @command{test}
+@c -----------------
@cindex @command{test}
The @code{test} program is the way to perform many file and string
tests. It is often invoked by the alternate name @samp{[}, but using
"X@var{foo}" | grep "^X@var{bar}"}, because it avoids problems when
@samp{@var{foo}} contains backslashes.
+
@item @command{trap}
+@c -----------------
@cindex @command{trap}
It is safe to trap at least the signals 1, 2, 13 and 15. You can also
trap 0, i.e., have the trap run when the script end (either via an
Fortunately this bug affects only trap.
@item @command{true}
+@c -----------------
@cindex @command{true}
@cindex @command{:}
Don't worry: as far as we know @command{true} is portable.
@item @command{unset}
+@c ------------------
@cindex @command{unset}
You cannot assume the support of @command{unset}, nevertheless, because
it is extremely useful to disable embarrassing variables such as
@table @asis
@item @command{awk}
+@c ----------------
@cindex @command{awk}
Don't leave white spaces before the parentheses in user functions calls,
@sc{gnu} awk will reject it: