aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2010-03-05 10:32:35 +0100
committerThomas White <taw@physics.org>2010-03-05 10:34:14 +0100
commitdaac7b3b2aae9895e6fd46588739b992655c66f5 (patch)
tree339201d6e98d631caa0edf166c6c3e42596228da
parentd8358c2158154ed14af37edb46b44f6c7b9feebb (diff)
forkpty() compatibility
-rw-r--r--config.h.in6
-rwxr-xr-xconfigure80
-rw-r--r--configure.ac12
-rw-r--r--src/dirax.c9
4 files changed, 27 insertions, 80 deletions
diff --git a/config.h.in b/config.h.in
index f1436fd0..582988de 100644
--- a/config.h.in
+++ b/config.h.in
@@ -6,6 +6,12 @@
/* Define to 1 if you have the `forkpty' function. */
#undef HAVE_FORKPTY
+/* Define to 1 if a Linux-style forkpty is available */
+#undef HAVE_FORKPTY_BSD
+
+/* Define to 1 if a Linux-style forkpty is available */
+#undef HAVE_FORKPTY_LINUX
+
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
diff --git a/configure b/configure
index 51bdd945..808d09d5 100755
--- a/configure
+++ b/configure
@@ -5596,6 +5596,10 @@ as_val=`eval 'as_val=${'$as_ac_var'}
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FORKPTY_BSD 1
+_ACEOF
+
else
{ $as_echo "$as_me:$LINENO: checking for forkpty in -lutil" >&5
$as_echo_n "checking for forkpty in -lutil... " >&6; }
@@ -5663,83 +5667,13 @@ fi
{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_util_forkpty" >&5
$as_echo "$ac_cv_lib_util_forkpty" >&6; }
if test "x$ac_cv_lib_util_forkpty" = x""yes; then
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FORKPTY 1
-_ACEOF
- LIBS="$LIBS -lutil"
-else
- { $as_echo "$as_me:$LINENO: checking for forkpty in -lbsd" >&5
-$as_echo_n "checking for forkpty in -lbsd... " >&6; }
-if test "${ac_cv_lib_bsd_forkpty+set}" = set; then
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lbsd $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char forkpty ();
-int
-main ()
-{
-return forkpty ();
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
-$as_echo "$ac_try_echo") >&5
- (eval "$ac_link") 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } && {
- test -z "$ac_c_werror_flag" ||
- test ! -s conftest.err
- } && test -s conftest$ac_exeext && {
- test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
- }; then
- ac_cv_lib_bsd_forkpty=yes
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
- ac_cv_lib_bsd_forkpty=no
-fi
-rm -rf conftest.dSYM
-rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_forkpty" >&5
-$as_echo "$ac_cv_lib_bsd_forkpty" >&6; }
-if test "x$ac_cv_lib_bsd_forkpty" = x""yes; then
- cat >>confdefs.h <<\_ACEOF
-#define HAVE_FORKPTY 1
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_FORKPTY_LINUX 1
_ACEOF
- LIBS="$LIBS -lbsd"
-fi
+ LIBS="$LIBS -lutil"
fi
diff --git a/configure.ac b/configure.ac
index ce686568..f1e98934 100644
--- a/configure.ac
+++ b/configure.ac
@@ -78,11 +78,15 @@ AS_IF([test "x$enable_gtk" != "xno"],
AM_CONDITIONAL([HAVE_GTK], test x$havegtk = xtrue)
-AC_CHECK_FUNCS(forkpty,,
+AC_CHECK_FUNCS(forkpty,
+ AC_DEFINE([HAVE_FORKPTY_BSD], [1],
+ [Define to 1 if a Linux-style forkpty is available]),
AC_CHECK_LIB(util,forkpty,
- [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lutil"],
- AC_CHECK_LIB(bsd,forkpty, [AC_DEFINE(HAVE_FORKPTY) LIBS="$LIBS -lbsd"])
- )
+ [
+ AC_DEFINE([HAVE_FORKPTY_LINUX], [1],
+ [Define to 1 if a Linux-style forkpty is available])
+ LIBS="$LIBS -lutil"
+ ])
)
diff --git a/src/dirax.c b/src/dirax.c
index 893b21fb..7b1322f2 100644
--- a/src/dirax.c
+++ b/src/dirax.c
@@ -19,14 +19,17 @@
#include <stdio.h>
#include <math.h>
#include <string.h>
-#include <pty.h>
#include <unistd.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <assert.h>
#include <sys/ioctl.h>
-#include <termio.h>
-#include <sgtty.h>
+
+#if HAVE_FORKPTY_LINUX
+#include <pty.h>
+#elif HAVE_FORKPTY_BSD
+#include <util.h>
+#endif
#include "image.h"