--- m4sh.m4.orig Fri Jun 4 10:17:11 2004 +++ m4sh.m4 Fri Jun 4 15:04:14 2004 @@ -155,9 +155,19 @@ DUALCASE=1; export DUALCASE # for MKS sh _AS_UNSET_PREPARE +_AS_READONLY_PREPARE # Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH +for as_var in ENV MAIL MAILPATH +do + # Before unsetting a variable, check whether it is read-only. + # Trying to unset a read-only variable with SGI's /bin/sh on IRIX 6.5 + # causes the script to stop (and the `ENV' variable typically is + # read-only). + AS_READONLY_VAR([$as_var], [], + [$as_unset $as_var]) +done + PS1='$ ' PS2='> ' PS4='+ ' @@ -289,6 +299,40 @@ fi ]) +# _AS_READONLY_PREPARE +# ----------------- +# Compute $as_readonly depending on whether the `readonly' builtin is +# available. +m4_defun([_AS_READONLY_PREPARE], +[# Check whether `readonly' is available. +# Most shells (bash, IRIX's /bin/sh, HP-UX 11.11's /bin/sh) have +# `readonly -p' list all read-only variables; however, Tru64's /bin/sh +# does not support `-p'. Fortunately, most shells (each one of the +# above shells, although I couldn't check on IRIX) also list all +# read-only variables when no argument is passed to `readonly'. + +if test "x$as_readonly_var_name" = "x"; then + as_readonly_var_name="as_unused_readonly_var" +else + # don't reuse the same read-only variable name + as_readonly_var_name="${as_readonly_var_name}x" +fi +export as_readonly_var_name + +eval "$as_readonly_var_name=something" +export $as_readonly_var_name +if readonly $as_readonly_var_name >/dev/null 2>&1 ; then + if readonly | grep "$as_readonly_var_name" >/dev/null 2>&1; then + as_readonly=readonly + elif readonly -p | grep "$as_readonly_var_name" >/dev/null 2>&1; then + as_readonly="readonly -p" + else + as_readonly=true + fi +else + as_readonly=true +fi +]) # AS_UNSET(VAR, [VALUE-IF-UNSET-NOT-SUPPORTED = `']) # -------------------------------------------------- @@ -298,6 +342,24 @@ [AS_REQUIRE([_AS_UNSET_PREPARE])dnl $as_unset $1 || test "${$1+set}" != set || { $1=$2; export $1; }]) +# AS_READONLY_VAR(VAR, ACTION-IF-READONLY, ACTION-IF-READWRITE) +# ------------------------------------------------------------- +# If read-only variables are supported, check whether VAR is readonly and +# execute ACTION-IF-READONLY if it is, ACTION-IF-READWRITE otherwise. +# Both Tru64's /bin/sh and GNU bash `readonly' builtins list the read-only +# variables when no argument is given. However, IRIX's /bin/sh manual +# does not mention whether if behaves the same way (`readonly -p' does +# list read-only variables though). +m4_defun([AS_READONLY_VAR], +[AS_REQUIRE([_AS_READONLY_PREPARE])dnl +if $as_readonly | grep "$1" >/dev/null 2>&1 ; then + : + $2 +else + : + $3 +fi +]) @@ -539,6 +601,7 @@ # configure. m4_define([_AS_LINENO_PREPARE], [AS_REQUIRE([_AS_CR_PREPARE])dnl +AS_REQUIRE([_AS_READONLY_PREPARE])dnl _AS_LINENO_WORKS || { # Find who we are. Look in the path if we contain no path at all # relative or not. @@ -563,8 +626,10 @@ case $as_dir in /*) if ("$as_dir/$as_base" -c '_AS_LINENO_WORKS') 2>/dev/null; then - AS_UNSET(BASH_ENV) - AS_UNSET(ENV) + AS_READONLY_VAR([BASH_ENV], [], + [AS_UNSET(BASH_ENV)]) + AS_READONLY_VAR([ENV], [], + [AS_UNSET(ENV)]) CONFIG_SHELL=$as_dir/$as_base export CONFIG_SHELL exec "$CONFIG_SHELL" "$[0]" ${1+"address@hidden"}