2 dnl Bash specific tests
4 dnl Some derived from PDKSH 5.1.3 autoconf tests
6 dnl check whether cc can create executables
8 AC_DEFUN(BASH_CC_WORKS,
9 [AC_CACHE_CHECK(whether CC works at all, bash_cv_prog_cc_works,
10 [AC_TRY_RUN([main() { exit(0); }],
11 bash_cv_prog_cc_works=yes, bash_cv_prog_cc_works=no,
12 bash_cv_prog_cc_works=no)
15 if test "$bash_cv_prog_cc_works" = "no"; then
16 AC_MSG_ERROR([Installation or configuration problem: C compiler cannot create executables])
21 dnl Check if dup2() does not clear the close on exec flag
23 AC_DEFUN(BASH_DUP2_CLOEXEC_CHECK,
24 [AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
25 AC_CACHE_VAL(bash_cv_dup2_broken,
27 #include <sys/types.h>
32 fd1 = open("/dev/null", 2);
33 if (fcntl(fd1, 2, 1) < 0)
38 fl = fcntl(fd2, 1, 0);
39 /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
42 ], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
43 AC_MSG_ERROR(cannot check dup2 if cross compiling))
45 AC_MSG_RESULT($bash_cv_dup2_broken)
46 if test $bash_cv_dup2_broken = yes; then
47 AC_DEFINE(DUP2_BROKEN)
51 dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
52 AC_DEFUN(BASH_SIGNAL_CHECK,
53 [AC_REQUIRE([AC_TYPE_SIGNAL])
54 AC_MSG_CHECKING(for type of signal functions)
55 AC_CACHE_VAL(bash_cv_signal_vintage,
57 AC_TRY_LINK([#include <signal.h>],[
60 sigemptyset(&ss); sigsuspend(&ss);
61 sigaction(SIGINT, &sa, (struct sigaction *) 0);
62 sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
63 ], bash_cv_signal_vintage=posix,
65 AC_TRY_LINK([#include <signal.h>], [
66 int mask = sigmask(SIGINT);
67 sigsetmask(mask); sigblock(mask); sigpause(mask);
68 ], bash_cv_signal_vintage=4.2bsd,
72 RETSIGTYPE foo() { }], [
73 int mask = sigmask(SIGINT);
74 sigset(SIGINT, foo); sigrelse(SIGINT);
75 sighold(SIGINT); sigpause(SIGINT);
76 ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7
81 AC_MSG_RESULT($bash_cv_signal_vintage)
82 if test "$bash_cv_signal_vintage" = posix; then
83 AC_DEFINE(HAVE_POSIX_SIGNALS)
84 elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
85 AC_DEFINE(HAVE_BSD_SIGNALS)
86 elif test "$bash_cv_signal_vintage" = svr3; then
87 AC_DEFINE(HAVE_USG_SIGHOLD)
91 dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
92 AC_DEFUN(BASH_PGRP_SYNC,
93 [AC_REQUIRE([AC_FUNC_GETPGRP])
94 AC_MSG_CHECKING(whether pgrps need synchronization)
95 AC_CACHE_VAL(bash_cv_pgrp_pipe,
103 # define getpgID() getpgrp()
105 # define getpgID() getpgrp(0)
106 # define setpgid(x,y) setpgrp(x,y)
108 int pid1, pid2, fds[2];
112 switch (pid1 = fork()) {
116 setpgid(0, getpid());
121 sleep(2); /* let first child die */
126 switch (pid2 = fork()) {
131 ok = getpgID() == pid1;
132 write(fds[1], &ok, 1);
138 if (read(fds[0], &ok, 1) != 1)
144 ], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
145 AC_MSG_ERROR(cannot check pgrp synchronization if cross compiling))
147 AC_MSG_RESULT($bash_cv_pgrp_pipe)
148 if test $bash_cv_pgrp_pipe = yes; then
154 dnl check for typedef'd symbols in header files, but allow the caller to
155 dnl specify the include files to be checked in addition to the default
157 dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
158 AC_DEFUN(BASH_CHECK_TYPE,
159 [AC_REQUIRE([AC_HEADER_STDC])dnl
160 AC_MSG_CHECKING(for $1)
161 AC_CACHE_VAL(bash_cv_type_$1,
162 [AC_EGREP_CPP($1, [#include <sys/types.h>
167 ], bash_cv_type_$1=yes, bash_cv_type_$1=no)])
168 AC_MSG_RESULT($bash_cv_type_$1)
169 ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then
172 if test $bash_cv_type_$1 = no; then
178 dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
179 dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
180 dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify
181 dnl matters, this just checks for rlim_t, quad_t, or long.
183 AC_DEFUN(BASH_RLIMIT_TYPE,
184 [AC_MSG_CHECKING(for size and type of struct rlimit fields)
185 AC_CACHE_VAL(bash_cv_type_rlimit,
186 [AC_TRY_COMPILE([#include <sys/types.h>],
187 [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
189 #include <sys/types.h>
190 #include <sys/time.h>
191 #include <sys/resource.h>
196 if (sizeof(rl.rlim_cur) == sizeof(quad_t))
200 }], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
201 AC_MSG_ERROR(cannot check quad_t if cross compiling))])
203 AC_MSG_RESULT($bash_cv_type_rlimit)
204 if test $bash_cv_type_rlimit = quad_t; then
205 AC_DEFINE(RLIMTYPE, quad_t)
206 elif test $bash_cv_type_rlimit = rlim_t; then
207 AC_DEFINE(RLIMTYPE, rlim_t)
212 dnl Check for sys_siglist[] or _sys_siglist[]
214 AC_DEFUN(BASH_UNDER_SYS_SIGLIST,
215 [AC_MSG_CHECKING([for _sys_siglist in system C library])
216 AC_CACHE_VAL(bash_cv_under_sys_siglist,
218 #include <sys/types.h>
224 extern char *_sys_siglist[];
228 char *msg = _sys_siglist[2];
231 bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no,
232 AC_MSG_ERROR(cannot check for _sys_siglist[] if cross compiling))])dnl
233 AC_MSG_RESULT($bash_cv_under_sys_siglist)
234 if test $bash_cv_under_sys_siglist = yes; then
235 AC_DEFINE(HAVE_UNDER_SYS_SIGLIST)
239 AC_DEFUN(BASH_SYS_SIGLIST,
240 [AC_REQUIRE([AC_DECL_SYS_SIGLIST])
241 AC_MSG_CHECKING([for sys_siglist in system C library])
242 AC_CACHE_VAL(bash_cv_sys_siglist,
244 #include <sys/types.h>
249 #ifndef SYS_SIGLIST_DECLARED
250 extern char *sys_siglist[];
254 char *msg = sys_siglist[2];
257 bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no,
258 AC_MSG_ERROR(cannot check for sys_siglist if cross compiling))])dnl
259 AC_MSG_RESULT($bash_cv_sys_siglist)
260 if test $bash_cv_sys_siglist = yes; then
261 AC_DEFINE(HAVE_SYS_SIGLIST)
265 dnl Check for sys_errlist[] and sys_nerr, check for declaration
266 AC_DEFUN(BASH_SYS_ERRLIST,
267 [AC_MSG_CHECKING([for sys_errlist and sys_nerr])
268 AC_CACHE_VAL(bash_cv_sys_errlist,
269 [AC_TRY_LINK([#include <errno.h>],
270 [extern char *sys_errlist[];
272 char *msg = sys_errlist[sys_nerr - 1];],
273 bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl
274 AC_MSG_RESULT($bash_cv_sys_errlist)
275 if test $bash_cv_sys_errlist = yes; then
276 AC_DEFINE(HAVE_SYS_ERRLIST)
280 dnl Check to see if opendir will open non-directories (not a nice thing)
281 AC_DEFUN(BASH_FUNC_OPENDIR_CHECK,
282 [AC_REQUIRE([AC_HEADER_DIRENT])dnl
283 AC_MSG_CHECKING(if opendir() opens non-directories)
284 AC_CACHE_VAL(bash_cv_opendir_not_robust,
287 #include <sys/types.h>
291 #endif /* HAVE_UNISTD_H */
292 #if defined(HAVE_DIRENT_H)
295 # define dirent direct
296 # ifdef HAVE_SYS_NDIR_H
297 # include <sys/ndir.h>
298 # endif /* SYSNDIR */
299 # ifdef HAVE_SYS_DIR_H
300 # include <sys/dir.h>
305 #endif /* HAVE_DIRENT_H */
310 unlink("/tmp/not_a_directory");
311 fd = open("/tmp/not_a_directory", O_WRONLY|O_CREAT, 0666);
314 dir = opendir("/tmp/not_a_directory");
315 unlink("/tmp/not_a_directory");
317 }], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no,
318 AC_MSG_ERROR(cannot check opendir if cross compiling))])
319 AC_MSG_RESULT($bash_cv_opendir_not_robust)
320 if test $bash_cv_opendir_not_robust = yes; then
321 AC_DEFINE(OPENDIR_NOT_ROBUST)
326 AC_DEFUN(BASH_TYPE_SIGHANDLER,
327 [AC_MSG_CHECKING([whether signal handlers are of type void])
328 AC_CACHE_VAL(bash_cv_void_sighandler,
329 [AC_TRY_COMPILE([#include <sys/types.h>
337 void (*signal ()) ();],
338 [int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl
339 AC_MSG_RESULT($bash_cv_void_sighandler)
340 if test $bash_cv_void_sighandler = yes; then
341 AC_DEFINE(VOID_SIGHANDLER)
345 AC_DEFUN(BASH_FUNC_STRSIGNAL,
346 [AC_MSG_CHECKING([for the existance of strsignal])
347 AC_CACHE_VAL(bash_cv_have_strsignal,
348 [AC_TRY_LINK([#include <sys/types.h>
349 #include <signal.h>],
350 [char *s = (char *)strsignal(2);],
351 bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
352 AC_MSG_RESULT($bash_cv_have_strsignal)
353 if test $bash_cv_have_strsignal = yes; then
354 AC_DEFINE(HAVE_STRSIGNAL)
358 AC_DEFUN(BASH_FUNC_LSTAT,
359 [dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an
360 dnl inline function in <sys/stat.h>.
361 AC_CACHE_CHECK([for lstat], bash_cv_func_lstat,
363 #include <sys/types.h>
364 #include <sys/stat.h>
365 ],[ lstat("",(struct stat *)0); ],
366 bash_cv_func_lstat=yes, bash_cv_func_lstat=no)])
367 if test $bash_cv_func_lstat = yes; then
368 AC_DEFINE(HAVE_LSTAT)
372 AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC,
373 [AC_MSG_CHECKING([for a c_line member of struct termios])
374 AC_CACHE_VAL(bash_cv_termios_ldisc,
375 [AC_TRY_COMPILE([#include <sys/types.h>
376 #include <termios.h>],[struct termios t; int i; i = t.c_line;],
377 bash_cv_termios_ldisc=yes, bash_cv_termios_ldisc=no)])dnl
378 AC_MSG_RESULT($bash_cv_termios_ldisc)
379 if test $bash_cv_termios_ldisc = yes; then
380 AC_DEFINE(TERMIOS_LDISC)
384 AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,
385 [AC_MSG_CHECKING([for a c_line member of struct termio])
386 AC_CACHE_VAL(bash_cv_termio_ldisc,
387 [AC_TRY_COMPILE([#include <sys/types.h>
388 #include <termio.h>],[struct termio t; int i; i = t.c_line;],
389 bash_cv_termio_ldisc=yes, bash_cv_termio_ldisc=no)])dnl
390 AC_MSG_RESULT($bash_cv_termio_ldisc)
391 if test $bash_cv_termio_ldisc = yes; then
392 AC_DEFINE(TERMIO_LDISC)
396 AC_DEFUN(BASH_FUNC_GETENV,
397 [AC_MSG_CHECKING(to see if getenv can be redefined)
398 AC_CACHE_VAL(bash_cv_getenv_redef,
410 #if defined (__linux__) || defined (__bsdi__) || defined (convex)
414 #endif /* !__linux__ && !__bsdi__ && !convex */
421 /* The next allows this program to run, but does not allow bash to link
422 when it redefines getenv. I'm not really interested in figuring out
428 exit(s == 0); /* force optimizer to leave getenv in */
430 ], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no,
431 AC_MSG_ERROR(cannot check getenv redefinition if cross compiling))])
432 AC_MSG_RESULT($bash_cv_getenv_redef)
433 if test $bash_cv_getenv_redef = yes; then
434 AC_DEFINE(CAN_REDEFINE_GETENV)
438 AC_DEFUN(BASH_FUNC_PRINTF,
439 [AC_MSG_CHECKING(for declaration of printf in <stdio.h>)
440 AC_CACHE_VAL(bash_cv_printf_declared,
444 typedef int (*_bashfunc)(const char *, ...);
446 typedef int (*_bashfunc)();
454 ],bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
455 AC_MSG_ERROR(cannot check printf declaration if cross compiling))])
456 AC_MSG_RESULT($bash_cv_printf_declared)
457 if test $bash_cv_printf_declared = yes; then
458 AC_DEFINE(PRINTF_DECLARED)
462 AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,
463 [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
464 AC_CACHE_VAL(bash_cv_ulimit_maxfds,
468 long maxfds = ulimit(4, 0L);
469 exit (maxfds == -1L);
471 ],bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no,
472 AC_MSG_ERROR(cannot check ulimit if cross compiling))])
473 AC_MSG_RESULT($bash_cv_ulimit_maxfds)
474 if test $bash_cv_ulimit_maxfds = yes; then
475 AC_DEFINE(ULIMIT_MAXFDS)
479 AC_DEFUN(BASH_CHECK_LIB_TERMCAP,
481 if test "X$bash_cv_termcap_lib" = "X"; then
484 AC_MSG_CHECKING(which library has the termcap functions)
487 AC_CACHE_VAL(bash_cv_termcap_lib,
488 [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
489 [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
490 [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
491 bash_cv_termcap_lib=gnutermcap)])])])
492 if test "X$_bash_needmsg" = "Xyes"; then
493 AC_MSG_CHECKING(which library has the termcap functions)
495 AC_MSG_RESULT(using $bash_cv_termcap_lib)
496 if test $bash_cv_termcap_lib = gnutermcap; then
497 LDFLAGS="$LDFLAGS -L./lib/termcap"
498 TERMCAP_LIB="./lib/termcap/libtermcap.a"
499 TERMCAP_DEP="./lib/termcap/libtermcap.a"
500 elif test $bash_cv_termcap_lib = libtermcap; then
501 TERMCAP_LIB=-ltermcap
503 elif test $bash_cv_termcap_lib = libncurses; then
504 TERMCAP_LIB=-lncurses
512 AC_DEFUN(BASH_FUNC_GETCWD,
513 [AC_MSG_CHECKING([if getcwd() calls popen()])
514 AC_CACHE_VAL(bash_cv_getcwd_calls_popen,
538 FILE *_popen(command, type)
542 return (popen (command, type));
566 ], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes,
567 AC_MSG_ERROR(cannot check whether getcwd calls popen if cross compiling))])
568 AC_MSG_RESULT($bash_cv_getcwd_calls_popen)
569 if test $bash_cv_getcwd_calls_popen = yes; then
570 AC_DEFINE(GETCWD_BROKEN)
574 AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,
575 [AC_REQUIRE([AC_HEADER_DIRENT])
576 AC_MSG_CHECKING(if struct dirent has a d_ino member)
577 AC_CACHE_VAL(bash_cv_dirent_has_dino,
580 #include <sys/types.h>
583 #endif /* HAVE_UNISTD_H */
584 #if defined(HAVE_DIRENT_H)
587 # define dirent direct
588 # ifdef HAVE_SYS_NDIR_H
589 # include <sys/ndir.h>
590 # endif /* SYSNDIR */
591 # ifdef HAVE_SYS_DIR_H
592 # include <sys/dir.h>
597 #endif /* HAVE_DIRENT_H */
599 struct dirent d; int z; z = d.d_ino;
600 ], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)])
601 AC_MSG_RESULT($bash_cv_dirent_has_dino)
602 if test $bash_cv_dirent_has_dino = yes; then
603 AC_DEFINE(STRUCT_DIRENT_HAS_D_INO)
607 AC_DEFUN(BASH_REINSTALL_SIGHANDLERS,
608 [AC_REQUIRE([AC_TYPE_SIGNAL])
609 AC_REQUIRE([BASH_SIGNAL_CHECK])
610 AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
611 AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
618 typedef RETSIGTYPE sigfunc();
622 #ifdef HAVE_POSIX_SIGNALS
624 set_signal_handler(sig, handler)
628 struct sigaction act, oact;
629 act.sa_handler = handler;
631 sigemptyset (&act.sa_mask);
632 sigemptyset (&oact.sa_mask);
633 sigaction (sig, &act, &oact);
634 return (oact.sa_handler);
637 #define set_signal_handler(s, h) signal(s, h)
650 set_signal_handler(SIGINT, sigint);
651 kill((int)getpid(), SIGINT);
652 kill((int)getpid(), SIGINT);
655 ], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes,
656 AC_MSG_ERROR(cannot check signal handling if cross compiling))])
657 AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers)
658 if test $bash_cv_must_reinstall_sighandlers = yes; then
659 AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
663 AC_DEFUN(BASH_FUNC_SBRK_DECLARED,
664 [AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>)
665 AC_CACHE_VAL(bash_cv_sbrk_declared,
666 [AC_EGREP_HEADER(sbrk, unistd.h,
667 bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)])
668 AC_MSG_RESULT($bash_cv_sbrk_declared)
669 if test $bash_cv_sbrk_declared = yes; then
670 AC_DEFINE(SBRK_DECLARED)
674 dnl check that some necessary job control definitions are present
675 AC_DEFUN(BASH_JOB_CONTROL_MISSING,
676 [AC_REQUIRE([BASH_SIGNAL_CHECK])
677 AC_MSG_CHECKING(for presence of necessary job control definitions)
678 AC_CACHE_VAL(bash_cv_job_control_missing,
680 #include <sys/types.h>
681 #ifdef HAVE_SYS_WAIT_H
682 #include <sys/wait.h>
689 /* Add more tests in here as appropriate. */
693 #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
697 /* signals and tty control. */
698 #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
702 /* process control */
703 #if !defined (WNOHANG) || !defined (WUNTRACED)
707 /* Posix systems have tcgetpgrp and waitpid. */
708 #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
712 #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
716 /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
717 #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
722 }],bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing,
723 AC_MSG_ERROR(cannot check job control if cross-compiling))
725 AC_MSG_RESULT($bash_cv_job_control_missing)
726 if test $bash_cv_job_control_missing = missing; then
727 AC_DEFINE(JOB_CONTROL_MISSING)
731 dnl check whether named pipes are present
732 dnl this requires a previous check for mkfifo, but that is awkward to specify
733 AC_DEFUN(BASH_SYS_NAMED_PIPES,
734 [AC_MSG_CHECKING(for presence of named pipes)
735 AC_CACHE_VAL(bash_cv_sys_named_pipes,
737 #include <sys/types.h>
738 #include <sys/stat.h>
743 /* Add more tests in here as appropriate. */
748 #if defined (HAVE_MKFIFO)
752 #if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO))
760 fd = mknod ("/tmp/sh-np-autoconf", 0666 | S_IFIFO, 0);
764 unlink ("/tmp/sh-np-autoconf");
766 }],bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing,
767 AC_MSG_ERROR(cannot check for named pipes if cross-compiling))
769 AC_MSG_RESULT($bash_cv_sys_named_pipes)
770 if test $bash_cv_sys_named_pipes = missing; then
771 AC_DEFINE(NAMED_PIPES_MISSING)
775 AC_DEFUN(BASH_FUNC_POSIX_SETJMP,
776 [AC_REQUIRE([BASH_SIGNAL_CHECK])
777 AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
778 AC_CACHE_VAL(bash_cv_func_sigsetjmp,
783 #include <sys/types.h>
789 #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
800 sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
801 sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
804 code = sigsetjmp(xx, 1);
806 exit(0); /* could get sigmask and compare to oset here. */
809 sigaddset(&set, SIGINT);
810 sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
816 }],bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
817 AC_MSG_ERROR(cannot check for sigsetjmp/siglongjmp if cross-compiling))
819 AC_MSG_RESULT($bash_cv_func_sigsetjmp)
820 if test $bash_cv_func_sigsetjmp = present; then
821 AC_DEFINE(HAVE_POSIX_SIGSETJMP)
825 AC_DEFUN(BASH_HAVE_TIOCGWINSZ,
826 [AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h)
827 AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl,
828 [AC_TRY_COMPILE([#include <sys/types.h>
829 #include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
830 bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)])
831 AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl)
832 if test $bash_cv_tiocgwinsz_in_ioctl = yes; then
833 AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
837 AC_DEFUN(BASH_HAVE_TIOCSTAT,
838 [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h)
839 AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl,
840 [AC_TRY_COMPILE([#include <sys/types.h>
841 #include <sys/ioctl.h>], [int x = TIOCSTAT;],
842 bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)])
843 AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl)
844 if test $bash_cv_tiocstat_in_ioctl = yes; then
845 AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
849 AC_DEFUN(BASH_HAVE_FIONREAD,
850 [AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h)
851 AC_CACHE_VAL(bash_cv_fionread_in_ioctl,
852 [AC_TRY_COMPILE([#include <sys/types.h>
853 #include <sys/ioctl.h>], [int x = FIONREAD;],
854 bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)])
855 AC_MSG_RESULT($bash_cv_fionread_in_ioctl)
856 if test $bash_cv_fionread_in_ioctl = yes; then
857 AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
861 AC_DEFUN(BASH_CHECK_GETPW_FUNCS,
862 [AC_MSG_CHECKING(whether programs are able to redeclare getpw functions)
863 AC_CACHE_VAL(bash_cv_can_redecl_getpw,
864 [AC_TRY_COMPILE([#include <sys/types.h>
866 extern struct passwd *getpwent();], [struct passwd *z; z = getpwent();],
867 bash_cv_can_redecl_getpw=yes,bash_cv_can_redecl_getpw=no)])
868 AC_MSG_RESULT($bash_cv_can_redecl_getpw)
869 if test $bash_cv_can_redecl_getpw = no; then
870 AC_DEFINE(HAVE_GETPW_DECLS)
874 AC_DEFUN(BASH_CHECK_DEV_FD,
875 [AC_MSG_CHECKING(whether /dev/fd is available)
876 AC_CACHE_VAL(bash_cv_dev_fd,
877 [if test -d /dev/fd && test -r /dev/fd/0; then
878 bash_cv_dev_fd=standard
879 elif test -d /proc/self/fd && test -r /proc/self/fd/0; then
880 bash_cv_dev_fd=whacky
882 bash_cv_dev_fd=absent
885 AC_MSG_RESULT($bash_cv_dev_fd)
886 if test $bash_cv_dev_fd = "standard"; then
887 AC_DEFINE(HAVE_DEV_FD)
888 AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/")
889 elif test $bash_cv_dev_fd = "whacky"; then
890 AC_DEFINE(HAVE_DEV_FD)
891 AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/")
895 AC_DEFUN(BASH_CHECK_SOCKLIB,
897 if test "X$bash_cv_have_socklib" = "X"; then
900 AC_MSG_CHECKING(for socket library)
903 AC_CACHE_VAL(bash_cv_have_socklib,
904 [AC_CHECK_LIB(socket, getpeername,
905 bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])
906 if test "X$_bash_needmsg" = Xyes; then
907 AC_MSG_RESULT($bash_cv_have_socklib)
910 if test $bash_cv_have_socklib = yes; then
911 # check for libnsl, add it to LIBS if present
912 if test "X$bash_cv_have_libnsl" = "X"; then
915 AC_MSG_CHECKING(for libnsl)
918 AC_CACHE_VAL(bash_cv_have_libnsl,
919 [AC_CHECK_LIB(nsl, t_open,
920 bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)])
921 if test "X$_bash_needmsg" = Xyes; then
922 AC_MSG_RESULT($bash_cv_have_libnsl)
925 if test $bash_cv_have_libnsl = yes; then
926 LIBS="-lsocket -lnsl $LIBS"
928 LIBS="-lsocket $LIBS"
930 AC_DEFINE(HAVE_LIBSOCKET)
931 AC_DEFINE(HAVE_GETPEERNAME)
935 AC_DEFUN(BASH_DEFAULT_MAIL_DIR,
936 [AC_MSG_CHECKING(for default mail directory)
937 AC_CACHE_VAL(bash_cv_mail_dir,
938 [if test -d /var/mail; then
939 bash_cv_mail_dir=/var/mail
940 elif test -d /usr/mail; then
941 bash_cv_mail_dir=/usr/mail
942 elif test -d /usr/spool/mail; then
943 bash_cv_mail_dir=/usr/spool/mail
944 elif test -d /var/spool/mail; then
945 bash_cv_mail_dir=/var/spool/mail
947 bash_cv_mail_dir=unknown
950 AC_MSG_RESULT($bash_cv_mail_dir)
951 if test $bash_cv_mail_dir = "/var/mail"; then
952 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/mail")
953 elif test $bash_cv_mail_dir = "/usr/mail"; then
954 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/mail")
955 elif test $bash_cv_mail_dir = "/var/spool/mail"; then
956 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/var/spool/mail")
957 elif test $bash_cv_mail_dir = "/usr/spool/mail"; then
958 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "/usr/spool/mail")
960 AC_DEFINE(DEFAULT_MAIL_DIRECTORY, "unknown")
965 dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
967 AC_DEFUN(BASH_KERNEL_RLIMIT_CHECK,
968 [AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
969 AC_CACHE_VAL(bash_cv_kernel_rlimit,
971 #include <sys/types.h>
972 #include <sys/resource.h>
977 ], bash_cv_kernel_rlimit=no,
979 #include <sys/types.h>
981 #include <sys/resource.h>
987 ], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)]
989 AC_MSG_RESULT($bash_cv_kernel_rlimit)
990 if test $bash_cv_kernel_rlimit = yes; then
991 AC_DEFINE(RLIMIT_NEEDS_KERNEL)