New upstream version 1.8
[debian/gzip] / m4 / shell.m4
1 # Check for a working shell.
2
3 # Copyright (C) 2000-2001, 2007, 2009-2016 Free Software Foundation, Inc.
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 3, or (at your option)
7 # any later version.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
17 # 02111-1307, USA.
18
19 # AC_PROG_SHELL
20 # -------------
21 # Check for a working (i.e. POSIX-compatible) shell.
22 # Written by Paul Eggert <eggert@twinsun.com>,
23 # from an idea suggested by Albert Chin-A-Young <china@thewrittenword.com>.
24 AC_DEFUN([AC_PROG_SHELL],
25   [AC_MSG_CHECKING([for a POSIX-compliant shell])
26    AC_CACHE_VAL(ac_cv_path_shell,
27      [ac_command='
28         # Test the noclobber option, using the portable POSIX.2 syntax.
29         set -C
30         rm -f conftest.c
31         >conftest.c || exit
32         >|conftest.c || exit
33         !>conftest.c || exit
34         # Test that $(...) works.
35         test "$(expr 3 + 4)" -eq 7 || exit
36       '
37       # Solaris 11 /bin/sh (AT&T Research) 93u 2011-02-08 has a file
38       # descriptor bug that breaks zgrep and is hard to test for
39       # directly.  At some point $(...) is reading a pipe from the
40       # subshell, but the pipe is also open in the parent shell, so
41       # the read deadlocks.  Prefer some other shell if available.
42       ac_maybe_solaris_sh_bug='test "${.sh.version}"'
43
44       ac_cv_path_shell=no
45
46       case $SHELL in
47       /*)
48         rm -f conftest.c
49         if ("$SHELL" -c "$ac_command") 2>/dev/null; then
50           "$SHELL" -c "$ac_maybe_solaris_sh_bug" 2>/dev/null ||
51             ac_cv_path_shell=$SHELL
52         fi
53       esac
54
55       case $ac_cv_path_shell in
56       no)
57         # Prefer shells that are more likely to be installed in the
58         # same place on all hosts of this platform.  Therefore, prefer
59         # shells in /bin and /usr/bin to shells in the installer's
60         # PATH.  Also, loop through PATH first and then through
61         # shells, since less-"nice" shells in /bin and /usr/bin are
62         # more likely to be installed than "nicer" shells elsewhere.
63         ac_break_if_good_shell=:
64         as_save_IFS=$IFS; IFS=:
65         for as_dir in /bin /usr/bin $PATH
66         do
67           IFS=$as_save_IFS
68           case $as_dir in
69           /*)
70             for ac_base in sh bash ksh sh5; do
71               rm -f conftest.c
72               if ("$as_dir/$ac_base" -c "$ac_command") 2>/dev/null; then
73                 if "$as_dir/$ac_base" -c "$ac_maybe_solaris_sh_bug" 2>/dev/null
74                 then
75                   test "$ac_cv_path_shell" = no
76                 else
77                   ac_break_if_good_shell=break
78                   :
79                 fi && ac_cv_path_shell=$as_dir/$ac_base
80                 $ac_break_if_good_shell
81               fi
82             done
83             $ac_break_if_good_shell
84           esac
85         done
86         rm -f conftest.c
87       esac])
88    AC_MSG_RESULT($ac_cv_path_shell)
89    SHELL=$ac_cv_path_shell
90    if test "$SHELL" = no; then
91      SHELL=/bin/sh
92      AC_MSG_WARN([using $SHELL, even though it does not conform to POSIX])
93    fi
94    if "$SHELL" -c "$ac_maybe_solaris_sh_bug" 2>/dev/null; then
95      AC_MSG_WARN([using $SHELL, even though it may have file descriptor bugs])
96    fi
97    AC_SUBST(SHELL)])