File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / readline / aclocal.m4
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Mar 17 01:01:01 2021 UTC (3 years, 3 months ago) by misho
Branches: readline, MAIN
CVS tags: v8_2p0, v8_1p0, HEAD
readline 8.1

    1: dnl
    2: dnl Bash specific tests
    3: dnl
    4: dnl Some derived from PDKSH 5.1.3 autoconf tests
    5: dnl
    6: 
    7: AC_DEFUN(BASH_C_LONG_LONG,
    8: [AC_CACHE_CHECK(for long long, ac_cv_c_long_long,
    9: [if test "$GCC" = yes; then
   10:   ac_cv_c_long_long=yes
   11: else
   12: AC_TRY_RUN([
   13: #include <stdlib.h>
   14: int
   15: main()
   16: {
   17: long long foo = 0;
   18: exit(sizeof(long long) < sizeof(long));
   19: }
   20: ], ac_cv_c_long_long=yes, ac_cv_c_long_long=no)
   21: fi])
   22: if test $ac_cv_c_long_long = yes; then
   23:   AC_DEFINE(HAVE_LONG_LONG, 1, [Define if the `long long' type works.])
   24: fi
   25: ])
   26: 
   27: dnl
   28: dnl This is very similar to AC_C_LONG_DOUBLE, with the fix for IRIX
   29: dnl (< changed to <=) added.
   30: dnl
   31: AC_DEFUN(BASH_C_LONG_DOUBLE,
   32: [AC_CACHE_CHECK(for long double, ac_cv_c_long_double,
   33: [if test "$GCC" = yes; then
   34:   ac_cv_c_long_double=yes
   35: else
   36: AC_TRY_RUN([
   37: #include <stdlib.h>
   38: int
   39: main()
   40: {
   41:   /* The Stardent Vistra knows sizeof(long double), but does not
   42:      support it. */
   43:   long double foo = 0.0;
   44:   /* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
   45:   /* On IRIX 5.3, the compiler converts long double to double with a warning,
   46:      but compiles this successfully. */
   47:   exit(sizeof(long double) <= sizeof(double));
   48: }
   49: ], ac_cv_c_long_double=yes, ac_cv_c_long_double=no)
   50: fi])
   51: if test $ac_cv_c_long_double = yes; then
   52:   AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if the `long double' type works.])
   53: fi
   54: ])
   55: 
   56: dnl
   57: dnl Check for <inttypes.h>.  This is separated out so that it can be
   58: dnl AC_REQUIREd.
   59: dnl
   60: dnl BASH_HEADER_INTTYPES
   61: AC_DEFUN(BASH_HEADER_INTTYPES,
   62: [
   63:  AC_CHECK_HEADERS(inttypes.h)
   64: ])
   65: 
   66: dnl
   67: dnl check for typedef'd symbols in header files, but allow the caller to
   68: dnl specify the include files to be checked in addition to the default
   69: dnl
   70: dnl This could be changed to use AC_COMPILE_IFELSE instead of AC_EGREP_CPP
   71: dnl 
   72: dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
   73: AC_DEFUN(BASH_CHECK_TYPE,
   74: [
   75: AC_REQUIRE([AC_HEADER_STDC])dnl
   76: AC_REQUIRE([BASH_HEADER_INTTYPES])
   77: AC_MSG_CHECKING(for $1)
   78: AC_CACHE_VAL(bash_cv_type_$1,
   79: [AC_EGREP_CPP($1, [#include <sys/types.h>
   80: #if STDC_HEADERS
   81: #include <stdlib.h>
   82: #include <stddef.h>
   83: #endif
   84: #if HAVE_INTTYPES_H
   85: #include <inttypes.h>
   86: #endif
   87: #if HAVE_STDINT_H
   88: #include <stdint.h>
   89: #endif
   90: $2
   91: ], bash_cv_type_$1=yes, bash_cv_type_$1=no)])
   92: AC_MSG_RESULT($bash_cv_type_$1)
   93: ifelse($#, 4, [if test $bash_cv_type_$1 = yes; then
   94: 	AC_DEFINE($4)
   95: 	fi])
   96: if test $bash_cv_type_$1 = no; then
   97:   AC_DEFINE_UNQUOTED($1, $3)
   98: fi
   99: ])
  100: 
  101: dnl
  102: dnl BASH_CHECK_DECL(FUNC)
  103: dnl
  104: dnl Check for a declaration of FUNC in stdlib.h and inttypes.h like
  105: dnl AC_CHECK_DECL
  106: dnl
  107: AC_DEFUN(BASH_CHECK_DECL,
  108: [
  109: AC_REQUIRE([AC_HEADER_STDC])
  110: AC_REQUIRE([BASH_HEADER_INTTYPES])
  111: AC_CACHE_CHECK([for declaration of $1], bash_cv_decl_$1,
  112: [AC_TRY_LINK(
  113: [
  114: #if STDC_HEADERS
  115: #  include <stdlib.h>
  116: #endif
  117: #if HAVE_INTTYPES_H
  118: #  include <inttypes.h>
  119: #endif
  120: ],
  121: [return !$1;],
  122: bash_cv_decl_$1=yes, bash_cv_decl_$1=no)])
  123: bash_tr_func=HAVE_DECL_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
  124: if test $bash_cv_decl_$1 = yes; then
  125:   AC_DEFINE_UNQUOTED($bash_tr_func, 1)
  126: else
  127:   AC_DEFINE_UNQUOTED($bash_tr_func, 0)
  128: fi
  129: ])
  130: 
  131: AC_DEFUN(BASH_DECL_PRINTF,
  132: [AC_MSG_CHECKING(for declaration of printf in <stdio.h>)
  133: AC_CACHE_VAL(bash_cv_printf_declared,
  134: [AC_TRY_RUN([
  135: #include <stdio.h>
  136: #ifdef __STDC__
  137: typedef int (*_bashfunc)(const char *, ...);
  138: #else
  139: typedef int (*_bashfunc)();
  140: #endif
  141: #include <stdlib.h>
  142: int
  143: main()
  144: {
  145: _bashfunc pf;
  146: pf = (_bashfunc) printf;
  147: exit(pf == 0);
  148: }
  149: ], bash_cv_printf_declared=yes, bash_cv_printf_declared=no,
  150:    [AC_MSG_WARN(cannot check printf declaration if cross compiling -- defaulting to yes)
  151:     bash_cv_printf_declared=yes]
  152: )])
  153: AC_MSG_RESULT($bash_cv_printf_declared)
  154: if test $bash_cv_printf_declared = yes; then
  155: AC_DEFINE(PRINTF_DECLARED)
  156: fi
  157: ])
  158: 
  159: AC_DEFUN(BASH_DECL_SBRK,
  160: [AC_MSG_CHECKING(for declaration of sbrk in <unistd.h>)
  161: AC_CACHE_VAL(bash_cv_sbrk_declared,
  162: [AC_EGREP_HEADER(sbrk, unistd.h,
  163:  bash_cv_sbrk_declared=yes, bash_cv_sbrk_declared=no)])
  164: AC_MSG_RESULT($bash_cv_sbrk_declared)
  165: if test $bash_cv_sbrk_declared = yes; then
  166: AC_DEFINE(SBRK_DECLARED)
  167: fi
  168: ])
  169: 
  170: dnl
  171: dnl Check for sys_siglist[] or _sys_siglist[]
  172: dnl
  173: AC_DEFUN(BASH_DECL_UNDER_SYS_SIGLIST,
  174: [AC_MSG_CHECKING([for _sys_siglist in signal.h or unistd.h])
  175: AC_CACHE_VAL(bash_cv_decl_under_sys_siglist,
  176: [AC_TRY_COMPILE([
  177: #include <sys/types.h>
  178: #include <signal.h>
  179: #ifdef HAVE_UNISTD_H
  180: #include <unistd.h>
  181: #endif], [ char *msg = _sys_siglist[2]; ],
  182:   bash_cv_decl_under_sys_siglist=yes, bash_cv_decl_under_sys_siglist=no,
  183:   [AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)])])dnl
  184: AC_MSG_RESULT($bash_cv_decl_under_sys_siglist)
  185: if test $bash_cv_decl_under_sys_siglist = yes; then
  186: AC_DEFINE(UNDER_SYS_SIGLIST_DECLARED)
  187: fi
  188: ])
  189: 
  190: AC_DEFUN(BASH_UNDER_SYS_SIGLIST,
  191: [AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
  192: AC_MSG_CHECKING([for _sys_siglist in system C library])
  193: AC_CACHE_VAL(bash_cv_under_sys_siglist,
  194: [AC_TRY_RUN([
  195: #include <sys/types.h>
  196: #include <signal.h>
  197: #ifdef HAVE_UNISTD_H
  198: #include <unistd.h>
  199: #endif
  200: #include <stdlib.h>
  201: #ifndef UNDER_SYS_SIGLIST_DECLARED
  202: extern char *_sys_siglist[];
  203: #endif
  204: int
  205: main()
  206: {
  207: char *msg = (char *)_sys_siglist[2];
  208: exit(msg == 0);
  209: }],
  210: 	bash_cv_under_sys_siglist=yes, bash_cv_under_sys_siglist=no,
  211: 	[AC_MSG_WARN(cannot check for _sys_siglist[] if cross compiling -- defaulting to no)
  212: 	 bash_cv_under_sys_siglist=no])])
  213: AC_MSG_RESULT($bash_cv_under_sys_siglist)
  214: if test $bash_cv_under_sys_siglist = yes; then
  215: AC_DEFINE(HAVE_UNDER_SYS_SIGLIST)
  216: fi
  217: ])
  218: 
  219: AC_DEFUN(BASH_SYS_SIGLIST,
  220: [AC_REQUIRE([AC_DECL_SYS_SIGLIST])
  221: AC_MSG_CHECKING([for sys_siglist in system C library])
  222: AC_CACHE_VAL(bash_cv_sys_siglist,
  223: [AC_TRY_RUN([
  224: #include <sys/types.h>
  225: #include <signal.h>
  226: #ifdef HAVE_UNISTD_H
  227: #include <unistd.h>
  228: #endif
  229: #include <stdlib.h>
  230: #if !HAVE_DECL_SYS_SIGLIST
  231: extern char *sys_siglist[];
  232: #endif
  233: int
  234: main()
  235: {
  236: char *msg = sys_siglist[2];
  237: exit(msg == 0);
  238: }],
  239: 	bash_cv_sys_siglist=yes, bash_cv_sys_siglist=no,
  240: 	[AC_MSG_WARN(cannot check for sys_siglist if cross compiling -- defaulting to no)
  241: 	 bash_cv_sys_siglist=no])])
  242: AC_MSG_RESULT($bash_cv_sys_siglist)
  243: if test $bash_cv_sys_siglist = yes; then
  244: AC_DEFINE(HAVE_SYS_SIGLIST)
  245: fi
  246: ])
  247: 
  248: dnl Check for the various permutations of sys_siglist and make sure we
  249: dnl compile in siglist.o if they're not defined
  250: AC_DEFUN(BASH_CHECK_SYS_SIGLIST, [
  251: AC_REQUIRE([BASH_SYS_SIGLIST])
  252: AC_REQUIRE([BASH_DECL_UNDER_SYS_SIGLIST])
  253: AC_REQUIRE([BASH_FUNC_STRSIGNAL])
  254: if test "$bash_cv_sys_siglist" = no && test "$bash_cv_under_sys_siglist" = no && test "$bash_cv_have_strsignal" = no; then
  255:   SIGLIST_O=siglist.o
  256: else
  257:   SIGLIST_O=
  258: fi
  259: AC_SUBST([SIGLIST_O])
  260: ])
  261: 
  262: dnl Check for sys_errlist[] and sys_nerr, check for declaration
  263: AC_DEFUN(BASH_SYS_ERRLIST,
  264: [AC_MSG_CHECKING([for sys_errlist and sys_nerr])
  265: AC_CACHE_VAL(bash_cv_sys_errlist,
  266: [AC_TRY_LINK([#include <errno.h>],
  267: [extern char *sys_errlist[];
  268:  extern int sys_nerr;
  269:  char *msg = sys_errlist[sys_nerr - 1];],
  270:     bash_cv_sys_errlist=yes, bash_cv_sys_errlist=no)])dnl
  271: AC_MSG_RESULT($bash_cv_sys_errlist)
  272: if test $bash_cv_sys_errlist = yes; then
  273: AC_DEFINE(HAVE_SYS_ERRLIST)
  274: fi
  275: ])
  276: 
  277: dnl
  278: dnl Check if dup2() does not clear the close on exec flag
  279: dnl
  280: AC_DEFUN(BASH_FUNC_DUP2_CLOEXEC_CHECK,
  281: [AC_MSG_CHECKING(if dup2 fails to clear the close-on-exec flag)
  282: AC_CACHE_VAL(bash_cv_dup2_broken,
  283: [AC_TRY_RUN([
  284: #include <sys/types.h>
  285: #include <fcntl.h>
  286: #include <stdlib.h>
  287: int
  288: main()
  289: {
  290:   int fd1, fd2, fl;
  291:   fd1 = open("/dev/null", 2);
  292:   if (fcntl(fd1, 2, 1) < 0)
  293:     exit(1);
  294:   fd2 = dup2(fd1, 1);
  295:   if (fd2 < 0)
  296:     exit(2);
  297:   fl = fcntl(fd2, 1, 0);
  298:   /* fl will be 1 if dup2 did not reset the close-on-exec flag. */
  299:   exit(fl != 1);
  300: }
  301: ], bash_cv_dup2_broken=yes, bash_cv_dup2_broken=no,
  302:     [AC_MSG_WARN(cannot check dup2 if cross compiling -- defaulting to no)
  303:      bash_cv_dup2_broken=no])
  304: ])
  305: AC_MSG_RESULT($bash_cv_dup2_broken)
  306: if test $bash_cv_dup2_broken = yes; then
  307: AC_DEFINE(DUP2_BROKEN)
  308: fi
  309: ])
  310: 
  311: AC_DEFUN(BASH_FUNC_STRSIGNAL,
  312: [AC_MSG_CHECKING([for the existence of strsignal])
  313: AC_CACHE_VAL(bash_cv_have_strsignal,
  314: [AC_TRY_LINK([#include <sys/types.h>
  315: #include <signal.h>
  316: #include <string.h>],
  317: [char *s = (char *)strsignal(2);],
  318:  bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
  319: AC_MSG_RESULT($bash_cv_have_strsignal)
  320: if test $bash_cv_have_strsignal = yes; then
  321: AC_DEFINE(HAVE_STRSIGNAL)
  322: fi
  323: ])
  324: 
  325: dnl Check to see if opendir will open non-directories (not a nice thing)
  326: AC_DEFUN(BASH_FUNC_OPENDIR_CHECK,
  327: [AC_REQUIRE([AC_HEADER_DIRENT])dnl
  328: AC_MSG_CHECKING(if opendir() opens non-directories)
  329: AC_CACHE_VAL(bash_cv_opendir_not_robust,
  330: [AC_TRY_RUN([
  331: #include <stdio.h>
  332: #include <sys/types.h>
  333: #include <fcntl.h>
  334: #ifdef HAVE_UNISTD_H
  335: # include <unistd.h>
  336: #endif /* HAVE_UNISTD_H */
  337: #ifdef HAVE_SYS_STAT_H
  338: #include <sys/stat.h>
  339: #endif
  340: #if defined(HAVE_DIRENT_H)
  341: # include <dirent.h>
  342: #else
  343: # define dirent direct
  344: # ifdef HAVE_SYS_NDIR_H
  345: #  include <sys/ndir.h>
  346: # endif /* SYSNDIR */
  347: # ifdef HAVE_SYS_DIR_H
  348: #  include <sys/dir.h>
  349: # endif /* SYSDIR */
  350: # ifdef HAVE_NDIR_H
  351: #  include <ndir.h>
  352: # endif
  353: #endif /* HAVE_DIRENT_H */
  354: #include <stdlib.h>
  355: int
  356: main()
  357: {
  358: DIR *dir;
  359: int fd, err;
  360: err = mkdir("bash-aclocal", 0700);
  361: if (err < 0) {
  362:   perror("mkdir");
  363:   exit(1);
  364: }
  365: unlink("bash-aclocal/not_a_directory");
  366: fd = open("bash-aclocal/not_a_directory", O_WRONLY|O_CREAT|O_EXCL, 0666);
  367: write(fd, "\n", 1);
  368: close(fd);
  369: dir = opendir("bash-aclocal/not_a_directory");
  370: unlink("bash-aclocal/not_a_directory");
  371: rmdir("bash-aclocal");
  372: exit (dir == 0);
  373: }], bash_cv_opendir_not_robust=yes,bash_cv_opendir_not_robust=no,
  374:     [AC_MSG_WARN(cannot check opendir if cross compiling -- defaulting to no)
  375:      bash_cv_opendir_not_robust=no]
  376: )])
  377: AC_MSG_RESULT($bash_cv_opendir_not_robust)
  378: if test $bash_cv_opendir_not_robust = yes; then
  379: AC_DEFINE(OPENDIR_NOT_ROBUST)
  380: fi
  381: ])
  382: 
  383: dnl
  384: AC_DEFUN(BASH_TYPE_SIGHANDLER,
  385: [AC_MSG_CHECKING([whether signal handlers are of type void])
  386: AC_CACHE_VAL(bash_cv_void_sighandler,
  387: [AC_TRY_COMPILE([#include <sys/types.h>
  388: #include <signal.h>
  389: #ifdef signal
  390: #undef signal
  391: #endif
  392: #ifdef __cplusplus
  393: extern "C"
  394: #endif
  395: void (*signal ()) ();],
  396: [int i;], bash_cv_void_sighandler=yes, bash_cv_void_sighandler=no)])dnl
  397: AC_MSG_RESULT($bash_cv_void_sighandler)
  398: if test $bash_cv_void_sighandler = yes; then
  399: AC_DEFINE(VOID_SIGHANDLER)
  400: fi
  401: ])
  402: 
  403: dnl
  404: dnl A signed 16-bit integer quantity
  405: dnl
  406: AC_DEFUN(BASH_TYPE_BITS16_T,
  407: [
  408: if test "$ac_cv_sizeof_short" = 2; then
  409:   AC_CHECK_TYPE(bits16_t, short)
  410: elif test "$ac_cv_sizeof_char" = 2; then
  411:   AC_CHECK_TYPE(bits16_t, char)
  412: else
  413:   AC_CHECK_TYPE(bits16_t, short)
  414: fi
  415: ])
  416: 
  417: dnl
  418: dnl An unsigned 16-bit integer quantity
  419: dnl
  420: AC_DEFUN(BASH_TYPE_U_BITS16_T,
  421: [
  422: if test "$ac_cv_sizeof_short" = 2; then
  423:   AC_CHECK_TYPE(u_bits16_t, unsigned short)
  424: elif test "$ac_cv_sizeof_char" = 2; then
  425:   AC_CHECK_TYPE(u_bits16_t, unsigned char)
  426: else
  427:   AC_CHECK_TYPE(u_bits16_t, unsigned short)
  428: fi
  429: ])
  430: 
  431: dnl
  432: dnl A signed 32-bit integer quantity
  433: dnl
  434: AC_DEFUN(BASH_TYPE_BITS32_T,
  435: [
  436: if test "$ac_cv_sizeof_int" = 4; then
  437:   AC_CHECK_TYPE(bits32_t, int)
  438: elif test "$ac_cv_sizeof_long" = 4; then
  439:   AC_CHECK_TYPE(bits32_t, long)
  440: else
  441:   AC_CHECK_TYPE(bits32_t, int)
  442: fi
  443: ])
  444: 
  445: dnl
  446: dnl An unsigned 32-bit integer quantity
  447: dnl
  448: AC_DEFUN(BASH_TYPE_U_BITS32_T,
  449: [
  450: if test "$ac_cv_sizeof_int" = 4; then
  451:   AC_CHECK_TYPE(u_bits32_t, unsigned int)
  452: elif test "$ac_cv_sizeof_long" = 4; then
  453:   AC_CHECK_TYPE(u_bits32_t, unsigned long)
  454: else
  455:   AC_CHECK_TYPE(u_bits32_t, unsigned int)
  456: fi
  457: ])
  458: 
  459: AC_DEFUN(BASH_TYPE_PTRDIFF_T,
  460: [
  461: if test "$ac_cv_sizeof_int" = "$ac_cv_sizeof_char_p"; then
  462:   AC_CHECK_TYPE(ptrdiff_t, int)
  463: elif test "$ac_cv_sizeof_long" = "$ac_cv_sizeof_char_p"; then
  464:   AC_CHECK_TYPE(ptrdiff_t, long)
  465: elif test "$ac_cv_type_long_long" = yes && test "$ac_cv_sizeof_long_long" = "$ac_cv_sizeof_char_p"; then
  466:   AC_CHECK_TYPE(ptrdiff_t, [long long])
  467: else
  468:   AC_CHECK_TYPE(ptrdiff_t, int)
  469: fi
  470: ])
  471: 
  472: dnl
  473: dnl A signed 64-bit quantity
  474: dnl
  475: AC_DEFUN(BASH_TYPE_BITS64_T,
  476: [
  477: if test "$ac_cv_sizeof_char_p" = 8; then
  478:   AC_CHECK_TYPE(bits64_t, char *)
  479: elif test "$ac_cv_sizeof_double" = 8; then
  480:   AC_CHECK_TYPE(bits64_t, double)
  481: elif test -n "$ac_cv_type_long_long" && test "$ac_cv_sizeof_long_long" = 8; then
  482:   AC_CHECK_TYPE(bits64_t, [long long])
  483: elif test "$ac_cv_sizeof_long" = 8; then
  484:   AC_CHECK_TYPE(bits64_t, long)
  485: else
  486:   AC_CHECK_TYPE(bits64_t, double)
  487: fi
  488: ])
  489: 
  490: AC_DEFUN(BASH_TYPE_LONG_LONG,
  491: [
  492: AC_CACHE_CHECK([for long long], bash_cv_type_long_long,
  493: [AC_TRY_LINK([
  494: long long ll = 1; int i = 63;],
  495: [
  496: long long llm = (long long) -1;
  497: return ll << i | ll >> i | llm / ll | llm % ll;
  498: ], bash_cv_type_long_long='long long', bash_cv_type_long_long='long')])
  499: if test "$bash_cv_type_long_long" = 'long long'; then
  500:   AC_DEFINE(HAVE_LONG_LONG, 1)
  501: fi
  502: ])
  503: 
  504: AC_DEFUN(BASH_TYPE_UNSIGNED_LONG_LONG,
  505: [
  506: AC_CACHE_CHECK([for unsigned long long], bash_cv_type_unsigned_long_long,
  507: [AC_TRY_LINK([
  508: unsigned long long ull = 1; int i = 63;],
  509: [
  510: unsigned long long ullmax = (unsigned long long) -1;
  511: return ull << i | ull >> i | ullmax / ull | ullmax % ull;
  512: ], bash_cv_type_unsigned_long_long='unsigned long long',
  513:    bash_cv_type_unsigned_long_long='unsigned long')])
  514: if test "$bash_cv_type_unsigned_long_long" = 'unsigned long long'; then
  515:   AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1)
  516: fi
  517: ])
  518: 
  519: dnl
  520: dnl Type of struct rlimit fields: some systems (OSF/1, NetBSD, RISC/os 5.0)
  521: dnl have a rlim_t, others (4.4BSD based systems) use quad_t, others use
  522: dnl long and still others use int (HP-UX 9.01, SunOS 4.1.3).  To simplify
  523: dnl matters, this just checks for rlim_t, quad_t, or long.
  524: dnl
  525: AC_DEFUN(BASH_TYPE_RLIMIT,
  526: [AC_MSG_CHECKING(for size and type of struct rlimit fields)
  527: AC_CACHE_VAL(bash_cv_type_rlimit,
  528: [AC_TRY_COMPILE([#include <sys/types.h>
  529: #include <sys/resource.h>],
  530: [rlim_t xxx;], bash_cv_type_rlimit=rlim_t,[
  531: AC_TRY_RUN([
  532: #include <sys/types.h>
  533: #include <sys/time.h>
  534: #include <sys/resource.h>
  535: #include <stdlib.h>
  536: int
  537: main()
  538: {
  539: #ifdef HAVE_QUAD_T
  540:   struct rlimit rl;
  541:   if (sizeof(rl.rlim_cur) == sizeof(quad_t))
  542:     exit(0);
  543: #endif
  544:   exit(1);
  545: }], bash_cv_type_rlimit=quad_t, bash_cv_type_rlimit=long,
  546:         [AC_MSG_WARN(cannot check quad_t if cross compiling -- defaulting to long)
  547:          bash_cv_type_rlimit=long])])
  548: ])
  549: AC_MSG_RESULT($bash_cv_type_rlimit)
  550: if test $bash_cv_type_rlimit = quad_t; then
  551: AC_DEFINE(RLIMTYPE, quad_t)
  552: elif test $bash_cv_type_rlimit = rlim_t; then
  553: AC_DEFINE(RLIMTYPE, rlim_t)
  554: fi
  555: ])
  556: 
  557: AC_DEFUN(BASH_TYPE_SIG_ATOMIC_T,
  558: [AC_CACHE_CHECK([for sig_atomic_t in signal.h], ac_cv_have_sig_atomic_t,
  559: [AC_TRY_LINK([
  560: #include <signal.h>
  561: ],[ sig_atomic_t x; ],
  562: ac_cv_have_sig_atomic_t=yes, ac_cv_have_sig_atomic_t=no)])
  563: if test "$ac_cv_have_sig_atomic_t" = "no"
  564: then
  565:     AC_CHECK_TYPE(sig_atomic_t,int)
  566: fi
  567: ])
  568: 
  569: AC_DEFUN(BASH_FUNC_LSTAT,
  570: [dnl Cannot use AC_CHECK_FUNCS(lstat) because Linux defines lstat() as an
  571: dnl inline function in <sys/stat.h>.
  572: AC_CACHE_CHECK([for lstat], bash_cv_func_lstat,
  573: [AC_TRY_LINK([
  574: #include <sys/types.h>
  575: #include <sys/stat.h>
  576: ],[ lstat(".",(struct stat *)0); ],
  577: bash_cv_func_lstat=yes, bash_cv_func_lstat=no)])
  578: if test $bash_cv_func_lstat = yes; then
  579:   AC_DEFINE(HAVE_LSTAT)
  580: fi
  581: ])
  582: 
  583: AC_DEFUN(BASH_FUNC_INET_ATON,
  584: [
  585: AC_CACHE_CHECK([for inet_aton], bash_cv_func_inet_aton,
  586: [AC_TRY_LINK([
  587: #include <sys/types.h>
  588: #include <netinet/in.h>
  589: #include <arpa/inet.h>
  590: struct in_addr ap;], [ inet_aton("127.0.0.1", &ap); ],
  591: bash_cv_func_inet_aton=yes, bash_cv_func_inet_aton=no)])
  592: if test $bash_cv_func_inet_aton = yes; then
  593:   AC_DEFINE(HAVE_INET_ATON)
  594: else
  595:   AC_LIBOBJ(inet_aton)
  596: fi
  597: ])
  598: 
  599: AC_DEFUN(BASH_FUNC_GETENV,
  600: [AC_MSG_CHECKING(to see if getenv can be redefined)
  601: AC_CACHE_VAL(bash_cv_getenv_redef,
  602: [AC_TRY_RUN([
  603: #ifdef HAVE_UNISTD_H
  604: #  include <unistd.h>
  605: #endif
  606: #include <stdlib.h>
  607: #ifndef __STDC__
  608: #  ifndef const
  609: #    define const
  610: #  endif
  611: #endif
  612: char *
  613: getenv (name)
  614: #if defined (__linux__) || defined (__bsdi__) || defined (convex)
  615:      const char *name;
  616: #else
  617:      char const *name;
  618: #endif /* !__linux__ && !__bsdi__ && !convex */
  619: {
  620: return "42";
  621: }
  622: int
  623: main()
  624: {
  625: char *s;
  626: /* The next allows this program to run, but does not allow bash to link
  627:    when it redefines getenv.  I'm not really interested in figuring out
  628:    why not. */
  629: #if defined (NeXT)
  630: exit(1);
  631: #endif
  632: s = getenv("ABCDE");
  633: exit(s == 0);	/* force optimizer to leave getenv in */
  634: }
  635: ], bash_cv_getenv_redef=yes, bash_cv_getenv_redef=no,
  636:    [AC_MSG_WARN(cannot check getenv redefinition if cross compiling -- defaulting to yes)
  637:     bash_cv_getenv_redef=yes]
  638: )])
  639: AC_MSG_RESULT($bash_cv_getenv_redef)
  640: if test $bash_cv_getenv_redef = yes; then
  641: AC_DEFINE(CAN_REDEFINE_GETENV)
  642: fi
  643: ])
  644: 
  645: # We should check for putenv before calling this
  646: AC_DEFUN(BASH_FUNC_STD_PUTENV,
  647: [
  648: AC_REQUIRE([AC_HEADER_STDC])
  649: AC_REQUIRE([AC_C_PROTOTYPES])
  650: AC_CACHE_CHECK([for standard-conformant putenv declaration], bash_cv_std_putenv,
  651: [AC_TRY_LINK([
  652: #if STDC_HEADERS
  653: #include <stdlib.h>
  654: #include <stddef.h>
  655: #endif
  656: #ifndef __STDC__
  657: #  ifndef const
  658: #    define const
  659: #  endif
  660: #endif
  661: #ifdef PROTOTYPES
  662: extern int putenv (char *);
  663: #else
  664: extern int putenv ();
  665: #endif
  666: ],
  667: [return (putenv == 0);],
  668: bash_cv_std_putenv=yes, bash_cv_std_putenv=no
  669: )])
  670: if test $bash_cv_std_putenv = yes; then
  671: AC_DEFINE(HAVE_STD_PUTENV)
  672: fi
  673: ])
  674: 
  675: # We should check for unsetenv before calling this
  676: AC_DEFUN(BASH_FUNC_STD_UNSETENV,
  677: [
  678: AC_REQUIRE([AC_HEADER_STDC])
  679: AC_REQUIRE([AC_C_PROTOTYPES])
  680: AC_CACHE_CHECK([for standard-conformant unsetenv declaration], bash_cv_std_unsetenv,
  681: [AC_TRY_LINK([
  682: #if STDC_HEADERS
  683: #include <stdlib.h>
  684: #include <stddef.h>
  685: #endif
  686: #ifndef __STDC__
  687: #  ifndef const
  688: #    define const
  689: #  endif
  690: #endif
  691: #ifdef PROTOTYPES
  692: extern int unsetenv (const char *);
  693: #else
  694: extern int unsetenv ();
  695: #endif
  696: ],
  697: [return (unsetenv == 0);],
  698: bash_cv_std_unsetenv=yes, bash_cv_std_unsetenv=no
  699: )])
  700: if test $bash_cv_std_unsetenv = yes; then
  701: AC_DEFINE(HAVE_STD_UNSETENV)
  702: fi
  703: ])
  704: 
  705: AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,
  706: [AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
  707: AC_CACHE_VAL(bash_cv_ulimit_maxfds,
  708: [AC_TRY_RUN([
  709: #include <stdlib.h>
  710: #ifdef HAVE_ULIMIT_H
  711: #include <ulimit.h>
  712: #endif
  713: int
  714: main()
  715: {
  716: long maxfds = ulimit(4, 0L);
  717: exit (maxfds == -1L);
  718: }
  719: ], bash_cv_ulimit_maxfds=yes, bash_cv_ulimit_maxfds=no,
  720:    [AC_MSG_WARN(cannot check ulimit if cross compiling -- defaulting to no)
  721:     bash_cv_ulimit_maxfds=no]
  722: )])
  723: AC_MSG_RESULT($bash_cv_ulimit_maxfds)
  724: if test $bash_cv_ulimit_maxfds = yes; then
  725: AC_DEFINE(ULIMIT_MAXFDS)
  726: fi
  727: ])
  728: 
  729: AC_DEFUN(BASH_FUNC_GETCWD,
  730: [AC_MSG_CHECKING([if getcwd() will dynamically allocate memory with 0 size])
  731: AC_CACHE_VAL(bash_cv_getcwd_malloc,
  732: [AC_TRY_RUN([
  733: #include <stdio.h>
  734: #ifdef HAVE_UNISTD_H
  735: #include <unistd.h>
  736: #endif
  737: #include <stdlib.h>
  738: 
  739: int
  740: main()
  741: {
  742: 	char	*xpwd;
  743: 	xpwd = getcwd(0, 0);
  744: 	exit (xpwd == 0);
  745: }
  746: ], bash_cv_getcwd_malloc=yes, bash_cv_getcwd_malloc=no,
  747:    [AC_MSG_WARN(cannot check whether getcwd allocates memory when cross-compiling -- defaulting to no)
  748:     bash_cv_getcwd_malloc=no]
  749: )])
  750: AC_MSG_RESULT($bash_cv_getcwd_malloc)
  751: if test $bash_cv_getcwd_malloc = no; then
  752: AC_DEFINE(GETCWD_BROKEN)
  753: AC_LIBOBJ(getcwd)
  754: fi
  755: ])
  756: 
  757: dnl
  758: dnl This needs BASH_CHECK_SOCKLIB, but since that's not called on every
  759: dnl system, we can't use AC_PREREQ
  760: dnl
  761: AC_DEFUN(BASH_FUNC_GETHOSTBYNAME,
  762: [if test "X$bash_cv_have_gethostbyname" = "X"; then
  763: _bash_needmsg=yes
  764: else
  765: AC_MSG_CHECKING(for gethostbyname in socket library)
  766: _bash_needmsg=
  767: fi
  768: AC_CACHE_VAL(bash_cv_have_gethostbyname,
  769: [AC_TRY_LINK([#include <netdb.h>],
  770: [ struct hostent *hp;
  771:   hp = gethostbyname("localhost");
  772: ], bash_cv_have_gethostbyname=yes, bash_cv_have_gethostbyname=no)]
  773: )
  774: if test "X$_bash_needmsg" = Xyes; then
  775:     AC_MSG_CHECKING(for gethostbyname in socket library)
  776: fi
  777: AC_MSG_RESULT($bash_cv_have_gethostbyname)
  778: if test "$bash_cv_have_gethostbyname" = yes; then
  779: AC_DEFINE(HAVE_GETHOSTBYNAME)
  780: fi
  781: ])
  782: 
  783: AC_DEFUN(BASH_FUNC_FNMATCH_EXTMATCH,
  784: [AC_MSG_CHECKING(if fnmatch does extended pattern matching with FNM_EXTMATCH)
  785: AC_CACHE_VAL(bash_cv_fnm_extmatch,
  786: [AC_TRY_RUN([
  787: #include <fnmatch.h>
  788: 
  789: int
  790: main()
  791: {
  792: #ifdef FNM_EXTMATCH
  793:   return (0);
  794: #else
  795:   return (1);
  796: #endif
  797: }
  798: ], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no,
  799:     [AC_MSG_WARN(cannot check FNM_EXTMATCH if cross compiling -- defaulting to no)
  800:      bash_cv_fnm_extmatch=no])
  801: ])
  802: AC_MSG_RESULT($bash_cv_fnm_extmatch)
  803: if test $bash_cv_fnm_extmatch = yes; then
  804: AC_DEFINE(HAVE_LIBC_FNM_EXTMATCH)
  805: fi
  806: ])
  807: 
  808: AC_DEFUN(BASH_FUNC_POSIX_SETJMP,
  809: [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
  810: AC_MSG_CHECKING(for presence of POSIX-style sigsetjmp/siglongjmp)
  811: AC_CACHE_VAL(bash_cv_func_sigsetjmp,
  812: [AC_TRY_RUN([
  813: #ifdef HAVE_UNISTD_H
  814: #include <unistd.h>
  815: #endif
  816: #include <sys/types.h>
  817: #include <signal.h>
  818: #include <setjmp.h>
  819: #include <stdlib.h>
  820: 
  821: int
  822: main()
  823: {
  824: #if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
  825: exit (1);
  826: #else
  827: 
  828: int code;
  829: sigset_t set, oset;
  830: sigjmp_buf xx;
  831: 
  832: /* get the mask */
  833: sigemptyset(&set);
  834: sigemptyset(&oset);
  835: sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &set);
  836: sigprocmask(SIG_BLOCK, (sigset_t *)NULL, &oset);
  837: 
  838: /* save it */
  839: code = sigsetjmp(xx, 1);
  840: if (code)
  841:   exit(0);	/* could get sigmask and compare to oset here. */
  842: 
  843: /* change it */
  844: sigaddset(&set, SIGINT);
  845: sigprocmask(SIG_BLOCK, &set, (sigset_t *)NULL);
  846: 
  847: /* and siglongjmp */
  848: siglongjmp(xx, 10);
  849: exit(1);
  850: #endif
  851: }], bash_cv_func_sigsetjmp=present, bash_cv_func_sigsetjmp=missing,
  852:     [AC_MSG_WARN(cannot check for sigsetjmp/siglongjmp if cross-compiling -- defaulting to missing)
  853:      bash_cv_func_sigsetjmp=missing]
  854: )])
  855: AC_MSG_RESULT($bash_cv_func_sigsetjmp)
  856: if test $bash_cv_func_sigsetjmp = present; then
  857: AC_DEFINE(HAVE_POSIX_SIGSETJMP)
  858: fi
  859: ])
  860: 
  861: AC_DEFUN(BASH_FUNC_STRCOLL,
  862: [
  863: AC_MSG_CHECKING(whether or not strcoll and strcmp differ)
  864: AC_CACHE_VAL(bash_cv_func_strcoll_broken,
  865: [AC_TRY_RUN([
  866: #include <stdio.h>
  867: #if defined (HAVE_LOCALE_H)
  868: #include <locale.h>
  869: #endif
  870: #include <string.h>
  871: #include <stdlib.h>
  872: 
  873: int
  874: main(c, v)
  875: int     c;
  876: char    *v[];
  877: {
  878:         int     r1, r2;
  879:         char    *deflocale, *defcoll;
  880: 
  881: #ifdef HAVE_SETLOCALE
  882:         deflocale = setlocale(LC_ALL, "");
  883: 	defcoll = setlocale(LC_COLLATE, "");
  884: #endif
  885: 
  886: #ifdef HAVE_STRCOLL
  887: 	/* These two values are taken from tests/glob-test. */
  888:         r1 = strcoll("abd", "aXd");
  889: #else
  890: 	r1 = 0;
  891: #endif
  892:         r2 = strcmp("abd", "aXd");
  893: 
  894: 	/* These two should both be greater than 0.  It is permissible for
  895: 	   a system to return different values, as long as the sign is the
  896: 	   same. */
  897: 
  898:         /* Exit with 1 (failure) if these two values are both > 0, since
  899: 	   this tests whether strcoll(3) is broken with respect to strcmp(3)
  900: 	   in the default locale. */
  901: 	exit (r1 > 0 && r2 > 0);
  902: }
  903: ], bash_cv_func_strcoll_broken=yes, bash_cv_func_strcoll_broken=no,
  904:    [AC_MSG_WARN(cannot check strcoll if cross compiling -- defaulting to no)
  905:     bash_cv_func_strcoll_broken=no]
  906: )])
  907: AC_MSG_RESULT($bash_cv_func_strcoll_broken)
  908: if test $bash_cv_func_strcoll_broken = yes; then
  909: AC_DEFINE(STRCOLL_BROKEN)
  910: fi
  911: ])
  912: 
  913: AC_DEFUN(BASH_FUNC_PRINTF_A_FORMAT,
  914: [AC_MSG_CHECKING([for printf floating point output in hex notation])
  915: AC_CACHE_VAL(bash_cv_printf_a_format,
  916: [AC_TRY_RUN([
  917: #include <stdio.h>
  918: #include <string.h>
  919: #include <stdlib.h>
  920: 
  921: int
  922: main()
  923: {
  924: 	double y = 0.0;
  925: 	char abuf[1024];
  926: 
  927: 	sprintf(abuf, "%A", y);
  928: 	exit(strchr(abuf, 'P') == (char *)0);
  929: }
  930: ], bash_cv_printf_a_format=yes, bash_cv_printf_a_format=no,
  931:    [AC_MSG_WARN(cannot check printf if cross compiling -- defaulting to no)
  932:     bash_cv_printf_a_format=no]
  933: )])
  934: AC_MSG_RESULT($bash_cv_printf_a_format)
  935: if test $bash_cv_printf_a_format = yes; then
  936: AC_DEFINE(HAVE_PRINTF_A_FORMAT)
  937: fi
  938: ])
  939: 
  940: AC_DEFUN(BASH_STRUCT_TERMIOS_LDISC,
  941: [
  942: AC_CHECK_MEMBER(struct termios.c_line, AC_DEFINE(TERMIOS_LDISC), ,[
  943: #include <sys/types.h>
  944: #include <termios.h>
  945: ])
  946: ])
  947: 
  948: AC_DEFUN(BASH_STRUCT_TERMIO_LDISC,
  949: [
  950: AC_CHECK_MEMBER(struct termio.c_line, AC_DEFINE(TERMIO_LDISC), ,[
  951: #include <sys/types.h>
  952: #include <termio.h>
  953: ])
  954: ])
  955: 
  956: dnl
  957: dnl Like AC_STRUCT_ST_BLOCKS, but doesn't muck with LIBOBJS
  958: dnl
  959: dnl sets bash_cv_struct_stat_st_blocks
  960: dnl
  961: dnl unused for now; we'll see how AC_CHECK_MEMBERS works
  962: dnl
  963: AC_DEFUN(BASH_STRUCT_ST_BLOCKS,
  964: [
  965: AC_MSG_CHECKING([for struct stat.st_blocks])
  966: AC_CACHE_VAL(bash_cv_struct_stat_st_blocks,
  967: [AC_TRY_COMPILE(
  968: [
  969: #include <sys/types.h>
  970: #include <sys/stat.h>
  971: ],
  972: [
  973: int
  974: main()
  975: {
  976: static struct stat a;
  977: if (a.st_blocks) return 0;
  978: return 0;
  979: }
  980: ], bash_cv_struct_stat_st_blocks=yes, bash_cv_struct_stat_st_blocks=no)
  981: ])
  982: AC_MSG_RESULT($bash_cv_struct_stat_st_blocks)
  983: if test "$bash_cv_struct_stat_st_blocks" = "yes"; then
  984: AC_DEFINE(HAVE_STRUCT_STAT_ST_BLOCKS)
  985: fi
  986: ])
  987: 
  988: AC_DEFUN([BASH_CHECK_LIB_TERMCAP],
  989: [
  990: if test "X$bash_cv_termcap_lib" = "X"; then
  991: _bash_needmsg=yes
  992: else
  993: AC_MSG_CHECKING(which library has the termcap functions)
  994: _bash_needmsg=
  995: fi
  996: AC_CACHE_VAL(bash_cv_termcap_lib,
  997: [AC_CHECK_FUNC(tgetent, bash_cv_termcap_lib=libc,
  998:   [AC_CHECK_LIB(termcap, tgetent, bash_cv_termcap_lib=libtermcap,
  999:     [AC_CHECK_LIB(tinfo, tgetent, bash_cv_termcap_lib=libtinfo,
 1000:         [AC_CHECK_LIB(curses, tgetent, bash_cv_termcap_lib=libcurses,
 1001: 	    [AC_CHECK_LIB(ncurses, tgetent, bash_cv_termcap_lib=libncurses,
 1002:                 [AC_CHECK_LIB(ncursesw, tgetent, bash_cv_termcap_lib=libncursesw,
 1003: 	            bash_cv_termcap_lib=gnutermcap)])])])])])])
 1004: if test "X$_bash_needmsg" = "Xyes"; then
 1005: AC_MSG_CHECKING(which library has the termcap functions)
 1006: fi
 1007: AC_MSG_RESULT(using $bash_cv_termcap_lib)
 1008: if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
 1009: LDFLAGS="$LDFLAGS -L./lib/termcap"
 1010: TERMCAP_LIB="./lib/termcap/libtermcap.a"
 1011: TERMCAP_DEP="./lib/termcap/libtermcap.a"
 1012: elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
 1013: TERMCAP_LIB=-ltermcap
 1014: TERMCAP_DEP=
 1015: elif test $bash_cv_termcap_lib = libtinfo; then
 1016: TERMCAP_LIB=-ltinfo
 1017: TERMCAP_DEP=
 1018: elif test $bash_cv_termcap_lib = libncurses; then
 1019: TERMCAP_LIB=-lncurses
 1020: TERMCAP_DEP=
 1021: elif test $bash_cv_termcap_lib = libc; then
 1022: TERMCAP_LIB=
 1023: TERMCAP_DEP=
 1024: else
 1025: TERMCAP_LIB=-lcurses
 1026: TERMCAP_DEP=
 1027: fi
 1028: ])
 1029: 
 1030: dnl
 1031: dnl Check for the presence of getpeername in libsocket.
 1032: dnl If libsocket is present, check for libnsl and add it to LIBS if
 1033: dnl it's there, since most systems with libsocket require linking
 1034: dnl with libnsl as well.  This should only be called if getpeername
 1035: dnl was not found in libc.
 1036: dnl
 1037: dnl NOTE: IF WE FIND GETPEERNAME, WE ASSUME THAT WE HAVE BIND/CONNECT
 1038: dnl	  AS WELL
 1039: dnl
 1040: AC_DEFUN(BASH_CHECK_LIB_SOCKET,
 1041: [
 1042: if test "X$bash_cv_have_socklib" = "X"; then
 1043: _bash_needmsg=
 1044: else
 1045: AC_MSG_CHECKING(for socket library)
 1046: _bash_needmsg=yes
 1047: fi
 1048: AC_CACHE_VAL(bash_cv_have_socklib,
 1049: [AC_CHECK_LIB(socket, getpeername,
 1050:         bash_cv_have_socklib=yes, bash_cv_have_socklib=no, -lnsl)])
 1051: if test "X$_bash_needmsg" = Xyes; then
 1052:   AC_MSG_RESULT($bash_cv_have_socklib)
 1053:   _bash_needmsg=
 1054: fi
 1055: if test $bash_cv_have_socklib = yes; then
 1056:   # check for libnsl, add it to LIBS if present
 1057:   if test "X$bash_cv_have_libnsl" = "X"; then
 1058:     _bash_needmsg=
 1059:   else
 1060:     AC_MSG_CHECKING(for libnsl)
 1061:     _bash_needmsg=yes
 1062:   fi
 1063:   AC_CACHE_VAL(bash_cv_have_libnsl,
 1064: 	   [AC_CHECK_LIB(nsl, t_open,
 1065: 		 bash_cv_have_libnsl=yes, bash_cv_have_libnsl=no)])
 1066:   if test "X$_bash_needmsg" = Xyes; then
 1067:     AC_MSG_RESULT($bash_cv_have_libnsl)
 1068:     _bash_needmsg=
 1069:   fi
 1070:   if test $bash_cv_have_libnsl = yes; then
 1071:     LIBS="-lsocket -lnsl $LIBS"
 1072:   else
 1073:     LIBS="-lsocket $LIBS"
 1074:   fi
 1075:   AC_DEFINE(HAVE_LIBSOCKET)
 1076:   AC_DEFINE(HAVE_GETPEERNAME)
 1077: fi
 1078: ])
 1079: 
 1080: AC_DEFUN(BASH_STRUCT_DIRENT_D_INO,
 1081: [AC_REQUIRE([AC_HEADER_DIRENT])
 1082: AC_MSG_CHECKING(for struct dirent.d_ino)
 1083: AC_CACHE_VAL(bash_cv_dirent_has_dino,
 1084: [AC_TRY_COMPILE([
 1085: #include <stdio.h>
 1086: #include <sys/types.h>
 1087: #ifdef HAVE_UNISTD_H
 1088: # include <unistd.h>
 1089: #endif /* HAVE_UNISTD_H */
 1090: #if defined(HAVE_DIRENT_H)
 1091: # include <dirent.h>
 1092: #else
 1093: # define dirent direct
 1094: # ifdef HAVE_SYS_NDIR_H
 1095: #  include <sys/ndir.h>
 1096: # endif /* SYSNDIR */
 1097: # ifdef HAVE_SYS_DIR_H
 1098: #  include <sys/dir.h>
 1099: # endif /* SYSDIR */
 1100: # ifdef HAVE_NDIR_H
 1101: #  include <ndir.h>
 1102: # endif
 1103: #endif /* HAVE_DIRENT_H */
 1104: ],[
 1105: struct dirent d; int z; z = d.d_ino;
 1106: ], bash_cv_dirent_has_dino=yes, bash_cv_dirent_has_dino=no)])
 1107: AC_MSG_RESULT($bash_cv_dirent_has_dino)
 1108: if test $bash_cv_dirent_has_dino = yes; then
 1109: AC_DEFINE(HAVE_STRUCT_DIRENT_D_INO)
 1110: fi
 1111: ])
 1112: 
 1113: AC_DEFUN(BASH_STRUCT_DIRENT_D_FILENO,
 1114: [AC_REQUIRE([AC_HEADER_DIRENT])
 1115: AC_MSG_CHECKING(for struct dirent.d_fileno)
 1116: AC_CACHE_VAL(bash_cv_dirent_has_d_fileno,
 1117: [AC_TRY_COMPILE([
 1118: #include <stdio.h>
 1119: #include <sys/types.h>
 1120: #ifdef HAVE_UNISTD_H
 1121: # include <unistd.h>
 1122: #endif /* HAVE_UNISTD_H */
 1123: #if defined(HAVE_DIRENT_H)
 1124: # include <dirent.h>
 1125: #else
 1126: # define dirent direct
 1127: # ifdef HAVE_SYS_NDIR_H
 1128: #  include <sys/ndir.h>
 1129: # endif /* SYSNDIR */
 1130: # ifdef HAVE_SYS_DIR_H
 1131: #  include <sys/dir.h>
 1132: # endif /* SYSDIR */
 1133: # ifdef HAVE_NDIR_H
 1134: #  include <ndir.h>
 1135: # endif
 1136: #endif /* HAVE_DIRENT_H */
 1137: ],[
 1138: struct dirent d; int z; z = d.d_fileno;
 1139: ], bash_cv_dirent_has_d_fileno=yes, bash_cv_dirent_has_d_fileno=no)])
 1140: AC_MSG_RESULT($bash_cv_dirent_has_d_fileno)
 1141: if test $bash_cv_dirent_has_d_fileno = yes; then
 1142: AC_DEFINE(HAVE_STRUCT_DIRENT_D_FILENO)
 1143: fi
 1144: ])
 1145: 
 1146: AC_DEFUN(BASH_STRUCT_DIRENT_D_NAMLEN,
 1147: [AC_REQUIRE([AC_HEADER_DIRENT])
 1148: AC_MSG_CHECKING(for struct dirent.d_namlen)
 1149: AC_CACHE_VAL(bash_cv_dirent_has_d_namlen,
 1150: [AC_TRY_COMPILE([
 1151: #include <stdio.h>
 1152: #include <sys/types.h>
 1153: #ifdef HAVE_UNISTD_H
 1154: # include <unistd.h>
 1155: #endif /* HAVE_UNISTD_H */
 1156: #if defined(HAVE_DIRENT_H)
 1157: # include <dirent.h>
 1158: #else
 1159: # define dirent direct
 1160: # ifdef HAVE_SYS_NDIR_H
 1161: #  include <sys/ndir.h>
 1162: # endif /* SYSNDIR */
 1163: # ifdef HAVE_SYS_DIR_H
 1164: #  include <sys/dir.h>
 1165: # endif /* SYSDIR */
 1166: # ifdef HAVE_NDIR_H
 1167: #  include <ndir.h>
 1168: # endif
 1169: #endif /* HAVE_DIRENT_H */
 1170: ],[
 1171: struct dirent d; int z; z = d.d_namlen;
 1172: ], bash_cv_dirent_has_d_namlen=yes, bash_cv_dirent_has_d_namlen=no)])
 1173: AC_MSG_RESULT($bash_cv_dirent_has_d_namlen)
 1174: if test $bash_cv_dirent_has_d_namlen = yes; then
 1175: AC_DEFINE(HAVE_STRUCT_DIRENT_D_NAMLEN)
 1176: fi
 1177: ])
 1178: 
 1179: AC_DEFUN(BASH_STRUCT_TIMEVAL,
 1180: [AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
 1181: AC_CACHE_VAL(bash_cv_struct_timeval,
 1182: [AC_COMPILE_IFELSE(
 1183: 	[AC_LANG_PROGRAM(
 1184: 		[[#if HAVE_SYS_TIME_H
 1185: 		  #include <sys/time.h>
 1186: 		  #endif
 1187: 		  #include <time.h>
 1188: 		]],
 1189: 		[[static struct timeval x; x.tv_sec = x.tv_usec;]]
 1190: 	)],
 1191: 	bash_cv_struct_timeval=yes,
 1192: 	bash_cv_struct_timeval=no)
 1193: ])
 1194: AC_MSG_RESULT($bash_cv_struct_timeval)
 1195: if test $bash_cv_struct_timeval = yes; then
 1196:   AC_DEFINE(HAVE_TIMEVAL)
 1197: fi
 1198: ])
 1199: 
 1200: AC_DEFUN(BASH_STRUCT_TIMEZONE,
 1201: [AC_MSG_CHECKING(for struct timezone in sys/time.h and time.h)
 1202: AC_CACHE_VAL(bash_cv_struct_timezone,
 1203: [
 1204: AC_EGREP_HEADER(struct timezone, sys/time.h,
 1205: 		bash_cv_struct_timezone=yes,
 1206: 		AC_EGREP_HEADER(struct timezone, time.h,
 1207: 			bash_cv_struct_timezone=yes,
 1208: 			bash_cv_struct_timezone=no))
 1209: ])
 1210: AC_MSG_RESULT($bash_cv_struct_timezone)
 1211: if test $bash_cv_struct_timezone = yes; then
 1212:   AC_DEFINE(HAVE_STRUCT_TIMEZONE)
 1213: fi
 1214: ])
 1215: 
 1216: AC_DEFUN(BASH_STRUCT_WINSIZE,
 1217: [AC_MSG_CHECKING(for struct winsize in sys/ioctl.h and termios.h)
 1218: AC_CACHE_VAL(bash_cv_struct_winsize_header,
 1219: [AC_TRY_COMPILE([#include <sys/types.h>
 1220: #include <sys/ioctl.h>], [struct winsize x;],
 1221:   bash_cv_struct_winsize_header=ioctl_h,
 1222:   [AC_TRY_COMPILE([#include <sys/types.h>
 1223: #include <termios.h>], [struct winsize x;],
 1224:   bash_cv_struct_winsize_header=termios_h, bash_cv_struct_winsize_header=other)
 1225: ])])
 1226: if test $bash_cv_struct_winsize_header = ioctl_h; then
 1227:   AC_MSG_RESULT(sys/ioctl.h)
 1228:   AC_DEFINE(STRUCT_WINSIZE_IN_SYS_IOCTL)
 1229: elif test $bash_cv_struct_winsize_header = termios_h; then
 1230:   AC_MSG_RESULT(termios.h)
 1231:   AC_DEFINE(STRUCT_WINSIZE_IN_TERMIOS)
 1232: else
 1233:   AC_MSG_RESULT(not found)
 1234: fi
 1235: ])
 1236: 
 1237: dnl Check type of signal routines (posix, 4.2bsd, 4.1bsd or v7)
 1238: AC_DEFUN(BASH_SYS_SIGNAL_VINTAGE,
 1239: [AC_REQUIRE([AC_TYPE_SIGNAL])
 1240: AC_MSG_CHECKING(for type of signal functions)
 1241: AC_CACHE_VAL(bash_cv_signal_vintage,
 1242: [
 1243:   AC_TRY_LINK([#include <signal.h>],[
 1244:     sigset_t ss;
 1245:     struct sigaction sa;
 1246:     sigemptyset(&ss); sigsuspend(&ss);
 1247:     sigaction(SIGINT, &sa, (struct sigaction *) 0);
 1248:     sigprocmask(SIG_BLOCK, &ss, (sigset_t *) 0);
 1249:   ], bash_cv_signal_vintage=posix,
 1250:   [
 1251:     AC_TRY_LINK([#include <signal.h>], [
 1252: 	int mask = sigmask(SIGINT);
 1253: 	sigsetmask(mask); sigblock(mask); sigpause(mask);
 1254:     ], bash_cv_signal_vintage=4.2bsd,
 1255:     [
 1256:       AC_TRY_LINK([
 1257: 	#include <signal.h>
 1258: 	RETSIGTYPE foo() { }], [
 1259: 		int mask = sigmask(SIGINT);
 1260: 		sigset(SIGINT, foo); sigrelse(SIGINT);
 1261: 		sighold(SIGINT); sigpause(SIGINT);
 1262:         ], bash_cv_signal_vintage=svr3, bash_cv_signal_vintage=v7
 1263:     )]
 1264:   )]
 1265: )
 1266: ])
 1267: AC_MSG_RESULT($bash_cv_signal_vintage)
 1268: if test "$bash_cv_signal_vintage" = posix; then
 1269: AC_DEFINE(HAVE_POSIX_SIGNALS)
 1270: elif test "$bash_cv_signal_vintage" = "4.2bsd"; then
 1271: AC_DEFINE(HAVE_BSD_SIGNALS)
 1272: elif test "$bash_cv_signal_vintage" = svr3; then
 1273: AC_DEFINE(HAVE_USG_SIGHOLD)
 1274: fi
 1275: ])
 1276: 
 1277: dnl Check if the pgrp of setpgrp() can't be the pid of a zombie process.
 1278: AC_DEFUN(BASH_SYS_PGRP_SYNC,
 1279: [AC_REQUIRE([AC_FUNC_GETPGRP])
 1280: AC_MSG_CHECKING(whether pgrps need synchronization)
 1281: AC_CACHE_VAL(bash_cv_pgrp_pipe,
 1282: [AC_TRY_RUN([
 1283: #ifdef HAVE_UNISTD_H
 1284: #  include <unistd.h>
 1285: #endif
 1286: #ifdef HAVE_SYS_WAIT_H
 1287: #  include <sys/wait.h>
 1288: #endif
 1289: #include <stdlib.h>
 1290: int
 1291: main()
 1292: {
 1293: # ifdef GETPGRP_VOID
 1294: #  define getpgID()	getpgrp()
 1295: # else
 1296: #  define getpgID()	getpgrp(0)
 1297: #  define setpgid(x,y)	setpgrp(x,y)
 1298: # endif
 1299: 	int pid1, pid2, fds[2];
 1300: 	int status;
 1301: 	char ok;
 1302: 
 1303: 	switch (pid1 = fork()) {
 1304: 	  case -1:
 1305: 	    exit(1);
 1306: 	  case 0:
 1307: 	    setpgid(0, getpid());
 1308: 	    exit(0);
 1309: 	}
 1310: 	setpgid(pid1, pid1);
 1311: 
 1312: 	sleep(2);	/* let first child die */
 1313: 
 1314: 	if (pipe(fds) < 0)
 1315: 	  exit(2);
 1316: 
 1317: 	switch (pid2 = fork()) {
 1318: 	  case -1:
 1319: 	    exit(3);
 1320: 	  case 0:
 1321: 	    setpgid(0, pid1);
 1322: 	    ok = getpgID() == pid1;
 1323: 	    write(fds[1], &ok, 1);
 1324: 	    exit(0);
 1325: 	}
 1326: 	setpgid(pid2, pid1);
 1327: 
 1328: 	close(fds[1]);
 1329: 	if (read(fds[0], &ok, 1) != 1)
 1330: 	  exit(4);
 1331: 	wait(&status);
 1332: 	wait(&status);
 1333: 	exit(ok ? 0 : 5);
 1334: }
 1335: ], bash_cv_pgrp_pipe=no,bash_cv_pgrp_pipe=yes,
 1336:    [AC_MSG_WARN(cannot check pgrp synchronization if cross compiling -- defaulting to no)
 1337:     bash_cv_pgrp_pipe=no])
 1338: ])
 1339: AC_MSG_RESULT($bash_cv_pgrp_pipe)
 1340: if test $bash_cv_pgrp_pipe = yes; then
 1341: AC_DEFINE(PGRP_PIPE)
 1342: fi
 1343: ])
 1344: 
 1345: AC_DEFUN(BASH_SYS_REINSTALL_SIGHANDLERS,
 1346: [AC_REQUIRE([AC_TYPE_SIGNAL])
 1347: AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
 1348: AC_MSG_CHECKING([if signal handlers must be reinstalled when invoked])
 1349: AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
 1350: [AC_TRY_RUN([
 1351: #include <signal.h>
 1352: #ifdef HAVE_UNISTD_H
 1353: #include <unistd.h>
 1354: #endif
 1355: #include <stdlib.h>
 1356: 
 1357: typedef RETSIGTYPE sigfunc();
 1358: 
 1359: volatile int nsigint;
 1360: 
 1361: #ifdef HAVE_POSIX_SIGNALS
 1362: sigfunc *
 1363: set_signal_handler(sig, handler)
 1364:      int sig;
 1365:      sigfunc *handler;
 1366: {
 1367:   struct sigaction act, oact;
 1368:   act.sa_handler = handler;
 1369:   act.sa_flags = 0;
 1370:   sigemptyset (&act.sa_mask);
 1371:   sigemptyset (&oact.sa_mask);
 1372:   sigaction (sig, &act, &oact);
 1373:   return (oact.sa_handler);
 1374: }
 1375: #else
 1376: #define set_signal_handler(s, h) signal(s, h)
 1377: #endif
 1378: 
 1379: RETSIGTYPE
 1380: sigint(s)
 1381: int s;
 1382: {
 1383:   nsigint++;
 1384: }
 1385: 
 1386: int
 1387: main()
 1388: {
 1389: 	nsigint = 0;
 1390: 	set_signal_handler(SIGINT, sigint);
 1391: 	kill((int)getpid(), SIGINT);
 1392: 	kill((int)getpid(), SIGINT);
 1393: 	exit(nsigint != 2);
 1394: }
 1395: ], bash_cv_must_reinstall_sighandlers=no, bash_cv_must_reinstall_sighandlers=yes,
 1396:    [AC_MSG_WARN(cannot check signal handling if cross compiling -- defaulting to no)
 1397:     bash_cv_must_reinstall_sighandlers=no]
 1398: )])
 1399: AC_MSG_RESULT($bash_cv_must_reinstall_sighandlers)
 1400: if test $bash_cv_must_reinstall_sighandlers = yes; then
 1401: AC_DEFINE(MUST_REINSTALL_SIGHANDLERS)
 1402: fi
 1403: ])
 1404: 
 1405: dnl check that some necessary job control definitions are present
 1406: AC_DEFUN(BASH_SYS_JOB_CONTROL_MISSING,
 1407: [AC_REQUIRE([BASH_SYS_SIGNAL_VINTAGE])
 1408: AC_MSG_CHECKING(for presence of necessary job control definitions)
 1409: AC_CACHE_VAL(bash_cv_job_control_missing,
 1410: [AC_TRY_COMPILE([
 1411: #include <sys/types.h>
 1412: #ifdef HAVE_SYS_WAIT_H
 1413: #include <sys/wait.h>
 1414: #endif
 1415: #ifdef HAVE_UNISTD_H
 1416: #include <unistd.h>
 1417: #endif
 1418: #include <signal.h>
 1419: 
 1420: /* add more tests in here as appropriate */
 1421: 
 1422: /* signal type */
 1423: #if !defined (HAVE_POSIX_SIGNALS) && !defined (HAVE_BSD_SIGNALS)
 1424: #error
 1425: #endif
 1426: 
 1427: /* signals and tty control. */
 1428: #if !defined (SIGTSTP) || !defined (SIGSTOP) || !defined (SIGCONT)
 1429: #error
 1430: #endif
 1431: 
 1432: /* process control */
 1433: #if !defined (WNOHANG) || !defined (WUNTRACED) 
 1434: #error
 1435: #endif
 1436: 
 1437: /* Posix systems have tcgetpgrp and waitpid. */
 1438: #if defined (_POSIX_VERSION) && !defined (HAVE_TCGETPGRP)
 1439: #error
 1440: #endif
 1441: 
 1442: #if defined (_POSIX_VERSION) && !defined (HAVE_WAITPID)
 1443: #error
 1444: #endif
 1445: 
 1446: /* Other systems have TIOCSPGRP/TIOCGPRGP and wait3. */
 1447: #if !defined (_POSIX_VERSION) && !defined (HAVE_WAIT3)
 1448: #error
 1449: #endif
 1450: 
 1451: ], , bash_cv_job_control_missing=present, bash_cv_job_control_missing=missing
 1452: )])
 1453: AC_MSG_RESULT($bash_cv_job_control_missing)
 1454: if test $bash_cv_job_control_missing = missing; then
 1455: AC_DEFINE(JOB_CONTROL_MISSING)
 1456: fi
 1457: ])
 1458: 
 1459: dnl check whether named pipes are present
 1460: dnl this requires a previous check for mkfifo, but that is awkward to specify
 1461: AC_DEFUN(BASH_SYS_NAMED_PIPES,
 1462: [AC_MSG_CHECKING(for presence of named pipes)
 1463: AC_CACHE_VAL(bash_cv_sys_named_pipes,
 1464: [AC_TRY_RUN([
 1465: #include <sys/types.h>
 1466: #include <sys/stat.h>
 1467: #ifdef HAVE_UNISTD_H
 1468: #include <unistd.h>
 1469: #endif
 1470: #include <stdio.h>
 1471: #include <stdlib.h>
 1472: 
 1473: /* Add more tests in here as appropriate. */
 1474: int
 1475: main()
 1476: {
 1477: int fd, err;
 1478: 
 1479: #if defined (HAVE_MKFIFO)
 1480: exit (0);
 1481: #endif
 1482: 
 1483: #if !defined (S_IFIFO) && (defined (_POSIX_VERSION) && !defined (S_ISFIFO))
 1484: exit (1);
 1485: #endif
 1486: 
 1487: #if defined (NeXT)
 1488: exit (1);
 1489: #endif
 1490: err = mkdir("bash-aclocal", 0700);
 1491: if (err < 0) {
 1492:   perror ("mkdir");
 1493:   exit(1);
 1494: }
 1495: fd = mknod ("bash-aclocal/sh-np-autoconf", 0666 | S_IFIFO, 0);
 1496: if (fd == -1) {
 1497:   rmdir ("bash-aclocal");
 1498:   exit (1);
 1499: }
 1500: close(fd);
 1501: unlink ("bash-aclocal/sh-np-autoconf");
 1502: rmdir ("bash-aclocal");
 1503: exit(0);
 1504: }], bash_cv_sys_named_pipes=present, bash_cv_sys_named_pipes=missing,
 1505:     [AC_MSG_WARN(cannot check for named pipes if cross-compiling -- defaulting to missing)
 1506:      bash_cv_sys_named_pipes=missing]
 1507: )])
 1508: AC_MSG_RESULT($bash_cv_sys_named_pipes)
 1509: if test $bash_cv_sys_named_pipes = missing; then
 1510: AC_DEFINE(NAMED_PIPES_MISSING)
 1511: fi
 1512: ])
 1513: 
 1514: AC_DEFUN(BASH_SYS_DEFAULT_MAIL_DIR,
 1515: [AC_MSG_CHECKING(for default mail directory)
 1516: AC_CACHE_VAL(bash_cv_mail_dir,
 1517: [if test -d /var/mail; then
 1518:    bash_cv_mail_dir=/var/mail
 1519:  elif test -d /var/spool/mail; then
 1520:    bash_cv_mail_dir=/var/spool/mail
 1521:  elif test -d /usr/mail; then
 1522:    bash_cv_mail_dir=/usr/mail
 1523:  elif test -d /usr/spool/mail; then
 1524:    bash_cv_mail_dir=/usr/spool/mail
 1525:  else
 1526:    bash_cv_mail_dir=unknown
 1527:  fi
 1528: ])
 1529: AC_MSG_RESULT($bash_cv_mail_dir)
 1530: AC_DEFINE_UNQUOTED(DEFAULT_MAIL_DIRECTORY, "$bash_cv_mail_dir")
 1531: ])
 1532: 
 1533: AC_DEFUN(BASH_HAVE_TIOCGWINSZ,
 1534: [AC_MSG_CHECKING(for TIOCGWINSZ in sys/ioctl.h)
 1535: AC_CACHE_VAL(bash_cv_tiocgwinsz_in_ioctl,
 1536: [AC_TRY_COMPILE([#include <sys/types.h>
 1537: #include <sys/ioctl.h>], [int x = TIOCGWINSZ;],
 1538:   bash_cv_tiocgwinsz_in_ioctl=yes,bash_cv_tiocgwinsz_in_ioctl=no)])
 1539: AC_MSG_RESULT($bash_cv_tiocgwinsz_in_ioctl)
 1540: if test $bash_cv_tiocgwinsz_in_ioctl = yes; then   
 1541: AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
 1542: fi
 1543: ])
 1544: 
 1545: AC_DEFUN(BASH_HAVE_TIOCSTAT,
 1546: [AC_MSG_CHECKING(for TIOCSTAT in sys/ioctl.h)
 1547: AC_CACHE_VAL(bash_cv_tiocstat_in_ioctl,
 1548: [AC_TRY_COMPILE([#include <sys/types.h>
 1549: #include <sys/ioctl.h>], [int x = TIOCSTAT;],
 1550:   bash_cv_tiocstat_in_ioctl=yes,bash_cv_tiocstat_in_ioctl=no)])
 1551: AC_MSG_RESULT($bash_cv_tiocstat_in_ioctl)
 1552: if test $bash_cv_tiocstat_in_ioctl = yes; then   
 1553: AC_DEFINE(TIOCSTAT_IN_SYS_IOCTL)
 1554: fi
 1555: ])
 1556: 
 1557: AC_DEFUN(BASH_HAVE_FIONREAD,
 1558: [AC_MSG_CHECKING(for FIONREAD in sys/ioctl.h)
 1559: AC_CACHE_VAL(bash_cv_fionread_in_ioctl,
 1560: [AC_TRY_COMPILE([#include <sys/types.h>
 1561: #include <sys/ioctl.h>], [int x = FIONREAD;],
 1562:   bash_cv_fionread_in_ioctl=yes,bash_cv_fionread_in_ioctl=no)])
 1563: AC_MSG_RESULT($bash_cv_fionread_in_ioctl)
 1564: if test $bash_cv_fionread_in_ioctl = yes; then   
 1565: AC_DEFINE(FIONREAD_IN_SYS_IOCTL)
 1566: fi
 1567: ])
 1568: 
 1569: dnl
 1570: dnl See if speed_t is declared in <sys/types.h>.  Some versions of linux
 1571: dnl require a definition of speed_t each time <termcap.h> is included,
 1572: dnl but you can only get speed_t if you include <termios.h> (on some
 1573: dnl versions) or <sys/types.h> (on others).
 1574: dnl
 1575: AC_DEFUN(BASH_CHECK_SPEED_T,
 1576: [AC_MSG_CHECKING(for speed_t in sys/types.h)
 1577: AC_CACHE_VAL(bash_cv_speed_t_in_sys_types,
 1578: [AC_TRY_COMPILE([#include <sys/types.h>], [speed_t x;],
 1579:   bash_cv_speed_t_in_sys_types=yes,bash_cv_speed_t_in_sys_types=no)])
 1580: AC_MSG_RESULT($bash_cv_speed_t_in_sys_types)
 1581: if test $bash_cv_speed_t_in_sys_types = yes; then   
 1582: AC_DEFINE(SPEED_T_IN_SYS_TYPES)
 1583: fi
 1584: ])
 1585: 
 1586: AC_DEFUN(BASH_CHECK_GETPW_FUNCS,
 1587: [AC_MSG_CHECKING(whether getpw functions are declared in pwd.h)
 1588: AC_CACHE_VAL(bash_cv_getpw_declared,
 1589: [AC_EGREP_CPP(getpwuid,
 1590: [
 1591: #include <sys/types.h>
 1592: #ifdef HAVE_UNISTD_H
 1593: #  include <unistd.h>
 1594: #endif
 1595: #include <pwd.h>
 1596: ],
 1597: bash_cv_getpw_declared=yes,bash_cv_getpw_declared=no)])
 1598: AC_MSG_RESULT($bash_cv_getpw_declared)
 1599: if test $bash_cv_getpw_declared = yes; then
 1600: AC_DEFINE(HAVE_GETPW_DECLS)
 1601: fi
 1602: ])
 1603: 
 1604: AC_DEFUN(BASH_CHECK_DEV_FD,
 1605: [AC_MSG_CHECKING(whether /dev/fd is available)
 1606: AC_CACHE_VAL(bash_cv_dev_fd,
 1607: [bash_cv_dev_fd=""
 1608: if test -d /dev/fd  && (exec test -r /dev/fd/0 < /dev/null) ; then
 1609: # check for systems like FreeBSD 5 that only provide /dev/fd/[012]
 1610:    if (exec test -r /dev/fd/3 3</dev/null) ; then
 1611:      bash_cv_dev_fd=standard
 1612:    else
 1613:      bash_cv_dev_fd=absent
 1614:    fi
 1615: fi
 1616: if test -z "$bash_cv_dev_fd" ; then 
 1617:   if test -d /proc/self/fd && (exec test -r /proc/self/fd/0 < /dev/null) ; then
 1618:     bash_cv_dev_fd=whacky
 1619:   else
 1620:     bash_cv_dev_fd=absent
 1621:   fi
 1622: fi
 1623: ])
 1624: AC_MSG_RESULT($bash_cv_dev_fd)
 1625: if test $bash_cv_dev_fd = "standard"; then
 1626:   AC_DEFINE(HAVE_DEV_FD)
 1627:   AC_DEFINE(DEV_FD_PREFIX, "/dev/fd/")
 1628: elif test $bash_cv_dev_fd = "whacky"; then
 1629:   AC_DEFINE(HAVE_DEV_FD)
 1630:   AC_DEFINE(DEV_FD_PREFIX, "/proc/self/fd/")
 1631: fi
 1632: ])
 1633: 
 1634: AC_DEFUN(BASH_CHECK_DEV_STDIN,
 1635: [AC_MSG_CHECKING(whether /dev/stdin stdout stderr are available)
 1636: AC_CACHE_VAL(bash_cv_dev_stdin,
 1637: [if (exec test -r /dev/stdin < /dev/null) ; then
 1638:    bash_cv_dev_stdin=present
 1639:  else
 1640:    bash_cv_dev_stdin=absent
 1641:  fi
 1642: ])
 1643: AC_MSG_RESULT($bash_cv_dev_stdin)
 1644: if test $bash_cv_dev_stdin = "present"; then
 1645:   AC_DEFINE(HAVE_DEV_STDIN)
 1646: fi
 1647: ])
 1648: 
 1649: dnl
 1650: dnl Check if HPUX needs _KERNEL defined for RLIMIT_* definitions
 1651: dnl
 1652: AC_DEFUN(BASH_CHECK_KERNEL_RLIMIT,
 1653: [AC_MSG_CHECKING([whether $host_os needs _KERNEL for RLIMIT defines])
 1654: AC_CACHE_VAL(bash_cv_kernel_rlimit,
 1655: [AC_TRY_COMPILE([
 1656: #include <sys/types.h>
 1657: #include <sys/resource.h>
 1658: ],
 1659: [
 1660:   int f;
 1661:   f = RLIMIT_DATA;
 1662: ], bash_cv_kernel_rlimit=no,
 1663: [AC_TRY_COMPILE([
 1664: #include <sys/types.h>
 1665: #define _KERNEL
 1666: #include <sys/resource.h>
 1667: #undef _KERNEL
 1668: ],
 1669: [
 1670: 	int f;
 1671:         f = RLIMIT_DATA;
 1672: ], bash_cv_kernel_rlimit=yes, bash_cv_kernel_rlimit=no)]
 1673: )])
 1674: AC_MSG_RESULT($bash_cv_kernel_rlimit)
 1675: if test $bash_cv_kernel_rlimit = yes; then
 1676: AC_DEFINE(RLIMIT_NEEDS_KERNEL)
 1677: fi
 1678: ])
 1679: 
 1680: dnl
 1681: dnl Check for 64-bit off_t -- used for malloc alignment
 1682: dnl
 1683: dnl C does not allow duplicate case labels, so the compile will fail if
 1684: dnl sizeof(off_t) is > 4.
 1685: dnl
 1686: AC_DEFUN(BASH_CHECK_OFF_T_64,
 1687: [AC_CACHE_CHECK(for 64-bit off_t, bash_cv_off_t_64,
 1688: AC_TRY_COMPILE([
 1689: #ifdef HAVE_UNISTD_H
 1690: #include <unistd.h>
 1691: #endif
 1692: #include <sys/types.h>
 1693: ],[
 1694: switch (0) case 0: case (sizeof (off_t) <= 4):;
 1695: ], bash_cv_off_t_64=no, bash_cv_off_t_64=yes))
 1696: if test $bash_cv_off_t_64 = yes; then
 1697:         AC_DEFINE(HAVE_OFF_T_64)
 1698: fi])
 1699: 
 1700: AC_DEFUN(BASH_CHECK_RTSIGS,
 1701: [AC_MSG_CHECKING(for unusable real-time signals due to large values)
 1702: AC_CACHE_VAL(bash_cv_unusable_rtsigs,
 1703: [AC_TRY_RUN([
 1704: #include <sys/types.h>
 1705: #include <signal.h>
 1706: #include <stdlib.h>
 1707: 
 1708: #ifndef NSIG
 1709: #  define NSIG 64
 1710: #endif
 1711: 
 1712: int
 1713: main ()
 1714: {
 1715:   int n_sigs = 2 * NSIG;
 1716: #ifdef SIGRTMIN
 1717:   int rtmin = SIGRTMIN;
 1718: #else
 1719:   int rtmin = 0;
 1720: #endif
 1721: 
 1722:   exit(rtmin < n_sigs);
 1723: }], bash_cv_unusable_rtsigs=yes, bash_cv_unusable_rtsigs=no,
 1724:     [AC_MSG_WARN(cannot check real-time signals if cross compiling -- defaulting to yes)
 1725:      bash_cv_unusable_rtsigs=yes]
 1726: )])
 1727: AC_MSG_RESULT($bash_cv_unusable_rtsigs)
 1728: if test $bash_cv_unusable_rtsigs = yes; then
 1729: AC_DEFINE(UNUSABLE_RT_SIGNALS)
 1730: fi
 1731: ])
 1732: 
 1733: dnl
 1734: dnl check for availability of multibyte characters and functions
 1735: dnl
 1736: dnl geez, I wish I didn't have to check for all of this stuff separately
 1737: dnl
 1738: AC_DEFUN(BASH_CHECK_MULTIBYTE,
 1739: [
 1740: AC_CHECK_HEADERS(wctype.h)
 1741: AC_CHECK_HEADERS(wchar.h)
 1742: AC_CHECK_HEADERS(langinfo.h)
 1743: 
 1744: AC_CHECK_HEADERS(mbstr.h)
 1745: 
 1746: AC_CHECK_FUNC(mbrlen, AC_DEFINE(HAVE_MBRLEN))
 1747: AC_CHECK_FUNC(mbscasecmp, AC_DEFINE(HAVE_MBSCMP))
 1748: AC_CHECK_FUNC(mbscmp, AC_DEFINE(HAVE_MBSCMP))
 1749: AC_CHECK_FUNC(mbsnrtowcs, AC_DEFINE(HAVE_MBSNRTOWCS))
 1750: AC_CHECK_FUNC(mbsrtowcs, AC_DEFINE(HAVE_MBSRTOWCS))
 1751: 
 1752: AC_REPLACE_FUNCS(mbschr)
 1753: 
 1754: AC_CHECK_FUNC(wcrtomb, AC_DEFINE(HAVE_WCRTOMB))
 1755: AC_CHECK_FUNC(wcscoll, AC_DEFINE(HAVE_WCSCOLL))
 1756: AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP))
 1757: AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH))
 1758: AC_CHECK_FUNC(wctype, AC_DEFINE(HAVE_WCTYPE))
 1759: 
 1760: AC_REPLACE_FUNCS(wcswidth)
 1761: 
 1762: dnl checks for both mbrtowc and mbstate_t
 1763: AC_FUNC_MBRTOWC
 1764: if test $ac_cv_func_mbrtowc = yes; then
 1765: 	AC_DEFINE(HAVE_MBSTATE_T)
 1766: fi
 1767: 
 1768: AC_CHECK_FUNCS(iswlower iswupper towlower towupper iswctype)
 1769: 
 1770: AC_CACHE_CHECK([for nl_langinfo and CODESET], bash_cv_langinfo_codeset,
 1771: [AC_TRY_LINK(
 1772: [#include <langinfo.h>],
 1773: [char* cs = nl_langinfo(CODESET);],
 1774: bash_cv_langinfo_codeset=yes, bash_cv_langinfo_codeset=no)])
 1775: if test $bash_cv_langinfo_codeset = yes; then
 1776:   AC_DEFINE(HAVE_LANGINFO_CODESET)
 1777: fi
 1778: 
 1779: dnl check for wchar_t in <wchar.h>
 1780: AC_CACHE_CHECK([for wchar_t in wchar.h], bash_cv_type_wchar_t,
 1781: [AC_TRY_COMPILE(
 1782: [#include <wchar.h>
 1783: ],
 1784: [
 1785:         wchar_t foo;
 1786:         foo = 0;
 1787: ], bash_cv_type_wchar_t=yes, bash_cv_type_wchar_t=no)])
 1788: if test $bash_cv_type_wchar_t = yes; then
 1789:         AC_DEFINE(HAVE_WCHAR_T, 1, [systems should define this type here])
 1790: fi
 1791: 
 1792: dnl check for wctype_t in <wctype.h>
 1793: AC_CACHE_CHECK([for wctype_t in wctype.h], bash_cv_type_wctype_t,
 1794: [AC_TRY_COMPILE(
 1795: [#include <wctype.h>],
 1796: [
 1797:         wctype_t foo;
 1798:         foo = 0;
 1799: ], bash_cv_type_wctype_t=yes, bash_cv_type_wctype_t=no)])
 1800: if test $bash_cv_type_wctype_t = yes; then
 1801:         AC_DEFINE(HAVE_WCTYPE_T, 1, [systems should define this type here])
 1802: fi
 1803: 
 1804: dnl check for wint_t in <wctype.h>
 1805: AC_CACHE_CHECK([for wint_t in wctype.h], bash_cv_type_wint_t,
 1806: [AC_TRY_COMPILE(
 1807: [#include <wctype.h>],
 1808: [
 1809:         wint_t foo;
 1810:         foo = 0;
 1811: ], bash_cv_type_wint_t=yes, bash_cv_type_wint_t=no)])
 1812: if test $bash_cv_type_wint_t = yes; then
 1813:         AC_DEFINE(HAVE_WINT_T, 1, [systems should define this type here])
 1814: fi
 1815: 
 1816: dnl check for broken wcwidth
 1817: AC_CACHE_CHECK([for wcwidth broken with unicode combining characters],
 1818: bash_cv_wcwidth_broken,
 1819: [AC_TRY_RUN([
 1820: #include <unistd.h>
 1821: #include <stdlib.h>
 1822: #include <stdio.h>
 1823: 
 1824: #include <locale.h>
 1825: #include <wchar.h>
 1826: 
 1827: int
 1828: main(c, v)
 1829: int     c;
 1830: char    **v;
 1831: {
 1832:         int     w;
 1833: 
 1834:         setlocale(LC_ALL, "en_US.UTF-8");
 1835:         w = wcwidth (0x0301);
 1836:         exit (w == 0);  /* exit 0 if wcwidth broken */
 1837: }
 1838: ],
 1839: bash_cv_wcwidth_broken=yes, bash_cv_wcwidth_broken=no, bash_cv_wcwidth_broken=no)])
 1840: if test "$bash_cv_wcwidth_broken" = yes; then
 1841:         AC_DEFINE(WCWIDTH_BROKEN, 1, [wcwidth is usually not broken])
 1842: fi
 1843: 
 1844: if test "$am_cv_func_iconv" = yes; then
 1845: 	OLDLIBS="$LIBS"
 1846: 	LIBS="$LIBS $LIBINTL $LIBICONV"
 1847: 	AC_CHECK_FUNCS(locale_charset)
 1848: 	LIBS="$OLDLIBS"
 1849: fi
 1850: 
 1851: AC_CHECK_SIZEOF(wchar_t, 4)
 1852: 
 1853: ])
 1854: 
 1855: dnl need: prefix exec_prefix libdir includedir CC TERMCAP_LIB
 1856: dnl require:
 1857: dnl	AC_PROG_CC
 1858: dnl	BASH_CHECK_LIB_TERMCAP
 1859: 
 1860: AC_DEFUN([RL_LIB_READLINE_VERSION],
 1861: [
 1862: AC_REQUIRE([BASH_CHECK_LIB_TERMCAP])
 1863: 
 1864: AC_MSG_CHECKING([version of installed readline library])
 1865: 
 1866: # What a pain in the ass this is.
 1867: 
 1868: # save cpp and ld options
 1869: _save_CFLAGS="$CFLAGS"
 1870: _save_LDFLAGS="$LDFLAGS"
 1871: _save_LIBS="$LIBS"
 1872: 
 1873: # Don't set ac_cv_rl_prefix if the caller has already assigned a value.  This
 1874: # allows the caller to do something like $_rl_prefix=$withval if the user
 1875: # specifies --with-installed-readline=PREFIX as an argument to configure
 1876: 
 1877: if test -z "$ac_cv_rl_prefix"; then
 1878: test "x$prefix" = xNONE && ac_cv_rl_prefix=$ac_default_prefix || ac_cv_rl_prefix=${prefix}
 1879: fi
 1880: 
 1881: eval ac_cv_rl_includedir=${ac_cv_rl_prefix}/include
 1882: eval ac_cv_rl_libdir=${ac_cv_rl_prefix}/lib
 1883: 
 1884: LIBS="$LIBS -lreadline ${TERMCAP_LIB}"
 1885: CFLAGS="$CFLAGS -I${ac_cv_rl_includedir}"
 1886: LDFLAGS="$LDFLAGS -L${ac_cv_rl_libdir}"
 1887: 
 1888: AC_CACHE_VAL(ac_cv_rl_version,
 1889: [AC_TRY_RUN([
 1890: #include <stdio.h>
 1891: #include <readline/readline.h>
 1892: #include <stdlib.h>
 1893: 
 1894: extern int rl_gnu_readline_p;
 1895: 
 1896: int
 1897: main()
 1898: {
 1899: 	FILE *fp;
 1900: 	fp = fopen("conftest.rlv", "w");
 1901: 	if (fp == 0)
 1902: 		exit(1);
 1903: 	if (rl_gnu_readline_p != 1)
 1904: 		fprintf(fp, "0.0\n");
 1905: 	else
 1906: 		fprintf(fp, "%s\n", rl_library_version ? rl_library_version : "0.0");
 1907: 	fclose(fp);
 1908: 	exit(0);
 1909: }
 1910: ],
 1911: ac_cv_rl_version=`cat conftest.rlv`,
 1912: ac_cv_rl_version='0.0',
 1913: ac_cv_rl_version='8.0')])
 1914: 
 1915: CFLAGS="$_save_CFLAGS"
 1916: LDFLAGS="$_save_LDFLAGS"
 1917: LIBS="$_save_LIBS"
 1918: 
 1919: RL_MAJOR=0
 1920: RL_MINOR=0
 1921: 
 1922: # (
 1923: case "$ac_cv_rl_version" in
 1924: 2*|3*|4*|5*|6*|7*|8*|9*)
 1925: 	RL_MAJOR=`echo $ac_cv_rl_version | sed 's:\..*$::'`
 1926: 	RL_MINOR=`echo $ac_cv_rl_version | sed -e 's:^.*\.::' -e 's:[[a-zA-Z]]*$::'`
 1927: 	;;
 1928: esac
 1929: 
 1930: # (((
 1931: case $RL_MAJOR in
 1932: [[0-9][0-9]])	_RL_MAJOR=$RL_MAJOR ;;
 1933: [[0-9]])	_RL_MAJOR=0$RL_MAJOR ;;
 1934: *)		_RL_MAJOR=00 ;;
 1935: esac
 1936: 
 1937: # (((
 1938: case $RL_MINOR in
 1939: [[0-9][0-9]])	_RL_MINOR=$RL_MINOR ;;
 1940: [[0-9]])	_RL_MINOR=0$RL_MINOR ;;
 1941: *)		_RL_MINOR=00 ;;
 1942: esac
 1943: 
 1944: RL_VERSION="0x${_RL_MAJOR}${_RL_MINOR}"
 1945: 
 1946: # Readline versions greater than 4.2 have these defines in readline.h
 1947: 
 1948: if test $ac_cv_rl_version = '0.0' ; then
 1949: 	AC_MSG_WARN([Could not test version of installed readline library.])
 1950: elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ; then
 1951: 	# set these for use by the caller
 1952: 	RL_PREFIX=$ac_cv_rl_prefix
 1953: 	RL_LIBDIR=$ac_cv_rl_libdir
 1954: 	RL_INCLUDEDIR=$ac_cv_rl_includedir
 1955: 	AC_MSG_RESULT($ac_cv_rl_version)
 1956: else
 1957: 
 1958: AC_DEFINE_UNQUOTED(RL_READLINE_VERSION, $RL_VERSION, [encoded version of the installed readline library])
 1959: AC_DEFINE_UNQUOTED(RL_VERSION_MAJOR, $RL_MAJOR, [major version of installed readline library])
 1960: AC_DEFINE_UNQUOTED(RL_VERSION_MINOR, $RL_MINOR, [minor version of installed readline library])
 1961: 
 1962: AC_SUBST(RL_VERSION)
 1963: AC_SUBST(RL_MAJOR)
 1964: AC_SUBST(RL_MINOR)
 1965: 
 1966: # set these for use by the caller
 1967: RL_PREFIX=$ac_cv_rl_prefix
 1968: RL_LIBDIR=$ac_cv_rl_libdir
 1969: RL_INCLUDEDIR=$ac_cv_rl_includedir
 1970: 
 1971: AC_MSG_RESULT($ac_cv_rl_version)
 1972: 
 1973: fi
 1974: ])
 1975: 
 1976: AC_DEFUN(BASH_FUNC_CTYPE_NONASCII,
 1977: [
 1978: AC_MSG_CHECKING(whether the ctype macros accept non-ascii characters)
 1979: AC_CACHE_VAL(bash_cv_func_ctype_nonascii,
 1980: [AC_TRY_RUN([
 1981: #ifdef HAVE_LOCALE_H
 1982: #include <locale.h>
 1983: #endif
 1984: #include <stdio.h>
 1985: #include <ctype.h>
 1986: #include <stdlib.h>
 1987: 
 1988: int
 1989: main(c, v)
 1990: int	c;
 1991: char	*v[];
 1992: {
 1993: 	char	*deflocale;
 1994: 	unsigned char x;
 1995: 	int	r1, r2;
 1996: 
 1997: #ifdef HAVE_SETLOCALE
 1998: 	/* We take a shot here.  If that locale is not known, try the
 1999: 	   system default.  We try this one because '\342' (226) is
 2000: 	   known to be a printable character in that locale. */
 2001: 	deflocale = setlocale(LC_ALL, "en_US.ISO8859-1");
 2002: 	if (deflocale == 0)
 2003: 		deflocale = setlocale(LC_ALL, "");
 2004: #endif
 2005: 
 2006: 	x = '\342';
 2007: 	r1 = isprint(x);
 2008: 	x -= 128;
 2009: 	r2 = isprint(x);
 2010: 	exit (r1 == 0 || r2 == 0);
 2011: }
 2012: ], bash_cv_func_ctype_nonascii=yes, bash_cv_func_ctype_nonascii=no,
 2013:    [AC_MSG_WARN(cannot check ctype macros if cross compiling -- defaulting to no)
 2014:     bash_cv_func_ctype_nonascii=no]
 2015: )])
 2016: AC_MSG_RESULT($bash_cv_func_ctype_nonascii)
 2017: if test $bash_cv_func_ctype_nonascii = yes; then
 2018: AC_DEFINE(CTYPE_NON_ASCII)
 2019: fi
 2020: ])
 2021: 
 2022: AC_DEFUN(BASH_CHECK_WCONTINUED,
 2023: [
 2024: AC_MSG_CHECKING(whether WCONTINUED flag to waitpid is unavailable or available but broken)
 2025: AC_CACHE_VAL(bash_cv_wcontinued_broken,
 2026: [AC_TRY_RUN([
 2027: #include <sys/types.h>
 2028: #include <sys/wait.h>
 2029: #include <unistd.h>
 2030: #include <errno.h>
 2031: #include <stdlib.h>
 2032: 
 2033: #ifndef errno
 2034: extern int errno;
 2035: #endif
 2036: int
 2037: main()
 2038: {
 2039: 	int	x;
 2040: 
 2041: 	x = waitpid(-1, (int *)0, WNOHANG|WCONTINUED);
 2042: 	if (x == -1 && errno == EINVAL)
 2043: 		exit (1);
 2044: 	else
 2045: 		exit (0);
 2046: }
 2047: ], bash_cv_wcontinued_broken=no,bash_cv_wcontinued_broken=yes,
 2048:    [AC_MSG_WARN(cannot check WCONTINUED if cross compiling -- defaulting to no)
 2049:     bash_cv_wcontinued_broken=no]
 2050: )])
 2051: AC_MSG_RESULT($bash_cv_wcontinued_broken)
 2052: if test $bash_cv_wcontinued_broken = yes; then
 2053: AC_DEFINE(WCONTINUED_BROKEN)
 2054: fi
 2055: ])
 2056: 
 2057: dnl
 2058: dnl tests added for bashdb
 2059: dnl
 2060: 
 2061: 
 2062: AC_DEFUN([AM_PATH_LISPDIR],
 2063:  [AC_ARG_WITH(lispdir, AC_HELP_STRING([--with-lispdir], [override the default lisp directory]),
 2064:   [ lispdir="$withval" 
 2065:     AC_MSG_CHECKING([where .elc files should go])
 2066:     AC_MSG_RESULT([$lispdir])],
 2067:   [
 2068:   # If set to t, that means we are running in a shell under Emacs.
 2069:   # If you have an Emacs named "t", then use the full path.
 2070:   test x"$EMACS" = xt && EMACS=
 2071:   AC_CHECK_PROGS(EMACS, emacs xemacs, no)
 2072:   if test $EMACS != "no"; then
 2073:     if test x${lispdir+set} != xset; then
 2074:       AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [dnl
 2075: 	am_cv_lispdir=`$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' | sed -n -e 's,/$,,' -e '/.*\/lib\/\(x\?emacs\/site-lisp\)$/{s,,${libdir}/\1,;p;q;}' -e '/.*\/share\/\(x\?emacs\/site-lisp\)$/{s,,${datadir}/\1,;p;q;}'`
 2076: 	if test -z "$am_cv_lispdir"; then
 2077: 	  am_cv_lispdir='${datadir}/emacs/site-lisp'
 2078: 	fi
 2079:       ])
 2080:       lispdir="$am_cv_lispdir"
 2081:     fi
 2082:   fi
 2083:  ])
 2084:  AC_SUBST(lispdir)
 2085: ])
 2086: 
 2087: dnl From gnulib
 2088: AC_DEFUN([BASH_FUNC_FPURGE],
 2089: [
 2090:   AC_CHECK_FUNCS_ONCE([fpurge])
 2091:   AC_CHECK_FUNCS_ONCE([__fpurge])
 2092:   AC_CHECK_DECLS([fpurge], , , [#include <stdio.h>])
 2093: ])
 2094: 
 2095: AC_DEFUN([BASH_FUNC_SNPRINTF],
 2096: [
 2097:   AC_CHECK_FUNCS_ONCE([snprintf])
 2098:   if test X$ac_cv_func_snprintf = Xyes; then
 2099:     AC_CACHE_CHECK([for standard-conformant snprintf], [bash_cv_func_snprintf],
 2100:       [AC_TRY_RUN([
 2101: #include <stdio.h>
 2102: #include <stdlib.h>
 2103: 
 2104: int
 2105: main()
 2106: {
 2107:   int n;
 2108:   n = snprintf (0, 0, "%s", "0123456");
 2109:   exit(n != 7);
 2110: }
 2111: ], bash_cv_func_snprintf=yes, bash_cv_func_snprintf=no,
 2112:    [AC_MSG_WARN([cannot check standard snprintf if cross-compiling])
 2113:     bash_cv_func_snprintf=yes]
 2114: )])
 2115:     if test $bash_cv_func_snprintf = no; then
 2116:       ac_cv_func_snprintf=no
 2117:     fi
 2118:   fi
 2119:   if test $ac_cv_func_snprintf = no; then
 2120:     AC_DEFINE(HAVE_SNPRINTF, 0,
 2121:       [Define if you have a standard-conformant snprintf function.])
 2122:   fi
 2123: ])
 2124: 
 2125: AC_DEFUN([BASH_FUNC_VSNPRINTF],
 2126: [
 2127:   AC_CHECK_FUNCS_ONCE([vsnprintf])
 2128:   if test X$ac_cv_func_vsnprintf = Xyes; then
 2129:     AC_CACHE_CHECK([for standard-conformant vsnprintf], [bash_cv_func_vsnprintf],
 2130:       [AC_TRY_RUN([
 2131: #if HAVE_STDARG_H
 2132: #include <stdarg.h>
 2133: #else
 2134: #include <varargs.h>
 2135: #endif
 2136: #include <stdio.h>
 2137: #include <stdlib.h>
 2138: 
 2139: static int
 2140: #if HAVE_STDARG_H
 2141: foo(const char *fmt, ...)
 2142: #else
 2143: foo(format, va_alist)
 2144:      const char *format;
 2145:      va_dcl
 2146: #endif
 2147: {
 2148:   va_list args;
 2149:   int n;
 2150: 
 2151: #if HAVE_STDARG_H
 2152:   va_start(args, fmt);
 2153: #else
 2154:   va_start(args);
 2155: #endif
 2156:   n = vsnprintf(0, 0, fmt, args);
 2157:   va_end (args);
 2158:   return n;
 2159: }
 2160: 
 2161: int
 2162: main()
 2163: {
 2164:   int n;
 2165:   n = foo("%s", "0123456");
 2166:   exit(n != 7);
 2167: }
 2168: ], bash_cv_func_vsnprintf=yes, bash_cv_func_vsnprintf=no,
 2169:    [AC_MSG_WARN([cannot check standard vsnprintf if cross-compiling])
 2170:     bash_cv_func_vsnprintf=yes]
 2171: )])
 2172:     if test $bash_cv_func_vsnprintf = no; then
 2173:       ac_cv_func_vsnprintf=no
 2174:     fi
 2175:   fi
 2176:   if test $ac_cv_func_vsnprintf = no; then
 2177:     AC_DEFINE(HAVE_VSNPRINTF, 0,
 2178:       [Define if you have a standard-conformant vsnprintf function.])
 2179:   fi
 2180: ])
 2181: 
 2182: AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET,
 2183: [AC_MSG_CHECKING(for offset of exit status in return status from wait)
 2184: AC_CACHE_VAL(bash_cv_wexitstatus_offset,
 2185: [AC_TRY_RUN([
 2186: #include <stdlib.h>
 2187: #include <unistd.h>
 2188: 
 2189: #include <sys/wait.h>
 2190: 
 2191: int
 2192: main(c, v)
 2193:      int c;
 2194:      char **v;
 2195: {
 2196:   pid_t pid, p;
 2197:   int s, i, n;
 2198: 
 2199:   s = 0;
 2200:   pid = fork();
 2201:   if (pid == 0)
 2202:     exit (42);
 2203: 
 2204:   /* wait for the process */
 2205:   p = wait(&s);
 2206:   if (p != pid)
 2207:     exit (255);
 2208: 
 2209:   /* crack s */
 2210:   for (i = 0; i < (sizeof(s) * 8); i++)
 2211:     {
 2212:       n = (s >> i) & 0xff;
 2213:       if (n == 42)
 2214: 	exit (i);
 2215:     }
 2216: 
 2217:   exit (254);
 2218: }
 2219: ], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?,
 2220:    [AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0)
 2221:     bash_cv_wexitstatus_offset=0]
 2222: )])
 2223: if test "$bash_cv_wexitstatus_offset" -gt 32 ; then
 2224:   AC_MSG_WARN(bad exit status from test program -- defaulting to 0)
 2225:   bash_cv_wexitstatus_offset=0
 2226: fi
 2227: AC_MSG_RESULT($bash_cv_wexitstatus_offset)
 2228: AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word])
 2229: ])
 2230: 
 2231: AC_DEFUN([BASH_FUNC_SBRK],
 2232: [
 2233:   AC_MSG_CHECKING([for sbrk])
 2234:   AC_CACHE_VAL(ac_cv_func_sbrk,
 2235:   [AC_TRY_LINK([#include <unistd.h>],
 2236:   [ void *x = sbrk (4096); ],
 2237:   ac_cv_func_sbrk=yes, ac_cv_func_sbrk=no)])
 2238:   AC_MSG_RESULT($ac_cv_func_sbrk)
 2239:   if test X$ac_cv_func_sbrk = Xyes; then
 2240:     AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk],
 2241:       [AC_TRY_RUN([
 2242: #include <stdlib.h>
 2243: #include <unistd.h>
 2244: 
 2245: int
 2246: main(int c, char **v)
 2247: {
 2248: 	void *x;
 2249: 
 2250: 	x = sbrk (4096);
 2251: 	exit ((x == (void *)-1) ? 1 : 0);
 2252: }
 2253: ], bash_cv_func_sbrk=yes, bash_cv_func_snprintf=sbrk,
 2254:    [AC_MSG_WARN([cannot check working sbrk if cross-compiling])
 2255:     bash_cv_func_sbrk=yes]
 2256: )])
 2257:     if test $bash_cv_func_sbrk = no; then
 2258:       ac_cv_func_sbrk=no
 2259:     fi
 2260:   fi
 2261:   if test $ac_cv_func_sbrk = yes; then
 2262:     AC_DEFINE(HAVE_SBRK, 1,
 2263:       [Define if you have a working sbrk function.])
 2264:   fi
 2265: ])
 2266: 
 2267: AC_DEFUN(BASH_FUNC_FNMATCH_EQUIV_FALLBACK,
 2268: [AC_MSG_CHECKING(whether fnmatch can be used to check bracket equivalence classes)
 2269: AC_CACHE_VAL(bash_cv_fnmatch_equiv_fallback,
 2270: [AC_TRY_RUN([
 2271: #include <stdlib.h>
 2272: #include <unistd.h>
 2273: #include <stdio.h>
 2274: #include <fnmatch.h>
 2275: #include <locale.h>
 2276: 
 2277: char *pattern = "[[=a=]]";
 2278: 
 2279: /* char *string = "รค"; */
 2280: unsigned char string[4] = { '\xc3', '\xa4', '\0' };
 2281: 
 2282: int
 2283: main (int c, char **v)
 2284: {
 2285:   setlocale (LC_ALL, "en_US.UTF-8");
 2286:   if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH)
 2287:     exit (0);
 2288:   exit (1);
 2289: }
 2290: 
 2291: ], bash_cv_fnmatch_equiv_fallback=yes, bash_cv_fnmatch_equiv_fallback=no,
 2292:    [AC_MSG_WARN(cannot check fnmatch if cross compiling -- defaulting to no)
 2293:     bash_cv_fnmatch_equiv_fallback=no]
 2294: )])
 2295: AC_MSG_RESULT($bash_cv_fnmatch_equiv_fallback)
 2296: if test "$bash_cv_fnmatch_equiv_fallback" = "yes" ; then
 2297:     bash_cv_fnmatch_equiv_value=1
 2298: else
 2299:     bash_cv_fnmatch_equiv_value=0
 2300: fi
 2301: AC_DEFINE_UNQUOTED([FNMATCH_EQUIV_FALLBACK], [$bash_cv_fnmatch_equiv_value], [Whether fnmatch can be used for bracket equivalence classes])
 2302: ])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>