[PATCH] Shell function reporting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

The logic in AS_SHELL_SANITIZE() for reporting that it failed to find a  
function-supporting shell is just plain buggy.  In the case when $SHELL does  
not support functions, AS_SHELL_SANITIZE() reports that it could not find an  
appropriate shell even if it actually locates such a shell (which it assigns  
to CONFIG_SHELL).  Furthermore, when it actually does fail to find a suitable  
shell, it neglects to complain at all.  The logic is backward.

Here is a patch which implements the correct logic.  The patch also makes  
the code more robust by preventing the user from fooling configure into  
thinking that it has a valid shell if the user manually sets CONFIG_SHELL to  
a non-function-supporting shell.

Eric


2004-01-06  Eric Sunshine  <sunshine@xxxxxxxxxxxxxx>

	* lib/m4sugar/m4sh.m4 (AS_SHELL_SANITIZE): Fixed bogus error reporting
	logic.  If $SHELL did not support shell functions, and if it found a
	shell which did support functions, it would complain that it failed to
	find such a shell (backward logic).  Worse, it did not complain if it
	failed to find a suitable shell.  Now it complains iff it fails to find
	a function-supporting shell.


--- lib/m4sugar/m4sh.m4	Tue Jan  6 10:44:28 2004
+++ lib/m4sugar/m4sh.m4-fix	Tue Jan  6 10:44:08 2004
@@ -249,25 +249,22 @@
 fi

 dnl In the future, the `else' branch will be that in AS_INIT_WITH_SHELL_FN.
-AS_IF([_AS_SHELL_FN_WORK([$SHELL])], [], [
-  case $CONFIG_SHELL in
-  '')
-    _AS_PATH_WALK([/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH],
-      [for as_base in sh bash ksh sh5; do
-	 case $as_dir in
-	 /*)
-	   AS_IF([_AS_SHELL_FN_WORK([$as_dir/$as_base])], [
-	     AS_UNSET(BASH_ENV)
-	     AS_UNSET(ENV)
-	     CONFIG_SHELL=$as_dir/$as_base
-	     export CONFIG_SHELL
-	     exec "$CONFIG_SHELL" "$as_myself" ${1+"$[@]"}
-	   ]);;
-	 esac
-       done]);;
-  *)
-    $1;;
-  esac
+AS_IF([_AS_SHELL_FN_WORK([${CONFIG_SHELL-${SHELL-/bin/sh}}])], [], [
+  _AS_PATH_WALK([/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH],
+    [for as_base in sh bash ksh sh5; do
+       case $as_dir in
+       /*)
+	 AS_IF([_AS_SHELL_FN_WORK([$as_dir/$as_base])], [
+	   AS_UNSET(BASH_ENV)
+	   AS_UNSET(ENV)
+	   CONFIG_SHELL=$as_dir/$as_base
+	   export CONFIG_SHELL
+	   exec "$CONFIG_SHELL" "$as_myself" ${1+"$[@]"}
+	 ]);;
+       esac
+     done])
+  # If we got this far, then we failed to find a function-supporting shell.
+  $1
 ])

 # Work around bugs in pre-3.0 UWIN ksh.



[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux