| # Find a POSIX-conforming shell. | |
| # Copyright (C) 2007-2008 Free Software Foundation, Inc. | |
| # This file is free software; the Free Software Foundation | |
| # gives unlimited permission to copy and/or distribute it, | |
| # with or without modifications, as long as this notice is preserved. | |
| # Written by Paul Eggert. | |
| # If a POSIX-conforming shell can be found, set POSIX_SHELL and | |
| # PREFERABLY_POSIX_SHELL to it. If not, set POSIX_SHELL to the | |
| # empty string and PREFERABLY_POSIX_SHELL to '/bin/sh'. | |
| AC_DEFUN([gl_POSIX_SHELL], | |
| [ | |
| AC_CACHE_CHECK([for a shell that conforms to POSIX], [gl_cv_posix_shell], | |
| [gl_test_posix_shell_script=' | |
| func_return () { | |
| (exit [$]1) | |
| } | |
| func_success () { | |
| func_return 0 | |
| } | |
| func_failure () { | |
| func_return 1 | |
| } | |
| func_ret_success () { | |
| return 0 | |
| } | |
| func_ret_failure () { | |
| return 1 | |
| } | |
| subshell_umask_sanity () { | |
| (umask 22; (umask 0); test $(umask) -eq 22) | |
| } | |
| test "[$](echo foo)" = foo && | |
| func_success && | |
| ! func_failure && | |
| func_ret_success && | |
| ! func_ret_failure && | |
| (set x && func_ret_success y && test x = "[$]1") && | |
| subshell_umask_sanity | |
| ' | |
| for gl_cv_posix_shell in \ | |
| "$CONFIG_SHELL" "$SHELL" /bin/sh /bin/bash /bin/ksh /bin/sh5 no; do | |
| case $gl_cv_posix_shell in | |
| /*) | |
| "$gl_cv_posix_shell" -c "$gl_test_posix_shell_script" 2>/dev/null \ | |
| && break;; | |
| esac | |
| done]) | |
| if test "$gl_cv_posix_shell" != no; then | |
| POSIX_SHELL=$gl_cv_posix_shell | |
| PREFERABLY_POSIX_SHELL=$POSIX_SHELL | |
| else | |
| POSIX_SHELL= | |
| PREFERABLY_POSIX_SHELL=/bin/sh | |
| fi | |
| AC_SUBST([POSIX_SHELL]) | |
| AC_SUBST([PREFERABLY_POSIX_SHELL]) | |
| ]) |