| Submitter | Fahad Usman |
|---|---|
| Date | July 25, 2012, 8:21 a.m. |
| Message ID | <1343204493-17235-1-git-send-email-fahad.usman@gmail.com> |
| Download | mbox | patch |
| Permalink | /patch/33023/ |
| State | Accepted |
| Commit | a706a74bb28e8f4d97e32f45ea894627d7e8f3fa |
| Headers | show |
Comments
On 07/25/2012 01:21 AM, Fahad Usman wrote: > From: Fahad Usman <fahad_usman@mentor.com> > > some bash macros are missing from acinclude.m4 which are added up-stream. This > wasn't actually breaking anything but but it was causing the configure script > to not run all the tests it's intended to run. > > move the acinclude.m4 from "files" folder to version specific folders so that > readline-5.2 continue to use the older acinclude.m4 only readline-6.2 use the > updated one > > Signed-off-by: Fahad Usman <fahad_usman@mentor.com> > --- > meta/recipes-core/readline/files/acinclude.m4 | 1815 ------------------- > .../readline/readline-5.2/acinclude.m4 | 1815 +++++++++++++++++++ > .../readline/readline-6.2/acinclude.m4 | 1871 ++++++++++++++++++++ > meta/recipes-core/readline/readline_6.2.bb | 2 +- > 4 files changed, 3687 insertions(+), 1816 deletions(-) > delete mode 100644 meta/recipes-core/readline/files/acinclude.m4 > create mode 100644 meta/recipes-core/readline/readline-5.2/acinclude.m4 > create mode 100644 meta/recipes-core/readline/readline-6.2/acinclude.m4 > Merged into OE-Core Thanks Sau! > diff --git a/meta/recipes-core/readline/files/acinclude.m4 b/meta/recipes-core/readline/files/acinclude.m4 > deleted file mode 100644 > index 8a45f99..0000000 > --- a/meta/recipes-core/readline/files/acinclude.m4 > +++ /dev/null > @@ -1,1815 +0,0 @@ > -dnl > -dnl Bash specific tests > -dnl > -dnl Some derived from PDKSH 5.1.3 autoconf tests > -dnl > - > -AC_DEFUN([BASH_C_LONG_LONG], > -[AC_CACHE_CHECK(for long long, ac_cv_c_long_long, > -[if test "$GCC" = yes; then > - ac_cv_c_long_long=yes > -else > -AC_TRY_RUN([ > -int > -main() > -{ > -long long foo = 0; > -exit(sizeof(long long) < sizeof(long)); > -} > -], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) > -fi]) > -if test $ac_cv_c_long_long = yes; then > - AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) > -fi > -]) > - > -dnl > -dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX > -dnl (< changed to <=) added. > -dnl > -AC_DEFUN([BASH_C_LONG_DOUBLE], > -[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, > -[if test "$GCC" = yes; then > - ac_cv_c_long_double=yes > -else > -AC_TRY_RUN([ > -int > -main() > -{ > - /* The Stardent Vistra knows sizeof(long double), but does not > - support it. */ > - long double foo = 0.0; > - /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ > - /* On IRIX 5.3, the compiler converts long double to double with a warning, > - but compiles this successfully. */ > - exit(sizeof(long double) <= sizeof(double)); > -} > -], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) > -fi]) > -if test $ac_cv_c_long_double = yes; then > - AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) > -fi > -]) > - > -dnl > -dnl Check for <inttypes.h>. This is separated out so that it can be > -dnl AC_REQUIREd. > -dnl > -dnl BASH_HEADER_INTTYPES > -AC_DEFUN([BASH_HEADER_INTTYPES], > -[ > - AC_CHECK_HEADERS(inttypes.h) > -]) > - > -dnl > -dnl check for typedef'd symbols in header files, but allow the caller to > -dnl specify the include files to be checked in addition to the default > -dnl > -dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) > -AC_DEFUN([BASH_CHECK_TYPE], > -[ > -AC_REQUIRE([AC_HEADER_STDC])dnl > -AC_REQUIRE([BASH_HEADER_INTTYPES]) > -AC_MSG_CHECKING(for $1) > -AC_CACHE_VAL(bash_cv_type_$1, > -[AC_EGREP_CPP($1, [#include <sys/types.h> > -#if STDC_HEADERS > -#include <stdlib.h> > -#include <stddef.h> > -#endif > -#if HAVE_INTTYPES_H > -#include <inttypes.h> > -#endif > -$2 > -], bash_cv_type_$1=yes, bash_cv_type_$1=no)]) > -AC_MSG_RESULT($bash_cv_type_$1) > -ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then > - AC_DEFINE($4) > - fi]) > -if test $bash_cv_type_$1 = no; then > - AC_DEFINE_UNQUOTED($1, $3) > -fi > -]) > - > -dnl > -dnl BASH_CHECK_DECL(FUNC) > -dnl > -dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like > -dnl AC_CHECK_DECL > -dnl > -AC_DEFUN([BASH_CHECK_DECL], > -[ > -AC_REQUIRE([AC_HEADER_STDC]) > -AC_REQUIRE([BASH_HEADER_INTTYPES]) > -AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, > -[AC_TRY_LINK( > -[ > -#if STDC_HEADERS > -# include <stdlib.h> > -#endif > -#if HAVE_INTTYPES_H > -# include <inttypes.h> > -#endif > -], > -[return !$1;], > -bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) > -bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` > -if test $bash_cv_decl_$1 = yes; then > - AC_DEFINE_UNQUOTED($bash_tr_func, 1) > -else > - AC_DEFINE_UNQUOTED($bash_tr_func, 0) > -fi > -]) > - > -AC_DEFUN([BASH_DECL_PRINTF], > -[AC_MSG_CHECKING(for declaration of printf in <stdio.h>) > -AC_CACHE_VAL(bash_cv_printf_declared, > -[AC_TRY_RUN([ > -#include <stdio.h> > -#ifdef __STDC__ > -typedef int (*_bashfunc)(const char *, ...); > -#else > -typedef int (*_bashfunc)(); > -#endif > -main() > -{ > -_bashfunc pf; > -pf = (_bashfunc) printf; > -exit(pf == 0); > -} > -], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, > - [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) > - bash_cv_printf_declared=yes] > -)]) > -AC_MSG_RESULT($bash_cv_printf_declared) > -if test $bash_cv_printf_declared = yes; then > -AC_DEFINE(PRINTF_DECLARED) > -fi > -]) > - > -AC_DEFUN([BASH_DECL_SBRK], > -[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>) > -AC_CACHE_VAL(bash_cv_sbrk_declared, > -[AC_EGREP_HEADER(sbrk, unistd.h, > - bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) > -AC_MSG_RESULT($bash_cv_sbrk_declared) > -if test $bash_cv_sbrk_declared = yes; then > -AC_DEFINE(SBRK_DECLARED) > -fi > -]) > - > -dnl > -dnl Check for sys_siglist[] or _sys_siglist[] > -dnl > -AC_DEFUN([BASH_DECL_UNDER_SYS_SIGLIST], > -[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) > -AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, > -[AC_TRY_COMPILE([ > -#include <sys/types.h> > -#include <signal.h> > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif], [ char *msg = _sys_siglist[2]; ], > - bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, > - [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl > -AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) > -if test $bash_cv_decl_under_sys_siglist = yes; then > -AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) > -fi > -]) > - > -AC_DEFUN([BASH_UNDER_SYS_SIGLIST], > -[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) > -AC_MSG_CHECKING([for _sys_siglist in system C library]) > -AC_CACHE_VAL(bash_cv_under_sys_siglist, > -[AC_TRY_RUN([ > -#include <sys/types.h> > -#include <signal.h> > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif > -#ifndef UNDER_SYS_SIGLIST_DECLARED > -extern char *_sys_siglist[]; > -#endif > -main() > -{ > -char *msg = (char *)_sys_siglist[2]; > -exit(msg == 0); > -}], > - bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, > - [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) > - bash_cv_under_sys_siglist=no])]) > -AC_MSG_RESULT($bash_cv_under_sys_siglist) > -if test $bash_cv_under_sys_siglist = yes; then > -AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) > -fi > -]) > - > -AC_DEFUN([BASH_SYS_SIGLIST], > -[ > -AC_CHECK_DECLS([sys_siglist]) > -AC_MSG_CHECKING([for sys_siglist in system C library]) > -AC_CACHE_VAL(bash_cv_sys_siglist, > -[AC_TRY_RUN([ > -#include <sys/types.h> > -#include <signal.h> > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif > -#ifndef HAVE_DECL_SYS_SIGLIST > -extern char *sys_siglist[]; > -#endif > -main() > -{ > -char *msg = sys_siglist[2]; > -exit(msg == 0); > -}], > - bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, > - [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) > - bash_cv_sys_siglist=no])]) > -AC_MSG_RESULT($bash_cv_sys_siglist) > -if test $bash_cv_sys_siglist = yes; then > -AC_DEFINE(HAVE_SYS_SIGLIST) > -fi > -]) > - > -dnl Check for the various permutations of sys_siglist and make sure we > -dnl compile in siglist.o if they're not defined > -AC_DEFUN([BASH_CHECK_SYS_SIGLIST], [ > -AC_REQUIRE([BASH_SYS_SIGLIST]) > -AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) > -AC_REQUIRE([BASH_FUNC_STRSIGNAL]) > -if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then > - SIGLIST_O=siglist.o > -else > - SIGLIST_O= > -fi > -AC_SUBST([SIGLIST_O]) > -]) > - > -dnl Check for sys_errlist[] and sys_nerr, check for declaration > -AC_DEFUN([BASH_SYS_ERRLIST], > -[AC_MSG_CHECKING([for sys_errlist and sys_nerr]) > -AC_CACHE_VAL(bash_cv_sys_errlist, > -[AC_TRY_LINK([#include <errno.h>], > -[extern char *sys_errlist[]; > - extern int sys_nerr; > - char *msg = sys_errlist[sys_nerr - 1];], > - bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl > -AC_MSG_RESULT($bash_cv_sys_errlist) > -if test $bash_cv_sys_errlist = yes; then > -AC_DEFINE(HAVE_SYS_ERRLIST) > -fi > -]) > - > -dnl > -dnl Check if dup2() does not clear the close on exec flag > -dnl > -AC_DEFUN([BASH_FUNC_DUP2_CLOEXEC_CHECK], > -[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) > -AC_CACHE_VAL(bash_cv_dup2_broken, > -[AC_TRY_RUN([ > -#include <sys/types.h> > -#include <fcntl.h> > -main() > -{ > - int fd1, fd2, fl; > - fd1 = open("/dev/null", 2); > - if (fcntl(fd1, 2, 1) < 0) > - exit(1); > - fd2 = dup2(fd1, 1); > - if (fd2 < 0) > - exit(2); > - fl = fcntl(fd2, 1, 0); > - /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ > - exit(fl != 1); > -} > -], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, > - [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) > - bash_cv_dup2_broken=no]) > -]) > -AC_MSG_RESULT($bash_cv_dup2_broken) > -if test $bash_cv_dup2_broken = yes; then > -AC_DEFINE(DUP2_BROKEN) > -fi > -]) > - > -AC_DEFUN([BASH_FUNC_STRSIGNAL], > -[AC_MSG_CHECKING([for the existence of strsignal]) > -AC_CACHE_VAL(bash_cv_have_strsignal, > -[AC_TRY_LINK([#include <sys/types.h> > -#include <signal.h>], > -[char *s = (char *)strsignal(2);], > - bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) > -AC_MSG_RESULT($bash_cv_have_strsignal) > -if test $bash_cv_have_strsignal = yes; then > -AC_DEFINE(HAVE_STRSIGNAL) > -fi > -]) > - > -dnl Check to see if opendir will open non-directories (not a nice thing) > -AC_DEFUN([BASH_FUNC_OPENDIR_CHECK], > -[AC_REQUIRE([AC_HEADER_DIRENT])dnl > -AC_MSG_CHECKING(if opendir() opens non-directories) > -AC_CACHE_VAL(bash_cv_opendir_not_robust, > -[AC_TRY_RUN([ > -#include <stdio.h> > -#include <sys/types.h> > -#include <fcntl.h> > -#ifdef HAVE_UNISTD_H > -# include <unistd.h> > -#endif /* HAVE_UNISTD_H */ > -#if defined(HAVE_DIRENT_H) > -# include <dirent.h> > -#else > -# define dirent direct > -# ifdef HAVE_SYS_NDIR_H > -# include <sys/ndir.h> > -# endif /* SYSNDIR */ > -# ifdef HAVE_SYS_DIR_H > -# include <sys/dir.h> > -# endif /* SYSDIR */ > -# ifdef HAVE_NDIR_H > -# include <ndir.h> > -# endif > -#endif /* HAVE_DIRENT_H */ > -main() > -{ > -DIR *dir; > -int fd, err; > -err = mkdir("/tmp/bash-aclocal", 0700); > -if (err < 0) { > - perror("mkdir"); > - exit(1); > -} > -unlink("/tmp/bash-aclocal/not_a_directory"); > -fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); > -write(fd, "\n", 1); > -close(fd); > -dir = opendir("/tmp/bash-aclocal/not_a_directory"); > -unlink("/tmp/bash-aclocal/not_a_directory"); > -rmdir("/tmp/bash-aclocal"); > -exit (dir == 0); > -}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, > - [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) > - bash_cv_opendir_not_robust=no] > -)]) > -AC_MSG_RESULT($bash_cv_opendir_not_robust) > -if test $bash_cv_opendir_not_robust = yes; then > -AC_DEFINE(OPENDIR_NOT_ROBUST) > -fi > -]) > - > -dnl > -AH_TEMPLATE([VOID_SIGHANDLER], [Define if signal handlers return type void]) > -AC_DEFUN([BASH_TYPE_SIGHANDLER], > -[AC_MSG_CHECKING([whether signal handlers are of type void]) > -AC_CACHE_VAL(bash_cv_void_sighandler, > -[AC_TRY_COMPILE([#include <sys/types.h> > -#include <signal.h> > -#ifdef signal > -#undef signal > -#endif > -#ifdef __cplusplus > -extern "C" > -#endif > -void (*signal ()) ();], > -[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl > -AC_MSG_RESULT($bash_cv_void_sighandler) > -if test $bash_cv_void_sighandler = yes; then > -AC_DEFINE(VOID_SIGHANDLER) > -fi > -]) > - > -dnl > -dnl A signed 16-bit integer quantity > -dnl > -AC_DEFUN([BASH_TYPE_BITS16_T], > -[ > -if test "$ac_cv_sizeof_short" = 2; then > - AC_CHECK_TYPE(bits16_t, short) > -elif test "$ac_cv_sizeof_char" = 2; then > - AC_CHECK_TYPE(bits16_t, char) > -else > - AC_CHECK_TYPE(bits16_t, short) > -fi > -]) > - > -dnl > -dnl An unsigned 16-bit integer quantity > -dnl > -AC_DEFUN([BASH_TYPE_U_BITS16_T], > -[ > -if test "$ac_cv_sizeof_short" = 2; then > - AC_CHECK_TYPE(u_bits16_t, unsigned short) > -elif test "$ac_cv_sizeof_char" = 2; then > - AC_CHECK_TYPE(u_bits16_t, unsigned char) > -else > - AC_CHECK_TYPE(u_bits16_t, unsigned short) > -fi > -]) > - > -dnl > -dnl A signed 32-bit integer quantity > -dnl > -AC_DEFUN([BASH_TYPE_BITS32_T], > -[ > -if test "$ac_cv_sizeof_int" = 4; then > - AC_CHECK_TYPE(bits32_t, int) > -elif test "$ac_cv_sizeof_long" = 4; then > - AC_CHECK_TYPE(bits32_t, long) > -else > - AC_CHECK_TYPE(bits32_t, int) > -fi > -]) > - > -dnl > -dnl An unsigned 32-bit integer quantity > -dnl > -AC_DEFUN([BASH_TYPE_U_BITS32_T], > -[ > -if test "$ac_cv_sizeof_int" = 4; then > - AC_CHECK_TYPE(u_bits32_t, unsigned int) > -elif test "$ac_cv_sizeof_long" = 4; then > - AC_CHECK_TYPE(u_bits32_t, unsigned long) > -else > - AC_CHECK_TYPE(u_bits32_t, unsigned int) > -fi > -]) > - > -AC_DEFUN([BASH_TYPE_PTRDIFF_T], > -[ > -if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then > - AC_CHECK_TYPE(ptrdiff_t, int) > -elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then > - AC_CHECK_TYPE(ptrdiff_t, long) > -elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then > - AC_CHECK_TYPE(ptrdiff_t, [long long]) > -else > - AC_CHECK_TYPE(ptrdiff_t, int) > -fi > -]) > - > -dnl > -dnl A signed 64-bit quantity > -dnl > -AC_DEFUN([BASH_TYPE_BITS64_T], > -[ > -if test "$ac_cv_sizeof_char_p" = 8; then > - AC_CHECK_TYPE(bits64_t, char *) > -elif test "$ac_cv_sizeof_double" = 8; then > - AC_CHECK_TYPE(bits64_t, double) > -elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then > - AC_CHECK_TYPE(bits64_t, [long long]) > -elif test "$ac_cv_sizeof_long" = 8; then > - AC_CHECK_TYPE(bits64_t, long) > -else > - AC_CHECK_TYPE(bits64_t, double) > -fi > -]) > - > -AC_DEFUN([BASH_TYPE_LONG_LONG], > -[ > -AC_CACHE_CHECK([for long long], bash_cv_type_long_long, > -[AC_TRY_LINK([ > -long long ll = 1; int i = 63;], > -[ > -long long llm = (long long) -1; > -return ll << i | ll >> i | llm / ll | llm % ll; > -], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) > -if test "$bash_cv_type_long_long" = 'long long'; then > - AC_DEFINE(HAVE_LONG_LONG, 1) > -fi > -]) > - > -AC_DEFUN([BASH_TYPE_UNSIGNED_LONG_LONG], > -[ > -AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, > -[AC_TRY_LINK([ > -unsigned long long ull = 1; int i = 63;], > -[ > -unsigned long long ullmax = (unsigned long long) -1; > -return ull << i | ull >> i | ullmax / ull | ullmax % ull; > -], bash_cv_type_unsigned_long_long='unsigned long long', > - bash_cv_type_unsigned_long_long='unsigned long')]) > -if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then > - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) > -fi > -]) > - > -dnl > -dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) > -dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use > -dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify > -dnl matters, this just checks for rlim_t, quad_t, or long. > -dnl > -AC_DEFUN([BASH_TYPE_RLIMIT], > -[AC_MSG_CHECKING(for size and type of struct rlimit fields) > -AC_CACHE_VAL(bash_cv_type_rlimit, > -[AC_TRY_COMPILE([#include <sys/types.h> > -#include <sys/resource.h>], > -[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ > -AC_TRY_RUN([ > -#include <sys/types.h> > -#include <sys/time.h> > -#include <sys/resource.h> > -main() > -{ > -#ifdef HAVE_QUAD_T > - struct rlimit rl; > - if (sizeof(rl.rlim_cur) == sizeof(quad_t)) > - exit(0); > -#endif > - exit(1); > -}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, > - [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) > - bash_cv_type_rlimit=long])]) > -]) > -AC_MSG_RESULT($bash_cv_type_rlimit) > -if test $bash_cv_type_rlimit = quad_t; then > -AC_DEFINE(RLIMTYPE, quad_t) > -elif test $bash_cv_type_rlimit = rlim_t; then > -AC_DEFINE(RLIMTYPE, rlim_t) > -fi > -]) > - > -AC_DEFUN([BASH_FUNC_LSTAT], > -[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an > -dnl inline function in <sys/stat.h>. > -AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, > -[AC_TRY_LINK([ > -#include <sys/types.h> > -#include <sys/stat.h> > -],[ lstat(".",(struct stat *)0); ], > -bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) > -if test $bash_cv_func_lstat = yes; then > - AC_DEFINE(HAVE_LSTAT) > -fi > -]) > - > -AC_DEFUN([BASH_FUNC_INET_ATON], > -[ > -AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, > -[AC_TRY_LINK([ > -#include <sys/types.h> > -#include <netinet/in.h> > -#include <arpa/inet.h> > -struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], > -bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) > -if test $bash_cv_func_inet_aton = yes; then > - AC_DEFINE(HAVE_INET_ATON) > -else > - AC_LIBOBJ(inet_aton) > -fi > -]) > - > -AC_DEFUN([BASH_FUNC_GETENV], > -[AC_MSG_CHECKING(to see if getenv can be redefined) > -AC_CACHE_VAL(bash_cv_getenv_redef, > -[AC_TRY_RUN([ > -#ifdef HAVE_UNISTD_H > -# include <unistd.h> > -#endif > -#ifndef __STDC__ > -# ifndef const > -# define const > -# endif > -#endif > -char * > -getenv (name) > -#if defined (__linux__) || defined (__bsdi__) || defined (convex) > - const char *name; > -#else > - char const *name; > -#endif /* !__linux__ && !__bsdi__ && !convex */ > -{ > -return "42"; > -} > -main() > -{ > -char *s; > -/* The next allows this program to run, but does not allow bash to link > - when it redefines getenv. I'm not really interested in figuring out > - why not. */ > -#if defined (NeXT) > -exit(1); > -#endif > -s = getenv("ABCDE"); > -exit(s == 0); /* force optimizer to leave getenv in */ > -} > -], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, > - [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) > - bash_cv_getenv_redef=yes] > -)]) > -AC_MSG_RESULT($bash_cv_getenv_redef) > -if test $bash_cv_getenv_redef = yes; then > -AC_DEFINE(CAN_REDEFINE_GETENV) > -fi > -]) > - > -# We should check for putenv before calling this > -AC_DEFUN([BASH_FUNC_STD_PUTENV], > -[ > -AC_REQUIRE([AC_HEADER_STDC]) > -AC_REQUIRE([AC_C_PROTOTYPES]) > -AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, > -[AC_TRY_LINK([ > -#if STDC_HEADERS > -#include <stdlib.h> > -#include <stddef.h> > -#endif > -#ifndef __STDC__ > -# ifndef const > -# define const > -# endif > -#endif > -#ifdef PROTOTYPES > -extern int putenv (char *); > -#else > -extern int putenv (); > -#endif > -], > -[return (putenv == 0);], > -bash_cv_std_putenv=yes, bash_cv_std_putenv=no > -)]) > -if test $bash_cv_std_putenv = yes; then > -AC_DEFINE(HAVE_STD_PUTENV) > -fi > -]) > - > -# We should check for unsetenv before calling this > -AC_DEFUN([BASH_FUNC_STD_UNSETENV], > -[ > -AC_REQUIRE([AC_HEADER_STDC]) > -AC_REQUIRE([AC_C_PROTOTYPES]) > -AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, > -[AC_TRY_LINK([ > -#if STDC_HEADERS > -#include <stdlib.h> > -#include <stddef.h> > -#endif > -#ifndef __STDC__ > -# ifndef const > -# define const > -# endif > -#endif > -#ifdef PROTOTYPES > -extern int unsetenv (const char *); > -#else > -extern int unsetenv (); > -#endif > -], > -[return (unsetenv == 0);], > -bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no > -)]) > -if test $bash_cv_std_unsetenv = yes; then > -AC_DEFINE(HAVE_STD_UNSETENV) > -fi > -]) > - > -AC_DEFUN([BASH_FUNC_ULIMIT_MAXFDS], > -[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) > -AC_CACHE_VAL(bash_cv_ulimit_maxfds, > -[AC_TRY_RUN([ > -main() > -{ > -long maxfds = ulimit(4, 0L); > -exit (maxfds == -1L); > -} > -], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, > - [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) > - bash_cv_ulimit_maxfds=no] > -)]) > -AC_MSG_RESULT($bash_cv_ulimit_maxfds) > -if test $bash_cv_ulimit_maxfds = yes; then > -AC_DEFINE(ULIMIT_MAXFDS) > -fi > -]) > - > -AC_DEFUN([BASH_FUNC_GETCWD], > -[AC_MSG_CHECKING([if getcwd() calls popen()]) > -AC_CACHE_VAL(bash_cv_getcwd_calls_popen, > -[AC_TRY_RUN([ > -#include <stdio.h> > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif > - > -#ifndef __STDC__ > -#ifndef const > -#define const > -#endif > -#endif > - > -int popen_called; > - > -FILE * > -popen(command, type) > - const char *command; > - const char *type; > -{ > - popen_called = 1; > - return (FILE *)NULL; > -} > - > -FILE *_popen(command, type) > - const char *command; > - const char *type; > -{ > - return (popen (command, type)); > -} > - > -int > -pclose(stream) > -FILE *stream; > -{ > - return 0; > -} > - > -int > -_pclose(stream) > -FILE *stream; > -{ > - return 0; > -} > - > -main() > -{ > - char lbuf[32]; > - popen_called = 0; > - getcwd(lbuf, 32); > - exit (popen_called); > -} > -], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, > - [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) > - bash_cv_getcwd_calls_popen=no] > -)]) > -AC_MSG_RESULT($bash_cv_getcwd_calls_popen) > -if test $bash_cv_getcwd_calls_popen = yes; then > -AC_DEFINE(GETCWD_BROKEN) > -AC_LIBOBJ(getcwd) > -fi > -]) > - > -dnl > -dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every > -dnl system, we can't use AC_PREREQ > -dnl > -AC_DEFUN([BASH_FUNC_GETHOSTBYNAME], > -[if test "X$bash_cv_have_gethostbyname" = "X"; then > -_bash_needmsg=yes > -else > -AC_MSG_CHECKING(for gethostbyname in socket library) > -_bash_needmsg= > -fi > -AC_CACHE_VAL(bash_cv_have_gethostbyname, > -[AC_TRY_LINK([#include <netdb.h>], > -[ struct hostent *hp; > - hp = gethostbyname("localhost"); > -], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] > -) > -if test "X$_bash_needmsg" = Xyes; then > - AC_MSG_CHECKING(for gethostbyname in socket library) > -fi > -AC_MSG_RESULT($bash_cv_have_gethostbyname) > -if test "$bash_cv_have_gethostbyname" = yes; then > -AC_DEFINE(HAVE_GETHOSTBYNAME) > -fi > -]) > - > -AC_DEFUN([BASH_FUNC_FNMATCH_EXTMATCH], > -[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) > -AC_CACHE_VAL(bash_cv_fnm_extmatch, > -[AC_TRY_RUN([ > -#include <fnmatch.h> > - > -main() > -{ > -#ifdef FNM_EXTMATCH > - exit (0); > -#else > - exit (1); > -#endif > -} > -], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, > - [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) > - bash_cv_fnm_extmatch=no]) > -]) > -AC_MSG_RESULT($bash_cv_fnm_extmatch) > -if test $bash_cv_fnm_extmatch = yes; then > -AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) > -fi > -]) > - > -AH_TEMPLATE([HAVE_POSIX_SIGSETJMP], [Define if we POSIX-style sigsetjmp/siglongjmp are available]) > -AC_DEFUN([BASH_FUNC_POSIX_SETJMP], > -[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > -AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) > -AC_CACHE_VAL(bash_cv_func_sigsetjmp, > -[AC_TRY_RUN([ > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif > -#include <sys/types.h> > -#include <signal.h> > -#include <setjmp.h> > - > -main() > -{ > -#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) > -exit (1); > -#else > - > -int code; > -sigset_t set, oset; > -sigjmp_buf xx; > - > -/* get the mask */ > -sigemptyset(&set); > -sigemptyset(&oset); > -sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); > -sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); > - > -/* save it */ > -code = sigsetjmp(xx, 1); > -if (code) > - exit(0); /* could get sigmask and compare to oset here. */ > - > -/* change it */ > -sigaddset(&set, SIGINT); > -sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); > - > -/* and siglongjmp */ > -siglongjmp(xx, 10); > -exit(1); > -#endif > -}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, > - [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) > - bash_cv_func_sigsetjmp=missing] > -)]) > -AC_MSG_RESULT($bash_cv_func_sigsetjmp) > -if test $bash_cv_func_sigsetjmp = present; then > -AC_DEFINE(HAVE_POSIX_SIGSETJMP) > -fi > -]) > - > -AH_TEMPLATE([STRCOLL_BROKEN], [Define if strcoll is broken with respect to strcmp in the default locale.]) > -AC_DEFUN([BASH_FUNC_STRCOLL], > -[ > -AC_MSG_CHECKING(whether or not strcoll and strcmp differ) > -AC_CACHE_VAL(bash_cv_func_strcoll_broken, > -[AC_TRY_RUN([ > -#include <stdio.h> > -#if defined (HAVE_LOCALE_H) > -#include <locale.h> > -#endif > - > -main(c, v) > -int c; > -char *v[]; > -{ > - int r1, r2; > - char *deflocale, *defcoll; > - > -#ifdef HAVE_SETLOCALE > - deflocale = setlocale(LC_ALL, ""); > - defcoll = setlocale(LC_COLLATE, ""); > -#endif > - > -#ifdef HAVE_STRCOLL > - /* These two values are taken from tests/glob-test. */ > - r1 = strcoll("abd", "aXd"); > -#else > - r1 = 0; > -#endif > - r2 = strcmp("abd", "aXd"); > - > - /* These two should both be greater than 0. It is permissible for > - a system to return different values, as long as the sign is the > - same. */ > - > - /* Exit with 1 (failure) if these two values are both > 0, since > - this tests whether strcoll(3) is broken with respect to strcmp(3) > - in the default locale. */ > - exit (r1 > 0 && r2 > 0); > -} > -], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, > - [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) > - bash_cv_func_strcoll_broken=no] > -)]) > -AC_MSG_RESULT($bash_cv_func_strcoll_broken) > -if test $bash_cv_func_strcoll_broken = yes; then > -AC_DEFINE(STRCOLL_BROKEN) > -fi > -]) > - > -AC_DEFUN([BASH_FUNC_PRINTF_A_FORMAT], > -[AC_MSG_CHECKING([for printf floating point output in hex notation]) > -AC_CACHE_VAL(bash_cv_printf_a_format, > -[AC_TRY_RUN([ > -#include <stdio.h> > -#include <string.h> > - > -int > -main() > -{ > - double y = 0.0; > - char abuf[1024]; > - > - sprintf(abuf, "%A", y); > - exit(strchr(abuf, 'P') == (char *)0); > -} > -], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, > - [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) > - bash_cv_printf_a_format=no] > -)]) > -AC_MSG_RESULT($bash_cv_printf_a_format) > -if test $bash_cv_printf_a_format = yes; then > -AC_DEFINE(HAVE_PRINTF_A_FORMAT) > -fi > -]) > - > -AC_DEFUN([BASH_STRUCT_TERMIOS_LDISC], > -[ > -AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ > -#include <sys/types.h> > -#include <termios.h> > -]) > -]) > - > -AC_DEFUN([BASH_STRUCT_TERMIO_LDISC], > -[ > -AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ > -#include <sys/types.h> > -#include <termio.h> > -]) > -]) > - > -dnl > -dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS > -dnl > -dnl sets bash_cv_struct_stat_st_blocks > -dnl > -dnl unused for now; we'll see how AC_CHECK_MEMBERS works > -dnl > -AC_DEFUN([BASH_STRUCT_ST_BLOCKS], > -[ > -AC_MSG_CHECKING([for struct stat.st_blocks]) > -AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, > -[AC_TRY_COMPILE( > -[ > -#include <sys/types.h> > -#include <sys/stat.h> > -], > -[ > -main() > -{ > -static struct stat a; > -if (a.st_blocks) return 0; > -return 0; > -} > -], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) > -]) > -AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) > -if test "$bash_cv_struct_stat_st_blocks" = "yes"; then > -AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) > -fi > -]) > - > -AC_DEFUN([BASH_CHECK_LIB_TERMCAP], > -[ > -if test "X$bash_cv_termcap_lib" = "X"; then > -_bash_needmsg=yes > -else > -AC_MSG_CHECKING(which library has the termcap functions) > -_bash_needmsg= > -fi > -AC_CACHE_VAL(bash_cv_termcap_lib, > -[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, > - [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, > - [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, > - [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, > - bash_cv_termcap_lib=gnutermcap)])])])]) > -if test "X$_bash_needmsg" = "Xyes"; then > -AC_MSG_CHECKING(which library has the termcap functions) > -fi > -AC_MSG_RESULT(using $bash_cv_termcap_lib) > -if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then > -LDFLAGS="$LDFLAGS -L./lib/termcap" > -TERMCAP_LIB="./lib/termcap/libtermcap.a" > -TERMCAP_DEP="./lib/termcap/libtermcap.a" > -elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then > -TERMCAP_LIB=-ltermcap > -TERMCAP_DEP= > -elif test $bash_cv_termcap_lib = libtinfo; then > -TERMCAP_LIB=-ltinfo > -TERMCAP_DEP= > -elif test $bash_cv_termcap_lib = libncurses; then > -TERMCAP_LIB=-lncurses > -TERMCAP_DEP= > -else > -TERMCAP_LIB=-lcurses > -TERMCAP_DEP= > -fi > -]) > - > -dnl > -dnl Check for the presence of getpeername in libsocket. > -dnl If libsocket is present, check for libnsl and add it to LIBS if > -dnl it's there, since most systems with libsocket require linking > -dnl with libnsl as well. This should only be called if getpeername > -dnl was not found in libc. > -dnl > -dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT > -dnl AS WELL > -dnl > -AC_DEFUN([BASH_CHECK_LIB_SOCKET], > -[ > -if test "X$bash_cv_have_socklib" = "X"; then > -_bash_needmsg= > -else > -AC_MSG_CHECKING(for socket library) > -_bash_needmsg=yes > -fi > -AC_CACHE_VAL(bash_cv_have_socklib, > -[AC_CHECK_LIB(socket, getpeername, > - bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) > -if test "X$_bash_needmsg" = Xyes; then > - AC_MSG_RESULT($bash_cv_have_socklib) > - _bash_needmsg= > -fi > -if test $bash_cv_have_socklib = yes; then > - # check for libnsl, add it to LIBS if present > - if test "X$bash_cv_have_libnsl" = "X"; then > - _bash_needmsg= > - else > - AC_MSG_CHECKING(for libnsl) > - _bash_needmsg=yes > - fi > - AC_CACHE_VAL(bash_cv_have_libnsl, > - [AC_CHECK_LIB(nsl, t_open, > - bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) > - if test "X$_bash_needmsg" = Xyes; then > - AC_MSG_RESULT($bash_cv_have_libnsl) > - _bash_needmsg= > - fi > - if test $bash_cv_have_libnsl = yes; then > - LIBS="-lsocket -lnsl $LIBS" > - else > - LIBS="-lsocket $LIBS" > - fi > - AC_DEFINE(HAVE_LIBSOCKET) > - AC_DEFINE(HAVE_GETPEERNAME) > -fi > -]) > - > -AH_TEMPLATE([STRUCT_DIRENT_HAS_D_INO], [Define if struct dirent has a d_ino member]) > -AC_DEFUN([BASH_STRUCT_DIRENT_D_INO], > -[AC_REQUIRE([AC_HEADER_DIRENT]) > -AC_MSG_CHECKING(if struct dirent has a d_ino member) > -AC_CACHE_VAL(bash_cv_dirent_has_dino, > -[AC_TRY_COMPILE([ > -#include <stdio.h> > -#include <sys/types.h> > -#ifdef HAVE_UNISTD_H > -# include <unistd.h> > -#endif /* HAVE_UNISTD_H */ > -#if defined(HAVE_DIRENT_H) > -# include <dirent.h> > -#else > -# define dirent direct > -# ifdef HAVE_SYS_NDIR_H > -# include <sys/ndir.h> > -# endif /* SYSNDIR */ > -# ifdef HAVE_SYS_DIR_H > -# include <sys/dir.h> > -# endif /* SYSDIR */ > -# ifdef HAVE_NDIR_H > -# include <ndir.h> > -# endif > -#endif /* HAVE_DIRENT_H */ > -],[ > -struct dirent d; int z; z = d.d_ino; > -], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) > -AC_MSG_RESULT($bash_cv_dirent_has_dino) > -if test $bash_cv_dirent_has_dino = yes; then > -AC_DEFINE(STRUCT_DIRENT_HAS_D_INO) > -fi > -]) > - > -AH_TEMPLATE([STRUCT_DIRENT_HAS_D_FILENO], [Define if struct dirent has a d_fileno member]) > -AC_DEFUN([BASH_STRUCT_DIRENT_D_FILENO], > -[AC_REQUIRE([AC_HEADER_DIRENT]) > -AC_MSG_CHECKING(if struct dirent has a d_fileno member) > -AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, > -[AC_TRY_COMPILE([ > -#include <stdio.h> > -#include <sys/types.h> > -#ifdef HAVE_UNISTD_H > -# include <unistd.h> > -#endif /* HAVE_UNISTD_H */ > -#if defined(HAVE_DIRENT_H) > -# include <dirent.h> > -#else > -# define dirent direct > -# ifdef HAVE_SYS_NDIR_H > -# include <sys/ndir.h> > -# endif /* SYSNDIR */ > -# ifdef HAVE_SYS_DIR_H > -# include <sys/dir.h> > -# endif /* SYSDIR */ > -# ifdef HAVE_NDIR_H > -# include <ndir.h> > -# endif > -#endif /* HAVE_DIRENT_H */ > -],[ > -struct dirent d; int z; z = d.d_fileno; > -], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) > -AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) > -if test $bash_cv_dirent_has_d_fileno = yes; then > -AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO) > -fi > -]) > - > -AC_DEFUN([BASH_STRUCT_TIMEVAL], > -[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) > -AC_CACHE_VAL(bash_cv_struct_timeval, > -[ > -AC_EGREP_HEADER(struct timeval, sys/time.h, > - bash_cv_struct_timeval=yes, > - AC_EGREP_HEADER(struct timeval, time.h, > - bash_cv_struct_timeval=yes, > - bash_cv_struct_timeval=no)) > -]) > -AC_MSG_RESULT($bash_cv_struct_timeval) > -if test $bash_cv_struct_timeval = yes; then > - AC_DEFINE(HAVE_TIMEVAL) > -fi > -]) > - > -AH_TEMPLATE([STRUCT_WINSIZE_IN_SYS_IOCTL], [Define if struct winsize is in sys/ioctl.h]) > -AH_TEMPLATE([STRUCT_WINSIZE_IN_TERMIOS], [Define if struct winsize is in termios.h]) > -AC_DEFUN([BASH_STRUCT_WINSIZE], > -[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) > -AC_CACHE_VAL(bash_cv_struct_winsize_header, > -[AC_TRY_COMPILE([#include <sys/types.h> > -#include <sys/ioctl.h>], [struct winsize x;], > - bash_cv_struct_winsize_header=ioctl_h, > - [AC_TRY_COMPILE([#include <sys/types.h> > -#include <termios.h>], [struct winsize x;], > - bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) > -])]) > -if test $bash_cv_struct_winsize_header = ioctl_h; then > - AC_MSG_RESULT(sys/ioctl.h) > - AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) > -elif test $bash_cv_struct_winsize_header = termios_h; then > - AC_MSG_RESULT(termios.h) > - AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) > -else > - AC_MSG_RESULT(not found) > -fi > -]) > - > -dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) > -AH_TEMPLATE([HAVE_POSIX_SIGNALS], [Define if we have the POSIX signal routines]) > -AH_TEMPLATE([HAVE_BSD_SIGNALS], [Define if we have the BSD signal routines]) > -AH_TEMPLATE([HAVE_USG_SIGHOLD], [Define if we have the USG signal routines]) > -AC_DEFUN([BASH_SYS_SIGNAL_VINTAGE], > -[AC_REQUIRE([AC_TYPE_SIGNAL]) > -AC_MSG_CHECKING(for type of signal functions) > -AC_CACHE_VAL(bash_cv_signal_vintage, > -[ > - AC_MSG_WARN([checking for posix...]) > - AC_TRY_LINK([#include <signal.h>],[ > - sigset_t ss; > - struct sigaction sa; > - sigemptyset(&ss); sigsuspend(&ss); > - sigaction(SIGINT, &sa, (struct sigaction *) 0); > - sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); > - ], bash_cv_signal_vintage="posix", > - [ > - AC_MSG_WARN([checking for 4.2bsd...]) > - AC_TRY_LINK([#include <signal.h>], [ > - int mask = sigmask(SIGINT); > - sigsetmask(mask); sigblock(mask); sigpause(mask); > - ], bash_cv_signal_vintage="4.2bsd", > - [ > - AC_MSG_WARN([checking for svr3...]) > - AC_TRY_LINK([ > - #include <signal.h> > - RETSIGTYPE foo() { }], [ > - int mask = sigmask(SIGINT); > - sigset(SIGINT, foo); sigrelse(SIGINT); > - sighold(SIGINT); sigpause(SIGINT); > - ], bash_cv_signal_vintage="svr3", bash_cv_signal_vintage="v7" > - )] > - )] > -) > -]) > -AC_MSG_RESULT($bash_cv_signal_vintage) > -if test "$bash_cv_signal_vintage" = "posix"; then > -AC_DEFINE(HAVE_POSIX_SIGNALS) > -elif test "$bash_cv_signal_vintage" = "4.2bsd"; then > -AC_DEFINE(HAVE_BSD_SIGNALS) > -elif test "$bash_cv_signal_vintage" = "svr3"; then > -AC_DEFINE(HAVE_USG_SIGHOLD) > -fi > -]) > - > -dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. > -AC_DEFUN([BASH_SYS_PGRP_SYNC], > -[AC_REQUIRE([AC_FUNC_GETPGRP]) > -AC_MSG_CHECKING(whether pgrps need synchronization) > -AC_CACHE_VAL(bash_cv_pgrp_pipe, > -[AC_TRY_RUN([ > -#ifdef HAVE_UNISTD_H > -# include <unistd.h> > -#endif > -main() > -{ > -# ifdef GETPGRP_VOID > -# define getpgID() getpgrp() > -# else > -# define getpgID() getpgrp(0) > -# define setpgid(x,y) setpgrp(x,y) > -# endif > - int pid1, pid2, fds[2]; > - int status; > - char ok; > - > - switch (pid1 = fork()) { > - case -1: > - exit(1); > - case 0: > - setpgid(0, getpid()); > - exit(0); > - } > - setpgid(pid1, pid1); > - > - sleep(2); /* let first child die */ > - > - if (pipe(fds) < 0) > - exit(2); > - > - switch (pid2 = fork()) { > - case -1: > - exit(3); > - case 0: > - setpgid(0, pid1); > - ok = getpgID() == pid1; > - write(fds[1], &ok, 1); > - exit(0); > - } > - setpgid(pid2, pid1); > - > - close(fds[1]); > - if (read(fds[0], &ok, 1) != 1) > - exit(4); > - wait(&status); > - wait(&status); > - exit(ok ? 0 : 5); > -} > -], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, > - [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) > - bash_cv_pgrp_pipe=no]) > -]) > -AC_MSG_RESULT($bash_cv_pgrp_pipe) > -if test $bash_cv_pgrp_pipe = yes; then > -AC_DEFINE(PGRP_PIPE) > -fi > -]) > - > -AH_TEMPLATE([MUST_REINSTALL_SIGHANDLERS], [Define if signal handlers must be reinstalled when invoked.]) > -AC_DEFUN([BASH_SYS_REINSTALL_SIGHANDLERS], > -[AC_REQUIRE([AC_TYPE_SIGNAL]) > -AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > -AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) > -AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, > -[AC_TRY_RUN([ > -#include <signal.h> > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif > - > -typedef RETSIGTYPE sigfunc(); > - > -int nsigint; > - > -#ifdef HAVE_POSIX_SIGNALS > -sigfunc * > -set_signal_handler(sig, handler) > - int sig; > - sigfunc *handler; > -{ > - struct sigaction act, oact; > - act.sa_handler = handler; > - act.sa_flags = 0; > - sigemptyset (&act.sa_mask); > - sigemptyset (&oact.sa_mask); > - sigaction (sig, &act, &oact); > - return (oact.sa_handler); > -} > -#else > -#define set_signal_handler(s, h) signal(s, h) > -#endif > - > -RETSIGTYPE > -sigint(s) > -int s; > -{ > - nsigint++; > -} > - > -main() > -{ > - nsigint = 0; > - set_signal_handler(SIGINT, sigint); > - kill((int)getpid(), SIGINT); > - kill((int)getpid(), SIGINT); > - exit(nsigint != 2); > -} > -], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, > - [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) > - bash_cv_must_reinstall_sighandlers=no] > -)]) > -AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) > -if test $bash_cv_must_reinstall_sighandlers = yes; then > -AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) > -fi > -]) > - > -dnl check that some necessary job control definitions are present > -AC_DEFUN([BASH_SYS_JOB_CONTROL_MISSING], > -[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > -AC_MSG_CHECKING(for presence of necessary job control definitions) > -AC_CACHE_VAL(bash_cv_job_control_missing, > -[AC_TRY_RUN([ > -#include <sys/types.h> > -#ifdef HAVE_SYS_WAIT_H > -#include <sys/wait.h> > -#endif > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif > -#include <signal.h> > - > -/* Add more tests in here as appropriate. */ > -main() > -{ > -/* signal type */ > -#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) > -exit(1); > -#endif > - > -/* signals and tty control. */ > -#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) > -exit (1); > -#endif > - > -/* process control */ > -#if !defined (WNOHANG) || !defined (WUNTRACED) > -exit(1); > -#endif > - > -/* Posix systems have tcgetpgrp and waitpid. */ > -#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) > -exit(1); > -#endif > - > -#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) > -exit(1); > -#endif > - > -/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ > -#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) > -exit(1); > -#endif > - > -exit(0); > -}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, > - [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) > - bash_cv_job_control_missing=missing] > -)]) > -AC_MSG_RESULT($bash_cv_job_control_missing) > -if test $bash_cv_job_control_missing = missing; then > -AC_DEFINE(JOB_CONTROL_MISSING) > -fi > -]) > - > -dnl check whether named pipes are present > -dnl this requires a previous check for mkfifo, but that is awkward to specify > -AC_DEFUN([BASH_SYS_NAMED_PIPES], > -[AC_MSG_CHECKING(for presence of named pipes) > -AC_CACHE_VAL(bash_cv_sys_named_pipes, > -[AC_TRY_RUN([ > -#include <sys/types.h> > -#include <sys/stat.h> > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif > - > -/* Add more tests in here as appropriate. */ > -main() > -{ > -int fd, err; > - > -#if defined (HAVE_MKFIFO) > -exit (0); > -#endif > - > -#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) > -exit (1); > -#endif > - > -#if defined (NeXT) > -exit (1); > -#endif > -err = mkdir("/tmp/bash-aclocal", 0700); > -if (err < 0) { > - perror ("mkdir"); > - exit(1); > -} > -fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); > -if (fd == -1) { > - rmdir ("/tmp/bash-aclocal"); > - exit (1); > -} > -close(fd); > -unlink ("/tmp/bash-aclocal/sh-np-autoconf"); > -rmdir ("/tmp/bash-aclocal"); > -exit(0); > -}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, > - [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) > - bash_cv_sys_named_pipes=missing] > -)]) > -AC_MSG_RESULT($bash_cv_sys_named_pipes) > -if test $bash_cv_sys_named_pipes = missing; then > -AC_DEFINE(NAMED_PIPES_MISSING) > -fi > -]) > - > -AC_DEFUN([BASH_SYS_DEFAULT_MAIL_DIR], > -[AC_MSG_CHECKING(for default mail directory) > -AC_CACHE_VAL(bash_cv_mail_dir, > -[if test -d /var/mail; then > - bash_cv_mail_dir=/var/mail > - elif test -d /var/spool/mail; then > - bash_cv_mail_dir=/var/spool/mail > - elif test -d /usr/mail; then > - bash_cv_mail_dir=/usr/mail > - elif test -d /usr/spool/mail; then > - bash_cv_mail_dir=/usr/spool/mail > - else > - bash_cv_mail_dir=unknown > - fi > -]) > -AC_MSG_RESULT($bash_cv_mail_dir) > -AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") > -]) > - > -AC_DEFUN([BASH_HAVE_TIOCGWINSZ], > -[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) > -AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, > -[AC_TRY_COMPILE([#include <sys/types.h> > -#include <sys/ioctl.h>], [int x = TIOCGWINSZ;], > - bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) > -AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) > -if test $bash_cv_tiocgwinsz_in_ioctl = yes; then > -AC_DEFINE(GWINSZ_IN_SYS_IOCTL) > -fi > -]) > - > -AH_TEMPLATE([TIOCSTAT_IN_SYS_IOCTL], [Define if TIOCSTAT is in sys/ioctl.h]) > -AC_DEFUN([BASH_HAVE_TIOCSTAT], > -[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) > -AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, > -[AC_TRY_COMPILE([#include <sys/types.h> > -#include <sys/ioctl.h>], [int x = TIOCSTAT;], > - bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) > -AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) > -if test $bash_cv_tiocstat_in_ioctl = yes; then > -AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) > -fi > -]) > - > -AH_TEMPLATE([FIONREAD_IN_SYS_IOCTL], [Define if FIONREAD is in sys/ioctl.h]) > -AC_DEFUN([BASH_HAVE_FIONREAD], > -[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) > -AC_CACHE_VAL(bash_cv_fionread_in_ioctl, > -[AC_TRY_COMPILE([#include <sys/types.h> > -#include <sys/ioctl.h>], [int x = FIONREAD;], > - bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) > -AC_MSG_RESULT($bash_cv_fionread_in_ioctl) > -if test $bash_cv_fionread_in_ioctl = yes; then > -AC_DEFINE(FIONREAD_IN_SYS_IOCTL) > -fi > -]) > - > -dnl > -dnl See if speed_t is declared in <sys/types.h>. Some versions of linux > -dnl require a definition of speed_t each time <termcap.h> is included, > -dnl but you can only get speed_t if you include <termios.h> (on some > -dnl versions) or <sys/types.h> (on others). > -dnl > -AH_TEMPLATE([SPEED_T_IN_SYS_TYPES], [Define if speed_t is in sys/types.h]) > -AC_DEFUN([BASH_CHECK_SPEED_T], > -[AC_MSG_CHECKING(for speed_t in sys/types.h) > -AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, > -[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;], > - bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) > -AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) > -if test $bash_cv_speed_t_in_sys_types = yes; then > -AC_DEFINE(SPEED_T_IN_SYS_TYPES) > -fi > -]) > - > -AH_TEMPLATE([HAVE_GETPW_DECLS], [Define if getpw functions are declared in pwd.h]) > -AC_DEFUN([BASH_CHECK_GETPW_FUNCS], > -[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h) > -AC_CACHE_VAL(bash_cv_getpw_declared, > -[AC_EGREP_CPP(getpwuid, > -[ > -#include <sys/types.h> > -#ifdef HAVE_UNISTD_H > -# include <unistd.h> > -#endif > -#include <pwd.h> > -], > -bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)]) > -AC_MSG_RESULT($bash_cv_getpw_declared) > -if test $bash_cv_getpw_declared = yes; then > -AC_DEFINE(HAVE_GETPW_DECLS) > -fi > -]) > - > -AC_DEFUN([BASH_CHECK_DEV_FD], > -[AC_MSG_CHECKING(whether /dev/fd is available) > -AC_CACHE_VAL(bash_cv_dev_fd, > -[if test -d /dev/fd && test -r /dev/fd/0; then > - bash_cv_dev_fd=standard > - elif test -d /proc/self/fd && test -r /proc/self/fd/0; then > - bash_cv_dev_fd=whacky > - else > - bash_cv_dev_fd=absent > - fi > -]) > -AC_MSG_RESULT($bash_cv_dev_fd) > -if test $bash_cv_dev_fd = "standard"; then > - AC_DEFINE(HAVE_DEV_FD) > - AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/") > -elif test $bash_cv_dev_fd = "whacky"; then > - AC_DEFINE(HAVE_DEV_FD) > - AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/") > -fi > -]) > - > -AC_DEFUN([BASH_CHECK_DEV_STDIN], > -[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) > -AC_CACHE_VAL(bash_cv_dev_stdin, > -[if test -d /dev/fd && test -r /dev/stdin; then > - bash_cv_dev_stdin=present > - elif test -d /proc/self/fd && test -r /dev/stdin; then > - bash_cv_dev_stdin=present > - else > - bash_cv_dev_stdin=absent > - fi > -]) > -AC_MSG_RESULT($bash_cv_dev_stdin) > -if test $bash_cv_dev_stdin = "present"; then > - AC_DEFINE(HAVE_DEV_STDIN) > -fi > -]) > - > -dnl > -dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions > -dnl > -AC_DEFUN([BASH_CHECK_KERNEL_RLIMIT], > -[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) > -AC_CACHE_VAL(bash_cv_kernel_rlimit, > -[AC_TRY_COMPILE([ > -#include <sys/types.h> > -#include <sys/resource.h> > -], > -[ > - int f; > - f = RLIMIT_DATA; > -], bash_cv_kernel_rlimit=no, > -[AC_TRY_COMPILE([ > -#include <sys/types.h> > -#define _KERNEL > -#include <sys/resource.h> > -#undef _KERNEL > -], > -[ > - int f; > - f = RLIMIT_DATA; > -], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] > -)]) > -AC_MSG_RESULT($bash_cv_kernel_rlimit) > -if test $bash_cv_kernel_rlimit = yes; then > -AC_DEFINE(RLIMIT_NEEDS_KERNEL) > -fi > -]) > - > -dnl > -dnl Check for 64-bit off_t -- used for malloc alignment > -dnl > -dnl C does not allow duplicate case labels, so the compile will fail if > -dnl sizeof(off_t) is > 4. > -dnl > -AC_DEFUN([BASH_CHECK_OFF_T_64], > -[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, > -AC_TRY_COMPILE([ > -#ifdef HAVE_UNISTD_H > -#include <unistd.h> > -#endif > -#include <sys/types.h> > -],[ > -switch (0) case 0: case (sizeof (off_t) <= 4):; > -], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) > -if test $bash_cv_off_t_64 = yes; then > - AC_DEFINE(HAVE_OFF_T_64) > -fi]) > - > -AC_DEFUN([BASH_CHECK_RTSIGS], > -[AC_MSG_CHECKING(for unusable real-time signals due to large values) > -AC_CACHE_VAL(bash_cv_unusable_rtsigs, > -[AC_TRY_RUN([ > -#include <sys/types.h> > -#include <signal.h> > - > -#ifndef NSIG > -# define NSIG 64 > -#endif > - > -main () > -{ > - int n_sigs = 2 * NSIG; > -#ifdef SIGRTMIN > - int rtmin = SIGRTMIN; > -#else > - int rtmin = 0; > -#endif > - > - exit(rtmin < n_sigs); > -}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, > - [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) > - bash_cv_unusable_rtsigs=yes] > -)]) > -AC_MSG_RESULT($bash_cv_unusable_rtsigs) > -if test $bash_cv_unusable_rtsigs = yes; then > -AC_DEFINE(UNUSABLE_RT_SIGNALS) > -fi > -]) > - > -dnl > -dnl check for availability of multibyte characters and functions > -dnl > -AH_TEMPLATE([HAVE_MBSRTOWCS], [Define if we have the mbsrtowcs function]) > -AH_TEMPLATE([HAVE_WCWIDTH], [Define if we have the wcwidth function]) > -AH_TEMPLATE([HAVE_MBSTATE_T], [Define if we have mbstate_t]) > -AH_TEMPLATE([HAVE_LANGINFO_CODESET], [Define if we have nl_langinfo and CODESET]) > -AC_DEFUN([BASH_CHECK_MULTIBYTE], > -[ > -AC_CHECK_HEADERS(wctype.h) > -AC_CHECK_HEADERS(wchar.h) > -AC_CHECK_HEADERS(langinfo.h) > - > -AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) > -AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) > - > -AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, > -[AC_TRY_RUN([ > -#include <wchar.h> > -int > -main () > -{ > - mbstate_t ps; > - return 0; > -}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) > -if test $bash_cv_have_mbstate_t = yes; then > - AC_DEFINE(HAVE_MBSTATE_T) > -fi > - > -AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, > -[AC_TRY_LINK( > -[#include <langinfo.h>], > -[char* cs = nl_langinfo(CODESET);], > -bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) > -if test $bash_cv_langinfo_codeset = yes; then > - AC_DEFINE(HAVE_LANGINFO_CODESET) > -fi > - > -]) > - > -dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB > -dnl require: > -dnl AC_PROG_CC > -dnl BASH_CHECK_LIB_TERMCAP > - > -AC_DEFUN([RL_LIB_READLINE_VERSION], > -[ > -AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) > - > -AC_MSG_CHECKING([version of installed readline library]) > - > -# What a pain in the ass this is. > - > -# save cpp and ld options > -_save_CFLAGS="$CFLAGS" > -_save_LDFLAGS="$LDFLAGS" > -_save_LIBS="$LIBS" > - > -# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This > -# allows the caller to do something like $_rl_prefix=$withval if the user > -# specifies --with-installed-readline=PREFIX as an argument to configure > - > -if test -z "$ac_cv_rl_prefix"; then > -test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} > -fi > - > -eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include > -eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib > - > -LIBS="$LIBS -lreadline ${TERMCAP_LIB}" > -CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" > -LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" > - > -AC_TRY_RUN([ > -#include <stdio.h> > -#include <readline/readline.h> > - > -main() > -{ > - FILE *fp; > - fp = fopen("conftest.rlv", "w"); > - if (fp == 0) exit(1); > - fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); > - fclose(fp); > - exit(0); > -} > -], > -ac_cv_rl_version=`cat conftest.rlv`, > -ac_cv_rl_version='0.0', > -ac_cv_rl_version='4.2') > - > -CFLAGS="$_save_CFLAGS" > -LDFLAGS="$_save_LDFLAGS" > -LIBS="$_save_LIBS" > - > -RL_MAJOR=0 > -RL_MINOR=0 > - > -# ( > -case "$ac_cv_rl_version" in > -2*|3*|4*|5*|6*|7*|8*|9*) > - RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` > - RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` > - ;; > -esac > - > -# ((( > -case $RL_MAJOR in > -[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; > -[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; > -*) _RL_MAJOR=00 ;; > -esac > - > -# ((( > -case $RL_MINOR in > -[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; > -[[0-9]]) _RL_MINOR=0$RL_MINOR ;; > -*) _RL_MINOR=00 ;; > -esac > - > -RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" > - > -# Readline versions greater than 4.2 have these defines in readline.h > - > -if test $ac_cv_rl_version = '0.0' ; then > - AC_MSG_WARN([Could not test version of installed readline library.]) > -elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then > - # set these for use by the caller > - RL_PREFIX=$ac_cv_rl_prefix > - RL_LIBDIR=$ac_cv_rl_libdir > - RL_INCLUDEDIR=$ac_cv_rl_includedir > - AC_MSG_RESULT($ac_cv_rl_version) > -else > - > -AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) > -AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) > -AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) > - > -AC_SUBST(RL_VERSION) > -AC_SUBST(RL_MAJOR) > -AC_SUBST(RL_MINOR) > - > -# set these for use by the caller > -RL_PREFIX=$ac_cv_rl_prefix > -RL_LIBDIR=$ac_cv_rl_libdir > -RL_INCLUDEDIR=$ac_cv_rl_includedir > - > -AC_MSG_RESULT($ac_cv_rl_version) > - > -fi > -]) > diff --git a/meta/recipes-core/readline/readline-5.2/acinclude.m4 b/meta/recipes-core/readline/readline-5.2/acinclude.m4 > new file mode 100644 > index 0000000..8a45f99 > --- /dev/null > +++ b/meta/recipes-core/readline/readline-5.2/acinclude.m4 > @@ -0,0 +1,1815 @@ > +dnl > +dnl Bash specific tests > +dnl > +dnl Some derived from PDKSH 5.1.3 autoconf tests > +dnl > + > +AC_DEFUN([BASH_C_LONG_LONG], > +[AC_CACHE_CHECK(for long long, ac_cv_c_long_long, > +[if test "$GCC" = yes; then > + ac_cv_c_long_long=yes > +else > +AC_TRY_RUN([ > +int > +main() > +{ > +long long foo = 0; > +exit(sizeof(long long) < sizeof(long)); > +} > +], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) > +fi]) > +if test $ac_cv_c_long_long = yes; then > + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) > +fi > +]) > + > +dnl > +dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX > +dnl (< changed to <=) added. > +dnl > +AC_DEFUN([BASH_C_LONG_DOUBLE], > +[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, > +[if test "$GCC" = yes; then > + ac_cv_c_long_double=yes > +else > +AC_TRY_RUN([ > +int > +main() > +{ > + /* The Stardent Vistra knows sizeof(long double), but does not > + support it. */ > + long double foo = 0.0; > + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ > + /* On IRIX 5.3, the compiler converts long double to double with a warning, > + but compiles this successfully. */ > + exit(sizeof(long double) <= sizeof(double)); > +} > +], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) > +fi]) > +if test $ac_cv_c_long_double = yes; then > + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) > +fi > +]) > + > +dnl > +dnl Check for <inttypes.h>. This is separated out so that it can be > +dnl AC_REQUIREd. > +dnl > +dnl BASH_HEADER_INTTYPES > +AC_DEFUN([BASH_HEADER_INTTYPES], > +[ > + AC_CHECK_HEADERS(inttypes.h) > +]) > + > +dnl > +dnl check for typedef'd symbols in header files, but allow the caller to > +dnl specify the include files to be checked in addition to the default > +dnl > +dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) > +AC_DEFUN([BASH_CHECK_TYPE], > +[ > +AC_REQUIRE([AC_HEADER_STDC])dnl > +AC_REQUIRE([BASH_HEADER_INTTYPES]) > +AC_MSG_CHECKING(for $1) > +AC_CACHE_VAL(bash_cv_type_$1, > +[AC_EGREP_CPP($1, [#include <sys/types.h> > +#if STDC_HEADERS > +#include <stdlib.h> > +#include <stddef.h> > +#endif > +#if HAVE_INTTYPES_H > +#include <inttypes.h> > +#endif > +$2 > +], bash_cv_type_$1=yes, bash_cv_type_$1=no)]) > +AC_MSG_RESULT($bash_cv_type_$1) > +ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then > + AC_DEFINE($4) > + fi]) > +if test $bash_cv_type_$1 = no; then > + AC_DEFINE_UNQUOTED($1, $3) > +fi > +]) > + > +dnl > +dnl BASH_CHECK_DECL(FUNC) > +dnl > +dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like > +dnl AC_CHECK_DECL > +dnl > +AC_DEFUN([BASH_CHECK_DECL], > +[ > +AC_REQUIRE([AC_HEADER_STDC]) > +AC_REQUIRE([BASH_HEADER_INTTYPES]) > +AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, > +[AC_TRY_LINK( > +[ > +#if STDC_HEADERS > +# include <stdlib.h> > +#endif > +#if HAVE_INTTYPES_H > +# include <inttypes.h> > +#endif > +], > +[return !$1;], > +bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) > +bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` > +if test $bash_cv_decl_$1 = yes; then > + AC_DEFINE_UNQUOTED($bash_tr_func, 1) > +else > + AC_DEFINE_UNQUOTED($bash_tr_func, 0) > +fi > +]) > + > +AC_DEFUN([BASH_DECL_PRINTF], > +[AC_MSG_CHECKING(for declaration of printf in <stdio.h>) > +AC_CACHE_VAL(bash_cv_printf_declared, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#ifdef __STDC__ > +typedef int (*_bashfunc)(const char *, ...); > +#else > +typedef int (*_bashfunc)(); > +#endif > +main() > +{ > +_bashfunc pf; > +pf = (_bashfunc) printf; > +exit(pf == 0); > +} > +], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, > + [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) > + bash_cv_printf_declared=yes] > +)]) > +AC_MSG_RESULT($bash_cv_printf_declared) > +if test $bash_cv_printf_declared = yes; then > +AC_DEFINE(PRINTF_DECLARED) > +fi > +]) > + > +AC_DEFUN([BASH_DECL_SBRK], > +[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>) > +AC_CACHE_VAL(bash_cv_sbrk_declared, > +[AC_EGREP_HEADER(sbrk, unistd.h, > + bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) > +AC_MSG_RESULT($bash_cv_sbrk_declared) > +if test $bash_cv_sbrk_declared = yes; then > +AC_DEFINE(SBRK_DECLARED) > +fi > +]) > + > +dnl > +dnl Check for sys_siglist[] or _sys_siglist[] > +dnl > +AC_DEFUN([BASH_DECL_UNDER_SYS_SIGLIST], > +[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) > +AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, > +[AC_TRY_COMPILE([ > +#include <sys/types.h> > +#include <signal.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif], [ char *msg = _sys_siglist[2]; ], > + bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, > + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl > +AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) > +if test $bash_cv_decl_under_sys_siglist = yes; then > +AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) > +fi > +]) > + > +AC_DEFUN([BASH_UNDER_SYS_SIGLIST], > +[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) > +AC_MSG_CHECKING([for _sys_siglist in system C library]) > +AC_CACHE_VAL(bash_cv_under_sys_siglist, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <signal.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#ifndef UNDER_SYS_SIGLIST_DECLARED > +extern char *_sys_siglist[]; > +#endif > +main() > +{ > +char *msg = (char *)_sys_siglist[2]; > +exit(msg == 0); > +}], > + bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, > + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) > + bash_cv_under_sys_siglist=no])]) > +AC_MSG_RESULT($bash_cv_under_sys_siglist) > +if test $bash_cv_under_sys_siglist = yes; then > +AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) > +fi > +]) > + > +AC_DEFUN([BASH_SYS_SIGLIST], > +[ > +AC_CHECK_DECLS([sys_siglist]) > +AC_MSG_CHECKING([for sys_siglist in system C library]) > +AC_CACHE_VAL(bash_cv_sys_siglist, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <signal.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#ifndef HAVE_DECL_SYS_SIGLIST > +extern char *sys_siglist[]; > +#endif > +main() > +{ > +char *msg = sys_siglist[2]; > +exit(msg == 0); > +}], > + bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, > + [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) > + bash_cv_sys_siglist=no])]) > +AC_MSG_RESULT($bash_cv_sys_siglist) > +if test $bash_cv_sys_siglist = yes; then > +AC_DEFINE(HAVE_SYS_SIGLIST) > +fi > +]) > + > +dnl Check for the various permutations of sys_siglist and make sure we > +dnl compile in siglist.o if they're not defined > +AC_DEFUN([BASH_CHECK_SYS_SIGLIST], [ > +AC_REQUIRE([BASH_SYS_SIGLIST]) > +AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) > +AC_REQUIRE([BASH_FUNC_STRSIGNAL]) > +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then > + SIGLIST_O=siglist.o > +else > + SIGLIST_O= > +fi > +AC_SUBST([SIGLIST_O]) > +]) > + > +dnl Check for sys_errlist[] and sys_nerr, check for declaration > +AC_DEFUN([BASH_SYS_ERRLIST], > +[AC_MSG_CHECKING([for sys_errlist and sys_nerr]) > +AC_CACHE_VAL(bash_cv_sys_errlist, > +[AC_TRY_LINK([#include <errno.h>], > +[extern char *sys_errlist[]; > + extern int sys_nerr; > + char *msg = sys_errlist[sys_nerr - 1];], > + bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl > +AC_MSG_RESULT($bash_cv_sys_errlist) > +if test $bash_cv_sys_errlist = yes; then > +AC_DEFINE(HAVE_SYS_ERRLIST) > +fi > +]) > + > +dnl > +dnl Check if dup2() does not clear the close on exec flag > +dnl > +AC_DEFUN([BASH_FUNC_DUP2_CLOEXEC_CHECK], > +[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) > +AC_CACHE_VAL(bash_cv_dup2_broken, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <fcntl.h> > +main() > +{ > + int fd1, fd2, fl; > + fd1 = open("/dev/null", 2); > + if (fcntl(fd1, 2, 1) < 0) > + exit(1); > + fd2 = dup2(fd1, 1); > + if (fd2 < 0) > + exit(2); > + fl = fcntl(fd2, 1, 0); > + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ > + exit(fl != 1); > +} > +], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, > + [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) > + bash_cv_dup2_broken=no]) > +]) > +AC_MSG_RESULT($bash_cv_dup2_broken) > +if test $bash_cv_dup2_broken = yes; then > +AC_DEFINE(DUP2_BROKEN) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_STRSIGNAL], > +[AC_MSG_CHECKING([for the existence of strsignal]) > +AC_CACHE_VAL(bash_cv_have_strsignal, > +[AC_TRY_LINK([#include <sys/types.h> > +#include <signal.h>], > +[char *s = (char *)strsignal(2);], > + bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) > +AC_MSG_RESULT($bash_cv_have_strsignal) > +if test $bash_cv_have_strsignal = yes; then > +AC_DEFINE(HAVE_STRSIGNAL) > +fi > +]) > + > +dnl Check to see if opendir will open non-directories (not a nice thing) > +AC_DEFUN([BASH_FUNC_OPENDIR_CHECK], > +[AC_REQUIRE([AC_HEADER_DIRENT])dnl > +AC_MSG_CHECKING(if opendir() opens non-directories) > +AC_CACHE_VAL(bash_cv_opendir_not_robust, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#include <sys/types.h> > +#include <fcntl.h> > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif /* HAVE_UNISTD_H */ > +#if defined(HAVE_DIRENT_H) > +# include <dirent.h> > +#else > +# define dirent direct > +# ifdef HAVE_SYS_NDIR_H > +# include <sys/ndir.h> > +# endif /* SYSNDIR */ > +# ifdef HAVE_SYS_DIR_H > +# include <sys/dir.h> > +# endif /* SYSDIR */ > +# ifdef HAVE_NDIR_H > +# include <ndir.h> > +# endif > +#endif /* HAVE_DIRENT_H */ > +main() > +{ > +DIR *dir; > +int fd, err; > +err = mkdir("/tmp/bash-aclocal", 0700); > +if (err < 0) { > + perror("mkdir"); > + exit(1); > +} > +unlink("/tmp/bash-aclocal/not_a_directory"); > +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); > +write(fd, "\n", 1); > +close(fd); > +dir = opendir("/tmp/bash-aclocal/not_a_directory"); > +unlink("/tmp/bash-aclocal/not_a_directory"); > +rmdir("/tmp/bash-aclocal"); > +exit (dir == 0); > +}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, > + [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) > + bash_cv_opendir_not_robust=no] > +)]) > +AC_MSG_RESULT($bash_cv_opendir_not_robust) > +if test $bash_cv_opendir_not_robust = yes; then > +AC_DEFINE(OPENDIR_NOT_ROBUST) > +fi > +]) > + > +dnl > +AH_TEMPLATE([VOID_SIGHANDLER], [Define if signal handlers return type void]) > +AC_DEFUN([BASH_TYPE_SIGHANDLER], > +[AC_MSG_CHECKING([whether signal handlers are of type void]) > +AC_CACHE_VAL(bash_cv_void_sighandler, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <signal.h> > +#ifdef signal > +#undef signal > +#endif > +#ifdef __cplusplus > +extern "C" > +#endif > +void (*signal ()) ();], > +[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl > +AC_MSG_RESULT($bash_cv_void_sighandler) > +if test $bash_cv_void_sighandler = yes; then > +AC_DEFINE(VOID_SIGHANDLER) > +fi > +]) > + > +dnl > +dnl A signed 16-bit integer quantity > +dnl > +AC_DEFUN([BASH_TYPE_BITS16_T], > +[ > +if test "$ac_cv_sizeof_short" = 2; then > + AC_CHECK_TYPE(bits16_t, short) > +elif test "$ac_cv_sizeof_char" = 2; then > + AC_CHECK_TYPE(bits16_t, char) > +else > + AC_CHECK_TYPE(bits16_t, short) > +fi > +]) > + > +dnl > +dnl An unsigned 16-bit integer quantity > +dnl > +AC_DEFUN([BASH_TYPE_U_BITS16_T], > +[ > +if test "$ac_cv_sizeof_short" = 2; then > + AC_CHECK_TYPE(u_bits16_t, unsigned short) > +elif test "$ac_cv_sizeof_char" = 2; then > + AC_CHECK_TYPE(u_bits16_t, unsigned char) > +else > + AC_CHECK_TYPE(u_bits16_t, unsigned short) > +fi > +]) > + > +dnl > +dnl A signed 32-bit integer quantity > +dnl > +AC_DEFUN([BASH_TYPE_BITS32_T], > +[ > +if test "$ac_cv_sizeof_int" = 4; then > + AC_CHECK_TYPE(bits32_t, int) > +elif test "$ac_cv_sizeof_long" = 4; then > + AC_CHECK_TYPE(bits32_t, long) > +else > + AC_CHECK_TYPE(bits32_t, int) > +fi > +]) > + > +dnl > +dnl An unsigned 32-bit integer quantity > +dnl > +AC_DEFUN([BASH_TYPE_U_BITS32_T], > +[ > +if test "$ac_cv_sizeof_int" = 4; then > + AC_CHECK_TYPE(u_bits32_t, unsigned int) > +elif test "$ac_cv_sizeof_long" = 4; then > + AC_CHECK_TYPE(u_bits32_t, unsigned long) > +else > + AC_CHECK_TYPE(u_bits32_t, unsigned int) > +fi > +]) > + > +AC_DEFUN([BASH_TYPE_PTRDIFF_T], > +[ > +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then > + AC_CHECK_TYPE(ptrdiff_t, int) > +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then > + AC_CHECK_TYPE(ptrdiff_t, long) > +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then > + AC_CHECK_TYPE(ptrdiff_t, [long long]) > +else > + AC_CHECK_TYPE(ptrdiff_t, int) > +fi > +]) > + > +dnl > +dnl A signed 64-bit quantity > +dnl > +AC_DEFUN([BASH_TYPE_BITS64_T], > +[ > +if test "$ac_cv_sizeof_char_p" = 8; then > + AC_CHECK_TYPE(bits64_t, char *) > +elif test "$ac_cv_sizeof_double" = 8; then > + AC_CHECK_TYPE(bits64_t, double) > +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then > + AC_CHECK_TYPE(bits64_t, [long long]) > +elif test "$ac_cv_sizeof_long" = 8; then > + AC_CHECK_TYPE(bits64_t, long) > +else > + AC_CHECK_TYPE(bits64_t, double) > +fi > +]) > + > +AC_DEFUN([BASH_TYPE_LONG_LONG], > +[ > +AC_CACHE_CHECK([for long long], bash_cv_type_long_long, > +[AC_TRY_LINK([ > +long long ll = 1; int i = 63;], > +[ > +long long llm = (long long) -1; > +return ll << i | ll >> i | llm / ll | llm % ll; > +], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) > +if test "$bash_cv_type_long_long" = 'long long'; then > + AC_DEFINE(HAVE_LONG_LONG, 1) > +fi > +]) > + > +AC_DEFUN([BASH_TYPE_UNSIGNED_LONG_LONG], > +[ > +AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, > +[AC_TRY_LINK([ > +unsigned long long ull = 1; int i = 63;], > +[ > +unsigned long long ullmax = (unsigned long long) -1; > +return ull << i | ull >> i | ullmax / ull | ullmax % ull; > +], bash_cv_type_unsigned_long_long='unsigned long long', > + bash_cv_type_unsigned_long_long='unsigned long')]) > +if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then > + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) > +fi > +]) > + > +dnl > +dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) > +dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use > +dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify > +dnl matters, this just checks for rlim_t, quad_t, or long. > +dnl > +AC_DEFUN([BASH_TYPE_RLIMIT], > +[AC_MSG_CHECKING(for size and type of struct rlimit fields) > +AC_CACHE_VAL(bash_cv_type_rlimit, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/resource.h>], > +[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ > +AC_TRY_RUN([ > +#include <sys/types.h> > +#include <sys/time.h> > +#include <sys/resource.h> > +main() > +{ > +#ifdef HAVE_QUAD_T > + struct rlimit rl; > + if (sizeof(rl.rlim_cur) == sizeof(quad_t)) > + exit(0); > +#endif > + exit(1); > +}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, > + [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) > + bash_cv_type_rlimit=long])]) > +]) > +AC_MSG_RESULT($bash_cv_type_rlimit) > +if test $bash_cv_type_rlimit = quad_t; then > +AC_DEFINE(RLIMTYPE, quad_t) > +elif test $bash_cv_type_rlimit = rlim_t; then > +AC_DEFINE(RLIMTYPE, rlim_t) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_LSTAT], > +[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an > +dnl inline function in <sys/stat.h>. > +AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, > +[AC_TRY_LINK([ > +#include <sys/types.h> > +#include <sys/stat.h> > +],[ lstat(".",(struct stat *)0); ], > +bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) > +if test $bash_cv_func_lstat = yes; then > + AC_DEFINE(HAVE_LSTAT) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_INET_ATON], > +[ > +AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, > +[AC_TRY_LINK([ > +#include <sys/types.h> > +#include <netinet/in.h> > +#include <arpa/inet.h> > +struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], > +bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) > +if test $bash_cv_func_inet_aton = yes; then > + AC_DEFINE(HAVE_INET_ATON) > +else > + AC_LIBOBJ(inet_aton) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_GETENV], > +[AC_MSG_CHECKING(to see if getenv can be redefined) > +AC_CACHE_VAL(bash_cv_getenv_redef, > +[AC_TRY_RUN([ > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif > +#ifndef __STDC__ > +# ifndef const > +# define const > +# endif > +#endif > +char * > +getenv (name) > +#if defined (__linux__) || defined (__bsdi__) || defined (convex) > + const char *name; > +#else > + char const *name; > +#endif /* !__linux__ && !__bsdi__ && !convex */ > +{ > +return "42"; > +} > +main() > +{ > +char *s; > +/* The next allows this program to run, but does not allow bash to link > + when it redefines getenv. I'm not really interested in figuring out > + why not. */ > +#if defined (NeXT) > +exit(1); > +#endif > +s = getenv("ABCDE"); > +exit(s == 0); /* force optimizer to leave getenv in */ > +} > +], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, > + [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) > + bash_cv_getenv_redef=yes] > +)]) > +AC_MSG_RESULT($bash_cv_getenv_redef) > +if test $bash_cv_getenv_redef = yes; then > +AC_DEFINE(CAN_REDEFINE_GETENV) > +fi > +]) > + > +# We should check for putenv before calling this > +AC_DEFUN([BASH_FUNC_STD_PUTENV], > +[ > +AC_REQUIRE([AC_HEADER_STDC]) > +AC_REQUIRE([AC_C_PROTOTYPES]) > +AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, > +[AC_TRY_LINK([ > +#if STDC_HEADERS > +#include <stdlib.h> > +#include <stddef.h> > +#endif > +#ifndef __STDC__ > +# ifndef const > +# define const > +# endif > +#endif > +#ifdef PROTOTYPES > +extern int putenv (char *); > +#else > +extern int putenv (); > +#endif > +], > +[return (putenv == 0);], > +bash_cv_std_putenv=yes, bash_cv_std_putenv=no > +)]) > +if test $bash_cv_std_putenv = yes; then > +AC_DEFINE(HAVE_STD_PUTENV) > +fi > +]) > + > +# We should check for unsetenv before calling this > +AC_DEFUN([BASH_FUNC_STD_UNSETENV], > +[ > +AC_REQUIRE([AC_HEADER_STDC]) > +AC_REQUIRE([AC_C_PROTOTYPES]) > +AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, > +[AC_TRY_LINK([ > +#if STDC_HEADERS > +#include <stdlib.h> > +#include <stddef.h> > +#endif > +#ifndef __STDC__ > +# ifndef const > +# define const > +# endif > +#endif > +#ifdef PROTOTYPES > +extern int unsetenv (const char *); > +#else > +extern int unsetenv (); > +#endif > +], > +[return (unsetenv == 0);], > +bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no > +)]) > +if test $bash_cv_std_unsetenv = yes; then > +AC_DEFINE(HAVE_STD_UNSETENV) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_ULIMIT_MAXFDS], > +[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) > +AC_CACHE_VAL(bash_cv_ulimit_maxfds, > +[AC_TRY_RUN([ > +main() > +{ > +long maxfds = ulimit(4, 0L); > +exit (maxfds == -1L); > +} > +], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, > + [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) > + bash_cv_ulimit_maxfds=no] > +)]) > +AC_MSG_RESULT($bash_cv_ulimit_maxfds) > +if test $bash_cv_ulimit_maxfds = yes; then > +AC_DEFINE(ULIMIT_MAXFDS) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_GETCWD], > +[AC_MSG_CHECKING([if getcwd() calls popen()]) > +AC_CACHE_VAL(bash_cv_getcwd_calls_popen, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > + > +#ifndef __STDC__ > +#ifndef const > +#define const > +#endif > +#endif > + > +int popen_called; > + > +FILE * > +popen(command, type) > + const char *command; > + const char *type; > +{ > + popen_called = 1; > + return (FILE *)NULL; > +} > + > +FILE *_popen(command, type) > + const char *command; > + const char *type; > +{ > + return (popen (command, type)); > +} > + > +int > +pclose(stream) > +FILE *stream; > +{ > + return 0; > +} > + > +int > +_pclose(stream) > +FILE *stream; > +{ > + return 0; > +} > + > +main() > +{ > + char lbuf[32]; > + popen_called = 0; > + getcwd(lbuf, 32); > + exit (popen_called); > +} > +], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, > + [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) > + bash_cv_getcwd_calls_popen=no] > +)]) > +AC_MSG_RESULT($bash_cv_getcwd_calls_popen) > +if test $bash_cv_getcwd_calls_popen = yes; then > +AC_DEFINE(GETCWD_BROKEN) > +AC_LIBOBJ(getcwd) > +fi > +]) > + > +dnl > +dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every > +dnl system, we can't use AC_PREREQ > +dnl > +AC_DEFUN([BASH_FUNC_GETHOSTBYNAME], > +[if test "X$bash_cv_have_gethostbyname" = "X"; then > +_bash_needmsg=yes > +else > +AC_MSG_CHECKING(for gethostbyname in socket library) > +_bash_needmsg= > +fi > +AC_CACHE_VAL(bash_cv_have_gethostbyname, > +[AC_TRY_LINK([#include <netdb.h>], > +[ struct hostent *hp; > + hp = gethostbyname("localhost"); > +], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] > +) > +if test "X$_bash_needmsg" = Xyes; then > + AC_MSG_CHECKING(for gethostbyname in socket library) > +fi > +AC_MSG_RESULT($bash_cv_have_gethostbyname) > +if test "$bash_cv_have_gethostbyname" = yes; then > +AC_DEFINE(HAVE_GETHOSTBYNAME) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_FNMATCH_EXTMATCH], > +[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) > +AC_CACHE_VAL(bash_cv_fnm_extmatch, > +[AC_TRY_RUN([ > +#include <fnmatch.h> > + > +main() > +{ > +#ifdef FNM_EXTMATCH > + exit (0); > +#else > + exit (1); > +#endif > +} > +], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, > + [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) > + bash_cv_fnm_extmatch=no]) > +]) > +AC_MSG_RESULT($bash_cv_fnm_extmatch) > +if test $bash_cv_fnm_extmatch = yes; then > +AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) > +fi > +]) > + > +AH_TEMPLATE([HAVE_POSIX_SIGSETJMP], [Define if we POSIX-style sigsetjmp/siglongjmp are available]) > +AC_DEFUN([BASH_FUNC_POSIX_SETJMP], > +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > +AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) > +AC_CACHE_VAL(bash_cv_func_sigsetjmp, > +[AC_TRY_RUN([ > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#include <sys/types.h> > +#include <signal.h> > +#include <setjmp.h> > + > +main() > +{ > +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) > +exit (1); > +#else > + > +int code; > +sigset_t set, oset; > +sigjmp_buf xx; > + > +/* get the mask */ > +sigemptyset(&set); > +sigemptyset(&oset); > +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); > +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); > + > +/* save it */ > +code = sigsetjmp(xx, 1); > +if (code) > + exit(0); /* could get sigmask and compare to oset here. */ > + > +/* change it */ > +sigaddset(&set, SIGINT); > +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); > + > +/* and siglongjmp */ > +siglongjmp(xx, 10); > +exit(1); > +#endif > +}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, > + [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) > + bash_cv_func_sigsetjmp=missing] > +)]) > +AC_MSG_RESULT($bash_cv_func_sigsetjmp) > +if test $bash_cv_func_sigsetjmp = present; then > +AC_DEFINE(HAVE_POSIX_SIGSETJMP) > +fi > +]) > + > +AH_TEMPLATE([STRCOLL_BROKEN], [Define if strcoll is broken with respect to strcmp in the default locale.]) > +AC_DEFUN([BASH_FUNC_STRCOLL], > +[ > +AC_MSG_CHECKING(whether or not strcoll and strcmp differ) > +AC_CACHE_VAL(bash_cv_func_strcoll_broken, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#if defined (HAVE_LOCALE_H) > +#include <locale.h> > +#endif > + > +main(c, v) > +int c; > +char *v[]; > +{ > + int r1, r2; > + char *deflocale, *defcoll; > + > +#ifdef HAVE_SETLOCALE > + deflocale = setlocale(LC_ALL, ""); > + defcoll = setlocale(LC_COLLATE, ""); > +#endif > + > +#ifdef HAVE_STRCOLL > + /* These two values are taken from tests/glob-test. */ > + r1 = strcoll("abd", "aXd"); > +#else > + r1 = 0; > +#endif > + r2 = strcmp("abd", "aXd"); > + > + /* These two should both be greater than 0. It is permissible for > + a system to return different values, as long as the sign is the > + same. */ > + > + /* Exit with 1 (failure) if these two values are both > 0, since > + this tests whether strcoll(3) is broken with respect to strcmp(3) > + in the default locale. */ > + exit (r1 > 0 && r2 > 0); > +} > +], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, > + [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) > + bash_cv_func_strcoll_broken=no] > +)]) > +AC_MSG_RESULT($bash_cv_func_strcoll_broken) > +if test $bash_cv_func_strcoll_broken = yes; then > +AC_DEFINE(STRCOLL_BROKEN) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_PRINTF_A_FORMAT], > +[AC_MSG_CHECKING([for printf floating point output in hex notation]) > +AC_CACHE_VAL(bash_cv_printf_a_format, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#include <string.h> > + > +int > +main() > +{ > + double y = 0.0; > + char abuf[1024]; > + > + sprintf(abuf, "%A", y); > + exit(strchr(abuf, 'P') == (char *)0); > +} > +], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, > + [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) > + bash_cv_printf_a_format=no] > +)]) > +AC_MSG_RESULT($bash_cv_printf_a_format) > +if test $bash_cv_printf_a_format = yes; then > +AC_DEFINE(HAVE_PRINTF_A_FORMAT) > +fi > +]) > + > +AC_DEFUN([BASH_STRUCT_TERMIOS_LDISC], > +[ > +AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ > +#include <sys/types.h> > +#include <termios.h> > +]) > +]) > + > +AC_DEFUN([BASH_STRUCT_TERMIO_LDISC], > +[ > +AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ > +#include <sys/types.h> > +#include <termio.h> > +]) > +]) > + > +dnl > +dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS > +dnl > +dnl sets bash_cv_struct_stat_st_blocks > +dnl > +dnl unused for now; we'll see how AC_CHECK_MEMBERS works > +dnl > +AC_DEFUN([BASH_STRUCT_ST_BLOCKS], > +[ > +AC_MSG_CHECKING([for struct stat.st_blocks]) > +AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, > +[AC_TRY_COMPILE( > +[ > +#include <sys/types.h> > +#include <sys/stat.h> > +], > +[ > +main() > +{ > +static struct stat a; > +if (a.st_blocks) return 0; > +return 0; > +} > +], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) > +]) > +AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) > +if test "$bash_cv_struct_stat_st_blocks" = "yes"; then > +AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) > +fi > +]) > + > +AC_DEFUN([BASH_CHECK_LIB_TERMCAP], > +[ > +if test "X$bash_cv_termcap_lib" = "X"; then > +_bash_needmsg=yes > +else > +AC_MSG_CHECKING(which library has the termcap functions) > +_bash_needmsg= > +fi > +AC_CACHE_VAL(bash_cv_termcap_lib, > +[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, > + [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, > + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, > + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, > + bash_cv_termcap_lib=gnutermcap)])])])]) > +if test "X$_bash_needmsg" = "Xyes"; then > +AC_MSG_CHECKING(which library has the termcap functions) > +fi > +AC_MSG_RESULT(using $bash_cv_termcap_lib) > +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then > +LDFLAGS="$LDFLAGS -L./lib/termcap" > +TERMCAP_LIB="./lib/termcap/libtermcap.a" > +TERMCAP_DEP="./lib/termcap/libtermcap.a" > +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then > +TERMCAP_LIB=-ltermcap > +TERMCAP_DEP= > +elif test $bash_cv_termcap_lib = libtinfo; then > +TERMCAP_LIB=-ltinfo > +TERMCAP_DEP= > +elif test $bash_cv_termcap_lib = libncurses; then > +TERMCAP_LIB=-lncurses > +TERMCAP_DEP= > +else > +TERMCAP_LIB=-lcurses > +TERMCAP_DEP= > +fi > +]) > + > +dnl > +dnl Check for the presence of getpeername in libsocket. > +dnl If libsocket is present, check for libnsl and add it to LIBS if > +dnl it's there, since most systems with libsocket require linking > +dnl with libnsl as well. This should only be called if getpeername > +dnl was not found in libc. > +dnl > +dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT > +dnl AS WELL > +dnl > +AC_DEFUN([BASH_CHECK_LIB_SOCKET], > +[ > +if test "X$bash_cv_have_socklib" = "X"; then > +_bash_needmsg= > +else > +AC_MSG_CHECKING(for socket library) > +_bash_needmsg=yes > +fi > +AC_CACHE_VAL(bash_cv_have_socklib, > +[AC_CHECK_LIB(socket, getpeername, > + bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) > +if test "X$_bash_needmsg" = Xyes; then > + AC_MSG_RESULT($bash_cv_have_socklib) > + _bash_needmsg= > +fi > +if test $bash_cv_have_socklib = yes; then > + # check for libnsl, add it to LIBS if present > + if test "X$bash_cv_have_libnsl" = "X"; then > + _bash_needmsg= > + else > + AC_MSG_CHECKING(for libnsl) > + _bash_needmsg=yes > + fi > + AC_CACHE_VAL(bash_cv_have_libnsl, > + [AC_CHECK_LIB(nsl, t_open, > + bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) > + if test "X$_bash_needmsg" = Xyes; then > + AC_MSG_RESULT($bash_cv_have_libnsl) > + _bash_needmsg= > + fi > + if test $bash_cv_have_libnsl = yes; then > + LIBS="-lsocket -lnsl $LIBS" > + else > + LIBS="-lsocket $LIBS" > + fi > + AC_DEFINE(HAVE_LIBSOCKET) > + AC_DEFINE(HAVE_GETPEERNAME) > +fi > +]) > + > +AH_TEMPLATE([STRUCT_DIRENT_HAS_D_INO], [Define if struct dirent has a d_ino member]) > +AC_DEFUN([BASH_STRUCT_DIRENT_D_INO], > +[AC_REQUIRE([AC_HEADER_DIRENT]) > +AC_MSG_CHECKING(if struct dirent has a d_ino member) > +AC_CACHE_VAL(bash_cv_dirent_has_dino, > +[AC_TRY_COMPILE([ > +#include <stdio.h> > +#include <sys/types.h> > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif /* HAVE_UNISTD_H */ > +#if defined(HAVE_DIRENT_H) > +# include <dirent.h> > +#else > +# define dirent direct > +# ifdef HAVE_SYS_NDIR_H > +# include <sys/ndir.h> > +# endif /* SYSNDIR */ > +# ifdef HAVE_SYS_DIR_H > +# include <sys/dir.h> > +# endif /* SYSDIR */ > +# ifdef HAVE_NDIR_H > +# include <ndir.h> > +# endif > +#endif /* HAVE_DIRENT_H */ > +],[ > +struct dirent d; int z; z = d.d_ino; > +], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) > +AC_MSG_RESULT($bash_cv_dirent_has_dino) > +if test $bash_cv_dirent_has_dino = yes; then > +AC_DEFINE(STRUCT_DIRENT_HAS_D_INO) > +fi > +]) > + > +AH_TEMPLATE([STRUCT_DIRENT_HAS_D_FILENO], [Define if struct dirent has a d_fileno member]) > +AC_DEFUN([BASH_STRUCT_DIRENT_D_FILENO], > +[AC_REQUIRE([AC_HEADER_DIRENT]) > +AC_MSG_CHECKING(if struct dirent has a d_fileno member) > +AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, > +[AC_TRY_COMPILE([ > +#include <stdio.h> > +#include <sys/types.h> > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif /* HAVE_UNISTD_H */ > +#if defined(HAVE_DIRENT_H) > +# include <dirent.h> > +#else > +# define dirent direct > +# ifdef HAVE_SYS_NDIR_H > +# include <sys/ndir.h> > +# endif /* SYSNDIR */ > +# ifdef HAVE_SYS_DIR_H > +# include <sys/dir.h> > +# endif /* SYSDIR */ > +# ifdef HAVE_NDIR_H > +# include <ndir.h> > +# endif > +#endif /* HAVE_DIRENT_H */ > +],[ > +struct dirent d; int z; z = d.d_fileno; > +], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) > +AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) > +if test $bash_cv_dirent_has_d_fileno = yes; then > +AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO) > +fi > +]) > + > +AC_DEFUN([BASH_STRUCT_TIMEVAL], > +[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) > +AC_CACHE_VAL(bash_cv_struct_timeval, > +[ > +AC_EGREP_HEADER(struct timeval, sys/time.h, > + bash_cv_struct_timeval=yes, > + AC_EGREP_HEADER(struct timeval, time.h, > + bash_cv_struct_timeval=yes, > + bash_cv_struct_timeval=no)) > +]) > +AC_MSG_RESULT($bash_cv_struct_timeval) > +if test $bash_cv_struct_timeval = yes; then > + AC_DEFINE(HAVE_TIMEVAL) > +fi > +]) > + > +AH_TEMPLATE([STRUCT_WINSIZE_IN_SYS_IOCTL], [Define if struct winsize is in sys/ioctl.h]) > +AH_TEMPLATE([STRUCT_WINSIZE_IN_TERMIOS], [Define if struct winsize is in termios.h]) > +AC_DEFUN([BASH_STRUCT_WINSIZE], > +[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) > +AC_CACHE_VAL(bash_cv_struct_winsize_header, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/ioctl.h>], [struct winsize x;], > + bash_cv_struct_winsize_header=ioctl_h, > + [AC_TRY_COMPILE([#include <sys/types.h> > +#include <termios.h>], [struct winsize x;], > + bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) > +])]) > +if test $bash_cv_struct_winsize_header = ioctl_h; then > + AC_MSG_RESULT(sys/ioctl.h) > + AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) > +elif test $bash_cv_struct_winsize_header = termios_h; then > + AC_MSG_RESULT(termios.h) > + AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) > +else > + AC_MSG_RESULT(not found) > +fi > +]) > + > +dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) > +AH_TEMPLATE([HAVE_POSIX_SIGNALS], [Define if we have the POSIX signal routines]) > +AH_TEMPLATE([HAVE_BSD_SIGNALS], [Define if we have the BSD signal routines]) > +AH_TEMPLATE([HAVE_USG_SIGHOLD], [Define if we have the USG signal routines]) > +AC_DEFUN([BASH_SYS_SIGNAL_VINTAGE], > +[AC_REQUIRE([AC_TYPE_SIGNAL]) > +AC_MSG_CHECKING(for type of signal functions) > +AC_CACHE_VAL(bash_cv_signal_vintage, > +[ > + AC_MSG_WARN([checking for posix...]) > + AC_TRY_LINK([#include <signal.h>],[ > + sigset_t ss; > + struct sigaction sa; > + sigemptyset(&ss); sigsuspend(&ss); > + sigaction(SIGINT, &sa, (struct sigaction *) 0); > + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); > + ], bash_cv_signal_vintage="posix", > + [ > + AC_MSG_WARN([checking for 4.2bsd...]) > + AC_TRY_LINK([#include <signal.h>], [ > + int mask = sigmask(SIGINT); > + sigsetmask(mask); sigblock(mask); sigpause(mask); > + ], bash_cv_signal_vintage="4.2bsd", > + [ > + AC_MSG_WARN([checking for svr3...]) > + AC_TRY_LINK([ > + #include <signal.h> > + RETSIGTYPE foo() { }], [ > + int mask = sigmask(SIGINT); > + sigset(SIGINT, foo); sigrelse(SIGINT); > + sighold(SIGINT); sigpause(SIGINT); > + ], bash_cv_signal_vintage="svr3", bash_cv_signal_vintage="v7" > + )] > + )] > +) > +]) > +AC_MSG_RESULT($bash_cv_signal_vintage) > +if test "$bash_cv_signal_vintage" = "posix"; then > +AC_DEFINE(HAVE_POSIX_SIGNALS) > +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then > +AC_DEFINE(HAVE_BSD_SIGNALS) > +elif test "$bash_cv_signal_vintage" = "svr3"; then > +AC_DEFINE(HAVE_USG_SIGHOLD) > +fi > +]) > + > +dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. > +AC_DEFUN([BASH_SYS_PGRP_SYNC], > +[AC_REQUIRE([AC_FUNC_GETPGRP]) > +AC_MSG_CHECKING(whether pgrps need synchronization) > +AC_CACHE_VAL(bash_cv_pgrp_pipe, > +[AC_TRY_RUN([ > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif > +main() > +{ > +# ifdef GETPGRP_VOID > +# define getpgID() getpgrp() > +# else > +# define getpgID() getpgrp(0) > +# define setpgid(x,y) setpgrp(x,y) > +# endif > + int pid1, pid2, fds[2]; > + int status; > + char ok; > + > + switch (pid1 = fork()) { > + case -1: > + exit(1); > + case 0: > + setpgid(0, getpid()); > + exit(0); > + } > + setpgid(pid1, pid1); > + > + sleep(2); /* let first child die */ > + > + if (pipe(fds) < 0) > + exit(2); > + > + switch (pid2 = fork()) { > + case -1: > + exit(3); > + case 0: > + setpgid(0, pid1); > + ok = getpgID() == pid1; > + write(fds[1], &ok, 1); > + exit(0); > + } > + setpgid(pid2, pid1); > + > + close(fds[1]); > + if (read(fds[0], &ok, 1) != 1) > + exit(4); > + wait(&status); > + wait(&status); > + exit(ok ? 0 : 5); > +} > +], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, > + [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) > + bash_cv_pgrp_pipe=no]) > +]) > +AC_MSG_RESULT($bash_cv_pgrp_pipe) > +if test $bash_cv_pgrp_pipe = yes; then > +AC_DEFINE(PGRP_PIPE) > +fi > +]) > + > +AH_TEMPLATE([MUST_REINSTALL_SIGHANDLERS], [Define if signal handlers must be reinstalled when invoked.]) > +AC_DEFUN([BASH_SYS_REINSTALL_SIGHANDLERS], > +[AC_REQUIRE([AC_TYPE_SIGNAL]) > +AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > +AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) > +AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, > +[AC_TRY_RUN([ > +#include <signal.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > + > +typedef RETSIGTYPE sigfunc(); > + > +int nsigint; > + > +#ifdef HAVE_POSIX_SIGNALS > +sigfunc * > +set_signal_handler(sig, handler) > + int sig; > + sigfunc *handler; > +{ > + struct sigaction act, oact; > + act.sa_handler = handler; > + act.sa_flags = 0; > + sigemptyset (&act.sa_mask); > + sigemptyset (&oact.sa_mask); > + sigaction (sig, &act, &oact); > + return (oact.sa_handler); > +} > +#else > +#define set_signal_handler(s, h) signal(s, h) > +#endif > + > +RETSIGTYPE > +sigint(s) > +int s; > +{ > + nsigint++; > +} > + > +main() > +{ > + nsigint = 0; > + set_signal_handler(SIGINT, sigint); > + kill((int)getpid(), SIGINT); > + kill((int)getpid(), SIGINT); > + exit(nsigint != 2); > +} > +], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, > + [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) > + bash_cv_must_reinstall_sighandlers=no] > +)]) > +AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) > +if test $bash_cv_must_reinstall_sighandlers = yes; then > +AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) > +fi > +]) > + > +dnl check that some necessary job control definitions are present > +AC_DEFUN([BASH_SYS_JOB_CONTROL_MISSING], > +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > +AC_MSG_CHECKING(for presence of necessary job control definitions) > +AC_CACHE_VAL(bash_cv_job_control_missing, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#ifdef HAVE_SYS_WAIT_H > +#include <sys/wait.h> > +#endif > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#include <signal.h> > + > +/* Add more tests in here as appropriate. */ > +main() > +{ > +/* signal type */ > +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) > +exit(1); > +#endif > + > +/* signals and tty control. */ > +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) > +exit (1); > +#endif > + > +/* process control */ > +#if !defined (WNOHANG) || !defined (WUNTRACED) > +exit(1); > +#endif > + > +/* Posix systems have tcgetpgrp and waitpid. */ > +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) > +exit(1); > +#endif > + > +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) > +exit(1); > +#endif > + > +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ > +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) > +exit(1); > +#endif > + > +exit(0); > +}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, > + [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) > + bash_cv_job_control_missing=missing] > +)]) > +AC_MSG_RESULT($bash_cv_job_control_missing) > +if test $bash_cv_job_control_missing = missing; then > +AC_DEFINE(JOB_CONTROL_MISSING) > +fi > +]) > + > +dnl check whether named pipes are present > +dnl this requires a previous check for mkfifo, but that is awkward to specify > +AC_DEFUN([BASH_SYS_NAMED_PIPES], > +[AC_MSG_CHECKING(for presence of named pipes) > +AC_CACHE_VAL(bash_cv_sys_named_pipes, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <sys/stat.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > + > +/* Add more tests in here as appropriate. */ > +main() > +{ > +int fd, err; > + > +#if defined (HAVE_MKFIFO) > +exit (0); > +#endif > + > +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) > +exit (1); > +#endif > + > +#if defined (NeXT) > +exit (1); > +#endif > +err = mkdir("/tmp/bash-aclocal", 0700); > +if (err < 0) { > + perror ("mkdir"); > + exit(1); > +} > +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); > +if (fd == -1) { > + rmdir ("/tmp/bash-aclocal"); > + exit (1); > +} > +close(fd); > +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); > +rmdir ("/tmp/bash-aclocal"); > +exit(0); > +}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, > + [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) > + bash_cv_sys_named_pipes=missing] > +)]) > +AC_MSG_RESULT($bash_cv_sys_named_pipes) > +if test $bash_cv_sys_named_pipes = missing; then > +AC_DEFINE(NAMED_PIPES_MISSING) > +fi > +]) > + > +AC_DEFUN([BASH_SYS_DEFAULT_MAIL_DIR], > +[AC_MSG_CHECKING(for default mail directory) > +AC_CACHE_VAL(bash_cv_mail_dir, > +[if test -d /var/mail; then > + bash_cv_mail_dir=/var/mail > + elif test -d /var/spool/mail; then > + bash_cv_mail_dir=/var/spool/mail > + elif test -d /usr/mail; then > + bash_cv_mail_dir=/usr/mail > + elif test -d /usr/spool/mail; then > + bash_cv_mail_dir=/usr/spool/mail > + else > + bash_cv_mail_dir=unknown > + fi > +]) > +AC_MSG_RESULT($bash_cv_mail_dir) > +AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") > +]) > + > +AC_DEFUN([BASH_HAVE_TIOCGWINSZ], > +[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) > +AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/ioctl.h>], [int x = TIOCGWINSZ;], > + bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) > +AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) > +if test $bash_cv_tiocgwinsz_in_ioctl = yes; then > +AC_DEFINE(GWINSZ_IN_SYS_IOCTL) > +fi > +]) > + > +AH_TEMPLATE([TIOCSTAT_IN_SYS_IOCTL], [Define if TIOCSTAT is in sys/ioctl.h]) > +AC_DEFUN([BASH_HAVE_TIOCSTAT], > +[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) > +AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/ioctl.h>], [int x = TIOCSTAT;], > + bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) > +AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) > +if test $bash_cv_tiocstat_in_ioctl = yes; then > +AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) > +fi > +]) > + > +AH_TEMPLATE([FIONREAD_IN_SYS_IOCTL], [Define if FIONREAD is in sys/ioctl.h]) > +AC_DEFUN([BASH_HAVE_FIONREAD], > +[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) > +AC_CACHE_VAL(bash_cv_fionread_in_ioctl, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/ioctl.h>], [int x = FIONREAD;], > + bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) > +AC_MSG_RESULT($bash_cv_fionread_in_ioctl) > +if test $bash_cv_fionread_in_ioctl = yes; then > +AC_DEFINE(FIONREAD_IN_SYS_IOCTL) > +fi > +]) > + > +dnl > +dnl See if speed_t is declared in <sys/types.h>. Some versions of linux > +dnl require a definition of speed_t each time <termcap.h> is included, > +dnl but you can only get speed_t if you include <termios.h> (on some > +dnl versions) or <sys/types.h> (on others). > +dnl > +AH_TEMPLATE([SPEED_T_IN_SYS_TYPES], [Define if speed_t is in sys/types.h]) > +AC_DEFUN([BASH_CHECK_SPEED_T], > +[AC_MSG_CHECKING(for speed_t in sys/types.h) > +AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, > +[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;], > + bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) > +AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) > +if test $bash_cv_speed_t_in_sys_types = yes; then > +AC_DEFINE(SPEED_T_IN_SYS_TYPES) > +fi > +]) > + > +AH_TEMPLATE([HAVE_GETPW_DECLS], [Define if getpw functions are declared in pwd.h]) > +AC_DEFUN([BASH_CHECK_GETPW_FUNCS], > +[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h) > +AC_CACHE_VAL(bash_cv_getpw_declared, > +[AC_EGREP_CPP(getpwuid, > +[ > +#include <sys/types.h> > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif > +#include <pwd.h> > +], > +bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)]) > +AC_MSG_RESULT($bash_cv_getpw_declared) > +if test $bash_cv_getpw_declared = yes; then > +AC_DEFINE(HAVE_GETPW_DECLS) > +fi > +]) > + > +AC_DEFUN([BASH_CHECK_DEV_FD], > +[AC_MSG_CHECKING(whether /dev/fd is available) > +AC_CACHE_VAL(bash_cv_dev_fd, > +[if test -d /dev/fd && test -r /dev/fd/0; then > + bash_cv_dev_fd=standard > + elif test -d /proc/self/fd && test -r /proc/self/fd/0; then > + bash_cv_dev_fd=whacky > + else > + bash_cv_dev_fd=absent > + fi > +]) > +AC_MSG_RESULT($bash_cv_dev_fd) > +if test $bash_cv_dev_fd = "standard"; then > + AC_DEFINE(HAVE_DEV_FD) > + AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/") > +elif test $bash_cv_dev_fd = "whacky"; then > + AC_DEFINE(HAVE_DEV_FD) > + AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/") > +fi > +]) > + > +AC_DEFUN([BASH_CHECK_DEV_STDIN], > +[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) > +AC_CACHE_VAL(bash_cv_dev_stdin, > +[if test -d /dev/fd && test -r /dev/stdin; then > + bash_cv_dev_stdin=present > + elif test -d /proc/self/fd && test -r /dev/stdin; then > + bash_cv_dev_stdin=present > + else > + bash_cv_dev_stdin=absent > + fi > +]) > +AC_MSG_RESULT($bash_cv_dev_stdin) > +if test $bash_cv_dev_stdin = "present"; then > + AC_DEFINE(HAVE_DEV_STDIN) > +fi > +]) > + > +dnl > +dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions > +dnl > +AC_DEFUN([BASH_CHECK_KERNEL_RLIMIT], > +[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) > +AC_CACHE_VAL(bash_cv_kernel_rlimit, > +[AC_TRY_COMPILE([ > +#include <sys/types.h> > +#include <sys/resource.h> > +], > +[ > + int f; > + f = RLIMIT_DATA; > +], bash_cv_kernel_rlimit=no, > +[AC_TRY_COMPILE([ > +#include <sys/types.h> > +#define _KERNEL > +#include <sys/resource.h> > +#undef _KERNEL > +], > +[ > + int f; > + f = RLIMIT_DATA; > +], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] > +)]) > +AC_MSG_RESULT($bash_cv_kernel_rlimit) > +if test $bash_cv_kernel_rlimit = yes; then > +AC_DEFINE(RLIMIT_NEEDS_KERNEL) > +fi > +]) > + > +dnl > +dnl Check for 64-bit off_t -- used for malloc alignment > +dnl > +dnl C does not allow duplicate case labels, so the compile will fail if > +dnl sizeof(off_t) is > 4. > +dnl > +AC_DEFUN([BASH_CHECK_OFF_T_64], > +[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, > +AC_TRY_COMPILE([ > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#include <sys/types.h> > +],[ > +switch (0) case 0: case (sizeof (off_t) <= 4):; > +], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) > +if test $bash_cv_off_t_64 = yes; then > + AC_DEFINE(HAVE_OFF_T_64) > +fi]) > + > +AC_DEFUN([BASH_CHECK_RTSIGS], > +[AC_MSG_CHECKING(for unusable real-time signals due to large values) > +AC_CACHE_VAL(bash_cv_unusable_rtsigs, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <signal.h> > + > +#ifndef NSIG > +# define NSIG 64 > +#endif > + > +main () > +{ > + int n_sigs = 2 * NSIG; > +#ifdef SIGRTMIN > + int rtmin = SIGRTMIN; > +#else > + int rtmin = 0; > +#endif > + > + exit(rtmin < n_sigs); > +}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, > + [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) > + bash_cv_unusable_rtsigs=yes] > +)]) > +AC_MSG_RESULT($bash_cv_unusable_rtsigs) > +if test $bash_cv_unusable_rtsigs = yes; then > +AC_DEFINE(UNUSABLE_RT_SIGNALS) > +fi > +]) > + > +dnl > +dnl check for availability of multibyte characters and functions > +dnl > +AH_TEMPLATE([HAVE_MBSRTOWCS], [Define if we have the mbsrtowcs function]) > +AH_TEMPLATE([HAVE_WCWIDTH], [Define if we have the wcwidth function]) > +AH_TEMPLATE([HAVE_MBSTATE_T], [Define if we have mbstate_t]) > +AH_TEMPLATE([HAVE_LANGINFO_CODESET], [Define if we have nl_langinfo and CODESET]) > +AC_DEFUN([BASH_CHECK_MULTIBYTE], > +[ > +AC_CHECK_HEADERS(wctype.h) > +AC_CHECK_HEADERS(wchar.h) > +AC_CHECK_HEADERS(langinfo.h) > + > +AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) > +AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) > + > +AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, > +[AC_TRY_RUN([ > +#include <wchar.h> > +int > +main () > +{ > + mbstate_t ps; > + return 0; > +}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) > +if test $bash_cv_have_mbstate_t = yes; then > + AC_DEFINE(HAVE_MBSTATE_T) > +fi > + > +AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, > +[AC_TRY_LINK( > +[#include <langinfo.h>], > +[char* cs = nl_langinfo(CODESET);], > +bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) > +if test $bash_cv_langinfo_codeset = yes; then > + AC_DEFINE(HAVE_LANGINFO_CODESET) > +fi > + > +]) > + > +dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB > +dnl require: > +dnl AC_PROG_CC > +dnl BASH_CHECK_LIB_TERMCAP > + > +AC_DEFUN([RL_LIB_READLINE_VERSION], > +[ > +AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) > + > +AC_MSG_CHECKING([version of installed readline library]) > + > +# What a pain in the ass this is. > + > +# save cpp and ld options > +_save_CFLAGS="$CFLAGS" > +_save_LDFLAGS="$LDFLAGS" > +_save_LIBS="$LIBS" > + > +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This > +# allows the caller to do something like $_rl_prefix=$withval if the user > +# specifies --with-installed-readline=PREFIX as an argument to configure > + > +if test -z "$ac_cv_rl_prefix"; then > +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} > +fi > + > +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include > +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib > + > +LIBS="$LIBS -lreadline ${TERMCAP_LIB}" > +CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" > +LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" > + > +AC_TRY_RUN([ > +#include <stdio.h> > +#include <readline/readline.h> > + > +main() > +{ > + FILE *fp; > + fp = fopen("conftest.rlv", "w"); > + if (fp == 0) exit(1); > + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); > + fclose(fp); > + exit(0); > +} > +], > +ac_cv_rl_version=`cat conftest.rlv`, > +ac_cv_rl_version='0.0', > +ac_cv_rl_version='4.2') > + > +CFLAGS="$_save_CFLAGS" > +LDFLAGS="$_save_LDFLAGS" > +LIBS="$_save_LIBS" > + > +RL_MAJOR=0 > +RL_MINOR=0 > + > +# ( > +case "$ac_cv_rl_version" in > +2*|3*|4*|5*|6*|7*|8*|9*) > + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` > + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` > + ;; > +esac > + > +# ((( > +case $RL_MAJOR in > +[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; > +[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; > +*) _RL_MAJOR=00 ;; > +esac > + > +# ((( > +case $RL_MINOR in > +[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; > +[[0-9]]) _RL_MINOR=0$RL_MINOR ;; > +*) _RL_MINOR=00 ;; > +esac > + > +RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" > + > +# Readline versions greater than 4.2 have these defines in readline.h > + > +if test $ac_cv_rl_version = '0.0' ; then > + AC_MSG_WARN([Could not test version of installed readline library.]) > +elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then > + # set these for use by the caller > + RL_PREFIX=$ac_cv_rl_prefix > + RL_LIBDIR=$ac_cv_rl_libdir > + RL_INCLUDEDIR=$ac_cv_rl_includedir > + AC_MSG_RESULT($ac_cv_rl_version) > +else > + > +AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) > +AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) > +AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) > + > +AC_SUBST(RL_VERSION) > +AC_SUBST(RL_MAJOR) > +AC_SUBST(RL_MINOR) > + > +# set these for use by the caller > +RL_PREFIX=$ac_cv_rl_prefix > +RL_LIBDIR=$ac_cv_rl_libdir > +RL_INCLUDEDIR=$ac_cv_rl_includedir > + > +AC_MSG_RESULT($ac_cv_rl_version) > + > +fi > +]) > diff --git a/meta/recipes-core/readline/readline-6.2/acinclude.m4 b/meta/recipes-core/readline/readline-6.2/acinclude.m4 > new file mode 100644 > index 0000000..c30a7d3 > --- /dev/null > +++ b/meta/recipes-core/readline/readline-6.2/acinclude.m4 > @@ -0,0 +1,1871 @@ > +dnl > +dnl Bash specific tests > +dnl > +dnl Some derived from PDKSH 5.1.3 autoconf tests > +dnl > + > +AC_DEFUN([BASH_C_LONG_LONG], > +[AC_CACHE_CHECK(for long long, ac_cv_c_long_long, > +[if test "$GCC" = yes; then > + ac_cv_c_long_long=yes > +else > +AC_TRY_RUN([ > +int > +main() > +{ > +long long foo = 0; > +exit(sizeof(long long) < sizeof(long)); > +} > +], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) > +fi]) > +if test $ac_cv_c_long_long = yes; then > + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) > +fi > +]) > + > +dnl > +dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX > +dnl (< changed to <=) added. > +dnl > +AC_DEFUN([BASH_C_LONG_DOUBLE], > +[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, > +[if test "$GCC" = yes; then > + ac_cv_c_long_double=yes > +else > +AC_TRY_RUN([ > +int > +main() > +{ > + /* The Stardent Vistra knows sizeof(long double), but does not > + support it. */ > + long double foo = 0.0; > + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ > + /* On IRIX 5.3, the compiler converts long double to double with a warning, > + but compiles this successfully. */ > + exit(sizeof(long double) <= sizeof(double)); > +} > +], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) > +fi]) > +if test $ac_cv_c_long_double = yes; then > + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) > +fi > +]) > + > +dnl > +dnl Check for <inttypes.h>. This is separated out so that it can be > +dnl AC_REQUIREd. > +dnl > +dnl BASH_HEADER_INTTYPES > +AC_DEFUN([BASH_HEADER_INTTYPES], > +[ > + AC_CHECK_HEADERS(inttypes.h) > +]) > + > +dnl > +dnl check for typedef'd symbols in header files, but allow the caller to > +dnl specify the include files to be checked in addition to the default > +dnl > +dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) > +AC_DEFUN([BASH_CHECK_TYPE], > +[ > +AC_REQUIRE([AC_HEADER_STDC])dnl > +AC_REQUIRE([BASH_HEADER_INTTYPES]) > +AC_MSG_CHECKING(for $1) > +AC_CACHE_VAL(bash_cv_type_$1, > +[AC_EGREP_CPP($1, [#include <sys/types.h> > +#if STDC_HEADERS > +#include <stdlib.h> > +#include <stddef.h> > +#endif > +#if HAVE_INTTYPES_H > +#include <inttypes.h> > +#endif > +$2 > +], bash_cv_type_$1=yes, bash_cv_type_$1=no)]) > +AC_MSG_RESULT($bash_cv_type_$1) > +ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then > + AC_DEFINE($4) > + fi]) > +if test $bash_cv_type_$1 = no; then > + AC_DEFINE_UNQUOTED($1, $3) > +fi > +]) > + > +dnl > +dnl BASH_CHECK_DECL(FUNC) > +dnl > +dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like > +dnl AC_CHECK_DECL > +dnl > +AC_DEFUN([BASH_CHECK_DECL], > +[ > +AC_REQUIRE([AC_HEADER_STDC]) > +AC_REQUIRE([BASH_HEADER_INTTYPES]) > +AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, > +[AC_TRY_LINK( > +[ > +#if STDC_HEADERS > +# include <stdlib.h> > +#endif > +#if HAVE_INTTYPES_H > +# include <inttypes.h> > +#endif > +], > +[return !$1;], > +bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) > +bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` > +if test $bash_cv_decl_$1 = yes; then > + AC_DEFINE_UNQUOTED($bash_tr_func, 1) > +else > + AC_DEFINE_UNQUOTED($bash_tr_func, 0) > +fi > +]) > + > +AC_DEFUN([BASH_DECL_PRINTF], > +[AC_MSG_CHECKING(for declaration of printf in <stdio.h>) > +AC_CACHE_VAL(bash_cv_printf_declared, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#ifdef __STDC__ > +typedef int (*_bashfunc)(const char *, ...); > +#else > +typedef int (*_bashfunc)(); > +#endif > +main() > +{ > +_bashfunc pf; > +pf = (_bashfunc) printf; > +exit(pf == 0); > +} > +], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, > + [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) > + bash_cv_printf_declared=yes] > +)]) > +AC_MSG_RESULT($bash_cv_printf_declared) > +if test $bash_cv_printf_declared = yes; then > +AC_DEFINE(PRINTF_DECLARED) > +fi > +]) > + > +AC_DEFUN([BASH_DECL_SBRK], > +[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>) > +AC_CACHE_VAL(bash_cv_sbrk_declared, > +[AC_EGREP_HEADER(sbrk, unistd.h, > + bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) > +AC_MSG_RESULT($bash_cv_sbrk_declared) > +if test $bash_cv_sbrk_declared = yes; then > +AC_DEFINE(SBRK_DECLARED) > +fi > +]) > + > +dnl > +dnl Check for sys_siglist[] or _sys_siglist[] > +dnl > +AC_DEFUN([BASH_DECL_UNDER_SYS_SIGLIST], > +[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) > +AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, > +[AC_TRY_COMPILE([ > +#include <sys/types.h> > +#include <signal.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif], [ char *msg = _sys_siglist[2]; ], > + bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, > + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl > +AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) > +if test $bash_cv_decl_under_sys_siglist = yes; then > +AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) > +fi > +]) > + > +AC_DEFUN([BASH_UNDER_SYS_SIGLIST], > +[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) > +AC_MSG_CHECKING([for _sys_siglist in system C library]) > +AC_CACHE_VAL(bash_cv_under_sys_siglist, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <signal.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#ifndef UNDER_SYS_SIGLIST_DECLARED > +extern char *_sys_siglist[]; > +#endif > +main() > +{ > +char *msg = (char *)_sys_siglist[2]; > +exit(msg == 0); > +}], > + bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, > + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) > + bash_cv_under_sys_siglist=no])]) > +AC_MSG_RESULT($bash_cv_under_sys_siglist) > +if test $bash_cv_under_sys_siglist = yes; then > +AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) > +fi > +]) > + > +AC_DEFUN([BASH_SYS_SIGLIST], > +[ > +AC_CHECK_DECLS([sys_siglist]) > +AC_MSG_CHECKING([for sys_siglist in system C library]) > +AC_CACHE_VAL(bash_cv_sys_siglist, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <signal.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#ifndef HAVE_DECL_SYS_SIGLIST > +extern char *sys_siglist[]; > +#endif > +main() > +{ > +char *msg = sys_siglist[2]; > +exit(msg == 0); > +}], > + bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, > + [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) > + bash_cv_sys_siglist=no])]) > +AC_MSG_RESULT($bash_cv_sys_siglist) > +if test $bash_cv_sys_siglist = yes; then > +AC_DEFINE(HAVE_SYS_SIGLIST) > +fi > +]) > + > +dnl Check for the various permutations of sys_siglist and make sure we > +dnl compile in siglist.o if they're not defined > +AC_DEFUN([BASH_CHECK_SYS_SIGLIST], [ > +AC_REQUIRE([BASH_SYS_SIGLIST]) > +AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) > +AC_REQUIRE([BASH_FUNC_STRSIGNAL]) > +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then > + SIGLIST_O=siglist.o > +else > + SIGLIST_O= > +fi > +AC_SUBST([SIGLIST_O]) > +]) > + > +dnl Check for sys_errlist[] and sys_nerr, check for declaration > +AC_DEFUN([BASH_SYS_ERRLIST], > +[AC_MSG_CHECKING([for sys_errlist and sys_nerr]) > +AC_CACHE_VAL(bash_cv_sys_errlist, > +[AC_TRY_LINK([#include <errno.h>], > +[extern char *sys_errlist[]; > + extern int sys_nerr; > + char *msg = sys_errlist[sys_nerr - 1];], > + bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl > +AC_MSG_RESULT($bash_cv_sys_errlist) > +if test $bash_cv_sys_errlist = yes; then > +AC_DEFINE(HAVE_SYS_ERRLIST) > +fi > +]) > + > +dnl > +dnl Check if dup2() does not clear the close on exec flag > +dnl > +AC_DEFUN([BASH_FUNC_DUP2_CLOEXEC_CHECK], > +[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) > +AC_CACHE_VAL(bash_cv_dup2_broken, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <fcntl.h> > +main() > +{ > + int fd1, fd2, fl; > + fd1 = open("/dev/null", 2); > + if (fcntl(fd1, 2, 1) < 0) > + exit(1); > + fd2 = dup2(fd1, 1); > + if (fd2 < 0) > + exit(2); > + fl = fcntl(fd2, 1, 0); > + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ > + exit(fl != 1); > +} > +], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, > + [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) > + bash_cv_dup2_broken=no]) > +]) > +AC_MSG_RESULT($bash_cv_dup2_broken) > +if test $bash_cv_dup2_broken = yes; then > +AC_DEFINE(DUP2_BROKEN) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_STRSIGNAL], > +[AC_MSG_CHECKING([for the existence of strsignal]) > +AC_CACHE_VAL(bash_cv_have_strsignal, > +[AC_TRY_LINK([#include <sys/types.h> > +#include <signal.h>], > +[char *s = (char *)strsignal(2);], > + bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) > +AC_MSG_RESULT($bash_cv_have_strsignal) > +if test $bash_cv_have_strsignal = yes; then > +AC_DEFINE(HAVE_STRSIGNAL) > +fi > +]) > + > +dnl Check to see if opendir will open non-directories (not a nice thing) > +AC_DEFUN([BASH_FUNC_OPENDIR_CHECK], > +[AC_REQUIRE([AC_HEADER_DIRENT])dnl > +AC_MSG_CHECKING(if opendir() opens non-directories) > +AC_CACHE_VAL(bash_cv_opendir_not_robust, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#include <sys/types.h> > +#include <fcntl.h> > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif /* HAVE_UNISTD_H */ > +#if defined(HAVE_DIRENT_H) > +# include <dirent.h> > +#else > +# define dirent direct > +# ifdef HAVE_SYS_NDIR_H > +# include <sys/ndir.h> > +# endif /* SYSNDIR */ > +# ifdef HAVE_SYS_DIR_H > +# include <sys/dir.h> > +# endif /* SYSDIR */ > +# ifdef HAVE_NDIR_H > +# include <ndir.h> > +# endif > +#endif /* HAVE_DIRENT_H */ > +main() > +{ > +DIR *dir; > +int fd, err; > +err = mkdir("/tmp/bash-aclocal", 0700); > +if (err < 0) { > + perror("mkdir"); > + exit(1); > +} > +unlink("/tmp/bash-aclocal/not_a_directory"); > +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); > +write(fd, "\n", 1); > +close(fd); > +dir = opendir("/tmp/bash-aclocal/not_a_directory"); > +unlink("/tmp/bash-aclocal/not_a_directory"); > +rmdir("/tmp/bash-aclocal"); > +exit (dir == 0); > +}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, > + [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) > + bash_cv_opendir_not_robust=no] > +)]) > +AC_MSG_RESULT($bash_cv_opendir_not_robust) > +if test $bash_cv_opendir_not_robust = yes; then > +AC_DEFINE(OPENDIR_NOT_ROBUST) > +fi > +]) > + > +dnl > +AH_TEMPLATE([VOID_SIGHANDLER], [Define if signal handlers return type void]) > +AC_DEFUN([BASH_TYPE_SIGHANDLER], > +[AC_MSG_CHECKING([whether signal handlers are of type void]) > +AC_CACHE_VAL(bash_cv_void_sighandler, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <signal.h> > +#ifdef signal > +#undef signal > +#endif > +#ifdef __cplusplus > +extern "C" > +#endif > +void (*signal ()) ();], > +[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl > +AC_MSG_RESULT($bash_cv_void_sighandler) > +if test $bash_cv_void_sighandler = yes; then > +AC_DEFINE(VOID_SIGHANDLER) > +fi > +]) > + > +dnl > +dnl A signed 16-bit integer quantity > +dnl > +AC_DEFUN([BASH_TYPE_BITS16_T], > +[ > +if test "$ac_cv_sizeof_short" = 2; then > + AC_CHECK_TYPE(bits16_t, short) > +elif test "$ac_cv_sizeof_char" = 2; then > + AC_CHECK_TYPE(bits16_t, char) > +else > + AC_CHECK_TYPE(bits16_t, short) > +fi > +]) > + > +dnl > +dnl An unsigned 16-bit integer quantity > +dnl > +AC_DEFUN([BASH_TYPE_U_BITS16_T], > +[ > +if test "$ac_cv_sizeof_short" = 2; then > + AC_CHECK_TYPE(u_bits16_t, unsigned short) > +elif test "$ac_cv_sizeof_char" = 2; then > + AC_CHECK_TYPE(u_bits16_t, unsigned char) > +else > + AC_CHECK_TYPE(u_bits16_t, unsigned short) > +fi > +]) > + > +dnl > +dnl A signed 32-bit integer quantity > +dnl > +AC_DEFUN([BASH_TYPE_BITS32_T], > +[ > +if test "$ac_cv_sizeof_int" = 4; then > + AC_CHECK_TYPE(bits32_t, int) > +elif test "$ac_cv_sizeof_long" = 4; then > + AC_CHECK_TYPE(bits32_t, long) > +else > + AC_CHECK_TYPE(bits32_t, int) > +fi > +]) > + > +dnl > +dnl An unsigned 32-bit integer quantity > +dnl > +AC_DEFUN([BASH_TYPE_U_BITS32_T], > +[ > +if test "$ac_cv_sizeof_int" = 4; then > + AC_CHECK_TYPE(u_bits32_t, unsigned int) > +elif test "$ac_cv_sizeof_long" = 4; then > + AC_CHECK_TYPE(u_bits32_t, unsigned long) > +else > + AC_CHECK_TYPE(u_bits32_t, unsigned int) > +fi > +]) > + > +AC_DEFUN([BASH_TYPE_PTRDIFF_T], > +[ > +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then > + AC_CHECK_TYPE(ptrdiff_t, int) > +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then > + AC_CHECK_TYPE(ptrdiff_t, long) > +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then > + AC_CHECK_TYPE(ptrdiff_t, [long long]) > +else > + AC_CHECK_TYPE(ptrdiff_t, int) > +fi > +]) > + > +dnl > +dnl A signed 64-bit quantity > +dnl > +AC_DEFUN([BASH_TYPE_BITS64_T], > +[ > +if test "$ac_cv_sizeof_char_p" = 8; then > + AC_CHECK_TYPE(bits64_t, char *) > +elif test "$ac_cv_sizeof_double" = 8; then > + AC_CHECK_TYPE(bits64_t, double) > +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then > + AC_CHECK_TYPE(bits64_t, [long long]) > +elif test "$ac_cv_sizeof_long" = 8; then > + AC_CHECK_TYPE(bits64_t, long) > +else > + AC_CHECK_TYPE(bits64_t, double) > +fi > +]) > + > +AC_DEFUN([BASH_TYPE_LONG_LONG], > +[ > +AC_CACHE_CHECK([for long long], bash_cv_type_long_long, > +[AC_TRY_LINK([ > +long long ll = 1; int i = 63;], > +[ > +long long llm = (long long) -1; > +return ll << i | ll >> i | llm / ll | llm % ll; > +], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) > +if test "$bash_cv_type_long_long" = 'long long'; then > + AC_DEFINE(HAVE_LONG_LONG, 1) > +fi > +]) > + > +AC_DEFUN([BASH_TYPE_UNSIGNED_LONG_LONG], > +[ > +AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, > +[AC_TRY_LINK([ > +unsigned long long ull = 1; int i = 63;], > +[ > +unsigned long long ullmax = (unsigned long long) -1; > +return ull << i | ull >> i | ullmax / ull | ullmax % ull; > +], bash_cv_type_unsigned_long_long='unsigned long long', > + bash_cv_type_unsigned_long_long='unsigned long')]) > +if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then > + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) > +fi > +]) > + > +dnl > +dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) > +dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use > +dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify > +dnl matters, this just checks for rlim_t, quad_t, or long. > +dnl > +AC_DEFUN([BASH_TYPE_RLIMIT], > +[AC_MSG_CHECKING(for size and type of struct rlimit fields) > +AC_CACHE_VAL(bash_cv_type_rlimit, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/resource.h>], > +[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ > +AC_TRY_RUN([ > +#include <sys/types.h> > +#include <sys/time.h> > +#include <sys/resource.h> > +main() > +{ > +#ifdef HAVE_QUAD_T > + struct rlimit rl; > + if (sizeof(rl.rlim_cur) == sizeof(quad_t)) > + exit(0); > +#endif > + exit(1); > +}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, > + [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) > + bash_cv_type_rlimit=long])]) > +]) > +AC_MSG_RESULT($bash_cv_type_rlimit) > +if test $bash_cv_type_rlimit = quad_t; then > +AC_DEFINE(RLIMTYPE, quad_t) > +elif test $bash_cv_type_rlimit = rlim_t; then > +AC_DEFINE(RLIMTYPE, rlim_t) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_LSTAT], > +[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an > +dnl inline function in <sys/stat.h>. > +AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, > +[AC_TRY_LINK([ > +#include <sys/types.h> > +#include <sys/stat.h> > +],[ lstat(".",(struct stat *)0); ], > +bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) > +if test $bash_cv_func_lstat = yes; then > + AC_DEFINE(HAVE_LSTAT) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_INET_ATON], > +[ > +AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, > +[AC_TRY_LINK([ > +#include <sys/types.h> > +#include <netinet/in.h> > +#include <arpa/inet.h> > +struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], > +bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) > +if test $bash_cv_func_inet_aton = yes; then > + AC_DEFINE(HAVE_INET_ATON) > +else > + AC_LIBOBJ(inet_aton) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_GETENV], > +[AC_MSG_CHECKING(to see if getenv can be redefined) > +AC_CACHE_VAL(bash_cv_getenv_redef, > +[AC_TRY_RUN([ > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif > +#ifndef __STDC__ > +# ifndef const > +# define const > +# endif > +#endif > +char * > +getenv (name) > +#if defined (__linux__) || defined (__bsdi__) || defined (convex) > + const char *name; > +#else > + char const *name; > +#endif /* !__linux__ && !__bsdi__ && !convex */ > +{ > +return "42"; > +} > +main() > +{ > +char *s; > +/* The next allows this program to run, but does not allow bash to link > + when it redefines getenv. I'm not really interested in figuring out > + why not. */ > +#if defined (NeXT) > +exit(1); > +#endif > +s = getenv("ABCDE"); > +exit(s == 0); /* force optimizer to leave getenv in */ > +} > +], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, > + [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) > + bash_cv_getenv_redef=yes] > +)]) > +AC_MSG_RESULT($bash_cv_getenv_redef) > +if test $bash_cv_getenv_redef = yes; then > +AC_DEFINE(CAN_REDEFINE_GETENV) > +fi > +]) > + > +# We should check for putenv before calling this > +AC_DEFUN([BASH_FUNC_STD_PUTENV], > +[ > +AC_REQUIRE([AC_HEADER_STDC]) > +AC_REQUIRE([AC_C_PROTOTYPES]) > +AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, > +[AC_TRY_LINK([ > +#if STDC_HEADERS > +#include <stdlib.h> > +#include <stddef.h> > +#endif > +#ifndef __STDC__ > +# ifndef const > +# define const > +# endif > +#endif > +#ifdef PROTOTYPES > +extern int putenv (char *); > +#else > +extern int putenv (); > +#endif > +], > +[return (putenv == 0);], > +bash_cv_std_putenv=yes, bash_cv_std_putenv=no > +)]) > +if test $bash_cv_std_putenv = yes; then > +AC_DEFINE(HAVE_STD_PUTENV) > +fi > +]) > + > +# We should check for unsetenv before calling this > +AC_DEFUN([BASH_FUNC_STD_UNSETENV], > +[ > +AC_REQUIRE([AC_HEADER_STDC]) > +AC_REQUIRE([AC_C_PROTOTYPES]) > +AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, > +[AC_TRY_LINK([ > +#if STDC_HEADERS > +#include <stdlib.h> > +#include <stddef.h> > +#endif > +#ifndef __STDC__ > +# ifndef const > +# define const > +# endif > +#endif > +#ifdef PROTOTYPES > +extern int unsetenv (const char *); > +#else > +extern int unsetenv (); > +#endif > +], > +[return (unsetenv == 0);], > +bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no > +)]) > +if test $bash_cv_std_unsetenv = yes; then > +AC_DEFINE(HAVE_STD_UNSETENV) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_ULIMIT_MAXFDS], > +[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) > +AC_CACHE_VAL(bash_cv_ulimit_maxfds, > +[AC_TRY_RUN([ > +main() > +{ > +long maxfds = ulimit(4, 0L); > +exit (maxfds == -1L); > +} > +], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, > + [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) > + bash_cv_ulimit_maxfds=no] > +)]) > +AC_MSG_RESULT($bash_cv_ulimit_maxfds) > +if test $bash_cv_ulimit_maxfds = yes; then > +AC_DEFINE(ULIMIT_MAXFDS) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_GETCWD], > +[AC_MSG_CHECKING([if getcwd() calls popen()]) > +AC_CACHE_VAL(bash_cv_getcwd_calls_popen, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > + > +#ifndef __STDC__ > +#ifndef const > +#define const > +#endif > +#endif > + > +int popen_called; > + > +FILE * > +popen(command, type) > + const char *command; > + const char *type; > +{ > + popen_called = 1; > + return (FILE *)NULL; > +} > + > +FILE *_popen(command, type) > + const char *command; > + const char *type; > +{ > + return (popen (command, type)); > +} > + > +int > +pclose(stream) > +FILE *stream; > +{ > + return 0; > +} > + > +int > +_pclose(stream) > +FILE *stream; > +{ > + return 0; > +} > + > +main() > +{ > + char lbuf[32]; > + popen_called = 0; > + getcwd(lbuf, 32); > + exit (popen_called); > +} > +], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, > + [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) > + bash_cv_getcwd_calls_popen=no] > +)]) > +AC_MSG_RESULT($bash_cv_getcwd_calls_popen) > +if test $bash_cv_getcwd_calls_popen = yes; then > +AC_DEFINE(GETCWD_BROKEN) > +AC_LIBOBJ(getcwd) > +fi > +]) > + > +dnl > +dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every > +dnl system, we can't use AC_PREREQ > +dnl > +AC_DEFUN([BASH_FUNC_GETHOSTBYNAME], > +[if test "X$bash_cv_have_gethostbyname" = "X"; then > +_bash_needmsg=yes > +else > +AC_MSG_CHECKING(for gethostbyname in socket library) > +_bash_needmsg= > +fi > +AC_CACHE_VAL(bash_cv_have_gethostbyname, > +[AC_TRY_LINK([#include <netdb.h>], > +[ struct hostent *hp; > + hp = gethostbyname("localhost"); > +], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] > +) > +if test "X$_bash_needmsg" = Xyes; then > + AC_MSG_CHECKING(for gethostbyname in socket library) > +fi > +AC_MSG_RESULT($bash_cv_have_gethostbyname) > +if test "$bash_cv_have_gethostbyname" = yes; then > +AC_DEFINE(HAVE_GETHOSTBYNAME) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_FNMATCH_EXTMATCH], > +[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) > +AC_CACHE_VAL(bash_cv_fnm_extmatch, > +[AC_TRY_RUN([ > +#include <fnmatch.h> > + > +main() > +{ > +#ifdef FNM_EXTMATCH > + exit (0); > +#else > + exit (1); > +#endif > +} > +], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, > + [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) > + bash_cv_fnm_extmatch=no]) > +]) > +AC_MSG_RESULT($bash_cv_fnm_extmatch) > +if test $bash_cv_fnm_extmatch = yes; then > +AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) > +fi > +]) > + > +AH_TEMPLATE([HAVE_POSIX_SIGSETJMP], [Define if we POSIX-style sigsetjmp/siglongjmp are available]) > +AC_DEFUN([BASH_FUNC_POSIX_SETJMP], > +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > +AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) > +AC_CACHE_VAL(bash_cv_func_sigsetjmp, > +[AC_TRY_RUN([ > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#include <sys/types.h> > +#include <signal.h> > +#include <setjmp.h> > + > +main() > +{ > +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) > +exit (1); > +#else > + > +int code; > +sigset_t set, oset; > +sigjmp_buf xx; > + > +/* get the mask */ > +sigemptyset(&set); > +sigemptyset(&oset); > +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); > +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); > + > +/* save it */ > +code = sigsetjmp(xx, 1); > +if (code) > + exit(0); /* could get sigmask and compare to oset here. */ > + > +/* change it */ > +sigaddset(&set, SIGINT); > +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); > + > +/* and siglongjmp */ > +siglongjmp(xx, 10); > +exit(1); > +#endif > +}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, > + [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) > + bash_cv_func_sigsetjmp=missing] > +)]) > +AC_MSG_RESULT($bash_cv_func_sigsetjmp) > +if test $bash_cv_func_sigsetjmp = present; then > +AC_DEFINE(HAVE_POSIX_SIGSETJMP) > +fi > +]) > + > +AH_TEMPLATE([STRCOLL_BROKEN], [Define if strcoll is broken with respect to strcmp in the default locale.]) > +AC_DEFUN([BASH_FUNC_STRCOLL], > +[ > +AC_MSG_CHECKING(whether or not strcoll and strcmp differ) > +AC_CACHE_VAL(bash_cv_func_strcoll_broken, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#if defined (HAVE_LOCALE_H) > +#include <locale.h> > +#endif > + > +main(c, v) > +int c; > +char *v[]; > +{ > + int r1, r2; > + char *deflocale, *defcoll; > + > +#ifdef HAVE_SETLOCALE > + deflocale = setlocale(LC_ALL, ""); > + defcoll = setlocale(LC_COLLATE, ""); > +#endif > + > +#ifdef HAVE_STRCOLL > + /* These two values are taken from tests/glob-test. */ > + r1 = strcoll("abd", "aXd"); > +#else > + r1 = 0; > +#endif > + r2 = strcmp("abd", "aXd"); > + > + /* These two should both be greater than 0. It is permissible for > + a system to return different values, as long as the sign is the > + same. */ > + > + /* Exit with 1 (failure) if these two values are both > 0, since > + this tests whether strcoll(3) is broken with respect to strcmp(3) > + in the default locale. */ > + exit (r1 > 0 && r2 > 0); > +} > +], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, > + [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) > + bash_cv_func_strcoll_broken=no] > +)]) > +AC_MSG_RESULT($bash_cv_func_strcoll_broken) > +if test $bash_cv_func_strcoll_broken = yes; then > +AC_DEFINE(STRCOLL_BROKEN) > +fi > +]) > + > +AC_DEFUN([BASH_FUNC_PRINTF_A_FORMAT], > +[AC_MSG_CHECKING([for printf floating point output in hex notation]) > +AC_CACHE_VAL(bash_cv_printf_a_format, > +[AC_TRY_RUN([ > +#include <stdio.h> > +#include <string.h> > + > +int > +main() > +{ > + double y = 0.0; > + char abuf[1024]; > + > + sprintf(abuf, "%A", y); > + exit(strchr(abuf, 'P') == (char *)0); > +} > +], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, > + [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) > + bash_cv_printf_a_format=no] > +)]) > +AC_MSG_RESULT($bash_cv_printf_a_format) > +if test $bash_cv_printf_a_format = yes; then > +AC_DEFINE(HAVE_PRINTF_A_FORMAT) > +fi > +]) > + > +AC_DEFUN([BASH_STRUCT_TERMIOS_LDISC], > +[ > +AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ > +#include <sys/types.h> > +#include <termios.h> > +]) > +]) > + > +AC_DEFUN([BASH_STRUCT_TERMIO_LDISC], > +[ > +AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ > +#include <sys/types.h> > +#include <termio.h> > +]) > +]) > + > +dnl > +dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS > +dnl > +dnl sets bash_cv_struct_stat_st_blocks > +dnl > +dnl unused for now; we'll see how AC_CHECK_MEMBERS works > +dnl > +AC_DEFUN([BASH_STRUCT_ST_BLOCKS], > +[ > +AC_MSG_CHECKING([for struct stat.st_blocks]) > +AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, > +[AC_TRY_COMPILE( > +[ > +#include <sys/types.h> > +#include <sys/stat.h> > +], > +[ > +main() > +{ > +static struct stat a; > +if (a.st_blocks) return 0; > +return 0; > +} > +], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) > +]) > +AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) > +if test "$bash_cv_struct_stat_st_blocks" = "yes"; then > +AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) > +fi > +]) > + > +AC_DEFUN([BASH_CHECK_LIB_TERMCAP], > +[ > +if test "X$bash_cv_termcap_lib" = "X"; then > +_bash_needmsg=yes > +else > +AC_MSG_CHECKING(which library has the termcap functions) > +_bash_needmsg= > +fi > +AC_CACHE_VAL(bash_cv_termcap_lib, > +[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, > + [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, > + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, > + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, > + bash_cv_termcap_lib=gnutermcap)])])])]) > +if test "X$_bash_needmsg" = "Xyes"; then > +AC_MSG_CHECKING(which library has the termcap functions) > +fi > +AC_MSG_RESULT(using $bash_cv_termcap_lib) > +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then > +LDFLAGS="$LDFLAGS -L./lib/termcap" > +TERMCAP_LIB="./lib/termcap/libtermcap.a" > +TERMCAP_DEP="./lib/termcap/libtermcap.a" > +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then > +TERMCAP_LIB=-ltermcap > +TERMCAP_DEP= > +elif test $bash_cv_termcap_lib = libtinfo; then > +TERMCAP_LIB=-ltinfo > +TERMCAP_DEP= > +elif test $bash_cv_termcap_lib = libncurses; then > +TERMCAP_LIB=-lncurses > +TERMCAP_DEP= > +else > +TERMCAP_LIB=-lcurses > +TERMCAP_DEP= > +fi > +]) > + > +dnl > +dnl Check for the presence of getpeername in libsocket. > +dnl If libsocket is present, check for libnsl and add it to LIBS if > +dnl it's there, since most systems with libsocket require linking > +dnl with libnsl as well. This should only be called if getpeername > +dnl was not found in libc. > +dnl > +dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT > +dnl AS WELL > +dnl > +AC_DEFUN([BASH_CHECK_LIB_SOCKET], > +[ > +if test "X$bash_cv_have_socklib" = "X"; then > +_bash_needmsg= > +else > +AC_MSG_CHECKING(for socket library) > +_bash_needmsg=yes > +fi > +AC_CACHE_VAL(bash_cv_have_socklib, > +[AC_CHECK_LIB(socket, getpeername, > + bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) > +if test "X$_bash_needmsg" = Xyes; then > + AC_MSG_RESULT($bash_cv_have_socklib) > + _bash_needmsg= > +fi > +if test $bash_cv_have_socklib = yes; then > + # check for libnsl, add it to LIBS if present > + if test "X$bash_cv_have_libnsl" = "X"; then > + _bash_needmsg= > + else > + AC_MSG_CHECKING(for libnsl) > + _bash_needmsg=yes > + fi > + AC_CACHE_VAL(bash_cv_have_libnsl, > + [AC_CHECK_LIB(nsl, t_open, > + bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) > + if test "X$_bash_needmsg" = Xyes; then > + AC_MSG_RESULT($bash_cv_have_libnsl) > + _bash_needmsg= > + fi > + if test $bash_cv_have_libnsl = yes; then > + LIBS="-lsocket -lnsl $LIBS" > + else > + LIBS="-lsocket $LIBS" > + fi > + AC_DEFINE(HAVE_LIBSOCKET) > + AC_DEFINE(HAVE_GETPEERNAME) > +fi > +]) > + > +AH_TEMPLATE([STRUCT_DIRENT_HAS_D_INO], [Define if struct dirent has a d_ino member]) > +AC_DEFUN([BASH_STRUCT_DIRENT_D_INO], > +[AC_REQUIRE([AC_HEADER_DIRENT]) > +AC_MSG_CHECKING(if struct dirent has a d_ino member) > +AC_CACHE_VAL(bash_cv_dirent_has_dino, > +[AC_TRY_COMPILE([ > +#include <stdio.h> > +#include <sys/types.h> > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif /* HAVE_UNISTD_H */ > +#if defined(HAVE_DIRENT_H) > +# include <dirent.h> > +#else > +# define dirent direct > +# ifdef HAVE_SYS_NDIR_H > +# include <sys/ndir.h> > +# endif /* SYSNDIR */ > +# ifdef HAVE_SYS_DIR_H > +# include <sys/dir.h> > +# endif /* SYSDIR */ > +# ifdef HAVE_NDIR_H > +# include <ndir.h> > +# endif > +#endif /* HAVE_DIRENT_H */ > +],[ > +struct dirent d; int z; z = d.d_ino; > +], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) > +AC_MSG_RESULT($bash_cv_dirent_has_dino) > +if test $bash_cv_dirent_has_dino = yes; then > +AC_DEFINE(STRUCT_DIRENT_HAS_D_INO) > +fi > +]) > + > +AH_TEMPLATE([STRUCT_DIRENT_HAS_D_FILENO], [Define if struct dirent has a d_fileno member]) > +AC_DEFUN([BASH_STRUCT_DIRENT_D_FILENO], > +[AC_REQUIRE([AC_HEADER_DIRENT]) > +AC_MSG_CHECKING(if struct dirent has a d_fileno member) > +AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, > +[AC_TRY_COMPILE([ > +#include <stdio.h> > +#include <sys/types.h> > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif /* HAVE_UNISTD_H */ > +#if defined(HAVE_DIRENT_H) > +# include <dirent.h> > +#else > +# define dirent direct > +# ifdef HAVE_SYS_NDIR_H > +# include <sys/ndir.h> > +# endif /* SYSNDIR */ > +# ifdef HAVE_SYS_DIR_H > +# include <sys/dir.h> > +# endif /* SYSDIR */ > +# ifdef HAVE_NDIR_H > +# include <ndir.h> > +# endif > +#endif /* HAVE_DIRENT_H */ > +],[ > +struct dirent d; int z; z = d.d_fileno; > +], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) > +AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) > +if test $bash_cv_dirent_has_d_fileno = yes; then > +AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO) > +fi > +]) > + > +AC_DEFUN([BASH_STRUCT_TIMEVAL], > +[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) > +AC_CACHE_VAL(bash_cv_struct_timeval, > +[ > +AC_EGREP_HEADER(struct timeval, sys/time.h, > + bash_cv_struct_timeval=yes, > + AC_EGREP_HEADER(struct timeval, time.h, > + bash_cv_struct_timeval=yes, > + bash_cv_struct_timeval=no)) > +]) > +AC_MSG_RESULT($bash_cv_struct_timeval) > +if test $bash_cv_struct_timeval = yes; then > + AC_DEFINE(HAVE_TIMEVAL) > +fi > +]) > + > +AH_TEMPLATE([STRUCT_WINSIZE_IN_SYS_IOCTL], [Define if struct winsize is in sys/ioctl.h]) > +AH_TEMPLATE([STRUCT_WINSIZE_IN_TERMIOS], [Define if struct winsize is in termios.h]) > +AC_DEFUN([BASH_STRUCT_WINSIZE], > +[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) > +AC_CACHE_VAL(bash_cv_struct_winsize_header, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/ioctl.h>], [struct winsize x;], > + bash_cv_struct_winsize_header=ioctl_h, > + [AC_TRY_COMPILE([#include <sys/types.h> > +#include <termios.h>], [struct winsize x;], > + bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) > +])]) > +if test $bash_cv_struct_winsize_header = ioctl_h; then > + AC_MSG_RESULT(sys/ioctl.h) > + AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) > +elif test $bash_cv_struct_winsize_header = termios_h; then > + AC_MSG_RESULT(termios.h) > + AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) > +else > + AC_MSG_RESULT(not found) > +fi > +]) > + > +dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) > +AH_TEMPLATE([HAVE_POSIX_SIGNALS], [Define if we have the POSIX signal routines]) > +AH_TEMPLATE([HAVE_BSD_SIGNALS], [Define if we have the BSD signal routines]) > +AH_TEMPLATE([HAVE_USG_SIGHOLD], [Define if we have the USG signal routines]) > +AC_DEFUN([BASH_SYS_SIGNAL_VINTAGE], > +[AC_REQUIRE([AC_TYPE_SIGNAL]) > +AC_MSG_CHECKING(for type of signal functions) > +AC_CACHE_VAL(bash_cv_signal_vintage, > +[ > + AC_MSG_WARN([checking for posix...]) > + AC_TRY_LINK([#include <signal.h>],[ > + sigset_t ss; > + struct sigaction sa; > + sigemptyset(&ss); sigsuspend(&ss); > + sigaction(SIGINT, &sa, (struct sigaction *) 0); > + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); > + ], bash_cv_signal_vintage="posix", > + [ > + AC_MSG_WARN([checking for 4.2bsd...]) > + AC_TRY_LINK([#include <signal.h>], [ > + int mask = sigmask(SIGINT); > + sigsetmask(mask); sigblock(mask); sigpause(mask); > + ], bash_cv_signal_vintage="4.2bsd", > + [ > + AC_MSG_WARN([checking for svr3...]) > + AC_TRY_LINK([ > + #include <signal.h> > + RETSIGTYPE foo() { }], [ > + int mask = sigmask(SIGINT); > + sigset(SIGINT, foo); sigrelse(SIGINT); > + sighold(SIGINT); sigpause(SIGINT); > + ], bash_cv_signal_vintage="svr3", bash_cv_signal_vintage="v7" > + )] > + )] > +) > +]) > +AC_MSG_RESULT($bash_cv_signal_vintage) > +if test "$bash_cv_signal_vintage" = "posix"; then > +AC_DEFINE(HAVE_POSIX_SIGNALS) > +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then > +AC_DEFINE(HAVE_BSD_SIGNALS) > +elif test "$bash_cv_signal_vintage" = "svr3"; then > +AC_DEFINE(HAVE_USG_SIGHOLD) > +fi > +]) > + > +dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. > +AC_DEFUN([BASH_SYS_PGRP_SYNC], > +[AC_REQUIRE([AC_FUNC_GETPGRP]) > +AC_MSG_CHECKING(whether pgrps need synchronization) > +AC_CACHE_VAL(bash_cv_pgrp_pipe, > +[AC_TRY_RUN([ > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif > +main() > +{ > +# ifdef GETPGRP_VOID > +# define getpgID() getpgrp() > +# else > +# define getpgID() getpgrp(0) > +# define setpgid(x,y) setpgrp(x,y) > +# endif > + int pid1, pid2, fds[2]; > + int status; > + char ok; > + > + switch (pid1 = fork()) { > + case -1: > + exit(1); > + case 0: > + setpgid(0, getpid()); > + exit(0); > + } > + setpgid(pid1, pid1); > + > + sleep(2); /* let first child die */ > + > + if (pipe(fds) < 0) > + exit(2); > + > + switch (pid2 = fork()) { > + case -1: > + exit(3); > + case 0: > + setpgid(0, pid1); > + ok = getpgID() == pid1; > + write(fds[1], &ok, 1); > + exit(0); > + } > + setpgid(pid2, pid1); > + > + close(fds[1]); > + if (read(fds[0], &ok, 1) != 1) > + exit(4); > + wait(&status); > + wait(&status); > + exit(ok ? 0 : 5); > +} > +], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, > + [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) > + bash_cv_pgrp_pipe=no]) > +]) > +AC_MSG_RESULT($bash_cv_pgrp_pipe) > +if test $bash_cv_pgrp_pipe = yes; then > +AC_DEFINE(PGRP_PIPE) > +fi > +]) > + > +AH_TEMPLATE([MUST_REINSTALL_SIGHANDLERS], [Define if signal handlers must be reinstalled when invoked.]) > +AC_DEFUN([BASH_SYS_REINSTALL_SIGHANDLERS], > +[AC_REQUIRE([AC_TYPE_SIGNAL]) > +AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > +AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) > +AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, > +[AC_TRY_RUN([ > +#include <signal.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > + > +typedef RETSIGTYPE sigfunc(); > + > +int nsigint; > + > +#ifdef HAVE_POSIX_SIGNALS > +sigfunc * > +set_signal_handler(sig, handler) > + int sig; > + sigfunc *handler; > +{ > + struct sigaction act, oact; > + act.sa_handler = handler; > + act.sa_flags = 0; > + sigemptyset (&act.sa_mask); > + sigemptyset (&oact.sa_mask); > + sigaction (sig, &act, &oact); > + return (oact.sa_handler); > +} > +#else > +#define set_signal_handler(s, h) signal(s, h) > +#endif > + > +RETSIGTYPE > +sigint(s) > +int s; > +{ > + nsigint++; > +} > + > +main() > +{ > + nsigint = 0; > + set_signal_handler(SIGINT, sigint); > + kill((int)getpid(), SIGINT); > + kill((int)getpid(), SIGINT); > + exit(nsigint != 2); > +} > +], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, > + [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) > + bash_cv_must_reinstall_sighandlers=no] > +)]) > +AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) > +if test $bash_cv_must_reinstall_sighandlers = yes; then > +AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) > +fi > +]) > + > +dnl check that some necessary job control definitions are present > +AC_DEFUN([BASH_SYS_JOB_CONTROL_MISSING], > +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) > +AC_MSG_CHECKING(for presence of necessary job control definitions) > +AC_CACHE_VAL(bash_cv_job_control_missing, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#ifdef HAVE_SYS_WAIT_H > +#include <sys/wait.h> > +#endif > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#include <signal.h> > + > +/* Add more tests in here as appropriate. */ > +main() > +{ > +/* signal type */ > +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) > +exit(1); > +#endif > + > +/* signals and tty control. */ > +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) > +exit (1); > +#endif > + > +/* process control */ > +#if !defined (WNOHANG) || !defined (WUNTRACED) > +exit(1); > +#endif > + > +/* Posix systems have tcgetpgrp and waitpid. */ > +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) > +exit(1); > +#endif > + > +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) > +exit(1); > +#endif > + > +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ > +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) > +exit(1); > +#endif > + > +exit(0); > +}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, > + [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) > + bash_cv_job_control_missing=missing] > +)]) > +AC_MSG_RESULT($bash_cv_job_control_missing) > +if test $bash_cv_job_control_missing = missing; then > +AC_DEFINE(JOB_CONTROL_MISSING) > +fi > +]) > + > +dnl check whether named pipes are present > +dnl this requires a previous check for mkfifo, but that is awkward to specify > +AC_DEFUN([BASH_SYS_NAMED_PIPES], > +[AC_MSG_CHECKING(for presence of named pipes) > +AC_CACHE_VAL(bash_cv_sys_named_pipes, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <sys/stat.h> > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > + > +/* Add more tests in here as appropriate. */ > +main() > +{ > +int fd, err; > + > +#if defined (HAVE_MKFIFO) > +exit (0); > +#endif > + > +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) > +exit (1); > +#endif > + > +#if defined (NeXT) > +exit (1); > +#endif > +err = mkdir("/tmp/bash-aclocal", 0700); > +if (err < 0) { > + perror ("mkdir"); > + exit(1); > +} > +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); > +if (fd == -1) { > + rmdir ("/tmp/bash-aclocal"); > + exit (1); > +} > +close(fd); > +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); > +rmdir ("/tmp/bash-aclocal"); > +exit(0); > +}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, > + [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) > + bash_cv_sys_named_pipes=missing] > +)]) > +AC_MSG_RESULT($bash_cv_sys_named_pipes) > +if test $bash_cv_sys_named_pipes = missing; then > +AC_DEFINE(NAMED_PIPES_MISSING) > +fi > +]) > + > +AC_DEFUN([BASH_SYS_DEFAULT_MAIL_DIR], > +[AC_MSG_CHECKING(for default mail directory) > +AC_CACHE_VAL(bash_cv_mail_dir, > +[if test -d /var/mail; then > + bash_cv_mail_dir=/var/mail > + elif test -d /var/spool/mail; then > + bash_cv_mail_dir=/var/spool/mail > + elif test -d /usr/mail; then > + bash_cv_mail_dir=/usr/mail > + elif test -d /usr/spool/mail; then > + bash_cv_mail_dir=/usr/spool/mail > + else > + bash_cv_mail_dir=unknown > + fi > +]) > +AC_MSG_RESULT($bash_cv_mail_dir) > +AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") > +]) > + > +AC_DEFUN([BASH_HAVE_TIOCGWINSZ], > +[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) > +AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/ioctl.h>], [int x = TIOCGWINSZ;], > + bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) > +AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) > +if test $bash_cv_tiocgwinsz_in_ioctl = yes; then > +AC_DEFINE(GWINSZ_IN_SYS_IOCTL) > +fi > +]) > + > +AH_TEMPLATE([TIOCSTAT_IN_SYS_IOCTL], [Define if TIOCSTAT is in sys/ioctl.h]) > +AC_DEFUN([BASH_HAVE_TIOCSTAT], > +[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) > +AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/ioctl.h>], [int x = TIOCSTAT;], > + bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) > +AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) > +if test $bash_cv_tiocstat_in_ioctl = yes; then > +AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) > +fi > +]) > + > +AH_TEMPLATE([FIONREAD_IN_SYS_IOCTL], [Define if FIONREAD is in sys/ioctl.h]) > +AC_DEFUN([BASH_HAVE_FIONREAD], > +[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) > +AC_CACHE_VAL(bash_cv_fionread_in_ioctl, > +[AC_TRY_COMPILE([#include <sys/types.h> > +#include <sys/ioctl.h>], [int x = FIONREAD;], > + bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) > +AC_MSG_RESULT($bash_cv_fionread_in_ioctl) > +if test $bash_cv_fionread_in_ioctl = yes; then > +AC_DEFINE(FIONREAD_IN_SYS_IOCTL) > +fi > +]) > + > +dnl > +dnl See if speed_t is declared in <sys/types.h>. Some versions of linux > +dnl require a definition of speed_t each time <termcap.h> is included, > +dnl but you can only get speed_t if you include <termios.h> (on some > +dnl versions) or <sys/types.h> (on others). > +dnl > +AH_TEMPLATE([SPEED_T_IN_SYS_TYPES], [Define if speed_t is in sys/types.h]) > +AC_DEFUN([BASH_CHECK_SPEED_T], > +[AC_MSG_CHECKING(for speed_t in sys/types.h) > +AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, > +[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;], > + bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) > +AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) > +if test $bash_cv_speed_t_in_sys_types = yes; then > +AC_DEFINE(SPEED_T_IN_SYS_TYPES) > +fi > +]) > + > +AH_TEMPLATE([HAVE_GETPW_DECLS], [Define if getpw functions are declared in pwd.h]) > +AC_DEFUN([BASH_CHECK_GETPW_FUNCS], > +[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h) > +AC_CACHE_VAL(bash_cv_getpw_declared, > +[AC_EGREP_CPP(getpwuid, > +[ > +#include <sys/types.h> > +#ifdef HAVE_UNISTD_H > +# include <unistd.h> > +#endif > +#include <pwd.h> > +], > +bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)]) > +AC_MSG_RESULT($bash_cv_getpw_declared) > +if test $bash_cv_getpw_declared = yes; then > +AC_DEFINE(HAVE_GETPW_DECLS) > +fi > +]) > + > +AC_DEFUN([BASH_CHECK_DEV_FD], > +[AC_MSG_CHECKING(whether /dev/fd is available) > +AC_CACHE_VAL(bash_cv_dev_fd, > +[if test -d /dev/fd && test -r /dev/fd/0; then > + bash_cv_dev_fd=standard > + elif test -d /proc/self/fd && test -r /proc/self/fd/0; then > + bash_cv_dev_fd=whacky > + else > + bash_cv_dev_fd=absent > + fi > +]) > +AC_MSG_RESULT($bash_cv_dev_fd) > +if test $bash_cv_dev_fd = "standard"; then > + AC_DEFINE(HAVE_DEV_FD) > + AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/") > +elif test $bash_cv_dev_fd = "whacky"; then > + AC_DEFINE(HAVE_DEV_FD) > + AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/") > +fi > +]) > + > +AC_DEFUN([BASH_CHECK_DEV_STDIN], > +[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) > +AC_CACHE_VAL(bash_cv_dev_stdin, > +[if test -d /dev/fd && test -r /dev/stdin; then > + bash_cv_dev_stdin=present > + elif test -d /proc/self/fd && test -r /dev/stdin; then > + bash_cv_dev_stdin=present > + else > + bash_cv_dev_stdin=absent > + fi > +]) > +AC_MSG_RESULT($bash_cv_dev_stdin) > +if test $bash_cv_dev_stdin = "present"; then > + AC_DEFINE(HAVE_DEV_STDIN) > +fi > +]) > + > +dnl > +dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions > +dnl > +AC_DEFUN([BASH_CHECK_KERNEL_RLIMIT], > +[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) > +AC_CACHE_VAL(bash_cv_kernel_rlimit, > +[AC_TRY_COMPILE([ > +#include <sys/types.h> > +#include <sys/resource.h> > +], > +[ > + int f; > + f = RLIMIT_DATA; > +], bash_cv_kernel_rlimit=no, > +[AC_TRY_COMPILE([ > +#include <sys/types.h> > +#define _KERNEL > +#include <sys/resource.h> > +#undef _KERNEL > +], > +[ > + int f; > + f = RLIMIT_DATA; > +], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] > +)]) > +AC_MSG_RESULT($bash_cv_kernel_rlimit) > +if test $bash_cv_kernel_rlimit = yes; then > +AC_DEFINE(RLIMIT_NEEDS_KERNEL) > +fi > +]) > + > +dnl > +dnl Check for 64-bit off_t -- used for malloc alignment > +dnl > +dnl C does not allow duplicate case labels, so the compile will fail if > +dnl sizeof(off_t) is > 4. > +dnl > +AC_DEFUN([BASH_CHECK_OFF_T_64], > +[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, > +AC_TRY_COMPILE([ > +#ifdef HAVE_UNISTD_H > +#include <unistd.h> > +#endif > +#include <sys/types.h> > +],[ > +switch (0) case 0: case (sizeof (off_t) <= 4):; > +], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) > +if test $bash_cv_off_t_64 = yes; then > + AC_DEFINE(HAVE_OFF_T_64) > +fi]) > + > +AC_DEFUN([BASH_CHECK_RTSIGS], > +[AC_MSG_CHECKING(for unusable real-time signals due to large values) > +AC_CACHE_VAL(bash_cv_unusable_rtsigs, > +[AC_TRY_RUN([ > +#include <sys/types.h> > +#include <signal.h> > + > +#ifndef NSIG > +# define NSIG 64 > +#endif > + > +main () > +{ > + int n_sigs = 2 * NSIG; > +#ifdef SIGRTMIN > + int rtmin = SIGRTMIN; > +#else > + int rtmin = 0; > +#endif > + > + exit(rtmin < n_sigs); > +}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, > + [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) > + bash_cv_unusable_rtsigs=yes] > +)]) > +AC_MSG_RESULT($bash_cv_unusable_rtsigs) > +if test $bash_cv_unusable_rtsigs = yes; then > +AC_DEFINE(UNUSABLE_RT_SIGNALS) > +fi > +]) > + > +dnl > +dnl check for availability of multibyte characters and functions > +dnl > +AH_TEMPLATE([HAVE_MBSRTOWCS], [Define if we have the mbsrtowcs function]) > +AH_TEMPLATE([HAVE_WCWIDTH], [Define if we have the wcwidth function]) > +AH_TEMPLATE([HAVE_MBSTATE_T], [Define if we have mbstate_t]) > +AH_TEMPLATE([HAVE_LANGINFO_CODESET], [Define if we have nl_langinfo and CODESET]) > +AC_DEFUN([BASH_CHECK_MULTIBYTE], > +[ > +AC_CHECK_HEADERS(wctype.h) > +AC_CHECK_HEADERS(wchar.h) > +AC_CHECK_HEADERS(langinfo.h) > + > +AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) > +AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) > + > +AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, > +[AC_TRY_RUN([ > +#include <wchar.h> > +int > +main () > +{ > + mbstate_t ps; > + return 0; > +}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) > +if test $bash_cv_have_mbstate_t = yes; then > + AC_DEFINE(HAVE_MBSTATE_T) > +fi > + > +AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, > +[AC_TRY_LINK( > +[#include <langinfo.h>], > +[char* cs = nl_langinfo(CODESET);], > +bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) > +if test $bash_cv_langinfo_codeset = yes; then > + AC_DEFINE(HAVE_LANGINFO_CODESET) > +fi > + > +]) > + > +dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB > +dnl require: > +dnl AC_PROG_CC > +dnl BASH_CHECK_LIB_TERMCAP > + > +AC_DEFUN([RL_LIB_READLINE_VERSION], > +[ > +AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) > + > +AC_MSG_CHECKING([version of installed readline library]) > + > +# What a pain in the ass this is. > + > +# save cpp and ld options > +_save_CFLAGS="$CFLAGS" > +_save_LDFLAGS="$LDFLAGS" > +_save_LIBS="$LIBS" > + > +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This > +# allows the caller to do something like $_rl_prefix=$withval if the user > +# specifies --with-installed-readline=PREFIX as an argument to configure > + > +if test -z "$ac_cv_rl_prefix"; then > +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} > +fi > + > +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include > +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib > + > +LIBS="$LIBS -lreadline ${TERMCAP_LIB}" > +CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" > +LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" > + > +AC_TRY_RUN([ > +#include <stdio.h> > +#include <readline/readline.h> > + > +main() > +{ > + FILE *fp; > + fp = fopen("conftest.rlv", "w"); > + if (fp == 0) exit(1); > + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); > + fclose(fp); > + exit(0); > +} > +], > +ac_cv_rl_version=`cat conftest.rlv`, > +ac_cv_rl_version='0.0', > +ac_cv_rl_version='4.2') > + > +CFLAGS="$_save_CFLAGS" > +LDFLAGS="$_save_LDFLAGS" > +LIBS="$_save_LIBS" > + > +RL_MAJOR=0 > +RL_MINOR=0 > + > +# ( > +case "$ac_cv_rl_version" in > +2*|3*|4*|5*|6*|7*|8*|9*) > + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` > + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` > + ;; > +esac > + > +# ((( > +case $RL_MAJOR in > +[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; > +[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; > +*) _RL_MAJOR=00 ;; > +esac > + > +# ((( > +case $RL_MINOR in > +[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; > +[[0-9]]) _RL_MINOR=0$RL_MINOR ;; > +*) _RL_MINOR=00 ;; > +esac > + > +RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" > + > +# Readline versions greater than 4.2 have these defines in readline.h > + > +if test $ac_cv_rl_version = '0.0' ; then > + AC_MSG_WARN([Could not test version of installed readline library.]) > +elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then > + # set these for use by the caller > + RL_PREFIX=$ac_cv_rl_prefix > + RL_LIBDIR=$ac_cv_rl_libdir > + RL_INCLUDEDIR=$ac_cv_rl_includedir > + AC_MSG_RESULT($ac_cv_rl_version) > +else > + > +AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) > +AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) > +AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) > + > +AC_SUBST(RL_VERSION) > +AC_SUBST(RL_MAJOR) > +AC_SUBST(RL_MINOR) > + > +# set these for use by the caller > +RL_PREFIX=$ac_cv_rl_prefix > +RL_LIBDIR=$ac_cv_rl_libdir > +RL_INCLUDEDIR=$ac_cv_rl_includedir > + > +AC_MSG_RESULT($ac_cv_rl_version) > + > +fi > +]) > + > +AC_DEFUN(BASH_FUNC_CTYPE_NONASCII, > +[ > +AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters) > +AC_CACHE_VAL(bash_cv_func_ctype_nonascii, > +[AC_TRY_RUN([ > +#ifdef HAVE_LOCALE_H > +#include <locale.h> > +#endif > +#include <stdio.h> > +#include <ctype.h> > + > +main(c, v) > +int c; > +char *v[]; > +{ > + char *deflocale; > + unsigned char x; > + int r1, r2; > + > +#ifdef HAVE_SETLOCALE > + /* We take a shot here. If that locale is not known, try the > + system default. We try this one because '\342' (226) is > + known to be a printable character in that locale. */ > + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); > + if (deflocale == 0) > + deflocale = setlocale(LC_ALL, ""); > +#endif > + > + x = '\342'; > + r1 = isprint(x); > + x -= 128; > + r2 = isprint(x); > + exit (r1 == 0 || r2 == 0); > +} > +], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no, > + [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no) > + bash_cv_func_ctype_nonascii=no] > +)]) > +AC_MSG_RESULT($bash_cv_func_ctype_nonascii) > +if test $bash_cv_func_ctype_nonascii = yes; then > +AC_DEFINE(CTYPE_NON_ASCII) > +fi > +]) > + > +AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T, > +[AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t, > +[AC_TRY_LINK([ > +#include <signal.h> > +],[ sig_atomic_t x; ], > +ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)]) > +if test "$ac_cv_have_sig_atomic_t" = "no" > +then > + AC_CHECK_TYPE(sig_atomic_t,int) > +fi > +]) > diff --git a/meta/recipes-core/readline/readline_6.2.bb b/meta/recipes-core/readline/readline_6.2.bb > index fda01a4..09c4908 100644 > --- a/meta/recipes-core/readline/readline_6.2.bb > +++ b/meta/recipes-core/readline/readline_6.2.bb > @@ -1,6 +1,6 @@ > require readline.inc > > -PR = "r2" > +PR = "r3" > > SRC_URI[md5sum] = "67948acb2ca081f23359d0256e9a271c" > SRC_URI[sha256sum] = "79a696070a058c233c72dd6ac697021cc64abd5ed51e59db867d66d196a89381" >
Patch
diff --git a/meta/recipes-core/readline/files/acinclude.m4 b/meta/recipes-core/readline/files/acinclude.m4 deleted file mode 100644 index 8a45f99..0000000 --- a/meta/recipes-core/readline/files/acinclude.m4 +++ /dev/null @@ -1,1815 +0,0 @@ -dnl -dnl Bash specific tests -dnl -dnl Some derived from PDKSH 5.1.3 autoconf tests -dnl - -AC_DEFUN([BASH_C_LONG_LONG], -[AC_CACHE_CHECK(for long long, ac_cv_c_long_long, -[if test "$GCC" = yes; then - ac_cv_c_long_long=yes -else -AC_TRY_RUN([ -int -main() -{ -long long foo = 0; -exit(sizeof(long long) < sizeof(long)); -} -], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) -fi]) -if test $ac_cv_c_long_long = yes; then - AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) -fi -]) - -dnl -dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX -dnl (< changed to <=) added. -dnl -AC_DEFUN([BASH_C_LONG_DOUBLE], -[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, -[if test "$GCC" = yes; then - ac_cv_c_long_double=yes -else -AC_TRY_RUN([ -int -main() -{ - /* The Stardent Vistra knows sizeof(long double), but does not - support it. */ - long double foo = 0.0; - /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ - /* On IRIX 5.3, the compiler converts long double to double with a warning, - but compiles this successfully. */ - exit(sizeof(long double) <= sizeof(double)); -} -], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) -fi]) -if test $ac_cv_c_long_double = yes; then - AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) -fi -]) - -dnl -dnl Check for <inttypes.h>. This is separated out so that it can be -dnl AC_REQUIREd. -dnl -dnl BASH_HEADER_INTTYPES -AC_DEFUN([BASH_HEADER_INTTYPES], -[ - AC_CHECK_HEADERS(inttypes.h) -]) - -dnl -dnl check for typedef'd symbols in header files, but allow the caller to -dnl specify the include files to be checked in addition to the default -dnl -dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) -AC_DEFUN([BASH_CHECK_TYPE], -[ -AC_REQUIRE([AC_HEADER_STDC])dnl -AC_REQUIRE([BASH_HEADER_INTTYPES]) -AC_MSG_CHECKING(for $1) -AC_CACHE_VAL(bash_cv_type_$1, -[AC_EGREP_CPP($1, [#include <sys/types.h> -#if STDC_HEADERS -#include <stdlib.h> -#include <stddef.h> -#endif -#if HAVE_INTTYPES_H -#include <inttypes.h> -#endif -$2 -], bash_cv_type_$1=yes, bash_cv_type_$1=no)]) -AC_MSG_RESULT($bash_cv_type_$1) -ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then - AC_DEFINE($4) - fi]) -if test $bash_cv_type_$1 = no; then - AC_DEFINE_UNQUOTED($1, $3) -fi -]) - -dnl -dnl BASH_CHECK_DECL(FUNC) -dnl -dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like -dnl AC_CHECK_DECL -dnl -AC_DEFUN([BASH_CHECK_DECL], -[ -AC_REQUIRE([AC_HEADER_STDC]) -AC_REQUIRE([BASH_HEADER_INTTYPES]) -AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, -[AC_TRY_LINK( -[ -#if STDC_HEADERS -# include <stdlib.h> -#endif -#if HAVE_INTTYPES_H -# include <inttypes.h> -#endif -], -[return !$1;], -bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) -bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -if test $bash_cv_decl_$1 = yes; then - AC_DEFINE_UNQUOTED($bash_tr_func, 1) -else - AC_DEFINE_UNQUOTED($bash_tr_func, 0) -fi -]) - -AC_DEFUN([BASH_DECL_PRINTF], -[AC_MSG_CHECKING(for declaration of printf in <stdio.h>) -AC_CACHE_VAL(bash_cv_printf_declared, -[AC_TRY_RUN([ -#include <stdio.h> -#ifdef __STDC__ -typedef int (*_bashfunc)(const char *, ...); -#else -typedef int (*_bashfunc)(); -#endif -main() -{ -_bashfunc pf; -pf = (_bashfunc) printf; -exit(pf == 0); -} -], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, - [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) - bash_cv_printf_declared=yes] -)]) -AC_MSG_RESULT($bash_cv_printf_declared) -if test $bash_cv_printf_declared = yes; then -AC_DEFINE(PRINTF_DECLARED) -fi -]) - -AC_DEFUN([BASH_DECL_SBRK], -[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>) -AC_CACHE_VAL(bash_cv_sbrk_declared, -[AC_EGREP_HEADER(sbrk, unistd.h, - bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) -AC_MSG_RESULT($bash_cv_sbrk_declared) -if test $bash_cv_sbrk_declared = yes; then -AC_DEFINE(SBRK_DECLARED) -fi -]) - -dnl -dnl Check for sys_siglist[] or _sys_siglist[] -dnl -AC_DEFUN([BASH_DECL_UNDER_SYS_SIGLIST], -[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) -AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, -[AC_TRY_COMPILE([ -#include <sys/types.h> -#include <signal.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif], [ char *msg = _sys_siglist[2]; ], - bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, - [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl -AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) -if test $bash_cv_decl_under_sys_siglist = yes; then -AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) -fi -]) - -AC_DEFUN([BASH_UNDER_SYS_SIGLIST], -[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) -AC_MSG_CHECKING([for _sys_siglist in system C library]) -AC_CACHE_VAL(bash_cv_under_sys_siglist, -[AC_TRY_RUN([ -#include <sys/types.h> -#include <signal.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#ifndef UNDER_SYS_SIGLIST_DECLARED -extern char *_sys_siglist[]; -#endif -main() -{ -char *msg = (char *)_sys_siglist[2]; -exit(msg == 0); -}], - bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, - [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) - bash_cv_under_sys_siglist=no])]) -AC_MSG_RESULT($bash_cv_under_sys_siglist) -if test $bash_cv_under_sys_siglist = yes; then -AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) -fi -]) - -AC_DEFUN([BASH_SYS_SIGLIST], -[ -AC_CHECK_DECLS([sys_siglist]) -AC_MSG_CHECKING([for sys_siglist in system C library]) -AC_CACHE_VAL(bash_cv_sys_siglist, -[AC_TRY_RUN([ -#include <sys/types.h> -#include <signal.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#ifndef HAVE_DECL_SYS_SIGLIST -extern char *sys_siglist[]; -#endif -main() -{ -char *msg = sys_siglist[2]; -exit(msg == 0); -}], - bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, - [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) - bash_cv_sys_siglist=no])]) -AC_MSG_RESULT($bash_cv_sys_siglist) -if test $bash_cv_sys_siglist = yes; then -AC_DEFINE(HAVE_SYS_SIGLIST) -fi -]) - -dnl Check for the various permutations of sys_siglist and make sure we -dnl compile in siglist.o if they're not defined -AC_DEFUN([BASH_CHECK_SYS_SIGLIST], [ -AC_REQUIRE([BASH_SYS_SIGLIST]) -AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) -AC_REQUIRE([BASH_FUNC_STRSIGNAL]) -if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then - SIGLIST_O=siglist.o -else - SIGLIST_O= -fi -AC_SUBST([SIGLIST_O]) -]) - -dnl Check for sys_errlist[] and sys_nerr, check for declaration -AC_DEFUN([BASH_SYS_ERRLIST], -[AC_MSG_CHECKING([for sys_errlist and sys_nerr]) -AC_CACHE_VAL(bash_cv_sys_errlist, -[AC_TRY_LINK([#include <errno.h>], -[extern char *sys_errlist[]; - extern int sys_nerr; - char *msg = sys_errlist[sys_nerr - 1];], - bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl -AC_MSG_RESULT($bash_cv_sys_errlist) -if test $bash_cv_sys_errlist = yes; then -AC_DEFINE(HAVE_SYS_ERRLIST) -fi -]) - -dnl -dnl Check if dup2() does not clear the close on exec flag -dnl -AC_DEFUN([BASH_FUNC_DUP2_CLOEXEC_CHECK], -[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) -AC_CACHE_VAL(bash_cv_dup2_broken, -[AC_TRY_RUN([ -#include <sys/types.h> -#include <fcntl.h> -main() -{ - int fd1, fd2, fl; - fd1 = open("/dev/null", 2); - if (fcntl(fd1, 2, 1) < 0) - exit(1); - fd2 = dup2(fd1, 1); - if (fd2 < 0) - exit(2); - fl = fcntl(fd2, 1, 0); - /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ - exit(fl != 1); -} -], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, - [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) - bash_cv_dup2_broken=no]) -]) -AC_MSG_RESULT($bash_cv_dup2_broken) -if test $bash_cv_dup2_broken = yes; then -AC_DEFINE(DUP2_BROKEN) -fi -]) - -AC_DEFUN([BASH_FUNC_STRSIGNAL], -[AC_MSG_CHECKING([for the existence of strsignal]) -AC_CACHE_VAL(bash_cv_have_strsignal, -[AC_TRY_LINK([#include <sys/types.h> -#include <signal.h>], -[char *s = (char *)strsignal(2);], - bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) -AC_MSG_RESULT($bash_cv_have_strsignal) -if test $bash_cv_have_strsignal = yes; then -AC_DEFINE(HAVE_STRSIGNAL) -fi -]) - -dnl Check to see if opendir will open non-directories (not a nice thing) -AC_DEFUN([BASH_FUNC_OPENDIR_CHECK], -[AC_REQUIRE([AC_HEADER_DIRENT])dnl -AC_MSG_CHECKING(if opendir() opens non-directories) -AC_CACHE_VAL(bash_cv_opendir_not_robust, -[AC_TRY_RUN([ -#include <stdio.h> -#include <sys/types.h> -#include <fcntl.h> -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif /* HAVE_UNISTD_H */ -#if defined(HAVE_DIRENT_H) -# include <dirent.h> -#else -# define dirent direct -# ifdef HAVE_SYS_NDIR_H -# include <sys/ndir.h> -# endif /* SYSNDIR */ -# ifdef HAVE_SYS_DIR_H -# include <sys/dir.h> -# endif /* SYSDIR */ -# ifdef HAVE_NDIR_H -# include <ndir.h> -# endif -#endif /* HAVE_DIRENT_H */ -main() -{ -DIR *dir; -int fd, err; -err = mkdir("/tmp/bash-aclocal", 0700); -if (err < 0) { - perror("mkdir"); - exit(1); -} -unlink("/tmp/bash-aclocal/not_a_directory"); -fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); -write(fd, "\n", 1); -close(fd); -dir = opendir("/tmp/bash-aclocal/not_a_directory"); -unlink("/tmp/bash-aclocal/not_a_directory"); -rmdir("/tmp/bash-aclocal"); -exit (dir == 0); -}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, - [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) - bash_cv_opendir_not_robust=no] -)]) -AC_MSG_RESULT($bash_cv_opendir_not_robust) -if test $bash_cv_opendir_not_robust = yes; then -AC_DEFINE(OPENDIR_NOT_ROBUST) -fi -]) - -dnl -AH_TEMPLATE([VOID_SIGHANDLER], [Define if signal handlers return type void]) -AC_DEFUN([BASH_TYPE_SIGHANDLER], -[AC_MSG_CHECKING([whether signal handlers are of type void]) -AC_CACHE_VAL(bash_cv_void_sighandler, -[AC_TRY_COMPILE([#include <sys/types.h> -#include <signal.h> -#ifdef signal -#undef signal -#endif -#ifdef __cplusplus -extern "C" -#endif -void (*signal ()) ();], -[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl -AC_MSG_RESULT($bash_cv_void_sighandler) -if test $bash_cv_void_sighandler = yes; then -AC_DEFINE(VOID_SIGHANDLER) -fi -]) - -dnl -dnl A signed 16-bit integer quantity -dnl -AC_DEFUN([BASH_TYPE_BITS16_T], -[ -if test "$ac_cv_sizeof_short" = 2; then - AC_CHECK_TYPE(bits16_t, short) -elif test "$ac_cv_sizeof_char" = 2; then - AC_CHECK_TYPE(bits16_t, char) -else - AC_CHECK_TYPE(bits16_t, short) -fi -]) - -dnl -dnl An unsigned 16-bit integer quantity -dnl -AC_DEFUN([BASH_TYPE_U_BITS16_T], -[ -if test "$ac_cv_sizeof_short" = 2; then - AC_CHECK_TYPE(u_bits16_t, unsigned short) -elif test "$ac_cv_sizeof_char" = 2; then - AC_CHECK_TYPE(u_bits16_t, unsigned char) -else - AC_CHECK_TYPE(u_bits16_t, unsigned short) -fi -]) - -dnl -dnl A signed 32-bit integer quantity -dnl -AC_DEFUN([BASH_TYPE_BITS32_T], -[ -if test "$ac_cv_sizeof_int" = 4; then - AC_CHECK_TYPE(bits32_t, int) -elif test "$ac_cv_sizeof_long" = 4; then - AC_CHECK_TYPE(bits32_t, long) -else - AC_CHECK_TYPE(bits32_t, int) -fi -]) - -dnl -dnl An unsigned 32-bit integer quantity -dnl -AC_DEFUN([BASH_TYPE_U_BITS32_T], -[ -if test "$ac_cv_sizeof_int" = 4; then - AC_CHECK_TYPE(u_bits32_t, unsigned int) -elif test "$ac_cv_sizeof_long" = 4; then - AC_CHECK_TYPE(u_bits32_t, unsigned long) -else - AC_CHECK_TYPE(u_bits32_t, unsigned int) -fi -]) - -AC_DEFUN([BASH_TYPE_PTRDIFF_T], -[ -if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then - AC_CHECK_TYPE(ptrdiff_t, int) -elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then - AC_CHECK_TYPE(ptrdiff_t, long) -elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then - AC_CHECK_TYPE(ptrdiff_t, [long long]) -else - AC_CHECK_TYPE(ptrdiff_t, int) -fi -]) - -dnl -dnl A signed 64-bit quantity -dnl -AC_DEFUN([BASH_TYPE_BITS64_T], -[ -if test "$ac_cv_sizeof_char_p" = 8; then - AC_CHECK_TYPE(bits64_t, char *) -elif test "$ac_cv_sizeof_double" = 8; then - AC_CHECK_TYPE(bits64_t, double) -elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then - AC_CHECK_TYPE(bits64_t, [long long]) -elif test "$ac_cv_sizeof_long" = 8; then - AC_CHECK_TYPE(bits64_t, long) -else - AC_CHECK_TYPE(bits64_t, double) -fi -]) - -AC_DEFUN([BASH_TYPE_LONG_LONG], -[ -AC_CACHE_CHECK([for long long], bash_cv_type_long_long, -[AC_TRY_LINK([ -long long ll = 1; int i = 63;], -[ -long long llm = (long long) -1; -return ll << i | ll >> i | llm / ll | llm % ll; -], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) -if test "$bash_cv_type_long_long" = 'long long'; then - AC_DEFINE(HAVE_LONG_LONG, 1) -fi -]) - -AC_DEFUN([BASH_TYPE_UNSIGNED_LONG_LONG], -[ -AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, -[AC_TRY_LINK([ -unsigned long long ull = 1; int i = 63;], -[ -unsigned long long ullmax = (unsigned long long) -1; -return ull << i | ull >> i | ullmax / ull | ullmax % ull; -], bash_cv_type_unsigned_long_long='unsigned long long', - bash_cv_type_unsigned_long_long='unsigned long')]) -if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then - AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) -fi -]) - -dnl -dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) -dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use -dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify -dnl matters, this just checks for rlim_t, quad_t, or long. -dnl -AC_DEFUN([BASH_TYPE_RLIMIT], -[AC_MSG_CHECKING(for size and type of struct rlimit fields) -AC_CACHE_VAL(bash_cv_type_rlimit, -[AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/resource.h>], -[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ -AC_TRY_RUN([ -#include <sys/types.h> -#include <sys/time.h> -#include <sys/resource.h> -main() -{ -#ifdef HAVE_QUAD_T - struct rlimit rl; - if (sizeof(rl.rlim_cur) == sizeof(quad_t)) - exit(0); -#endif - exit(1); -}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, - [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) - bash_cv_type_rlimit=long])]) -]) -AC_MSG_RESULT($bash_cv_type_rlimit) -if test $bash_cv_type_rlimit = quad_t; then -AC_DEFINE(RLIMTYPE, quad_t) -elif test $bash_cv_type_rlimit = rlim_t; then -AC_DEFINE(RLIMTYPE, rlim_t) -fi -]) - -AC_DEFUN([BASH_FUNC_LSTAT], -[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an -dnl inline function in <sys/stat.h>. -AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, -[AC_TRY_LINK([ -#include <sys/types.h> -#include <sys/stat.h> -],[ lstat(".",(struct stat *)0); ], -bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) -if test $bash_cv_func_lstat = yes; then - AC_DEFINE(HAVE_LSTAT) -fi -]) - -AC_DEFUN([BASH_FUNC_INET_ATON], -[ -AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, -[AC_TRY_LINK([ -#include <sys/types.h> -#include <netinet/in.h> -#include <arpa/inet.h> -struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], -bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) -if test $bash_cv_func_inet_aton = yes; then - AC_DEFINE(HAVE_INET_ATON) -else - AC_LIBOBJ(inet_aton) -fi -]) - -AC_DEFUN([BASH_FUNC_GETENV], -[AC_MSG_CHECKING(to see if getenv can be redefined) -AC_CACHE_VAL(bash_cv_getenv_redef, -[AC_TRY_RUN([ -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif -#ifndef __STDC__ -# ifndef const -# define const -# endif -#endif -char * -getenv (name) -#if defined (__linux__) || defined (__bsdi__) || defined (convex) - const char *name; -#else - char const *name; -#endif /* !__linux__ && !__bsdi__ && !convex */ -{ -return "42"; -} -main() -{ -char *s; -/* The next allows this program to run, but does not allow bash to link - when it redefines getenv. I'm not really interested in figuring out - why not. */ -#if defined (NeXT) -exit(1); -#endif -s = getenv("ABCDE"); -exit(s == 0); /* force optimizer to leave getenv in */ -} -], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, - [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) - bash_cv_getenv_redef=yes] -)]) -AC_MSG_RESULT($bash_cv_getenv_redef) -if test $bash_cv_getenv_redef = yes; then -AC_DEFINE(CAN_REDEFINE_GETENV) -fi -]) - -# We should check for putenv before calling this -AC_DEFUN([BASH_FUNC_STD_PUTENV], -[ -AC_REQUIRE([AC_HEADER_STDC]) -AC_REQUIRE([AC_C_PROTOTYPES]) -AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, -[AC_TRY_LINK([ -#if STDC_HEADERS -#include <stdlib.h> -#include <stddef.h> -#endif -#ifndef __STDC__ -# ifndef const -# define const -# endif -#endif -#ifdef PROTOTYPES -extern int putenv (char *); -#else -extern int putenv (); -#endif -], -[return (putenv == 0);], -bash_cv_std_putenv=yes, bash_cv_std_putenv=no -)]) -if test $bash_cv_std_putenv = yes; then -AC_DEFINE(HAVE_STD_PUTENV) -fi -]) - -# We should check for unsetenv before calling this -AC_DEFUN([BASH_FUNC_STD_UNSETENV], -[ -AC_REQUIRE([AC_HEADER_STDC]) -AC_REQUIRE([AC_C_PROTOTYPES]) -AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, -[AC_TRY_LINK([ -#if STDC_HEADERS -#include <stdlib.h> -#include <stddef.h> -#endif -#ifndef __STDC__ -# ifndef const -# define const -# endif -#endif -#ifdef PROTOTYPES -extern int unsetenv (const char *); -#else -extern int unsetenv (); -#endif -], -[return (unsetenv == 0);], -bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no -)]) -if test $bash_cv_std_unsetenv = yes; then -AC_DEFINE(HAVE_STD_UNSETENV) -fi -]) - -AC_DEFUN([BASH_FUNC_ULIMIT_MAXFDS], -[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) -AC_CACHE_VAL(bash_cv_ulimit_maxfds, -[AC_TRY_RUN([ -main() -{ -long maxfds = ulimit(4, 0L); -exit (maxfds == -1L); -} -], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, - [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) - bash_cv_ulimit_maxfds=no] -)]) -AC_MSG_RESULT($bash_cv_ulimit_maxfds) -if test $bash_cv_ulimit_maxfds = yes; then -AC_DEFINE(ULIMIT_MAXFDS) -fi -]) - -AC_DEFUN([BASH_FUNC_GETCWD], -[AC_MSG_CHECKING([if getcwd() calls popen()]) -AC_CACHE_VAL(bash_cv_getcwd_calls_popen, -[AC_TRY_RUN([ -#include <stdio.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -#ifndef __STDC__ -#ifndef const -#define const -#endif -#endif - -int popen_called; - -FILE * -popen(command, type) - const char *command; - const char *type; -{ - popen_called = 1; - return (FILE *)NULL; -} - -FILE *_popen(command, type) - const char *command; - const char *type; -{ - return (popen (command, type)); -} - -int -pclose(stream) -FILE *stream; -{ - return 0; -} - -int -_pclose(stream) -FILE *stream; -{ - return 0; -} - -main() -{ - char lbuf[32]; - popen_called = 0; - getcwd(lbuf, 32); - exit (popen_called); -} -], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, - [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) - bash_cv_getcwd_calls_popen=no] -)]) -AC_MSG_RESULT($bash_cv_getcwd_calls_popen) -if test $bash_cv_getcwd_calls_popen = yes; then -AC_DEFINE(GETCWD_BROKEN) -AC_LIBOBJ(getcwd) -fi -]) - -dnl -dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every -dnl system, we can't use AC_PREREQ -dnl -AC_DEFUN([BASH_FUNC_GETHOSTBYNAME], -[if test "X$bash_cv_have_gethostbyname" = "X"; then -_bash_needmsg=yes -else -AC_MSG_CHECKING(for gethostbyname in socket library) -_bash_needmsg= -fi -AC_CACHE_VAL(bash_cv_have_gethostbyname, -[AC_TRY_LINK([#include <netdb.h>], -[ struct hostent *hp; - hp = gethostbyname("localhost"); -], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] -) -if test "X$_bash_needmsg" = Xyes; then - AC_MSG_CHECKING(for gethostbyname in socket library) -fi -AC_MSG_RESULT($bash_cv_have_gethostbyname) -if test "$bash_cv_have_gethostbyname" = yes; then -AC_DEFINE(HAVE_GETHOSTBYNAME) -fi -]) - -AC_DEFUN([BASH_FUNC_FNMATCH_EXTMATCH], -[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) -AC_CACHE_VAL(bash_cv_fnm_extmatch, -[AC_TRY_RUN([ -#include <fnmatch.h> - -main() -{ -#ifdef FNM_EXTMATCH - exit (0); -#else - exit (1); -#endif -} -], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, - [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) - bash_cv_fnm_extmatch=no]) -]) -AC_MSG_RESULT($bash_cv_fnm_extmatch) -if test $bash_cv_fnm_extmatch = yes; then -AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) -fi -]) - -AH_TEMPLATE([HAVE_POSIX_SIGSETJMP], [Define if we POSIX-style sigsetjmp/siglongjmp are available]) -AC_DEFUN([BASH_FUNC_POSIX_SETJMP], -[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) -AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) -AC_CACHE_VAL(bash_cv_func_sigsetjmp, -[AC_TRY_RUN([ -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#include <sys/types.h> -#include <signal.h> -#include <setjmp.h> - -main() -{ -#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) -exit (1); -#else - -int code; -sigset_t set, oset; -sigjmp_buf xx; - -/* get the mask */ -sigemptyset(&set); -sigemptyset(&oset); -sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); -sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); - -/* save it */ -code = sigsetjmp(xx, 1); -if (code) - exit(0); /* could get sigmask and compare to oset here. */ - -/* change it */ -sigaddset(&set, SIGINT); -sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); - -/* and siglongjmp */ -siglongjmp(xx, 10); -exit(1); -#endif -}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, - [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) - bash_cv_func_sigsetjmp=missing] -)]) -AC_MSG_RESULT($bash_cv_func_sigsetjmp) -if test $bash_cv_func_sigsetjmp = present; then -AC_DEFINE(HAVE_POSIX_SIGSETJMP) -fi -]) - -AH_TEMPLATE([STRCOLL_BROKEN], [Define if strcoll is broken with respect to strcmp in the default locale.]) -AC_DEFUN([BASH_FUNC_STRCOLL], -[ -AC_MSG_CHECKING(whether or not strcoll and strcmp differ) -AC_CACHE_VAL(bash_cv_func_strcoll_broken, -[AC_TRY_RUN([ -#include <stdio.h> -#if defined (HAVE_LOCALE_H) -#include <locale.h> -#endif - -main(c, v) -int c; -char *v[]; -{ - int r1, r2; - char *deflocale, *defcoll; - -#ifdef HAVE_SETLOCALE - deflocale = setlocale(LC_ALL, ""); - defcoll = setlocale(LC_COLLATE, ""); -#endif - -#ifdef HAVE_STRCOLL - /* These two values are taken from tests/glob-test. */ - r1 = strcoll("abd", "aXd"); -#else - r1 = 0; -#endif - r2 = strcmp("abd", "aXd"); - - /* These two should both be greater than 0. It is permissible for - a system to return different values, as long as the sign is the - same. */ - - /* Exit with 1 (failure) if these two values are both > 0, since - this tests whether strcoll(3) is broken with respect to strcmp(3) - in the default locale. */ - exit (r1 > 0 && r2 > 0); -} -], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, - [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) - bash_cv_func_strcoll_broken=no] -)]) -AC_MSG_RESULT($bash_cv_func_strcoll_broken) -if test $bash_cv_func_strcoll_broken = yes; then -AC_DEFINE(STRCOLL_BROKEN) -fi -]) - -AC_DEFUN([BASH_FUNC_PRINTF_A_FORMAT], -[AC_MSG_CHECKING([for printf floating point output in hex notation]) -AC_CACHE_VAL(bash_cv_printf_a_format, -[AC_TRY_RUN([ -#include <stdio.h> -#include <string.h> - -int -main() -{ - double y = 0.0; - char abuf[1024]; - - sprintf(abuf, "%A", y); - exit(strchr(abuf, 'P') == (char *)0); -} -], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, - [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) - bash_cv_printf_a_format=no] -)]) -AC_MSG_RESULT($bash_cv_printf_a_format) -if test $bash_cv_printf_a_format = yes; then -AC_DEFINE(HAVE_PRINTF_A_FORMAT) -fi -]) - -AC_DEFUN([BASH_STRUCT_TERMIOS_LDISC], -[ -AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ -#include <sys/types.h> -#include <termios.h> -]) -]) - -AC_DEFUN([BASH_STRUCT_TERMIO_LDISC], -[ -AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ -#include <sys/types.h> -#include <termio.h> -]) -]) - -dnl -dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS -dnl -dnl sets bash_cv_struct_stat_st_blocks -dnl -dnl unused for now; we'll see how AC_CHECK_MEMBERS works -dnl -AC_DEFUN([BASH_STRUCT_ST_BLOCKS], -[ -AC_MSG_CHECKING([for struct stat.st_blocks]) -AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, -[AC_TRY_COMPILE( -[ -#include <sys/types.h> -#include <sys/stat.h> -], -[ -main() -{ -static struct stat a; -if (a.st_blocks) return 0; -return 0; -} -], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) -]) -AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) -if test "$bash_cv_struct_stat_st_blocks" = "yes"; then -AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) -fi -]) - -AC_DEFUN([BASH_CHECK_LIB_TERMCAP], -[ -if test "X$bash_cv_termcap_lib" = "X"; then -_bash_needmsg=yes -else -AC_MSG_CHECKING(which library has the termcap functions) -_bash_needmsg= -fi -AC_CACHE_VAL(bash_cv_termcap_lib, -[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, - [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, - [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, - [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, - bash_cv_termcap_lib=gnutermcap)])])])]) -if test "X$_bash_needmsg" = "Xyes"; then -AC_MSG_CHECKING(which library has the termcap functions) -fi -AC_MSG_RESULT(using $bash_cv_termcap_lib) -if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then -LDFLAGS="$LDFLAGS -L./lib/termcap" -TERMCAP_LIB="./lib/termcap/libtermcap.a" -TERMCAP_DEP="./lib/termcap/libtermcap.a" -elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then -TERMCAP_LIB=-ltermcap -TERMCAP_DEP= -elif test $bash_cv_termcap_lib = libtinfo; then -TERMCAP_LIB=-ltinfo -TERMCAP_DEP= -elif test $bash_cv_termcap_lib = libncurses; then -TERMCAP_LIB=-lncurses -TERMCAP_DEP= -else -TERMCAP_LIB=-lcurses -TERMCAP_DEP= -fi -]) - -dnl -dnl Check for the presence of getpeername in libsocket. -dnl If libsocket is present, check for libnsl and add it to LIBS if -dnl it's there, since most systems with libsocket require linking -dnl with libnsl as well. This should only be called if getpeername -dnl was not found in libc. -dnl -dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT -dnl AS WELL -dnl -AC_DEFUN([BASH_CHECK_LIB_SOCKET], -[ -if test "X$bash_cv_have_socklib" = "X"; then -_bash_needmsg= -else -AC_MSG_CHECKING(for socket library) -_bash_needmsg=yes -fi -AC_CACHE_VAL(bash_cv_have_socklib, -[AC_CHECK_LIB(socket, getpeername, - bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) -if test "X$_bash_needmsg" = Xyes; then - AC_MSG_RESULT($bash_cv_have_socklib) - _bash_needmsg= -fi -if test $bash_cv_have_socklib = yes; then - # check for libnsl, add it to LIBS if present - if test "X$bash_cv_have_libnsl" = "X"; then - _bash_needmsg= - else - AC_MSG_CHECKING(for libnsl) - _bash_needmsg=yes - fi - AC_CACHE_VAL(bash_cv_have_libnsl, - [AC_CHECK_LIB(nsl, t_open, - bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) - if test "X$_bash_needmsg" = Xyes; then - AC_MSG_RESULT($bash_cv_have_libnsl) - _bash_needmsg= - fi - if test $bash_cv_have_libnsl = yes; then - LIBS="-lsocket -lnsl $LIBS" - else - LIBS="-lsocket $LIBS" - fi - AC_DEFINE(HAVE_LIBSOCKET) - AC_DEFINE(HAVE_GETPEERNAME) -fi -]) - -AH_TEMPLATE([STRUCT_DIRENT_HAS_D_INO], [Define if struct dirent has a d_ino member]) -AC_DEFUN([BASH_STRUCT_DIRENT_D_INO], -[AC_REQUIRE([AC_HEADER_DIRENT]) -AC_MSG_CHECKING(if struct dirent has a d_ino member) -AC_CACHE_VAL(bash_cv_dirent_has_dino, -[AC_TRY_COMPILE([ -#include <stdio.h> -#include <sys/types.h> -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif /* HAVE_UNISTD_H */ -#if defined(HAVE_DIRENT_H) -# include <dirent.h> -#else -# define dirent direct -# ifdef HAVE_SYS_NDIR_H -# include <sys/ndir.h> -# endif /* SYSNDIR */ -# ifdef HAVE_SYS_DIR_H -# include <sys/dir.h> -# endif /* SYSDIR */ -# ifdef HAVE_NDIR_H -# include <ndir.h> -# endif -#endif /* HAVE_DIRENT_H */ -],[ -struct dirent d; int z; z = d.d_ino; -], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) -AC_MSG_RESULT($bash_cv_dirent_has_dino) -if test $bash_cv_dirent_has_dino = yes; then -AC_DEFINE(STRUCT_DIRENT_HAS_D_INO) -fi -]) - -AH_TEMPLATE([STRUCT_DIRENT_HAS_D_FILENO], [Define if struct dirent has a d_fileno member]) -AC_DEFUN([BASH_STRUCT_DIRENT_D_FILENO], -[AC_REQUIRE([AC_HEADER_DIRENT]) -AC_MSG_CHECKING(if struct dirent has a d_fileno member) -AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, -[AC_TRY_COMPILE([ -#include <stdio.h> -#include <sys/types.h> -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif /* HAVE_UNISTD_H */ -#if defined(HAVE_DIRENT_H) -# include <dirent.h> -#else -# define dirent direct -# ifdef HAVE_SYS_NDIR_H -# include <sys/ndir.h> -# endif /* SYSNDIR */ -# ifdef HAVE_SYS_DIR_H -# include <sys/dir.h> -# endif /* SYSDIR */ -# ifdef HAVE_NDIR_H -# include <ndir.h> -# endif -#endif /* HAVE_DIRENT_H */ -],[ -struct dirent d; int z; z = d.d_fileno; -], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) -AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) -if test $bash_cv_dirent_has_d_fileno = yes; then -AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO) -fi -]) - -AC_DEFUN([BASH_STRUCT_TIMEVAL], -[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) -AC_CACHE_VAL(bash_cv_struct_timeval, -[ -AC_EGREP_HEADER(struct timeval, sys/time.h, - bash_cv_struct_timeval=yes, - AC_EGREP_HEADER(struct timeval, time.h, - bash_cv_struct_timeval=yes, - bash_cv_struct_timeval=no)) -]) -AC_MSG_RESULT($bash_cv_struct_timeval) -if test $bash_cv_struct_timeval = yes; then - AC_DEFINE(HAVE_TIMEVAL) -fi -]) - -AH_TEMPLATE([STRUCT_WINSIZE_IN_SYS_IOCTL], [Define if struct winsize is in sys/ioctl.h]) -AH_TEMPLATE([STRUCT_WINSIZE_IN_TERMIOS], [Define if struct winsize is in termios.h]) -AC_DEFUN([BASH_STRUCT_WINSIZE], -[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) -AC_CACHE_VAL(bash_cv_struct_winsize_header, -[AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/ioctl.h>], [struct winsize x;], - bash_cv_struct_winsize_header=ioctl_h, - [AC_TRY_COMPILE([#include <sys/types.h> -#include <termios.h>], [struct winsize x;], - bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) -])]) -if test $bash_cv_struct_winsize_header = ioctl_h; then - AC_MSG_RESULT(sys/ioctl.h) - AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) -elif test $bash_cv_struct_winsize_header = termios_h; then - AC_MSG_RESULT(termios.h) - AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) -else - AC_MSG_RESULT(not found) -fi -]) - -dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) -AH_TEMPLATE([HAVE_POSIX_SIGNALS], [Define if we have the POSIX signal routines]) -AH_TEMPLATE([HAVE_BSD_SIGNALS], [Define if we have the BSD signal routines]) -AH_TEMPLATE([HAVE_USG_SIGHOLD], [Define if we have the USG signal routines]) -AC_DEFUN([BASH_SYS_SIGNAL_VINTAGE], -[AC_REQUIRE([AC_TYPE_SIGNAL]) -AC_MSG_CHECKING(for type of signal functions) -AC_CACHE_VAL(bash_cv_signal_vintage, -[ - AC_MSG_WARN([checking for posix...]) - AC_TRY_LINK([#include <signal.h>],[ - sigset_t ss; - struct sigaction sa; - sigemptyset(&ss); sigsuspend(&ss); - sigaction(SIGINT, &sa, (struct sigaction *) 0); - sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); - ], bash_cv_signal_vintage="posix", - [ - AC_MSG_WARN([checking for 4.2bsd...]) - AC_TRY_LINK([#include <signal.h>], [ - int mask = sigmask(SIGINT); - sigsetmask(mask); sigblock(mask); sigpause(mask); - ], bash_cv_signal_vintage="4.2bsd", - [ - AC_MSG_WARN([checking for svr3...]) - AC_TRY_LINK([ - #include <signal.h> - RETSIGTYPE foo() { }], [ - int mask = sigmask(SIGINT); - sigset(SIGINT, foo); sigrelse(SIGINT); - sighold(SIGINT); sigpause(SIGINT); - ], bash_cv_signal_vintage="svr3", bash_cv_signal_vintage="v7" - )] - )] -) -]) -AC_MSG_RESULT($bash_cv_signal_vintage) -if test "$bash_cv_signal_vintage" = "posix"; then -AC_DEFINE(HAVE_POSIX_SIGNALS) -elif test "$bash_cv_signal_vintage" = "4.2bsd"; then -AC_DEFINE(HAVE_BSD_SIGNALS) -elif test "$bash_cv_signal_vintage" = "svr3"; then -AC_DEFINE(HAVE_USG_SIGHOLD) -fi -]) - -dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. -AC_DEFUN([BASH_SYS_PGRP_SYNC], -[AC_REQUIRE([AC_FUNC_GETPGRP]) -AC_MSG_CHECKING(whether pgrps need synchronization) -AC_CACHE_VAL(bash_cv_pgrp_pipe, -[AC_TRY_RUN([ -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif -main() -{ -# ifdef GETPGRP_VOID -# define getpgID() getpgrp() -# else -# define getpgID() getpgrp(0) -# define setpgid(x,y) setpgrp(x,y) -# endif - int pid1, pid2, fds[2]; - int status; - char ok; - - switch (pid1 = fork()) { - case -1: - exit(1); - case 0: - setpgid(0, getpid()); - exit(0); - } - setpgid(pid1, pid1); - - sleep(2); /* let first child die */ - - if (pipe(fds) < 0) - exit(2); - - switch (pid2 = fork()) { - case -1: - exit(3); - case 0: - setpgid(0, pid1); - ok = getpgID() == pid1; - write(fds[1], &ok, 1); - exit(0); - } - setpgid(pid2, pid1); - - close(fds[1]); - if (read(fds[0], &ok, 1) != 1) - exit(4); - wait(&status); - wait(&status); - exit(ok ? 0 : 5); -} -], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, - [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) - bash_cv_pgrp_pipe=no]) -]) -AC_MSG_RESULT($bash_cv_pgrp_pipe) -if test $bash_cv_pgrp_pipe = yes; then -AC_DEFINE(PGRP_PIPE) -fi -]) - -AH_TEMPLATE([MUST_REINSTALL_SIGHANDLERS], [Define if signal handlers must be reinstalled when invoked.]) -AC_DEFUN([BASH_SYS_REINSTALL_SIGHANDLERS], -[AC_REQUIRE([AC_TYPE_SIGNAL]) -AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) -AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) -AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, -[AC_TRY_RUN([ -#include <signal.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -typedef RETSIGTYPE sigfunc(); - -int nsigint; - -#ifdef HAVE_POSIX_SIGNALS -sigfunc * -set_signal_handler(sig, handler) - int sig; - sigfunc *handler; -{ - struct sigaction act, oact; - act.sa_handler = handler; - act.sa_flags = 0; - sigemptyset (&act.sa_mask); - sigemptyset (&oact.sa_mask); - sigaction (sig, &act, &oact); - return (oact.sa_handler); -} -#else -#define set_signal_handler(s, h) signal(s, h) -#endif - -RETSIGTYPE -sigint(s) -int s; -{ - nsigint++; -} - -main() -{ - nsigint = 0; - set_signal_handler(SIGINT, sigint); - kill((int)getpid(), SIGINT); - kill((int)getpid(), SIGINT); - exit(nsigint != 2); -} -], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, - [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) - bash_cv_must_reinstall_sighandlers=no] -)]) -AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) -if test $bash_cv_must_reinstall_sighandlers = yes; then -AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) -fi -]) - -dnl check that some necessary job control definitions are present -AC_DEFUN([BASH_SYS_JOB_CONTROL_MISSING], -[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) -AC_MSG_CHECKING(for presence of necessary job control definitions) -AC_CACHE_VAL(bash_cv_job_control_missing, -[AC_TRY_RUN([ -#include <sys/types.h> -#ifdef HAVE_SYS_WAIT_H -#include <sys/wait.h> -#endif -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#include <signal.h> - -/* Add more tests in here as appropriate. */ -main() -{ -/* signal type */ -#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) -exit(1); -#endif - -/* signals and tty control. */ -#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) -exit (1); -#endif - -/* process control */ -#if !defined (WNOHANG) || !defined (WUNTRACED) -exit(1); -#endif - -/* Posix systems have tcgetpgrp and waitpid. */ -#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) -exit(1); -#endif - -#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) -exit(1); -#endif - -/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ -#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) -exit(1); -#endif - -exit(0); -}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, - [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) - bash_cv_job_control_missing=missing] -)]) -AC_MSG_RESULT($bash_cv_job_control_missing) -if test $bash_cv_job_control_missing = missing; then -AC_DEFINE(JOB_CONTROL_MISSING) -fi -]) - -dnl check whether named pipes are present -dnl this requires a previous check for mkfifo, but that is awkward to specify -AC_DEFUN([BASH_SYS_NAMED_PIPES], -[AC_MSG_CHECKING(for presence of named pipes) -AC_CACHE_VAL(bash_cv_sys_named_pipes, -[AC_TRY_RUN([ -#include <sys/types.h> -#include <sys/stat.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -/* Add more tests in here as appropriate. */ -main() -{ -int fd, err; - -#if defined (HAVE_MKFIFO) -exit (0); -#endif - -#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) -exit (1); -#endif - -#if defined (NeXT) -exit (1); -#endif -err = mkdir("/tmp/bash-aclocal", 0700); -if (err < 0) { - perror ("mkdir"); - exit(1); -} -fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); -if (fd == -1) { - rmdir ("/tmp/bash-aclocal"); - exit (1); -} -close(fd); -unlink ("/tmp/bash-aclocal/sh-np-autoconf"); -rmdir ("/tmp/bash-aclocal"); -exit(0); -}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, - [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) - bash_cv_sys_named_pipes=missing] -)]) -AC_MSG_RESULT($bash_cv_sys_named_pipes) -if test $bash_cv_sys_named_pipes = missing; then -AC_DEFINE(NAMED_PIPES_MISSING) -fi -]) - -AC_DEFUN([BASH_SYS_DEFAULT_MAIL_DIR], -[AC_MSG_CHECKING(for default mail directory) -AC_CACHE_VAL(bash_cv_mail_dir, -[if test -d /var/mail; then - bash_cv_mail_dir=/var/mail - elif test -d /var/spool/mail; then - bash_cv_mail_dir=/var/spool/mail - elif test -d /usr/mail; then - bash_cv_mail_dir=/usr/mail - elif test -d /usr/spool/mail; then - bash_cv_mail_dir=/usr/spool/mail - else - bash_cv_mail_dir=unknown - fi -]) -AC_MSG_RESULT($bash_cv_mail_dir) -AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") -]) - -AC_DEFUN([BASH_HAVE_TIOCGWINSZ], -[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) -AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, -[AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/ioctl.h>], [int x = TIOCGWINSZ;], - bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) -AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) -if test $bash_cv_tiocgwinsz_in_ioctl = yes; then -AC_DEFINE(GWINSZ_IN_SYS_IOCTL) -fi -]) - -AH_TEMPLATE([TIOCSTAT_IN_SYS_IOCTL], [Define if TIOCSTAT is in sys/ioctl.h]) -AC_DEFUN([BASH_HAVE_TIOCSTAT], -[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) -AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, -[AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/ioctl.h>], [int x = TIOCSTAT;], - bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) -AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) -if test $bash_cv_tiocstat_in_ioctl = yes; then -AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) -fi -]) - -AH_TEMPLATE([FIONREAD_IN_SYS_IOCTL], [Define if FIONREAD is in sys/ioctl.h]) -AC_DEFUN([BASH_HAVE_FIONREAD], -[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) -AC_CACHE_VAL(bash_cv_fionread_in_ioctl, -[AC_TRY_COMPILE([#include <sys/types.h> -#include <sys/ioctl.h>], [int x = FIONREAD;], - bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) -AC_MSG_RESULT($bash_cv_fionread_in_ioctl) -if test $bash_cv_fionread_in_ioctl = yes; then -AC_DEFINE(FIONREAD_IN_SYS_IOCTL) -fi -]) - -dnl -dnl See if speed_t is declared in <sys/types.h>. Some versions of linux -dnl require a definition of speed_t each time <termcap.h> is included, -dnl but you can only get speed_t if you include <termios.h> (on some -dnl versions) or <sys/types.h> (on others). -dnl -AH_TEMPLATE([SPEED_T_IN_SYS_TYPES], [Define if speed_t is in sys/types.h]) -AC_DEFUN([BASH_CHECK_SPEED_T], -[AC_MSG_CHECKING(for speed_t in sys/types.h) -AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, -[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;], - bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) -AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) -if test $bash_cv_speed_t_in_sys_types = yes; then -AC_DEFINE(SPEED_T_IN_SYS_TYPES) -fi -]) - -AH_TEMPLATE([HAVE_GETPW_DECLS], [Define if getpw functions are declared in pwd.h]) -AC_DEFUN([BASH_CHECK_GETPW_FUNCS], -[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h) -AC_CACHE_VAL(bash_cv_getpw_declared, -[AC_EGREP_CPP(getpwuid, -[ -#include <sys/types.h> -#ifdef HAVE_UNISTD_H -# include <unistd.h> -#endif -#include <pwd.h> -], -bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)]) -AC_MSG_RESULT($bash_cv_getpw_declared) -if test $bash_cv_getpw_declared = yes; then -AC_DEFINE(HAVE_GETPW_DECLS) -fi -]) - -AC_DEFUN([BASH_CHECK_DEV_FD], -[AC_MSG_CHECKING(whether /dev/fd is available) -AC_CACHE_VAL(bash_cv_dev_fd, -[if test -d /dev/fd && test -r /dev/fd/0; then - bash_cv_dev_fd=standard - elif test -d /proc/self/fd && test -r /proc/self/fd/0; then - bash_cv_dev_fd=whacky - else - bash_cv_dev_fd=absent - fi -]) -AC_MSG_RESULT($bash_cv_dev_fd) -if test $bash_cv_dev_fd = "standard"; then - AC_DEFINE(HAVE_DEV_FD) - AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/") -elif test $bash_cv_dev_fd = "whacky"; then - AC_DEFINE(HAVE_DEV_FD) - AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/") -fi -]) - -AC_DEFUN([BASH_CHECK_DEV_STDIN], -[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) -AC_CACHE_VAL(bash_cv_dev_stdin, -[if test -d /dev/fd && test -r /dev/stdin; then - bash_cv_dev_stdin=present - elif test -d /proc/self/fd && test -r /dev/stdin; then - bash_cv_dev_stdin=present - else - bash_cv_dev_stdin=absent - fi -]) -AC_MSG_RESULT($bash_cv_dev_stdin) -if test $bash_cv_dev_stdin = "present"; then - AC_DEFINE(HAVE_DEV_STDIN) -fi -]) - -dnl -dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions -dnl -AC_DEFUN([BASH_CHECK_KERNEL_RLIMIT], -[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) -AC_CACHE_VAL(bash_cv_kernel_rlimit, -[AC_TRY_COMPILE([ -#include <sys/types.h> -#include <sys/resource.h> -], -[ - int f; - f = RLIMIT_DATA; -], bash_cv_kernel_rlimit=no, -[AC_TRY_COMPILE([ -#include <sys/types.h> -#define _KERNEL -#include <sys/resource.h> -#undef _KERNEL -], -[ - int f; - f = RLIMIT_DATA; -], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] -)]) -AC_MSG_RESULT($bash_cv_kernel_rlimit) -if test $bash_cv_kernel_rlimit = yes; then -AC_DEFINE(RLIMIT_NEEDS_KERNEL) -fi -]) - -dnl -dnl Check for 64-bit off_t -- used for malloc alignment -dnl -dnl C does not allow duplicate case labels, so the compile will fail if -dnl sizeof(off_t) is > 4. -dnl -AC_DEFUN([BASH_CHECK_OFF_T_64], -[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, -AC_TRY_COMPILE([ -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#include <sys/types.h> -],[ -switch (0) case 0: case (sizeof (off_t) <= 4):; -], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) -if test $bash_cv_off_t_64 = yes; then - AC_DEFINE(HAVE_OFF_T_64) -fi]) - -AC_DEFUN([BASH_CHECK_RTSIGS], -[AC_MSG_CHECKING(for unusable real-time signals due to large values) -AC_CACHE_VAL(bash_cv_unusable_rtsigs, -[AC_TRY_RUN([ -#include <sys/types.h> -#include <signal.h> - -#ifndef NSIG -# define NSIG 64 -#endif - -main () -{ - int n_sigs = 2 * NSIG; -#ifdef SIGRTMIN - int rtmin = SIGRTMIN; -#else - int rtmin = 0; -#endif - - exit(rtmin < n_sigs); -}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, - [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) - bash_cv_unusable_rtsigs=yes] -)]) -AC_MSG_RESULT($bash_cv_unusable_rtsigs) -if test $bash_cv_unusable_rtsigs = yes; then -AC_DEFINE(UNUSABLE_RT_SIGNALS) -fi -]) - -dnl -dnl check for availability of multibyte characters and functions -dnl -AH_TEMPLATE([HAVE_MBSRTOWCS], [Define if we have the mbsrtowcs function]) -AH_TEMPLATE([HAVE_WCWIDTH], [Define if we have the wcwidth function]) -AH_TEMPLATE([HAVE_MBSTATE_T], [Define if we have mbstate_t]) -AH_TEMPLATE([HAVE_LANGINFO_CODESET], [Define if we have nl_langinfo and CODESET]) -AC_DEFUN([BASH_CHECK_MULTIBYTE], -[ -AC_CHECK_HEADERS(wctype.h) -AC_CHECK_HEADERS(wchar.h) -AC_CHECK_HEADERS(langinfo.h) - -AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) -AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) - -AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, -[AC_TRY_RUN([ -#include <wchar.h> -int -main () -{ - mbstate_t ps; - return 0; -}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) -if test $bash_cv_have_mbstate_t = yes; then - AC_DEFINE(HAVE_MBSTATE_T) -fi - -AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, -[AC_TRY_LINK( -[#include <langinfo.h>], -[char* cs = nl_langinfo(CODESET);], -bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) -if test $bash_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET) -fi - -]) - -dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB -dnl require: -dnl AC_PROG_CC -dnl BASH_CHECK_LIB_TERMCAP - -AC_DEFUN([RL_LIB_READLINE_VERSION], -[ -AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) - -AC_MSG_CHECKING([version of installed readline library]) - -# What a pain in the ass this is. - -# save cpp and ld options -_save_CFLAGS="$CFLAGS" -_save_LDFLAGS="$LDFLAGS" -_save_LIBS="$LIBS" - -# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This -# allows the caller to do something like $_rl_prefix=$withval if the user -# specifies --with-installed-readline=PREFIX as an argument to configure - -if test -z "$ac_cv_rl_prefix"; then -test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} -fi - -eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include -eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib - -LIBS="$LIBS -lreadline ${TERMCAP_LIB}" -CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" -LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" - -AC_TRY_RUN([ -#include <stdio.h> -#include <readline/readline.h> - -main() -{ - FILE *fp; - fp = fopen("conftest.rlv", "w"); - if (fp == 0) exit(1); - fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); - fclose(fp); - exit(0); -} -], -ac_cv_rl_version=`cat conftest.rlv`, -ac_cv_rl_version='0.0', -ac_cv_rl_version='4.2') - -CFLAGS="$_save_CFLAGS" -LDFLAGS="$_save_LDFLAGS" -LIBS="$_save_LIBS" - -RL_MAJOR=0 -RL_MINOR=0 - -# ( -case "$ac_cv_rl_version" in -2*|3*|4*|5*|6*|7*|8*|9*) - RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` - RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` - ;; -esac - -# ((( -case $RL_MAJOR in -[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; -[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; -*) _RL_MAJOR=00 ;; -esac - -# ((( -case $RL_MINOR in -[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; -[[0-9]]) _RL_MINOR=0$RL_MINOR ;; -*) _RL_MINOR=00 ;; -esac - -RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" - -# Readline versions greater than 4.2 have these defines in readline.h - -if test $ac_cv_rl_version = '0.0' ; then - AC_MSG_WARN([Could not test version of installed readline library.]) -elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then - # set these for use by the caller - RL_PREFIX=$ac_cv_rl_prefix - RL_LIBDIR=$ac_cv_rl_libdir - RL_INCLUDEDIR=$ac_cv_rl_includedir - AC_MSG_RESULT($ac_cv_rl_version) -else - -AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) -AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) -AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) - -AC_SUBST(RL_VERSION) -AC_SUBST(RL_MAJOR) -AC_SUBST(RL_MINOR) - -# set these for use by the caller -RL_PREFIX=$ac_cv_rl_prefix -RL_LIBDIR=$ac_cv_rl_libdir -RL_INCLUDEDIR=$ac_cv_rl_includedir - -AC_MSG_RESULT($ac_cv_rl_version) - -fi -]) diff --git a/meta/recipes-core/readline/readline-5.2/acinclude.m4 b/meta/recipes-core/readline/readline-5.2/acinclude.m4 new file mode 100644 index 0000000..8a45f99 --- /dev/null +++ b/meta/recipes-core/readline/readline-5.2/acinclude.m4 @@ -0,0 +1,1815 @@ +dnl +dnl Bash specific tests +dnl +dnl Some derived from PDKSH 5.1.3 autoconf tests +dnl + +AC_DEFUN([BASH_C_LONG_LONG], +[AC_CACHE_CHECK(for long long, ac_cv_c_long_long, +[if test "$GCC" = yes; then + ac_cv_c_long_long=yes +else +AC_TRY_RUN([ +int +main() +{ +long long foo = 0; +exit(sizeof(long long) < sizeof(long)); +} +], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) +fi]) +if test $ac_cv_c_long_long = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) +fi +]) + +dnl +dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX +dnl (< changed to <=) added. +dnl +AC_DEFUN([BASH_C_LONG_DOUBLE], +[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, +[if test "$GCC" = yes; then + ac_cv_c_long_double=yes +else +AC_TRY_RUN([ +int +main() +{ + /* The Stardent Vistra knows sizeof(long double), but does not + support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + /* On IRIX 5.3, the compiler converts long double to double with a warning, + but compiles this successfully. */ + exit(sizeof(long double) <= sizeof(double)); +} +], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) +fi]) +if test $ac_cv_c_long_double = yes; then + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) +fi +]) + +dnl +dnl Check for <inttypes.h>. This is separated out so that it can be +dnl AC_REQUIREd. +dnl +dnl BASH_HEADER_INTTYPES +AC_DEFUN([BASH_HEADER_INTTYPES], +[ + AC_CHECK_HEADERS(inttypes.h) +]) + +dnl +dnl check for typedef'd symbols in header files, but allow the caller to +dnl specify the include files to be checked in addition to the default +dnl +dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) +AC_DEFUN([BASH_CHECK_TYPE], +[ +AC_REQUIRE([AC_HEADER_STDC])dnl +AC_REQUIRE([BASH_HEADER_INTTYPES]) +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(bash_cv_type_$1, +[AC_EGREP_CPP($1, [#include <sys/types.h> +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +#if HAVE_INTTYPES_H +#include <inttypes.h> +#endif +$2 +], bash_cv_type_$1=yes, bash_cv_type_$1=no)]) +AC_MSG_RESULT($bash_cv_type_$1) +ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then + AC_DEFINE($4) + fi]) +if test $bash_cv_type_$1 = no; then + AC_DEFINE_UNQUOTED($1, $3) +fi +]) + +dnl +dnl BASH_CHECK_DECL(FUNC) +dnl +dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like +dnl AC_CHECK_DECL +dnl +AC_DEFUN([BASH_CHECK_DECL], +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([BASH_HEADER_INTTYPES]) +AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, +[AC_TRY_LINK( +[ +#if STDC_HEADERS +# include <stdlib.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#endif +], +[return !$1;], +bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) +bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_$1 = yes; then + AC_DEFINE_UNQUOTED($bash_tr_func, 1) +else + AC_DEFINE_UNQUOTED($bash_tr_func, 0) +fi +]) + +AC_DEFUN([BASH_DECL_PRINTF], +[AC_MSG_CHECKING(for declaration of printf in <stdio.h>) +AC_CACHE_VAL(bash_cv_printf_declared, +[AC_TRY_RUN([ +#include <stdio.h> +#ifdef __STDC__ +typedef int (*_bashfunc)(const char *, ...); +#else +typedef int (*_bashfunc)(); +#endif +main() +{ +_bashfunc pf; +pf = (_bashfunc) printf; +exit(pf == 0); +} +], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, + [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) + bash_cv_printf_declared=yes] +)]) +AC_MSG_RESULT($bash_cv_printf_declared) +if test $bash_cv_printf_declared = yes; then +AC_DEFINE(PRINTF_DECLARED) +fi +]) + +AC_DEFUN([BASH_DECL_SBRK], +[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>) +AC_CACHE_VAL(bash_cv_sbrk_declared, +[AC_EGREP_HEADER(sbrk, unistd.h, + bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) +AC_MSG_RESULT($bash_cv_sbrk_declared) +if test $bash_cv_sbrk_declared = yes; then +AC_DEFINE(SBRK_DECLARED) +fi +]) + +dnl +dnl Check for sys_siglist[] or _sys_siglist[] +dnl +AC_DEFUN([BASH_DECL_UNDER_SYS_SIGLIST], +[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) +AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, +[AC_TRY_COMPILE([ +#include <sys/types.h> +#include <signal.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif], [ char *msg = _sys_siglist[2]; ], + bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl +AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) +if test $bash_cv_decl_under_sys_siglist = yes; then +AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) +fi +]) + +AC_DEFUN([BASH_UNDER_SYS_SIGLIST], +[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) +AC_MSG_CHECKING([for _sys_siglist in system C library]) +AC_CACHE_VAL(bash_cv_under_sys_siglist, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <signal.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +}], + bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) + bash_cv_under_sys_siglist=no])]) +AC_MSG_RESULT($bash_cv_under_sys_siglist) +if test $bash_cv_under_sys_siglist = yes; then +AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) +fi +]) + +AC_DEFUN([BASH_SYS_SIGLIST], +[ +AC_CHECK_DECLS([sys_siglist]) +AC_MSG_CHECKING([for sys_siglist in system C library]) +AC_CACHE_VAL(bash_cv_sys_siglist, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <signal.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifndef HAVE_DECL_SYS_SIGLIST +extern char *sys_siglist[]; +#endif +main() +{ +char *msg = sys_siglist[2]; +exit(msg == 0); +}], + bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, + [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) + bash_cv_sys_siglist=no])]) +AC_MSG_RESULT($bash_cv_sys_siglist) +if test $bash_cv_sys_siglist = yes; then +AC_DEFINE(HAVE_SYS_SIGLIST) +fi +]) + +dnl Check for the various permutations of sys_siglist and make sure we +dnl compile in siglist.o if they're not defined +AC_DEFUN([BASH_CHECK_SYS_SIGLIST], [ +AC_REQUIRE([BASH_SYS_SIGLIST]) +AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) +AC_REQUIRE([BASH_FUNC_STRSIGNAL]) +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then + SIGLIST_O=siglist.o +else + SIGLIST_O= +fi +AC_SUBST([SIGLIST_O]) +]) + +dnl Check for sys_errlist[] and sys_nerr, check for declaration +AC_DEFUN([BASH_SYS_ERRLIST], +[AC_MSG_CHECKING([for sys_errlist and sys_nerr]) +AC_CACHE_VAL(bash_cv_sys_errlist, +[AC_TRY_LINK([#include <errno.h>], +[extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1];], + bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl +AC_MSG_RESULT($bash_cv_sys_errlist) +if test $bash_cv_sys_errlist = yes; then +AC_DEFINE(HAVE_SYS_ERRLIST) +fi +]) + +dnl +dnl Check if dup2() does not clear the close on exec flag +dnl +AC_DEFUN([BASH_FUNC_DUP2_CLOEXEC_CHECK], +[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) +AC_CACHE_VAL(bash_cv_dup2_broken, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <fcntl.h> +main() +{ + int fd1, fd2, fl; + fd1 = open("/dev/null", 2); + if (fcntl(fd1, 2, 1) < 0) + exit(1); + fd2 = dup2(fd1, 1); + if (fd2 < 0) + exit(2); + fl = fcntl(fd2, 1, 0); + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ + exit(fl != 1); +} +], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, + [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) + bash_cv_dup2_broken=no]) +]) +AC_MSG_RESULT($bash_cv_dup2_broken) +if test $bash_cv_dup2_broken = yes; then +AC_DEFINE(DUP2_BROKEN) +fi +]) + +AC_DEFUN([BASH_FUNC_STRSIGNAL], +[AC_MSG_CHECKING([for the existence of strsignal]) +AC_CACHE_VAL(bash_cv_have_strsignal, +[AC_TRY_LINK([#include <sys/types.h> +#include <signal.h>], +[char *s = (char *)strsignal(2);], + bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) +AC_MSG_RESULT($bash_cv_have_strsignal) +if test $bash_cv_have_strsignal = yes; then +AC_DEFINE(HAVE_STRSIGNAL) +fi +]) + +dnl Check to see if opendir will open non-directories (not a nice thing) +AC_DEFUN([BASH_FUNC_OPENDIR_CHECK], +[AC_REQUIRE([AC_HEADER_DIRENT])dnl +AC_MSG_CHECKING(if opendir() opens non-directories) +AC_CACHE_VAL(bash_cv_opendir_not_robust, +[AC_TRY_RUN([ +#include <stdio.h> +#include <sys/types.h> +#include <fcntl.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include <dirent.h> +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include <ndir.h> +# endif +#endif /* HAVE_DIRENT_H */ +main() +{ +DIR *dir; +int fd, err; +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("/tmp/bash-aclocal/not_a_directory"); +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("/tmp/bash-aclocal/not_a_directory"); +unlink("/tmp/bash-aclocal/not_a_directory"); +rmdir("/tmp/bash-aclocal"); +exit (dir == 0); +}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, + [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) + bash_cv_opendir_not_robust=no] +)]) +AC_MSG_RESULT($bash_cv_opendir_not_robust) +if test $bash_cv_opendir_not_robust = yes; then +AC_DEFINE(OPENDIR_NOT_ROBUST) +fi +]) + +dnl +AH_TEMPLATE([VOID_SIGHANDLER], [Define if signal handlers return type void]) +AC_DEFUN([BASH_TYPE_SIGHANDLER], +[AC_MSG_CHECKING([whether signal handlers are of type void]) +AC_CACHE_VAL(bash_cv_void_sighandler, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <signal.h> +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) ();], +[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl +AC_MSG_RESULT($bash_cv_void_sighandler) +if test $bash_cv_void_sighandler = yes; then +AC_DEFINE(VOID_SIGHANDLER) +fi +]) + +dnl +dnl A signed 16-bit integer quantity +dnl +AC_DEFUN([BASH_TYPE_BITS16_T], +[ +if test "$ac_cv_sizeof_short" = 2; then + AC_CHECK_TYPE(bits16_t, short) +elif test "$ac_cv_sizeof_char" = 2; then + AC_CHECK_TYPE(bits16_t, char) +else + AC_CHECK_TYPE(bits16_t, short) +fi +]) + +dnl +dnl An unsigned 16-bit integer quantity +dnl +AC_DEFUN([BASH_TYPE_U_BITS16_T], +[ +if test "$ac_cv_sizeof_short" = 2; then + AC_CHECK_TYPE(u_bits16_t, unsigned short) +elif test "$ac_cv_sizeof_char" = 2; then + AC_CHECK_TYPE(u_bits16_t, unsigned char) +else + AC_CHECK_TYPE(u_bits16_t, unsigned short) +fi +]) + +dnl +dnl A signed 32-bit integer quantity +dnl +AC_DEFUN([BASH_TYPE_BITS32_T], +[ +if test "$ac_cv_sizeof_int" = 4; then + AC_CHECK_TYPE(bits32_t, int) +elif test "$ac_cv_sizeof_long" = 4; then + AC_CHECK_TYPE(bits32_t, long) +else + AC_CHECK_TYPE(bits32_t, int) +fi +]) + +dnl +dnl An unsigned 32-bit integer quantity +dnl +AC_DEFUN([BASH_TYPE_U_BITS32_T], +[ +if test "$ac_cv_sizeof_int" = 4; then + AC_CHECK_TYPE(u_bits32_t, unsigned int) +elif test "$ac_cv_sizeof_long" = 4; then + AC_CHECK_TYPE(u_bits32_t, unsigned long) +else + AC_CHECK_TYPE(u_bits32_t, unsigned int) +fi +]) + +AC_DEFUN([BASH_TYPE_PTRDIFF_T], +[ +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, int) +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, long) +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, [long long]) +else + AC_CHECK_TYPE(ptrdiff_t, int) +fi +]) + +dnl +dnl A signed 64-bit quantity +dnl +AC_DEFUN([BASH_TYPE_BITS64_T], +[ +if test "$ac_cv_sizeof_char_p" = 8; then + AC_CHECK_TYPE(bits64_t, char *) +elif test "$ac_cv_sizeof_double" = 8; then + AC_CHECK_TYPE(bits64_t, double) +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + AC_CHECK_TYPE(bits64_t, [long long]) +elif test "$ac_cv_sizeof_long" = 8; then + AC_CHECK_TYPE(bits64_t, long) +else + AC_CHECK_TYPE(bits64_t, double) +fi +]) + +AC_DEFUN([BASH_TYPE_LONG_LONG], +[ +AC_CACHE_CHECK([for long long], bash_cv_type_long_long, +[AC_TRY_LINK([ +long long ll = 1; int i = 63;], +[ +long long llm = (long long) -1; +return ll << i | ll >> i | llm / ll | llm % ll; +], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) +if test "$bash_cv_type_long_long" = 'long long'; then + AC_DEFINE(HAVE_LONG_LONG, 1) +fi +]) + +AC_DEFUN([BASH_TYPE_UNSIGNED_LONG_LONG], +[ +AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, +[AC_TRY_LINK([ +unsigned long long ull = 1; int i = 63;], +[ +unsigned long long ullmax = (unsigned long long) -1; +return ull << i | ull >> i | ullmax / ull | ullmax % ull; +], bash_cv_type_unsigned_long_long='unsigned long long', + bash_cv_type_unsigned_long_long='unsigned long')]) +if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) +fi +]) + +dnl +dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) +dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use +dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify +dnl matters, this just checks for rlim_t, quad_t, or long. +dnl +AC_DEFUN([BASH_TYPE_RLIMIT], +[AC_MSG_CHECKING(for size and type of struct rlimit fields) +AC_CACHE_VAL(bash_cv_type_rlimit, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/resource.h>], +[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ +AC_TRY_RUN([ +#include <sys/types.h> +#include <sys/time.h> +#include <sys/resource.h> +main() +{ +#ifdef HAVE_QUAD_T + struct rlimit rl; + if (sizeof(rl.rlim_cur) == sizeof(quad_t)) + exit(0); +#endif + exit(1); +}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, + [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) + bash_cv_type_rlimit=long])]) +]) +AC_MSG_RESULT($bash_cv_type_rlimit) +if test $bash_cv_type_rlimit = quad_t; then +AC_DEFINE(RLIMTYPE, quad_t) +elif test $bash_cv_type_rlimit = rlim_t; then +AC_DEFINE(RLIMTYPE, rlim_t) +fi +]) + +AC_DEFUN([BASH_FUNC_LSTAT], +[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an +dnl inline function in <sys/stat.h>. +AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, +[AC_TRY_LINK([ +#include <sys/types.h> +#include <sys/stat.h> +],[ lstat(".",(struct stat *)0); ], +bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) +if test $bash_cv_func_lstat = yes; then + AC_DEFINE(HAVE_LSTAT) +fi +]) + +AC_DEFUN([BASH_FUNC_INET_ATON], +[ +AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, +[AC_TRY_LINK([ +#include <sys/types.h> +#include <netinet/in.h> +#include <arpa/inet.h> +struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], +bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) +if test $bash_cv_func_inet_aton = yes; then + AC_DEFINE(HAVE_INET_ATON) +else + AC_LIBOBJ(inet_aton) +fi +]) + +AC_DEFUN([BASH_FUNC_GETENV], +[AC_MSG_CHECKING(to see if getenv can be redefined) +AC_CACHE_VAL(bash_cv_getenv_redef, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +char * +getenv (name) +#if defined (__linux__) || defined (__bsdi__) || defined (convex) + const char *name; +#else + char const *name; +#endif /* !__linux__ && !__bsdi__ && !convex */ +{ +return "42"; +} +main() +{ +char *s; +/* The next allows this program to run, but does not allow bash to link + when it redefines getenv. I'm not really interested in figuring out + why not. */ +#if defined (NeXT) +exit(1); +#endif +s = getenv("ABCDE"); +exit(s == 0); /* force optimizer to leave getenv in */ +} +], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, + [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) + bash_cv_getenv_redef=yes] +)]) +AC_MSG_RESULT($bash_cv_getenv_redef) +if test $bash_cv_getenv_redef = yes; then +AC_DEFINE(CAN_REDEFINE_GETENV) +fi +]) + +# We should check for putenv before calling this +AC_DEFUN([BASH_FUNC_STD_PUTENV], +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_C_PROTOTYPES]) +AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, +[AC_TRY_LINK([ +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int putenv (char *); +#else +extern int putenv (); +#endif +], +[return (putenv == 0);], +bash_cv_std_putenv=yes, bash_cv_std_putenv=no +)]) +if test $bash_cv_std_putenv = yes; then +AC_DEFINE(HAVE_STD_PUTENV) +fi +]) + +# We should check for unsetenv before calling this +AC_DEFUN([BASH_FUNC_STD_UNSETENV], +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_C_PROTOTYPES]) +AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, +[AC_TRY_LINK([ +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int unsetenv (const char *); +#else +extern int unsetenv (); +#endif +], +[return (unsetenv == 0);], +bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no +)]) +if test $bash_cv_std_unsetenv = yes; then +AC_DEFINE(HAVE_STD_UNSETENV) +fi +]) + +AC_DEFUN([BASH_FUNC_ULIMIT_MAXFDS], +[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) +AC_CACHE_VAL(bash_cv_ulimit_maxfds, +[AC_TRY_RUN([ +main() +{ +long maxfds = ulimit(4, 0L); +exit (maxfds == -1L); +} +], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, + [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) + bash_cv_ulimit_maxfds=no] +)]) +AC_MSG_RESULT($bash_cv_ulimit_maxfds) +if test $bash_cv_ulimit_maxfds = yes; then +AC_DEFINE(ULIMIT_MAXFDS) +fi +]) + +AC_DEFUN([BASH_FUNC_GETCWD], +[AC_MSG_CHECKING([if getcwd() calls popen()]) +AC_CACHE_VAL(bash_cv_getcwd_calls_popen, +[AC_TRY_RUN([ +#include <stdio.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +#ifndef __STDC__ +#ifndef const +#define const +#endif +#endif + +int popen_called; + +FILE * +popen(command, type) + const char *command; + const char *type; +{ + popen_called = 1; + return (FILE *)NULL; +} + +FILE *_popen(command, type) + const char *command; + const char *type; +{ + return (popen (command, type)); +} + +int +pclose(stream) +FILE *stream; +{ + return 0; +} + +int +_pclose(stream) +FILE *stream; +{ + return 0; +} + +main() +{ + char lbuf[32]; + popen_called = 0; + getcwd(lbuf, 32); + exit (popen_called); +} +], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, + [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) + bash_cv_getcwd_calls_popen=no] +)]) +AC_MSG_RESULT($bash_cv_getcwd_calls_popen) +if test $bash_cv_getcwd_calls_popen = yes; then +AC_DEFINE(GETCWD_BROKEN) +AC_LIBOBJ(getcwd) +fi +]) + +dnl +dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every +dnl system, we can't use AC_PREREQ +dnl +AC_DEFUN([BASH_FUNC_GETHOSTBYNAME], +[if test "X$bash_cv_have_gethostbyname" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(for gethostbyname in socket library) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_have_gethostbyname, +[AC_TRY_LINK([#include <netdb.h>], +[ struct hostent *hp; + hp = gethostbyname("localhost"); +], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] +) +if test "X$_bash_needmsg" = Xyes; then + AC_MSG_CHECKING(for gethostbyname in socket library) +fi +AC_MSG_RESULT($bash_cv_have_gethostbyname) +if test "$bash_cv_have_gethostbyname" = yes; then +AC_DEFINE(HAVE_GETHOSTBYNAME) +fi +]) + +AC_DEFUN([BASH_FUNC_FNMATCH_EXTMATCH], +[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) +AC_CACHE_VAL(bash_cv_fnm_extmatch, +[AC_TRY_RUN([ +#include <fnmatch.h> + +main() +{ +#ifdef FNM_EXTMATCH + exit (0); +#else + exit (1); +#endif +} +], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, + [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) + bash_cv_fnm_extmatch=no]) +]) +AC_MSG_RESULT($bash_cv_fnm_extmatch) +if test $bash_cv_fnm_extmatch = yes; then +AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) +fi +]) + +AH_TEMPLATE([HAVE_POSIX_SIGSETJMP], [Define if we POSIX-style sigsetjmp/siglongjmp are available]) +AC_DEFUN([BASH_FUNC_POSIX_SETJMP], +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) +AC_CACHE_VAL(bash_cv_func_sigsetjmp, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include <sys/types.h> +#include <signal.h> +#include <setjmp.h> + +main() +{ +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) +exit (1); +#else + +int code; +sigset_t set, oset; +sigjmp_buf xx; + +/* get the mask */ +sigemptyset(&set); +sigemptyset(&oset); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + +/* save it */ +code = sigsetjmp(xx, 1); +if (code) + exit(0); /* could get sigmask and compare to oset here. */ + +/* change it */ +sigaddset(&set, SIGINT); +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); + +/* and siglongjmp */ +siglongjmp(xx, 10); +exit(1); +#endif +}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, + [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) + bash_cv_func_sigsetjmp=missing] +)]) +AC_MSG_RESULT($bash_cv_func_sigsetjmp) +if test $bash_cv_func_sigsetjmp = present; then +AC_DEFINE(HAVE_POSIX_SIGSETJMP) +fi +]) + +AH_TEMPLATE([STRCOLL_BROKEN], [Define if strcoll is broken with respect to strcmp in the default locale.]) +AC_DEFUN([BASH_FUNC_STRCOLL], +[ +AC_MSG_CHECKING(whether or not strcoll and strcmp differ) +AC_CACHE_VAL(bash_cv_func_strcoll_broken, +[AC_TRY_RUN([ +#include <stdio.h> +#if defined (HAVE_LOCALE_H) +#include <locale.h> +#endif + +main(c, v) +int c; +char *v[]; +{ + int r1, r2; + char *deflocale, *defcoll; + +#ifdef HAVE_SETLOCALE + deflocale = setlocale(LC_ALL, ""); + defcoll = setlocale(LC_COLLATE, ""); +#endif + +#ifdef HAVE_STRCOLL + /* These two values are taken from tests/glob-test. */ + r1 = strcoll("abd", "aXd"); +#else + r1 = 0; +#endif + r2 = strcmp("abd", "aXd"); + + /* These two should both be greater than 0. It is permissible for + a system to return different values, as long as the sign is the + same. */ + + /* Exit with 1 (failure) if these two values are both > 0, since + this tests whether strcoll(3) is broken with respect to strcmp(3) + in the default locale. */ + exit (r1 > 0 && r2 > 0); +} +], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, + [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) + bash_cv_func_strcoll_broken=no] +)]) +AC_MSG_RESULT($bash_cv_func_strcoll_broken) +if test $bash_cv_func_strcoll_broken = yes; then +AC_DEFINE(STRCOLL_BROKEN) +fi +]) + +AC_DEFUN([BASH_FUNC_PRINTF_A_FORMAT], +[AC_MSG_CHECKING([for printf floating point output in hex notation]) +AC_CACHE_VAL(bash_cv_printf_a_format, +[AC_TRY_RUN([ +#include <stdio.h> +#include <string.h> + +int +main() +{ + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); +} +], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, + [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) + bash_cv_printf_a_format=no] +)]) +AC_MSG_RESULT($bash_cv_printf_a_format) +if test $bash_cv_printf_a_format = yes; then +AC_DEFINE(HAVE_PRINTF_A_FORMAT) +fi +]) + +AC_DEFUN([BASH_STRUCT_TERMIOS_LDISC], +[ +AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ +#include <sys/types.h> +#include <termios.h> +]) +]) + +AC_DEFUN([BASH_STRUCT_TERMIO_LDISC], +[ +AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ +#include <sys/types.h> +#include <termio.h> +]) +]) + +dnl +dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS +dnl +dnl sets bash_cv_struct_stat_st_blocks +dnl +dnl unused for now; we'll see how AC_CHECK_MEMBERS works +dnl +AC_DEFUN([BASH_STRUCT_ST_BLOCKS], +[ +AC_MSG_CHECKING([for struct stat.st_blocks]) +AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, +[AC_TRY_COMPILE( +[ +#include <sys/types.h> +#include <sys/stat.h> +], +[ +main() +{ +static struct stat a; +if (a.st_blocks) return 0; +return 0; +} +], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) +]) +AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) +if test "$bash_cv_struct_stat_st_blocks" = "yes"; then +AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) +fi +]) + +AC_DEFUN([BASH_CHECK_LIB_TERMCAP], +[ +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(which library has the termcap functions) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_termcap_lib, +[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, + [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])])]) +if test "X$_bash_needmsg" = "Xyes"; then +AC_MSG_CHECKING(which library has the termcap functions) +fi +AC_MSG_RESULT(using $bash_cv_termcap_lib) +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi +]) + +dnl +dnl Check for the presence of getpeername in libsocket. +dnl If libsocket is present, check for libnsl and add it to LIBS if +dnl it's there, since most systems with libsocket require linking +dnl with libnsl as well. This should only be called if getpeername +dnl was not found in libc. +dnl +dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT +dnl AS WELL +dnl +AC_DEFUN([BASH_CHECK_LIB_SOCKET], +[ +if test "X$bash_cv_have_socklib" = "X"; then +_bash_needmsg= +else +AC_MSG_CHECKING(for socket library) +_bash_needmsg=yes +fi +AC_CACHE_VAL(bash_cv_have_socklib, +[AC_CHECK_LIB(socket, getpeername, + bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) +if test "X$_bash_needmsg" = Xyes; then + AC_MSG_RESULT($bash_cv_have_socklib) + _bash_needmsg= +fi +if test $bash_cv_have_socklib = yes; then + # check for libnsl, add it to LIBS if present + if test "X$bash_cv_have_libnsl" = "X"; then + _bash_needmsg= + else + AC_MSG_CHECKING(for libnsl) + _bash_needmsg=yes + fi + AC_CACHE_VAL(bash_cv_have_libnsl, + [AC_CHECK_LIB(nsl, t_open, + bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) + if test "X$_bash_needmsg" = Xyes; then + AC_MSG_RESULT($bash_cv_have_libnsl) + _bash_needmsg= + fi + if test $bash_cv_have_libnsl = yes; then + LIBS="-lsocket -lnsl $LIBS" + else + LIBS="-lsocket $LIBS" + fi + AC_DEFINE(HAVE_LIBSOCKET) + AC_DEFINE(HAVE_GETPEERNAME) +fi +]) + +AH_TEMPLATE([STRUCT_DIRENT_HAS_D_INO], [Define if struct dirent has a d_ino member]) +AC_DEFUN([BASH_STRUCT_DIRENT_D_INO], +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(if struct dirent has a d_ino member) +AC_CACHE_VAL(bash_cv_dirent_has_dino, +[AC_TRY_COMPILE([ +#include <stdio.h> +#include <sys/types.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include <dirent.h> +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include <ndir.h> +# endif +#endif /* HAVE_DIRENT_H */ +],[ +struct dirent d; int z; z = d.d_ino; +], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) +AC_MSG_RESULT($bash_cv_dirent_has_dino) +if test $bash_cv_dirent_has_dino = yes; then +AC_DEFINE(STRUCT_DIRENT_HAS_D_INO) +fi +]) + +AH_TEMPLATE([STRUCT_DIRENT_HAS_D_FILENO], [Define if struct dirent has a d_fileno member]) +AC_DEFUN([BASH_STRUCT_DIRENT_D_FILENO], +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(if struct dirent has a d_fileno member) +AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, +[AC_TRY_COMPILE([ +#include <stdio.h> +#include <sys/types.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include <dirent.h> +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include <ndir.h> +# endif +#endif /* HAVE_DIRENT_H */ +],[ +struct dirent d; int z; z = d.d_fileno; +], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) +AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) +if test $bash_cv_dirent_has_d_fileno = yes; then +AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO) +fi +]) + +AC_DEFUN([BASH_STRUCT_TIMEVAL], +[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) +AC_CACHE_VAL(bash_cv_struct_timeval, +[ +AC_EGREP_HEADER(struct timeval, sys/time.h, + bash_cv_struct_timeval=yes, + AC_EGREP_HEADER(struct timeval, time.h, + bash_cv_struct_timeval=yes, + bash_cv_struct_timeval=no)) +]) +AC_MSG_RESULT($bash_cv_struct_timeval) +if test $bash_cv_struct_timeval = yes; then + AC_DEFINE(HAVE_TIMEVAL) +fi +]) + +AH_TEMPLATE([STRUCT_WINSIZE_IN_SYS_IOCTL], [Define if struct winsize is in sys/ioctl.h]) +AH_TEMPLATE([STRUCT_WINSIZE_IN_TERMIOS], [Define if struct winsize is in termios.h]) +AC_DEFUN([BASH_STRUCT_WINSIZE], +[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) +AC_CACHE_VAL(bash_cv_struct_winsize_header, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [struct winsize x;], + bash_cv_struct_winsize_header=ioctl_h, + [AC_TRY_COMPILE([#include <sys/types.h> +#include <termios.h>], [struct winsize x;], + bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) +])]) +if test $bash_cv_struct_winsize_header = ioctl_h; then + AC_MSG_RESULT(sys/ioctl.h) + AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) +elif test $bash_cv_struct_winsize_header = termios_h; then + AC_MSG_RESULT(termios.h) + AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) +else + AC_MSG_RESULT(not found) +fi +]) + +dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) +AH_TEMPLATE([HAVE_POSIX_SIGNALS], [Define if we have the POSIX signal routines]) +AH_TEMPLATE([HAVE_BSD_SIGNALS], [Define if we have the BSD signal routines]) +AH_TEMPLATE([HAVE_USG_SIGHOLD], [Define if we have the USG signal routines]) +AC_DEFUN([BASH_SYS_SIGNAL_VINTAGE], +[AC_REQUIRE([AC_TYPE_SIGNAL]) +AC_MSG_CHECKING(for type of signal functions) +AC_CACHE_VAL(bash_cv_signal_vintage, +[ + AC_MSG_WARN([checking for posix...]) + AC_TRY_LINK([#include <signal.h>],[ + sigset_t ss; + struct sigaction sa; + sigemptyset(&ss); sigsuspend(&ss); + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + ], bash_cv_signal_vintage="posix", + [ + AC_MSG_WARN([checking for 4.2bsd...]) + AC_TRY_LINK([#include <signal.h>], [ + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + ], bash_cv_signal_vintage="4.2bsd", + [ + AC_MSG_WARN([checking for svr3...]) + AC_TRY_LINK([ + #include <signal.h> + RETSIGTYPE foo() { }], [ + int mask = sigmask(SIGINT); + sigset(SIGINT, foo); sigrelse(SIGINT); + sighold(SIGINT); sigpause(SIGINT); + ], bash_cv_signal_vintage="svr3", bash_cv_signal_vintage="v7" + )] + )] +) +]) +AC_MSG_RESULT($bash_cv_signal_vintage) +if test "$bash_cv_signal_vintage" = "posix"; then +AC_DEFINE(HAVE_POSIX_SIGNALS) +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then +AC_DEFINE(HAVE_BSD_SIGNALS) +elif test "$bash_cv_signal_vintage" = "svr3"; then +AC_DEFINE(HAVE_USG_SIGHOLD) +fi +]) + +dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. +AC_DEFUN([BASH_SYS_PGRP_SYNC], +[AC_REQUIRE([AC_FUNC_GETPGRP]) +AC_MSG_CHECKING(whether pgrps need synchronization) +AC_CACHE_VAL(bash_cv_pgrp_pipe, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif +main() +{ +# ifdef GETPGRP_VOID +# define getpgID() getpgrp() +# else +# define getpgID() getpgrp(0) +# define setpgid(x,y) setpgrp(x,y) +# endif + int pid1, pid2, fds[2]; + int status; + char ok; + + switch (pid1 = fork()) { + case -1: + exit(1); + case 0: + setpgid(0, getpid()); + exit(0); + } + setpgid(pid1, pid1); + + sleep(2); /* let first child die */ + + if (pipe(fds) < 0) + exit(2); + + switch (pid2 = fork()) { + case -1: + exit(3); + case 0: + setpgid(0, pid1); + ok = getpgID() == pid1; + write(fds[1], &ok, 1); + exit(0); + } + setpgid(pid2, pid1); + + close(fds[1]); + if (read(fds[0], &ok, 1) != 1) + exit(4); + wait(&status); + wait(&status); + exit(ok ? 0 : 5); +} +], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, + [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) + bash_cv_pgrp_pipe=no]) +]) +AC_MSG_RESULT($bash_cv_pgrp_pipe) +if test $bash_cv_pgrp_pipe = yes; then +AC_DEFINE(PGRP_PIPE) +fi +]) + +AH_TEMPLATE([MUST_REINSTALL_SIGHANDLERS], [Define if signal handlers must be reinstalled when invoked.]) +AC_DEFUN([BASH_SYS_REINSTALL_SIGHANDLERS], +[AC_REQUIRE([AC_TYPE_SIGNAL]) +AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) +AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, +[AC_TRY_RUN([ +#include <signal.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +typedef RETSIGTYPE sigfunc(); + +int nsigint; + +#ifdef HAVE_POSIX_SIGNALS +sigfunc * +set_signal_handler(sig, handler) + int sig; + sigfunc *handler; +{ + struct sigaction act, oact; + act.sa_handler = handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + sigaction (sig, &act, &oact); + return (oact.sa_handler); +} +#else +#define set_signal_handler(s, h) signal(s, h) +#endif + +RETSIGTYPE +sigint(s) +int s; +{ + nsigint++; +} + +main() +{ + nsigint = 0; + set_signal_handler(SIGINT, sigint); + kill((int)getpid(), SIGINT); + kill((int)getpid(), SIGINT); + exit(nsigint != 2); +} +], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, + [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) + bash_cv_must_reinstall_sighandlers=no] +)]) +AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) +if test $bash_cv_must_reinstall_sighandlers = yes; then +AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) +fi +]) + +dnl check that some necessary job control definitions are present +AC_DEFUN([BASH_SYS_JOB_CONTROL_MISSING], +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING(for presence of necessary job control definitions) +AC_CACHE_VAL(bash_cv_job_control_missing, +[AC_TRY_RUN([ +#include <sys/types.h> +#ifdef HAVE_SYS_WAIT_H +#include <sys/wait.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include <signal.h> + +/* Add more tests in here as appropriate. */ +main() +{ +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +exit(1); +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +exit (1); +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +exit(1); +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +exit(1); +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +exit(1); +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +exit(1); +#endif + +exit(0); +}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, + [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) + bash_cv_job_control_missing=missing] +)]) +AC_MSG_RESULT($bash_cv_job_control_missing) +if test $bash_cv_job_control_missing = missing; then +AC_DEFINE(JOB_CONTROL_MISSING) +fi +]) + +dnl check whether named pipes are present +dnl this requires a previous check for mkfifo, but that is awkward to specify +AC_DEFUN([BASH_SYS_NAMED_PIPES], +[AC_MSG_CHECKING(for presence of named pipes) +AC_CACHE_VAL(bash_cv_sys_named_pipes, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <sys/stat.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +/* Add more tests in here as appropriate. */ +main() +{ +int fd, err; + +#if defined (HAVE_MKFIFO) +exit (0); +#endif + +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) +exit (1); +#endif + +#if defined (NeXT) +exit (1); +#endif +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("/tmp/bash-aclocal"); + exit (1); +} +close(fd); +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); +rmdir ("/tmp/bash-aclocal"); +exit(0); +}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, + [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) + bash_cv_sys_named_pipes=missing] +)]) +AC_MSG_RESULT($bash_cv_sys_named_pipes) +if test $bash_cv_sys_named_pipes = missing; then +AC_DEFINE(NAMED_PIPES_MISSING) +fi +]) + +AC_DEFUN([BASH_SYS_DEFAULT_MAIL_DIR], +[AC_MSG_CHECKING(for default mail directory) +AC_CACHE_VAL(bash_cv_mail_dir, +[if test -d /var/mail; then + bash_cv_mail_dir=/var/mail + elif test -d /var/spool/mail; then + bash_cv_mail_dir=/var/spool/mail + elif test -d /usr/mail; then + bash_cv_mail_dir=/usr/mail + elif test -d /usr/spool/mail; then + bash_cv_mail_dir=/usr/spool/mail + else + bash_cv_mail_dir=unknown + fi +]) +AC_MSG_RESULT($bash_cv_mail_dir) +AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") +]) + +AC_DEFUN([BASH_HAVE_TIOCGWINSZ], +[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = TIOCGWINSZ;], + bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) +if test $bash_cv_tiocgwinsz_in_ioctl = yes; then +AC_DEFINE(GWINSZ_IN_SYS_IOCTL) +fi +]) + +AH_TEMPLATE([TIOCSTAT_IN_SYS_IOCTL], [Define if TIOCSTAT is in sys/ioctl.h]) +AC_DEFUN([BASH_HAVE_TIOCSTAT], +[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = TIOCSTAT;], + bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) +if test $bash_cv_tiocstat_in_ioctl = yes; then +AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) +fi +]) + +AH_TEMPLATE([FIONREAD_IN_SYS_IOCTL], [Define if FIONREAD is in sys/ioctl.h]) +AC_DEFUN([BASH_HAVE_FIONREAD], +[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_fionread_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = FIONREAD;], + bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_fionread_in_ioctl) +if test $bash_cv_fionread_in_ioctl = yes; then +AC_DEFINE(FIONREAD_IN_SYS_IOCTL) +fi +]) + +dnl +dnl See if speed_t is declared in <sys/types.h>. Some versions of linux +dnl require a definition of speed_t each time <termcap.h> is included, +dnl but you can only get speed_t if you include <termios.h> (on some +dnl versions) or <sys/types.h> (on others). +dnl +AH_TEMPLATE([SPEED_T_IN_SYS_TYPES], [Define if speed_t is in sys/types.h]) +AC_DEFUN([BASH_CHECK_SPEED_T], +[AC_MSG_CHECKING(for speed_t in sys/types.h) +AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, +[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;], + bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) +AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) +if test $bash_cv_speed_t_in_sys_types = yes; then +AC_DEFINE(SPEED_T_IN_SYS_TYPES) +fi +]) + +AH_TEMPLATE([HAVE_GETPW_DECLS], [Define if getpw functions are declared in pwd.h]) +AC_DEFUN([BASH_CHECK_GETPW_FUNCS], +[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h) +AC_CACHE_VAL(bash_cv_getpw_declared, +[AC_EGREP_CPP(getpwuid, +[ +#include <sys/types.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif +#include <pwd.h> +], +bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)]) +AC_MSG_RESULT($bash_cv_getpw_declared) +if test $bash_cv_getpw_declared = yes; then +AC_DEFINE(HAVE_GETPW_DECLS) +fi +]) + +AC_DEFUN([BASH_CHECK_DEV_FD], +[AC_MSG_CHECKING(whether /dev/fd is available) +AC_CACHE_VAL(bash_cv_dev_fd, +[if test -d /dev/fd && test -r /dev/fd/0; then + bash_cv_dev_fd=standard + elif test -d /proc/self/fd && test -r /proc/self/fd/0; then + bash_cv_dev_fd=whacky + else + bash_cv_dev_fd=absent + fi +]) +AC_MSG_RESULT($bash_cv_dev_fd) +if test $bash_cv_dev_fd = "standard"; then + AC_DEFINE(HAVE_DEV_FD) + AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/") +elif test $bash_cv_dev_fd = "whacky"; then + AC_DEFINE(HAVE_DEV_FD) + AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/") +fi +]) + +AC_DEFUN([BASH_CHECK_DEV_STDIN], +[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) +AC_CACHE_VAL(bash_cv_dev_stdin, +[if test -d /dev/fd && test -r /dev/stdin; then + bash_cv_dev_stdin=present + elif test -d /proc/self/fd && test -r /dev/stdin; then + bash_cv_dev_stdin=present + else + bash_cv_dev_stdin=absent + fi +]) +AC_MSG_RESULT($bash_cv_dev_stdin) +if test $bash_cv_dev_stdin = "present"; then + AC_DEFINE(HAVE_DEV_STDIN) +fi +]) + +dnl +dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions +dnl +AC_DEFUN([BASH_CHECK_KERNEL_RLIMIT], +[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) +AC_CACHE_VAL(bash_cv_kernel_rlimit, +[AC_TRY_COMPILE([ +#include <sys/types.h> +#include <sys/resource.h> +], +[ + int f; + f = RLIMIT_DATA; +], bash_cv_kernel_rlimit=no, +[AC_TRY_COMPILE([ +#include <sys/types.h> +#define _KERNEL +#include <sys/resource.h> +#undef _KERNEL +], +[ + int f; + f = RLIMIT_DATA; +], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] +)]) +AC_MSG_RESULT($bash_cv_kernel_rlimit) +if test $bash_cv_kernel_rlimit = yes; then +AC_DEFINE(RLIMIT_NEEDS_KERNEL) +fi +]) + +dnl +dnl Check for 64-bit off_t -- used for malloc alignment +dnl +dnl C does not allow duplicate case labels, so the compile will fail if +dnl sizeof(off_t) is > 4. +dnl +AC_DEFUN([BASH_CHECK_OFF_T_64], +[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, +AC_TRY_COMPILE([ +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include <sys/types.h> +],[ +switch (0) case 0: case (sizeof (off_t) <= 4):; +], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) +if test $bash_cv_off_t_64 = yes; then + AC_DEFINE(HAVE_OFF_T_64) +fi]) + +AC_DEFUN([BASH_CHECK_RTSIGS], +[AC_MSG_CHECKING(for unusable real-time signals due to large values) +AC_CACHE_VAL(bash_cv_unusable_rtsigs, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <signal.h> + +#ifndef NSIG +# define NSIG 64 +#endif + +main () +{ + int n_sigs = 2 * NSIG; +#ifdef SIGRTMIN + int rtmin = SIGRTMIN; +#else + int rtmin = 0; +#endif + + exit(rtmin < n_sigs); +}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, + [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) + bash_cv_unusable_rtsigs=yes] +)]) +AC_MSG_RESULT($bash_cv_unusable_rtsigs) +if test $bash_cv_unusable_rtsigs = yes; then +AC_DEFINE(UNUSABLE_RT_SIGNALS) +fi +]) + +dnl +dnl check for availability of multibyte characters and functions +dnl +AH_TEMPLATE([HAVE_MBSRTOWCS], [Define if we have the mbsrtowcs function]) +AH_TEMPLATE([HAVE_WCWIDTH], [Define if we have the wcwidth function]) +AH_TEMPLATE([HAVE_MBSTATE_T], [Define if we have mbstate_t]) +AH_TEMPLATE([HAVE_LANGINFO_CODESET], [Define if we have nl_langinfo and CODESET]) +AC_DEFUN([BASH_CHECK_MULTIBYTE], +[ +AC_CHECK_HEADERS(wctype.h) +AC_CHECK_HEADERS(wchar.h) +AC_CHECK_HEADERS(langinfo.h) + +AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) +AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) + +AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, +[AC_TRY_RUN([ +#include <wchar.h> +int +main () +{ + mbstate_t ps; + return 0; +}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) +if test $bash_cv_have_mbstate_t = yes; then + AC_DEFINE(HAVE_MBSTATE_T) +fi + +AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, +[AC_TRY_LINK( +[#include <langinfo.h>], +[char* cs = nl_langinfo(CODESET);], +bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) +if test $bash_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET) +fi + +]) + +dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB +dnl require: +dnl AC_PROG_CC +dnl BASH_CHECK_LIB_TERMCAP + +AC_DEFUN([RL_LIB_READLINE_VERSION], +[ +AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) + +AC_MSG_CHECKING([version of installed readline library]) + +# What a pain in the ass this is. + +# save cpp and ld options +_save_CFLAGS="$CFLAGS" +_save_LDFLAGS="$LDFLAGS" +_save_LIBS="$LIBS" + +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This +# allows the caller to do something like $_rl_prefix=$withval if the user +# specifies --with-installed-readline=PREFIX as an argument to configure + +if test -z "$ac_cv_rl_prefix"; then +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} +fi + +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib + +LIBS="$LIBS -lreadline ${TERMCAP_LIB}" +CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" +LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" + +AC_TRY_RUN([ +#include <stdio.h> +#include <readline/readline.h> + +main() +{ + FILE *fp; + fp = fopen("conftest.rlv", "w"); + if (fp == 0) exit(1); + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + fclose(fp); + exit(0); +} +], +ac_cv_rl_version=`cat conftest.rlv`, +ac_cv_rl_version='0.0', +ac_cv_rl_version='4.2') + +CFLAGS="$_save_CFLAGS" +LDFLAGS="$_save_LDFLAGS" +LIBS="$_save_LIBS" + +RL_MAJOR=0 +RL_MINOR=0 + +# ( +case "$ac_cv_rl_version" in +2*|3*|4*|5*|6*|7*|8*|9*) + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` + ;; +esac + +# ((( +case $RL_MAJOR in +[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; +[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; +*) _RL_MAJOR=00 ;; +esac + +# ((( +case $RL_MINOR in +[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; +[[0-9]]) _RL_MINOR=0$RL_MINOR ;; +*) _RL_MINOR=00 ;; +esac + +RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" + +# Readline versions greater than 4.2 have these defines in readline.h + +if test $ac_cv_rl_version = '0.0' ; then + AC_MSG_WARN([Could not test version of installed readline library.]) +elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then + # set these for use by the caller + RL_PREFIX=$ac_cv_rl_prefix + RL_LIBDIR=$ac_cv_rl_libdir + RL_INCLUDEDIR=$ac_cv_rl_includedir + AC_MSG_RESULT($ac_cv_rl_version) +else + +AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) +AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) +AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) + +AC_SUBST(RL_VERSION) +AC_SUBST(RL_MAJOR) +AC_SUBST(RL_MINOR) + +# set these for use by the caller +RL_PREFIX=$ac_cv_rl_prefix +RL_LIBDIR=$ac_cv_rl_libdir +RL_INCLUDEDIR=$ac_cv_rl_includedir + +AC_MSG_RESULT($ac_cv_rl_version) + +fi +]) diff --git a/meta/recipes-core/readline/readline-6.2/acinclude.m4 b/meta/recipes-core/readline/readline-6.2/acinclude.m4 new file mode 100644 index 0000000..c30a7d3 --- /dev/null +++ b/meta/recipes-core/readline/readline-6.2/acinclude.m4 @@ -0,0 +1,1871 @@ +dnl +dnl Bash specific tests +dnl +dnl Some derived from PDKSH 5.1.3 autoconf tests +dnl + +AC_DEFUN([BASH_C_LONG_LONG], +[AC_CACHE_CHECK(for long long, ac_cv_c_long_long, +[if test "$GCC" = yes; then + ac_cv_c_long_long=yes +else +AC_TRY_RUN([ +int +main() +{ +long long foo = 0; +exit(sizeof(long long) < sizeof(long)); +} +], ac_cv_c_long_long=yes, ac_cv_c_long_long=no) +fi]) +if test $ac_cv_c_long_long = yes; then + AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.]) +fi +]) + +dnl +dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX +dnl (< changed to <=) added. +dnl +AC_DEFUN([BASH_C_LONG_DOUBLE], +[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, +[if test "$GCC" = yes; then + ac_cv_c_long_double=yes +else +AC_TRY_RUN([ +int +main() +{ + /* The Stardent Vistra knows sizeof(long double), but does not + support it. */ + long double foo = 0.0; + /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ + /* On IRIX 5.3, the compiler converts long double to double with a warning, + but compiles this successfully. */ + exit(sizeof(long double) <= sizeof(double)); +} +], ac_cv_c_long_double=yes, ac_cv_c_long_double=no) +fi]) +if test $ac_cv_c_long_double = yes; then + AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.]) +fi +]) + +dnl +dnl Check for <inttypes.h>. This is separated out so that it can be +dnl AC_REQUIREd. +dnl +dnl BASH_HEADER_INTTYPES +AC_DEFUN([BASH_HEADER_INTTYPES], +[ + AC_CHECK_HEADERS(inttypes.h) +]) + +dnl +dnl check for typedef'd symbols in header files, but allow the caller to +dnl specify the include files to be checked in addition to the default +dnl +dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND]) +AC_DEFUN([BASH_CHECK_TYPE], +[ +AC_REQUIRE([AC_HEADER_STDC])dnl +AC_REQUIRE([BASH_HEADER_INTTYPES]) +AC_MSG_CHECKING(for $1) +AC_CACHE_VAL(bash_cv_type_$1, +[AC_EGREP_CPP($1, [#include <sys/types.h> +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +#if HAVE_INTTYPES_H +#include <inttypes.h> +#endif +$2 +], bash_cv_type_$1=yes, bash_cv_type_$1=no)]) +AC_MSG_RESULT($bash_cv_type_$1) +ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then + AC_DEFINE($4) + fi]) +if test $bash_cv_type_$1 = no; then + AC_DEFINE_UNQUOTED($1, $3) +fi +]) + +dnl +dnl BASH_CHECK_DECL(FUNC) +dnl +dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like +dnl AC_CHECK_DECL +dnl +AC_DEFUN([BASH_CHECK_DECL], +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([BASH_HEADER_INTTYPES]) +AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1, +[AC_TRY_LINK( +[ +#if STDC_HEADERS +# include <stdlib.h> +#endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#endif +], +[return !$1;], +bash_cv_decl_$1=yes, bash_cv_decl_$1=no)]) +bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` +if test $bash_cv_decl_$1 = yes; then + AC_DEFINE_UNQUOTED($bash_tr_func, 1) +else + AC_DEFINE_UNQUOTED($bash_tr_func, 0) +fi +]) + +AC_DEFUN([BASH_DECL_PRINTF], +[AC_MSG_CHECKING(for declaration of printf in <stdio.h>) +AC_CACHE_VAL(bash_cv_printf_declared, +[AC_TRY_RUN([ +#include <stdio.h> +#ifdef __STDC__ +typedef int (*_bashfunc)(const char *, ...); +#else +typedef int (*_bashfunc)(); +#endif +main() +{ +_bashfunc pf; +pf = (_bashfunc) printf; +exit(pf == 0); +} +], bash_cv_printf_declared=yes, bash_cv_printf_declared=no, + [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes) + bash_cv_printf_declared=yes] +)]) +AC_MSG_RESULT($bash_cv_printf_declared) +if test $bash_cv_printf_declared = yes; then +AC_DEFINE(PRINTF_DECLARED) +fi +]) + +AC_DEFUN([BASH_DECL_SBRK], +[AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>) +AC_CACHE_VAL(bash_cv_sbrk_declared, +[AC_EGREP_HEADER(sbrk, unistd.h, + bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)]) +AC_MSG_RESULT($bash_cv_sbrk_declared) +if test $bash_cv_sbrk_declared = yes; then +AC_DEFINE(SBRK_DECLARED) +fi +]) + +dnl +dnl Check for sys_siglist[] or _sys_siglist[] +dnl +AC_DEFUN([BASH_DECL_UNDER_SYS_SIGLIST], +[AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h]) +AC_CACHE_VAL(bash_cv_decl_under_sys_siglist, +[AC_TRY_COMPILE([ +#include <sys/types.h> +#include <signal.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif], [ char *msg = _sys_siglist[2]; ], + bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no, + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl +AC_MSG_RESULT($bash_cv_decl_under_sys_siglist) +if test $bash_cv_decl_under_sys_siglist = yes; then +AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED) +fi +]) + +AC_DEFUN([BASH_UNDER_SYS_SIGLIST], +[AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) +AC_MSG_CHECKING([for _sys_siglist in system C library]) +AC_CACHE_VAL(bash_cv_under_sys_siglist, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <signal.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifndef UNDER_SYS_SIGLIST_DECLARED +extern char *_sys_siglist[]; +#endif +main() +{ +char *msg = (char *)_sys_siglist[2]; +exit(msg == 0); +}], + bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no, + [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no) + bash_cv_under_sys_siglist=no])]) +AC_MSG_RESULT($bash_cv_under_sys_siglist) +if test $bash_cv_under_sys_siglist = yes; then +AC_DEFINE(HAVE_UNDER_SYS_SIGLIST) +fi +]) + +AC_DEFUN([BASH_SYS_SIGLIST], +[ +AC_CHECK_DECLS([sys_siglist]) +AC_MSG_CHECKING([for sys_siglist in system C library]) +AC_CACHE_VAL(bash_cv_sys_siglist, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <signal.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#ifndef HAVE_DECL_SYS_SIGLIST +extern char *sys_siglist[]; +#endif +main() +{ +char *msg = sys_siglist[2]; +exit(msg == 0); +}], + bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no, + [AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no) + bash_cv_sys_siglist=no])]) +AC_MSG_RESULT($bash_cv_sys_siglist) +if test $bash_cv_sys_siglist = yes; then +AC_DEFINE(HAVE_SYS_SIGLIST) +fi +]) + +dnl Check for the various permutations of sys_siglist and make sure we +dnl compile in siglist.o if they're not defined +AC_DEFUN([BASH_CHECK_SYS_SIGLIST], [ +AC_REQUIRE([BASH_SYS_SIGLIST]) +AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST]) +AC_REQUIRE([BASH_FUNC_STRSIGNAL]) +if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then + SIGLIST_O=siglist.o +else + SIGLIST_O= +fi +AC_SUBST([SIGLIST_O]) +]) + +dnl Check for sys_errlist[] and sys_nerr, check for declaration +AC_DEFUN([BASH_SYS_ERRLIST], +[AC_MSG_CHECKING([for sys_errlist and sys_nerr]) +AC_CACHE_VAL(bash_cv_sys_errlist, +[AC_TRY_LINK([#include <errno.h>], +[extern char *sys_errlist[]; + extern int sys_nerr; + char *msg = sys_errlist[sys_nerr - 1];], + bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl +AC_MSG_RESULT($bash_cv_sys_errlist) +if test $bash_cv_sys_errlist = yes; then +AC_DEFINE(HAVE_SYS_ERRLIST) +fi +]) + +dnl +dnl Check if dup2() does not clear the close on exec flag +dnl +AC_DEFUN([BASH_FUNC_DUP2_CLOEXEC_CHECK], +[AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag) +AC_CACHE_VAL(bash_cv_dup2_broken, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <fcntl.h> +main() +{ + int fd1, fd2, fl; + fd1 = open("/dev/null", 2); + if (fcntl(fd1, 2, 1) < 0) + exit(1); + fd2 = dup2(fd1, 1); + if (fd2 < 0) + exit(2); + fl = fcntl(fd2, 1, 0); + /* fl will be 1 if dup2 did not reset the close-on-exec flag. */ + exit(fl != 1); +} +], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no, + [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no) + bash_cv_dup2_broken=no]) +]) +AC_MSG_RESULT($bash_cv_dup2_broken) +if test $bash_cv_dup2_broken = yes; then +AC_DEFINE(DUP2_BROKEN) +fi +]) + +AC_DEFUN([BASH_FUNC_STRSIGNAL], +[AC_MSG_CHECKING([for the existence of strsignal]) +AC_CACHE_VAL(bash_cv_have_strsignal, +[AC_TRY_LINK([#include <sys/types.h> +#include <signal.h>], +[char *s = (char *)strsignal(2);], + bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)]) +AC_MSG_RESULT($bash_cv_have_strsignal) +if test $bash_cv_have_strsignal = yes; then +AC_DEFINE(HAVE_STRSIGNAL) +fi +]) + +dnl Check to see if opendir will open non-directories (not a nice thing) +AC_DEFUN([BASH_FUNC_OPENDIR_CHECK], +[AC_REQUIRE([AC_HEADER_DIRENT])dnl +AC_MSG_CHECKING(if opendir() opens non-directories) +AC_CACHE_VAL(bash_cv_opendir_not_robust, +[AC_TRY_RUN([ +#include <stdio.h> +#include <sys/types.h> +#include <fcntl.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include <dirent.h> +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include <ndir.h> +# endif +#endif /* HAVE_DIRENT_H */ +main() +{ +DIR *dir; +int fd, err; +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror("mkdir"); + exit(1); +} +unlink("/tmp/bash-aclocal/not_a_directory"); +fd = open("/tmp/bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666); +write(fd, "\n", 1); +close(fd); +dir = opendir("/tmp/bash-aclocal/not_a_directory"); +unlink("/tmp/bash-aclocal/not_a_directory"); +rmdir("/tmp/bash-aclocal"); +exit (dir == 0); +}], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no, + [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no) + bash_cv_opendir_not_robust=no] +)]) +AC_MSG_RESULT($bash_cv_opendir_not_robust) +if test $bash_cv_opendir_not_robust = yes; then +AC_DEFINE(OPENDIR_NOT_ROBUST) +fi +]) + +dnl +AH_TEMPLATE([VOID_SIGHANDLER], [Define if signal handlers return type void]) +AC_DEFUN([BASH_TYPE_SIGHANDLER], +[AC_MSG_CHECKING([whether signal handlers are of type void]) +AC_CACHE_VAL(bash_cv_void_sighandler, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <signal.h> +#ifdef signal +#undef signal +#endif +#ifdef __cplusplus +extern "C" +#endif +void (*signal ()) ();], +[int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl +AC_MSG_RESULT($bash_cv_void_sighandler) +if test $bash_cv_void_sighandler = yes; then +AC_DEFINE(VOID_SIGHANDLER) +fi +]) + +dnl +dnl A signed 16-bit integer quantity +dnl +AC_DEFUN([BASH_TYPE_BITS16_T], +[ +if test "$ac_cv_sizeof_short" = 2; then + AC_CHECK_TYPE(bits16_t, short) +elif test "$ac_cv_sizeof_char" = 2; then + AC_CHECK_TYPE(bits16_t, char) +else + AC_CHECK_TYPE(bits16_t, short) +fi +]) + +dnl +dnl An unsigned 16-bit integer quantity +dnl +AC_DEFUN([BASH_TYPE_U_BITS16_T], +[ +if test "$ac_cv_sizeof_short" = 2; then + AC_CHECK_TYPE(u_bits16_t, unsigned short) +elif test "$ac_cv_sizeof_char" = 2; then + AC_CHECK_TYPE(u_bits16_t, unsigned char) +else + AC_CHECK_TYPE(u_bits16_t, unsigned short) +fi +]) + +dnl +dnl A signed 32-bit integer quantity +dnl +AC_DEFUN([BASH_TYPE_BITS32_T], +[ +if test "$ac_cv_sizeof_int" = 4; then + AC_CHECK_TYPE(bits32_t, int) +elif test "$ac_cv_sizeof_long" = 4; then + AC_CHECK_TYPE(bits32_t, long) +else + AC_CHECK_TYPE(bits32_t, int) +fi +]) + +dnl +dnl An unsigned 32-bit integer quantity +dnl +AC_DEFUN([BASH_TYPE_U_BITS32_T], +[ +if test "$ac_cv_sizeof_int" = 4; then + AC_CHECK_TYPE(u_bits32_t, unsigned int) +elif test "$ac_cv_sizeof_long" = 4; then + AC_CHECK_TYPE(u_bits32_t, unsigned long) +else + AC_CHECK_TYPE(u_bits32_t, unsigned int) +fi +]) + +AC_DEFUN([BASH_TYPE_PTRDIFF_T], +[ +if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, int) +elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, long) +elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then + AC_CHECK_TYPE(ptrdiff_t, [long long]) +else + AC_CHECK_TYPE(ptrdiff_t, int) +fi +]) + +dnl +dnl A signed 64-bit quantity +dnl +AC_DEFUN([BASH_TYPE_BITS64_T], +[ +if test "$ac_cv_sizeof_char_p" = 8; then + AC_CHECK_TYPE(bits64_t, char *) +elif test "$ac_cv_sizeof_double" = 8; then + AC_CHECK_TYPE(bits64_t, double) +elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then + AC_CHECK_TYPE(bits64_t, [long long]) +elif test "$ac_cv_sizeof_long" = 8; then + AC_CHECK_TYPE(bits64_t, long) +else + AC_CHECK_TYPE(bits64_t, double) +fi +]) + +AC_DEFUN([BASH_TYPE_LONG_LONG], +[ +AC_CACHE_CHECK([for long long], bash_cv_type_long_long, +[AC_TRY_LINK([ +long long ll = 1; int i = 63;], +[ +long long llm = (long long) -1; +return ll << i | ll >> i | llm / ll | llm % ll; +], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')]) +if test "$bash_cv_type_long_long" = 'long long'; then + AC_DEFINE(HAVE_LONG_LONG, 1) +fi +]) + +AC_DEFUN([BASH_TYPE_UNSIGNED_LONG_LONG], +[ +AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long, +[AC_TRY_LINK([ +unsigned long long ull = 1; int i = 63;], +[ +unsigned long long ullmax = (unsigned long long) -1; +return ull << i | ull >> i | ullmax / ull | ullmax % ull; +], bash_cv_type_unsigned_long_long='unsigned long long', + bash_cv_type_unsigned_long_long='unsigned long')]) +if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then + AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1) +fi +]) + +dnl +dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0) +dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use +dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3). To simplify +dnl matters, this just checks for rlim_t, quad_t, or long. +dnl +AC_DEFUN([BASH_TYPE_RLIMIT], +[AC_MSG_CHECKING(for size and type of struct rlimit fields) +AC_CACHE_VAL(bash_cv_type_rlimit, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/resource.h>], +[rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[ +AC_TRY_RUN([ +#include <sys/types.h> +#include <sys/time.h> +#include <sys/resource.h> +main() +{ +#ifdef HAVE_QUAD_T + struct rlimit rl; + if (sizeof(rl.rlim_cur) == sizeof(quad_t)) + exit(0); +#endif + exit(1); +}], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long, + [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long) + bash_cv_type_rlimit=long])]) +]) +AC_MSG_RESULT($bash_cv_type_rlimit) +if test $bash_cv_type_rlimit = quad_t; then +AC_DEFINE(RLIMTYPE, quad_t) +elif test $bash_cv_type_rlimit = rlim_t; then +AC_DEFINE(RLIMTYPE, rlim_t) +fi +]) + +AC_DEFUN([BASH_FUNC_LSTAT], +[dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an +dnl inline function in <sys/stat.h>. +AC_CACHE_CHECK([for lstat], bash_cv_func_lstat, +[AC_TRY_LINK([ +#include <sys/types.h> +#include <sys/stat.h> +],[ lstat(".",(struct stat *)0); ], +bash_cv_func_lstat=yes, bash_cv_func_lstat=no)]) +if test $bash_cv_func_lstat = yes; then + AC_DEFINE(HAVE_LSTAT) +fi +]) + +AC_DEFUN([BASH_FUNC_INET_ATON], +[ +AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton, +[AC_TRY_LINK([ +#include <sys/types.h> +#include <netinet/in.h> +#include <arpa/inet.h> +struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ], +bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)]) +if test $bash_cv_func_inet_aton = yes; then + AC_DEFINE(HAVE_INET_ATON) +else + AC_LIBOBJ(inet_aton) +fi +]) + +AC_DEFUN([BASH_FUNC_GETENV], +[AC_MSG_CHECKING(to see if getenv can be redefined) +AC_CACHE_VAL(bash_cv_getenv_redef, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +char * +getenv (name) +#if defined (__linux__) || defined (__bsdi__) || defined (convex) + const char *name; +#else + char const *name; +#endif /* !__linux__ && !__bsdi__ && !convex */ +{ +return "42"; +} +main() +{ +char *s; +/* The next allows this program to run, but does not allow bash to link + when it redefines getenv. I'm not really interested in figuring out + why not. */ +#if defined (NeXT) +exit(1); +#endif +s = getenv("ABCDE"); +exit(s == 0); /* force optimizer to leave getenv in */ +} +], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no, + [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes) + bash_cv_getenv_redef=yes] +)]) +AC_MSG_RESULT($bash_cv_getenv_redef) +if test $bash_cv_getenv_redef = yes; then +AC_DEFINE(CAN_REDEFINE_GETENV) +fi +]) + +# We should check for putenv before calling this +AC_DEFUN([BASH_FUNC_STD_PUTENV], +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_C_PROTOTYPES]) +AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv, +[AC_TRY_LINK([ +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int putenv (char *); +#else +extern int putenv (); +#endif +], +[return (putenv == 0);], +bash_cv_std_putenv=yes, bash_cv_std_putenv=no +)]) +if test $bash_cv_std_putenv = yes; then +AC_DEFINE(HAVE_STD_PUTENV) +fi +]) + +# We should check for unsetenv before calling this +AC_DEFUN([BASH_FUNC_STD_UNSETENV], +[ +AC_REQUIRE([AC_HEADER_STDC]) +AC_REQUIRE([AC_C_PROTOTYPES]) +AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv, +[AC_TRY_LINK([ +#if STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +#ifndef __STDC__ +# ifndef const +# define const +# endif +#endif +#ifdef PROTOTYPES +extern int unsetenv (const char *); +#else +extern int unsetenv (); +#endif +], +[return (unsetenv == 0);], +bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no +)]) +if test $bash_cv_std_unsetenv = yes; then +AC_DEFINE(HAVE_STD_UNSETENV) +fi +]) + +AC_DEFUN([BASH_FUNC_ULIMIT_MAXFDS], +[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize) +AC_CACHE_VAL(bash_cv_ulimit_maxfds, +[AC_TRY_RUN([ +main() +{ +long maxfds = ulimit(4, 0L); +exit (maxfds == -1L); +} +], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no, + [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no) + bash_cv_ulimit_maxfds=no] +)]) +AC_MSG_RESULT($bash_cv_ulimit_maxfds) +if test $bash_cv_ulimit_maxfds = yes; then +AC_DEFINE(ULIMIT_MAXFDS) +fi +]) + +AC_DEFUN([BASH_FUNC_GETCWD], +[AC_MSG_CHECKING([if getcwd() calls popen()]) +AC_CACHE_VAL(bash_cv_getcwd_calls_popen, +[AC_TRY_RUN([ +#include <stdio.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +#ifndef __STDC__ +#ifndef const +#define const +#endif +#endif + +int popen_called; + +FILE * +popen(command, type) + const char *command; + const char *type; +{ + popen_called = 1; + return (FILE *)NULL; +} + +FILE *_popen(command, type) + const char *command; + const char *type; +{ + return (popen (command, type)); +} + +int +pclose(stream) +FILE *stream; +{ + return 0; +} + +int +_pclose(stream) +FILE *stream; +{ + return 0; +} + +main() +{ + char lbuf[32]; + popen_called = 0; + getcwd(lbuf, 32); + exit (popen_called); +} +], bash_cv_getcwd_calls_popen=no, bash_cv_getcwd_calls_popen=yes, + [AC_MSG_WARN(cannot check whether getcwd calls popen if cross compiling -- defaulting to no) + bash_cv_getcwd_calls_popen=no] +)]) +AC_MSG_RESULT($bash_cv_getcwd_calls_popen) +if test $bash_cv_getcwd_calls_popen = yes; then +AC_DEFINE(GETCWD_BROKEN) +AC_LIBOBJ(getcwd) +fi +]) + +dnl +dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every +dnl system, we can't use AC_PREREQ +dnl +AC_DEFUN([BASH_FUNC_GETHOSTBYNAME], +[if test "X$bash_cv_have_gethostbyname" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(for gethostbyname in socket library) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_have_gethostbyname, +[AC_TRY_LINK([#include <netdb.h>], +[ struct hostent *hp; + hp = gethostbyname("localhost"); +], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)] +) +if test "X$_bash_needmsg" = Xyes; then + AC_MSG_CHECKING(for gethostbyname in socket library) +fi +AC_MSG_RESULT($bash_cv_have_gethostbyname) +if test "$bash_cv_have_gethostbyname" = yes; then +AC_DEFINE(HAVE_GETHOSTBYNAME) +fi +]) + +AC_DEFUN([BASH_FUNC_FNMATCH_EXTMATCH], +[AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH) +AC_CACHE_VAL(bash_cv_fnm_extmatch, +[AC_TRY_RUN([ +#include <fnmatch.h> + +main() +{ +#ifdef FNM_EXTMATCH + exit (0); +#else + exit (1); +#endif +} +], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no, + [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no) + bash_cv_fnm_extmatch=no]) +]) +AC_MSG_RESULT($bash_cv_fnm_extmatch) +if test $bash_cv_fnm_extmatch = yes; then +AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH) +fi +]) + +AH_TEMPLATE([HAVE_POSIX_SIGSETJMP], [Define if we POSIX-style sigsetjmp/siglongjmp are available]) +AC_DEFUN([BASH_FUNC_POSIX_SETJMP], +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp) +AC_CACHE_VAL(bash_cv_func_sigsetjmp, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include <sys/types.h> +#include <signal.h> +#include <setjmp.h> + +main() +{ +#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS) +exit (1); +#else + +int code; +sigset_t set, oset; +sigjmp_buf xx; + +/* get the mask */ +sigemptyset(&set); +sigemptyset(&oset); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set); +sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset); + +/* save it */ +code = sigsetjmp(xx, 1); +if (code) + exit(0); /* could get sigmask and compare to oset here. */ + +/* change it */ +sigaddset(&set, SIGINT); +sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL); + +/* and siglongjmp */ +siglongjmp(xx, 10); +exit(1); +#endif +}], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing, + [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing) + bash_cv_func_sigsetjmp=missing] +)]) +AC_MSG_RESULT($bash_cv_func_sigsetjmp) +if test $bash_cv_func_sigsetjmp = present; then +AC_DEFINE(HAVE_POSIX_SIGSETJMP) +fi +]) + +AH_TEMPLATE([STRCOLL_BROKEN], [Define if strcoll is broken with respect to strcmp in the default locale.]) +AC_DEFUN([BASH_FUNC_STRCOLL], +[ +AC_MSG_CHECKING(whether or not strcoll and strcmp differ) +AC_CACHE_VAL(bash_cv_func_strcoll_broken, +[AC_TRY_RUN([ +#include <stdio.h> +#if defined (HAVE_LOCALE_H) +#include <locale.h> +#endif + +main(c, v) +int c; +char *v[]; +{ + int r1, r2; + char *deflocale, *defcoll; + +#ifdef HAVE_SETLOCALE + deflocale = setlocale(LC_ALL, ""); + defcoll = setlocale(LC_COLLATE, ""); +#endif + +#ifdef HAVE_STRCOLL + /* These two values are taken from tests/glob-test. */ + r1 = strcoll("abd", "aXd"); +#else + r1 = 0; +#endif + r2 = strcmp("abd", "aXd"); + + /* These two should both be greater than 0. It is permissible for + a system to return different values, as long as the sign is the + same. */ + + /* Exit with 1 (failure) if these two values are both > 0, since + this tests whether strcoll(3) is broken with respect to strcmp(3) + in the default locale. */ + exit (r1 > 0 && r2 > 0); +} +], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no, + [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no) + bash_cv_func_strcoll_broken=no] +)]) +AC_MSG_RESULT($bash_cv_func_strcoll_broken) +if test $bash_cv_func_strcoll_broken = yes; then +AC_DEFINE(STRCOLL_BROKEN) +fi +]) + +AC_DEFUN([BASH_FUNC_PRINTF_A_FORMAT], +[AC_MSG_CHECKING([for printf floating point output in hex notation]) +AC_CACHE_VAL(bash_cv_printf_a_format, +[AC_TRY_RUN([ +#include <stdio.h> +#include <string.h> + +int +main() +{ + double y = 0.0; + char abuf[1024]; + + sprintf(abuf, "%A", y); + exit(strchr(abuf, 'P') == (char *)0); +} +], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no, + [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no) + bash_cv_printf_a_format=no] +)]) +AC_MSG_RESULT($bash_cv_printf_a_format) +if test $bash_cv_printf_a_format = yes; then +AC_DEFINE(HAVE_PRINTF_A_FORMAT) +fi +]) + +AC_DEFUN([BASH_STRUCT_TERMIOS_LDISC], +[ +AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[ +#include <sys/types.h> +#include <termios.h> +]) +]) + +AC_DEFUN([BASH_STRUCT_TERMIO_LDISC], +[ +AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[ +#include <sys/types.h> +#include <termio.h> +]) +]) + +dnl +dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS +dnl +dnl sets bash_cv_struct_stat_st_blocks +dnl +dnl unused for now; we'll see how AC_CHECK_MEMBERS works +dnl +AC_DEFUN([BASH_STRUCT_ST_BLOCKS], +[ +AC_MSG_CHECKING([for struct stat.st_blocks]) +AC_CACHE_VAL(bash_cv_struct_stat_st_blocks, +[AC_TRY_COMPILE( +[ +#include <sys/types.h> +#include <sys/stat.h> +], +[ +main() +{ +static struct stat a; +if (a.st_blocks) return 0; +return 0; +} +], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no) +]) +AC_MSG_RESULT($bash_cv_struct_stat_st_blocks) +if test "$bash_cv_struct_stat_st_blocks" = "yes"; then +AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS) +fi +]) + +AC_DEFUN([BASH_CHECK_LIB_TERMCAP], +[ +if test "X$bash_cv_termcap_lib" = "X"; then +_bash_needmsg=yes +else +AC_MSG_CHECKING(which library has the termcap functions) +_bash_needmsg= +fi +AC_CACHE_VAL(bash_cv_termcap_lib, +[AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap, + [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo, + [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses, + [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses, + bash_cv_termcap_lib=gnutermcap)])])])]) +if test "X$_bash_needmsg" = "Xyes"; then +AC_MSG_CHECKING(which library has the termcap functions) +fi +AC_MSG_RESULT(using $bash_cv_termcap_lib) +if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then +LDFLAGS="$LDFLAGS -L./lib/termcap" +TERMCAP_LIB="./lib/termcap/libtermcap.a" +TERMCAP_DEP="./lib/termcap/libtermcap.a" +elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then +TERMCAP_LIB=-ltermcap +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libtinfo; then +TERMCAP_LIB=-ltinfo +TERMCAP_DEP= +elif test $bash_cv_termcap_lib = libncurses; then +TERMCAP_LIB=-lncurses +TERMCAP_DEP= +else +TERMCAP_LIB=-lcurses +TERMCAP_DEP= +fi +]) + +dnl +dnl Check for the presence of getpeername in libsocket. +dnl If libsocket is present, check for libnsl and add it to LIBS if +dnl it's there, since most systems with libsocket require linking +dnl with libnsl as well. This should only be called if getpeername +dnl was not found in libc. +dnl +dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT +dnl AS WELL +dnl +AC_DEFUN([BASH_CHECK_LIB_SOCKET], +[ +if test "X$bash_cv_have_socklib" = "X"; then +_bash_needmsg= +else +AC_MSG_CHECKING(for socket library) +_bash_needmsg=yes +fi +AC_CACHE_VAL(bash_cv_have_socklib, +[AC_CHECK_LIB(socket, getpeername, + bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)]) +if test "X$_bash_needmsg" = Xyes; then + AC_MSG_RESULT($bash_cv_have_socklib) + _bash_needmsg= +fi +if test $bash_cv_have_socklib = yes; then + # check for libnsl, add it to LIBS if present + if test "X$bash_cv_have_libnsl" = "X"; then + _bash_needmsg= + else + AC_MSG_CHECKING(for libnsl) + _bash_needmsg=yes + fi + AC_CACHE_VAL(bash_cv_have_libnsl, + [AC_CHECK_LIB(nsl, t_open, + bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)]) + if test "X$_bash_needmsg" = Xyes; then + AC_MSG_RESULT($bash_cv_have_libnsl) + _bash_needmsg= + fi + if test $bash_cv_have_libnsl = yes; then + LIBS="-lsocket -lnsl $LIBS" + else + LIBS="-lsocket $LIBS" + fi + AC_DEFINE(HAVE_LIBSOCKET) + AC_DEFINE(HAVE_GETPEERNAME) +fi +]) + +AH_TEMPLATE([STRUCT_DIRENT_HAS_D_INO], [Define if struct dirent has a d_ino member]) +AC_DEFUN([BASH_STRUCT_DIRENT_D_INO], +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(if struct dirent has a d_ino member) +AC_CACHE_VAL(bash_cv_dirent_has_dino, +[AC_TRY_COMPILE([ +#include <stdio.h> +#include <sys/types.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include <dirent.h> +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include <ndir.h> +# endif +#endif /* HAVE_DIRENT_H */ +],[ +struct dirent d; int z; z = d.d_ino; +], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)]) +AC_MSG_RESULT($bash_cv_dirent_has_dino) +if test $bash_cv_dirent_has_dino = yes; then +AC_DEFINE(STRUCT_DIRENT_HAS_D_INO) +fi +]) + +AH_TEMPLATE([STRUCT_DIRENT_HAS_D_FILENO], [Define if struct dirent has a d_fileno member]) +AC_DEFUN([BASH_STRUCT_DIRENT_D_FILENO], +[AC_REQUIRE([AC_HEADER_DIRENT]) +AC_MSG_CHECKING(if struct dirent has a d_fileno member) +AC_CACHE_VAL(bash_cv_dirent_has_d_fileno, +[AC_TRY_COMPILE([ +#include <stdio.h> +#include <sys/types.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif /* HAVE_UNISTD_H */ +#if defined(HAVE_DIRENT_H) +# include <dirent.h> +#else +# define dirent direct +# ifdef HAVE_SYS_NDIR_H +# include <sys/ndir.h> +# endif /* SYSNDIR */ +# ifdef HAVE_SYS_DIR_H +# include <sys/dir.h> +# endif /* SYSDIR */ +# ifdef HAVE_NDIR_H +# include <ndir.h> +# endif +#endif /* HAVE_DIRENT_H */ +],[ +struct dirent d; int z; z = d.d_fileno; +], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)]) +AC_MSG_RESULT($bash_cv_dirent_has_d_fileno) +if test $bash_cv_dirent_has_d_fileno = yes; then +AC_DEFINE(STRUCT_DIRENT_HAS_D_FILENO) +fi +]) + +AC_DEFUN([BASH_STRUCT_TIMEVAL], +[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h) +AC_CACHE_VAL(bash_cv_struct_timeval, +[ +AC_EGREP_HEADER(struct timeval, sys/time.h, + bash_cv_struct_timeval=yes, + AC_EGREP_HEADER(struct timeval, time.h, + bash_cv_struct_timeval=yes, + bash_cv_struct_timeval=no)) +]) +AC_MSG_RESULT($bash_cv_struct_timeval) +if test $bash_cv_struct_timeval = yes; then + AC_DEFINE(HAVE_TIMEVAL) +fi +]) + +AH_TEMPLATE([STRUCT_WINSIZE_IN_SYS_IOCTL], [Define if struct winsize is in sys/ioctl.h]) +AH_TEMPLATE([STRUCT_WINSIZE_IN_TERMIOS], [Define if struct winsize is in termios.h]) +AC_DEFUN([BASH_STRUCT_WINSIZE], +[AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h) +AC_CACHE_VAL(bash_cv_struct_winsize_header, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [struct winsize x;], + bash_cv_struct_winsize_header=ioctl_h, + [AC_TRY_COMPILE([#include <sys/types.h> +#include <termios.h>], [struct winsize x;], + bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other) +])]) +if test $bash_cv_struct_winsize_header = ioctl_h; then + AC_MSG_RESULT(sys/ioctl.h) + AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL) +elif test $bash_cv_struct_winsize_header = termios_h; then + AC_MSG_RESULT(termios.h) + AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS) +else + AC_MSG_RESULT(not found) +fi +]) + +dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7) +AH_TEMPLATE([HAVE_POSIX_SIGNALS], [Define if we have the POSIX signal routines]) +AH_TEMPLATE([HAVE_BSD_SIGNALS], [Define if we have the BSD signal routines]) +AH_TEMPLATE([HAVE_USG_SIGHOLD], [Define if we have the USG signal routines]) +AC_DEFUN([BASH_SYS_SIGNAL_VINTAGE], +[AC_REQUIRE([AC_TYPE_SIGNAL]) +AC_MSG_CHECKING(for type of signal functions) +AC_CACHE_VAL(bash_cv_signal_vintage, +[ + AC_MSG_WARN([checking for posix...]) + AC_TRY_LINK([#include <signal.h>],[ + sigset_t ss; + struct sigaction sa; + sigemptyset(&ss); sigsuspend(&ss); + sigaction(SIGINT, &sa, (struct sigaction *) 0); + sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0); + ], bash_cv_signal_vintage="posix", + [ + AC_MSG_WARN([checking for 4.2bsd...]) + AC_TRY_LINK([#include <signal.h>], [ + int mask = sigmask(SIGINT); + sigsetmask(mask); sigblock(mask); sigpause(mask); + ], bash_cv_signal_vintage="4.2bsd", + [ + AC_MSG_WARN([checking for svr3...]) + AC_TRY_LINK([ + #include <signal.h> + RETSIGTYPE foo() { }], [ + int mask = sigmask(SIGINT); + sigset(SIGINT, foo); sigrelse(SIGINT); + sighold(SIGINT); sigpause(SIGINT); + ], bash_cv_signal_vintage="svr3", bash_cv_signal_vintage="v7" + )] + )] +) +]) +AC_MSG_RESULT($bash_cv_signal_vintage) +if test "$bash_cv_signal_vintage" = "posix"; then +AC_DEFINE(HAVE_POSIX_SIGNALS) +elif test "$bash_cv_signal_vintage" = "4.2bsd"; then +AC_DEFINE(HAVE_BSD_SIGNALS) +elif test "$bash_cv_signal_vintage" = "svr3"; then +AC_DEFINE(HAVE_USG_SIGHOLD) +fi +]) + +dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process. +AC_DEFUN([BASH_SYS_PGRP_SYNC], +[AC_REQUIRE([AC_FUNC_GETPGRP]) +AC_MSG_CHECKING(whether pgrps need synchronization) +AC_CACHE_VAL(bash_cv_pgrp_pipe, +[AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif +main() +{ +# ifdef GETPGRP_VOID +# define getpgID() getpgrp() +# else +# define getpgID() getpgrp(0) +# define setpgid(x,y) setpgrp(x,y) +# endif + int pid1, pid2, fds[2]; + int status; + char ok; + + switch (pid1 = fork()) { + case -1: + exit(1); + case 0: + setpgid(0, getpid()); + exit(0); + } + setpgid(pid1, pid1); + + sleep(2); /* let first child die */ + + if (pipe(fds) < 0) + exit(2); + + switch (pid2 = fork()) { + case -1: + exit(3); + case 0: + setpgid(0, pid1); + ok = getpgID() == pid1; + write(fds[1], &ok, 1); + exit(0); + } + setpgid(pid2, pid1); + + close(fds[1]); + if (read(fds[0], &ok, 1) != 1) + exit(4); + wait(&status); + wait(&status); + exit(ok ? 0 : 5); +} +], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes, + [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no) + bash_cv_pgrp_pipe=no]) +]) +AC_MSG_RESULT($bash_cv_pgrp_pipe) +if test $bash_cv_pgrp_pipe = yes; then +AC_DEFINE(PGRP_PIPE) +fi +]) + +AH_TEMPLATE([MUST_REINSTALL_SIGHANDLERS], [Define if signal handlers must be reinstalled when invoked.]) +AC_DEFUN([BASH_SYS_REINSTALL_SIGHANDLERS], +[AC_REQUIRE([AC_TYPE_SIGNAL]) +AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked]) +AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, +[AC_TRY_RUN([ +#include <signal.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +typedef RETSIGTYPE sigfunc(); + +int nsigint; + +#ifdef HAVE_POSIX_SIGNALS +sigfunc * +set_signal_handler(sig, handler) + int sig; + sigfunc *handler; +{ + struct sigaction act, oact; + act.sa_handler = handler; + act.sa_flags = 0; + sigemptyset (&act.sa_mask); + sigemptyset (&oact.sa_mask); + sigaction (sig, &act, &oact); + return (oact.sa_handler); +} +#else +#define set_signal_handler(s, h) signal(s, h) +#endif + +RETSIGTYPE +sigint(s) +int s; +{ + nsigint++; +} + +main() +{ + nsigint = 0; + set_signal_handler(SIGINT, sigint); + kill((int)getpid(), SIGINT); + kill((int)getpid(), SIGINT); + exit(nsigint != 2); +} +], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes, + [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no) + bash_cv_must_reinstall_sighandlers=no] +)]) +AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers) +if test $bash_cv_must_reinstall_sighandlers = yes; then +AC_DEFINE(MUST_REINSTALL_SIGHANDLERS) +fi +]) + +dnl check that some necessary job control definitions are present +AC_DEFUN([BASH_SYS_JOB_CONTROL_MISSING], +[AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE]) +AC_MSG_CHECKING(for presence of necessary job control definitions) +AC_CACHE_VAL(bash_cv_job_control_missing, +[AC_TRY_RUN([ +#include <sys/types.h> +#ifdef HAVE_SYS_WAIT_H +#include <sys/wait.h> +#endif +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include <signal.h> + +/* Add more tests in here as appropriate. */ +main() +{ +/* signal type */ +#if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS) +exit(1); +#endif + +/* signals and tty control. */ +#if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT) +exit (1); +#endif + +/* process control */ +#if !defined (WNOHANG) || !defined (WUNTRACED) +exit(1); +#endif + +/* Posix systems have tcgetpgrp and waitpid. */ +#if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP) +exit(1); +#endif + +#if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID) +exit(1); +#endif + +/* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */ +#if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3) +exit(1); +#endif + +exit(0); +}], bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing, + [AC_MSG_WARN(cannot check job control if cross-compiling -- defaulting to missing) + bash_cv_job_control_missing=missing] +)]) +AC_MSG_RESULT($bash_cv_job_control_missing) +if test $bash_cv_job_control_missing = missing; then +AC_DEFINE(JOB_CONTROL_MISSING) +fi +]) + +dnl check whether named pipes are present +dnl this requires a previous check for mkfifo, but that is awkward to specify +AC_DEFUN([BASH_SYS_NAMED_PIPES], +[AC_MSG_CHECKING(for presence of named pipes) +AC_CACHE_VAL(bash_cv_sys_named_pipes, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <sys/stat.h> +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif + +/* Add more tests in here as appropriate. */ +main() +{ +int fd, err; + +#if defined (HAVE_MKFIFO) +exit (0); +#endif + +#if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO)) +exit (1); +#endif + +#if defined (NeXT) +exit (1); +#endif +err = mkdir("/tmp/bash-aclocal", 0700); +if (err < 0) { + perror ("mkdir"); + exit(1); +} +fd = mknod ("/tmp/bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0); +if (fd == -1) { + rmdir ("/tmp/bash-aclocal"); + exit (1); +} +close(fd); +unlink ("/tmp/bash-aclocal/sh-np-autoconf"); +rmdir ("/tmp/bash-aclocal"); +exit(0); +}], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing, + [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing) + bash_cv_sys_named_pipes=missing] +)]) +AC_MSG_RESULT($bash_cv_sys_named_pipes) +if test $bash_cv_sys_named_pipes = missing; then +AC_DEFINE(NAMED_PIPES_MISSING) +fi +]) + +AC_DEFUN([BASH_SYS_DEFAULT_MAIL_DIR], +[AC_MSG_CHECKING(for default mail directory) +AC_CACHE_VAL(bash_cv_mail_dir, +[if test -d /var/mail; then + bash_cv_mail_dir=/var/mail + elif test -d /var/spool/mail; then + bash_cv_mail_dir=/var/spool/mail + elif test -d /usr/mail; then + bash_cv_mail_dir=/usr/mail + elif test -d /usr/spool/mail; then + bash_cv_mail_dir=/usr/spool/mail + else + bash_cv_mail_dir=unknown + fi +]) +AC_MSG_RESULT($bash_cv_mail_dir) +AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir") +]) + +AC_DEFUN([BASH_HAVE_TIOCGWINSZ], +[AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = TIOCGWINSZ;], + bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl) +if test $bash_cv_tiocgwinsz_in_ioctl = yes; then +AC_DEFINE(GWINSZ_IN_SYS_IOCTL) +fi +]) + +AH_TEMPLATE([TIOCSTAT_IN_SYS_IOCTL], [Define if TIOCSTAT is in sys/ioctl.h]) +AC_DEFUN([BASH_HAVE_TIOCSTAT], +[AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = TIOCSTAT;], + bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl) +if test $bash_cv_tiocstat_in_ioctl = yes; then +AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL) +fi +]) + +AH_TEMPLATE([FIONREAD_IN_SYS_IOCTL], [Define if FIONREAD is in sys/ioctl.h]) +AC_DEFUN([BASH_HAVE_FIONREAD], +[AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h) +AC_CACHE_VAL(bash_cv_fionread_in_ioctl, +[AC_TRY_COMPILE([#include <sys/types.h> +#include <sys/ioctl.h>], [int x = FIONREAD;], + bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)]) +AC_MSG_RESULT($bash_cv_fionread_in_ioctl) +if test $bash_cv_fionread_in_ioctl = yes; then +AC_DEFINE(FIONREAD_IN_SYS_IOCTL) +fi +]) + +dnl +dnl See if speed_t is declared in <sys/types.h>. Some versions of linux +dnl require a definition of speed_t each time <termcap.h> is included, +dnl but you can only get speed_t if you include <termios.h> (on some +dnl versions) or <sys/types.h> (on others). +dnl +AH_TEMPLATE([SPEED_T_IN_SYS_TYPES], [Define if speed_t is in sys/types.h]) +AC_DEFUN([BASH_CHECK_SPEED_T], +[AC_MSG_CHECKING(for speed_t in sys/types.h) +AC_CACHE_VAL(bash_cv_speed_t_in_sys_types, +[AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;], + bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)]) +AC_MSG_RESULT($bash_cv_speed_t_in_sys_types) +if test $bash_cv_speed_t_in_sys_types = yes; then +AC_DEFINE(SPEED_T_IN_SYS_TYPES) +fi +]) + +AH_TEMPLATE([HAVE_GETPW_DECLS], [Define if getpw functions are declared in pwd.h]) +AC_DEFUN([BASH_CHECK_GETPW_FUNCS], +[AC_MSG_CHECKING(whether getpw functions are declared in pwd.h) +AC_CACHE_VAL(bash_cv_getpw_declared, +[AC_EGREP_CPP(getpwuid, +[ +#include <sys/types.h> +#ifdef HAVE_UNISTD_H +# include <unistd.h> +#endif +#include <pwd.h> +], +bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)]) +AC_MSG_RESULT($bash_cv_getpw_declared) +if test $bash_cv_getpw_declared = yes; then +AC_DEFINE(HAVE_GETPW_DECLS) +fi +]) + +AC_DEFUN([BASH_CHECK_DEV_FD], +[AC_MSG_CHECKING(whether /dev/fd is available) +AC_CACHE_VAL(bash_cv_dev_fd, +[if test -d /dev/fd && test -r /dev/fd/0; then + bash_cv_dev_fd=standard + elif test -d /proc/self/fd && test -r /proc/self/fd/0; then + bash_cv_dev_fd=whacky + else + bash_cv_dev_fd=absent + fi +]) +AC_MSG_RESULT($bash_cv_dev_fd) +if test $bash_cv_dev_fd = "standard"; then + AC_DEFINE(HAVE_DEV_FD) + AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/") +elif test $bash_cv_dev_fd = "whacky"; then + AC_DEFINE(HAVE_DEV_FD) + AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/") +fi +]) + +AC_DEFUN([BASH_CHECK_DEV_STDIN], +[AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available) +AC_CACHE_VAL(bash_cv_dev_stdin, +[if test -d /dev/fd && test -r /dev/stdin; then + bash_cv_dev_stdin=present + elif test -d /proc/self/fd && test -r /dev/stdin; then + bash_cv_dev_stdin=present + else + bash_cv_dev_stdin=absent + fi +]) +AC_MSG_RESULT($bash_cv_dev_stdin) +if test $bash_cv_dev_stdin = "present"; then + AC_DEFINE(HAVE_DEV_STDIN) +fi +]) + +dnl +dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions +dnl +AC_DEFUN([BASH_CHECK_KERNEL_RLIMIT], +[AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines]) +AC_CACHE_VAL(bash_cv_kernel_rlimit, +[AC_TRY_COMPILE([ +#include <sys/types.h> +#include <sys/resource.h> +], +[ + int f; + f = RLIMIT_DATA; +], bash_cv_kernel_rlimit=no, +[AC_TRY_COMPILE([ +#include <sys/types.h> +#define _KERNEL +#include <sys/resource.h> +#undef _KERNEL +], +[ + int f; + f = RLIMIT_DATA; +], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)] +)]) +AC_MSG_RESULT($bash_cv_kernel_rlimit) +if test $bash_cv_kernel_rlimit = yes; then +AC_DEFINE(RLIMIT_NEEDS_KERNEL) +fi +]) + +dnl +dnl Check for 64-bit off_t -- used for malloc alignment +dnl +dnl C does not allow duplicate case labels, so the compile will fail if +dnl sizeof(off_t) is > 4. +dnl +AC_DEFUN([BASH_CHECK_OFF_T_64], +[AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64, +AC_TRY_COMPILE([ +#ifdef HAVE_UNISTD_H +#include <unistd.h> +#endif +#include <sys/types.h> +],[ +switch (0) case 0: case (sizeof (off_t) <= 4):; +], bash_cv_off_t_64=no, bash_cv_off_t_64=yes)) +if test $bash_cv_off_t_64 = yes; then + AC_DEFINE(HAVE_OFF_T_64) +fi]) + +AC_DEFUN([BASH_CHECK_RTSIGS], +[AC_MSG_CHECKING(for unusable real-time signals due to large values) +AC_CACHE_VAL(bash_cv_unusable_rtsigs, +[AC_TRY_RUN([ +#include <sys/types.h> +#include <signal.h> + +#ifndef NSIG +# define NSIG 64 +#endif + +main () +{ + int n_sigs = 2 * NSIG; +#ifdef SIGRTMIN + int rtmin = SIGRTMIN; +#else + int rtmin = 0; +#endif + + exit(rtmin < n_sigs); +}], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no, + [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes) + bash_cv_unusable_rtsigs=yes] +)]) +AC_MSG_RESULT($bash_cv_unusable_rtsigs) +if test $bash_cv_unusable_rtsigs = yes; then +AC_DEFINE(UNUSABLE_RT_SIGNALS) +fi +]) + +dnl +dnl check for availability of multibyte characters and functions +dnl +AH_TEMPLATE([HAVE_MBSRTOWCS], [Define if we have the mbsrtowcs function]) +AH_TEMPLATE([HAVE_WCWIDTH], [Define if we have the wcwidth function]) +AH_TEMPLATE([HAVE_MBSTATE_T], [Define if we have mbstate_t]) +AH_TEMPLATE([HAVE_LANGINFO_CODESET], [Define if we have nl_langinfo and CODESET]) +AC_DEFUN([BASH_CHECK_MULTIBYTE], +[ +AC_CHECK_HEADERS(wctype.h) +AC_CHECK_HEADERS(wchar.h) +AC_CHECK_HEADERS(langinfo.h) + +AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS)) +AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH)) + +AC_CACHE_CHECK([for mbstate_t], bash_cv_have_mbstate_t, +[AC_TRY_RUN([ +#include <wchar.h> +int +main () +{ + mbstate_t ps; + return 0; +}], bash_cv_have_mbstate_t=yes, bash_cv_have_mbstate_t=no)]) +if test $bash_cv_have_mbstate_t = yes; then + AC_DEFINE(HAVE_MBSTATE_T) +fi + +AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset, +[AC_TRY_LINK( +[#include <langinfo.h>], +[char* cs = nl_langinfo(CODESET);], +bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)]) +if test $bash_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET) +fi + +]) + +dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB +dnl require: +dnl AC_PROG_CC +dnl BASH_CHECK_LIB_TERMCAP + +AC_DEFUN([RL_LIB_READLINE_VERSION], +[ +AC_REQUIRE([BASH_CHECK_LIB_TERMCAP]) + +AC_MSG_CHECKING([version of installed readline library]) + +# What a pain in the ass this is. + +# save cpp and ld options +_save_CFLAGS="$CFLAGS" +_save_LDFLAGS="$LDFLAGS" +_save_LIBS="$LIBS" + +# Don't set ac_cv_rl_prefix if the caller has already assigned a value. This +# allows the caller to do something like $_rl_prefix=$withval if the user +# specifies --with-installed-readline=PREFIX as an argument to configure + +if test -z "$ac_cv_rl_prefix"; then +test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix} +fi + +eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include +eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib + +LIBS="$LIBS -lreadline ${TERMCAP_LIB}" +CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}" +LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}" + +AC_TRY_RUN([ +#include <stdio.h> +#include <readline/readline.h> + +main() +{ + FILE *fp; + fp = fopen("conftest.rlv", "w"); + if (fp == 0) exit(1); + fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0"); + fclose(fp); + exit(0); +} +], +ac_cv_rl_version=`cat conftest.rlv`, +ac_cv_rl_version='0.0', +ac_cv_rl_version='4.2') + +CFLAGS="$_save_CFLAGS" +LDFLAGS="$_save_LDFLAGS" +LIBS="$_save_LIBS" + +RL_MAJOR=0 +RL_MINOR=0 + +# ( +case "$ac_cv_rl_version" in +2*|3*|4*|5*|6*|7*|8*|9*) + RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'` + RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'` + ;; +esac + +# ((( +case $RL_MAJOR in +[[0-9][0-9]]) _RL_MAJOR=$RL_MAJOR ;; +[[0-9]]) _RL_MAJOR=0$RL_MAJOR ;; +*) _RL_MAJOR=00 ;; +esac + +# ((( +case $RL_MINOR in +[[0-9][0-9]]) _RL_MINOR=$RL_MINOR ;; +[[0-9]]) _RL_MINOR=0$RL_MINOR ;; +*) _RL_MINOR=00 ;; +esac + +RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}" + +# Readline versions greater than 4.2 have these defines in readline.h + +if test $ac_cv_rl_version = '0.0' ; then + AC_MSG_WARN([Could not test version of installed readline library.]) +elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then + # set these for use by the caller + RL_PREFIX=$ac_cv_rl_prefix + RL_LIBDIR=$ac_cv_rl_libdir + RL_INCLUDEDIR=$ac_cv_rl_includedir + AC_MSG_RESULT($ac_cv_rl_version) +else + +AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library]) +AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library]) +AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library]) + +AC_SUBST(RL_VERSION) +AC_SUBST(RL_MAJOR) +AC_SUBST(RL_MINOR) + +# set these for use by the caller +RL_PREFIX=$ac_cv_rl_prefix +RL_LIBDIR=$ac_cv_rl_libdir +RL_INCLUDEDIR=$ac_cv_rl_includedir + +AC_MSG_RESULT($ac_cv_rl_version) + +fi +]) + +AC_DEFUN(BASH_FUNC_CTYPE_NONASCII, +[ +AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters) +AC_CACHE_VAL(bash_cv_func_ctype_nonascii, +[AC_TRY_RUN([ +#ifdef HAVE_LOCALE_H +#include <locale.h> +#endif +#include <stdio.h> +#include <ctype.h> + +main(c, v) +int c; +char *v[]; +{ + char *deflocale; + unsigned char x; + int r1, r2; + +#ifdef HAVE_SETLOCALE + /* We take a shot here. If that locale is not known, try the + system default. We try this one because '\342' (226) is + known to be a printable character in that locale. */ + deflocale = setlocale(LC_ALL, "en_US.ISO8859-1"); + if (deflocale == 0) + deflocale = setlocale(LC_ALL, ""); +#endif + + x = '\342'; + r1 = isprint(x); + x -= 128; + r2 = isprint(x); + exit (r1 == 0 || r2 == 0); +} +], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no, + [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no) + bash_cv_func_ctype_nonascii=no] +)]) +AC_MSG_RESULT($bash_cv_func_ctype_nonascii) +if test $bash_cv_func_ctype_nonascii = yes; then +AC_DEFINE(CTYPE_NON_ASCII) +fi +]) + +AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T, +[AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t, +[AC_TRY_LINK([ +#include <signal.h> +],[ sig_atomic_t x; ], +ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)]) +if test "$ac_cv_have_sig_atomic_t" = "no" +then + AC_CHECK_TYPE(sig_atomic_t,int) +fi +]) diff --git a/meta/recipes-core/readline/readline_6.2.bb b/meta/recipes-core/readline/readline_6.2.bb index fda01a4..09c4908 100644 --- a/meta/recipes-core/readline/readline_6.2.bb +++ b/meta/recipes-core/readline/readline_6.2.bb @@ -1,6 +1,6 @@ require readline.inc -PR = "r2" +PR = "r3" SRC_URI[md5sum] = "67948acb2ca081f23359d0256e9a271c" SRC_URI[sha256sum] = "79a696070a058c233c72dd6ac697021cc64abd5ed51e59db867d66d196a89381"