X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fpty.m4;h=617b1b90f3e16a6234b2d71e6915ccf458d5c248;hb=afc6cbe4fe4892c5ee4166cab87fede6f294a27d;hp=f2a5664f8498647242bfd7ce65cb64c4d18c4756;hpb=9d84afa467b0a9abcd6e0d90fc7d1608f07bf2f1;p=gnulib.git diff --git a/m4/pty.m4 b/m4/pty.m4 index f2a5664f8..617b1b90f 100644 --- a/m4/pty.m4 +++ b/m4/pty.m4 @@ -1,4 +1,4 @@ -# pty.m4 serial 1 +# pty.m4 serial 7 dnl Copyright (C) 2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -20,12 +20,122 @@ AC_DEFUN([gl_PTY_LIB], AC_SUBST([PTY_LIB]) ]) -AC_DEFUN([gl_FORKPTY], +AC_DEFUN([gl_FUNC_FORKPTY], [ AC_REQUIRE([gl_PTY_LIB]) + AC_REQUIRE([gl_PTY_H]) + + dnl We assume that forkpty exists (possibly in libc, possibly in libutil) + dnl if and only if it is declared. + AC_CHECK_DECLS([forkpty],,, [[ +#if HAVE_PTY_H +# include +#endif +#if HAVE_UTIL_H +# include +#endif +#if HAVE_LIBUTIL_H +# include +#endif +]]) + if test $ac_cv_have_decl_forkpty = yes; then + dnl The system has forkpty. + dnl Prefer glibc's const-safe prototype, if available. + AC_CACHE_CHECK([for const-safe forkpty signature], + [gl_cv_func_forkpty_const], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#if HAVE_PTY_H +# include +#endif +#if HAVE_UTIL_H +# include +#endif +#if HAVE_LIBUTIL_H +# include +#endif + ]], [[ + int forkpty (int *, char *, struct termios const *, + struct winsize const *); + ]]) + ], + [gl_cv_func_forkpty_const=yes], [gl_cv_func_forkpty_const=no]) + ]) + if test $gl_cv_func_forkpty_const != yes; then + REPLACE_FORKPTY=1 + AC_LIBOBJ([forkpty]) + fi + else + dnl The system does not have forkpty. + HAVE_FORKPTY=0 + AC_LIBOBJ([forkpty]) + fi +]) + +AC_DEFUN([gl_FUNC_OPENPTY], +[ + AC_REQUIRE([gl_PTY_LIB]) + AC_REQUIRE([gl_PTY_H]) + + dnl Persuade Solaris to declare posix_openpt(). + AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) + + dnl We assume that openpty exists (possibly in libc, possibly in libutil) + dnl if and only if it is declared. + AC_CHECK_DECLS([openpty],,, [[ +#if HAVE_PTY_H +# include +#endif +#if HAVE_UTIL_H +# include +#endif +#if HAVE_LIBUTIL_H +# include +#endif +]]) + if test $ac_cv_have_decl_openpty = yes; then + dnl The system has openpty. + dnl Prefer glibc's const-safe prototype, if available. + AC_CACHE_CHECK([for const-safe openpty signature], + [gl_cv_func_openpty_const], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#if HAVE_PTY_H +# include +#endif +#if HAVE_UTIL_H +# include +#endif +#if HAVE_LIBUTIL_H +# include +#endif + ]], [[ + int openpty (int *, int *, char *, struct termios const *, + struct winsize const *); + ]]) + ], + [gl_cv_func_openpty_const=yes], [gl_cv_func_openpty_const=no]) + ]) + if test $gl_cv_func_openpty_const != yes; then + REPLACE_OPENPTY=1 + AC_LIBOBJ([openpty]) + AC_DEFINE([HAVE_OPENPTY], [1], + [Define to 1 if the system has the 'openpty' function.]) + fi + else + dnl The system does not have openpty. + HAVE_OPENPTY=0 + AC_LIBOBJ([openpty]) + AC_CHECK_FUNCS([_getpty posix_openpt]) + fi ]) -AC_DEFUN([gl_OPENPTY], +AC_DEFUN([gl_FUNC_LOGIN_TTY], [ AC_REQUIRE([gl_PTY_LIB]) + + AC_CHECK_FUNCS_ONCE([login_tty]) + if test $ac_cv_func_login_tty = no; then + AC_LIBOBJ([login_tty]) + fi ])