aboutsummaryrefslogtreecommitdiff
path: root/m4/pty_h.m4
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2014-08-19 14:22:22 +0200
committerThomas White <taw@physics.org>2014-08-19 14:47:44 +0200
commit7ae6605846ecc70c937fca31b2133082aae055df (patch)
tree00bcacb21248f86caf91a02c55bc5178a52cd27f /m4/pty_h.m4
parent1a532028cb2f2df6f12e518bdf6d3425bbb28b08 (diff)
Use Gnulib forkpty()
Diffstat (limited to 'm4/pty_h.m4')
-rw-r--r--m4/pty_h.m469
1 files changed, 69 insertions, 0 deletions
diff --git a/m4/pty_h.m4 b/m4/pty_h.m4
new file mode 100644
index 00000000..d3cc2e7e
--- /dev/null
+++ b/m4/pty_h.m4
@@ -0,0 +1,69 @@
+# pty_h.m4 serial 10
+dnl Copyright (C) 2009-2014 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# gl_PTY_H
+# --------
+# Set up the GNU-like <pty.h> replacement header.
+AC_DEFUN_ONCE([gl_PTY_H],
+[
+ AC_REQUIRE([gl_PTY_H_DEFAULTS])
+
+ # Make sure that pty.h provides forkpty, or setup the replacement.
+ AC_CHECK_HEADERS_ONCE([pty.h])
+ if test $ac_cv_header_pty_h != yes; then
+ HAVE_PTY_H=0
+ AC_CHECK_HEADERS([util.h libutil.h])
+ if test $ac_cv_header_util_h = yes; then
+ HAVE_UTIL_H=1
+ fi
+ if test $ac_cv_header_libutil_h = yes; then
+ HAVE_LIBUTIL_H=1
+ fi
+ else # Have <pty.h>, assume forkpty is declared there.
+ HAVE_PTY_H=1
+ fi
+ AC_SUBST([HAVE_PTY_H])
+ dnl <pty.h> is always overridden, because of GNULIB_POSIXCHECK.
+ gl_CHECK_NEXT_HEADERS([pty.h])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use.
+ gl_WARN_ON_USE_PREPARE([[
+/* <sys/types.h> is a prerequisite of <libutil.h> on FreeBSD 8.0. */
+#include <sys/types.h>
+#if HAVE_PTY_H
+# include <pty.h>
+#endif
+#if HAVE_UTIL_H
+# include <util.h>
+#endif
+#if HAVE_LIBUTIL_H
+# include <libutil.h>
+#endif
+ ]], [forkpty openpty])
+])
+
+AC_DEFUN([gl_PTY_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_PTY_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+ dnl Define it also as a C macro, for the benefit of the unit tests.
+ gl_MODULE_INDICATOR_FOR_TESTS([$1])
+])
+
+AC_DEFUN([gl_PTY_H_DEFAULTS],
+[
+ GNULIB_FORKPTY=0; AC_SUBST([GNULIB_FORKPTY])
+ GNULIB_OPENPTY=0; AC_SUBST([GNULIB_OPENPTY])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_UTIL_H=0; AC_SUBST([HAVE_UTIL_H])
+ HAVE_LIBUTIL_H=0; AC_SUBST([HAVE_LIBUTIL_H])
+ HAVE_FORKPTY=1; AC_SUBST([HAVE_FORKPTY])
+ HAVE_OPENPTY=1; AC_SUBST([HAVE_OPENPTY])
+ REPLACE_FORKPTY=0; AC_SUBST([REPLACE_FORKPTY])
+ REPLACE_OPENPTY=0; AC_SUBST([REPLACE_OPENPTY])
+])