From: root Date: Mon, 5 May 2008 16:51:52 +0000 (+0000) Subject: update_ptytty X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=300e86365d51c5a279e7f4c02a20c818227c6577;p=dana%2Furxvt.git update_ptytty --- diff --git a/Changes b/Changes index a227cc4e..f826a675 100644 --- a/Changes +++ b/Changes @@ -24,6 +24,8 @@ TODO: rxvt -font 10x20 -xrm "*.tabbed.font: 10x20" -pe tabbed how does one affect the tab windows themselves? seems not to work anymore. TODO: implement initial chdir for tabs by making it a resource? + - work around fedore 9 prividing isastream but not the relevant + header file for it (report by Tuncer Ayaz). - upgrade to libev-3.31, fixing a bug in the select backend with more than 31 file descriptors on non-linux 64 bit systems. - correctly reset the multibyte state to the initial one diff --git a/config.h.in b/config.h.in index f2322d39..11280a5f 100644 --- a/config.h.in +++ b/config.h.in @@ -67,6 +67,9 @@ /* Define to 1 if you have the `epoll_ctl' function. */ #undef HAVE_EPOLL_CTL +/* Define to 1 if you have the `eventfd' function. */ +#undef HAVE_EVENTFD + /* Define to 1 if you have the `getpt' function. */ #undef HAVE_GETPT @@ -157,6 +160,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H +/* Define to 1 if you have the header file. */ +#undef HAVE_STROPTS_H + /* Define if utmp.h or lastlog.h has struct lastlog */ #undef HAVE_STRUCT_LASTLOG @@ -175,6 +181,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_EPOLL_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_EVENTFD_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_EVENT_H @@ -205,6 +214,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H +/* Define to 1 if you have the `ttyslot' function. */ +#undef HAVE_TTYSLOT + /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H @@ -215,9 +227,6 @@ /* Define to 1 if you have the `unsetenv' function. */ #undef HAVE_UNSETENV -/* Define to 1 if you have the `updlastlogx' function. */ -#undef HAVE_UPDLASTLOGX - /* Define to 1 if you have the `updwtmp' function. */ #undef HAVE_UPDWTMP @@ -269,6 +278,9 @@ /* Define location of lastlog */ #undef LASTLOG_FILE +/* Define if lastlog is provided via a directory */ +#undef LASTLOG_IS_DIR + /* Define if you want to have lastlog support when utmp/utmpx is enabled */ #undef LASTLOG_SUPPORT diff --git a/configure b/configure index 4a838f1a..b8291eb3 100755 --- a/configure +++ b/configure @@ -5325,7 +5325,8 @@ done -for ac_header in sys/inotify.h sys/epoll.h sys/event.h sys/queue.h port.h poll.h sys/select.h + +for ac_header in sys/inotify.h sys/epoll.h sys/event.h sys/queue.h port.h poll.h sys/select.h sys/eventfd.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then @@ -5471,7 +5472,8 @@ done -for ac_func in inotify_init epoll_ctl kqueue port_create poll select + +for ac_func in inotify_init epoll_ctl kqueue port_create poll select eventfd do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` { echo "$as_me:$LINENO: checking for $ac_func" >&5 @@ -8558,9 +8560,9 @@ fi for ac_func in \ + ttyslot \ updwtmp \ updwtmpx \ - updlastlogx \ do as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` @@ -9991,6 +9993,13 @@ cat >>confdefs.h <<_ACEOF #define LASTLOG_FILE "$path_lastlog" _ACEOF + if test -d "$path_lastlog"; then + +cat >>confdefs.h <<\_ACEOF +#define LASTLOG_IS_DIR 1 +_ACEOF + + fi fi { echo "$as_me:$LINENO: checking where lastlogx is located" >&5 @@ -10490,12 +10499,14 @@ fi + for ac_header in \ pty.h \ util.h \ libutil.h \ sys/ioctl.h \ sys/stropts.h \ + stropts.h \ do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` diff --git a/ptytty.m4 b/ptytty.m4 index c5400c99..a05d50cc 100644 --- a/ptytty.m4 +++ b/ptytty.m4 @@ -9,6 +9,7 @@ AC_CHECK_HEADERS( \ libutil.h \ sys/ioctl.h \ sys/stropts.h \ + stropts.h \ ) AC_CHECK_FUNCS( \ @@ -65,8 +66,8 @@ esac if test x$ac_cv_func_getpt = xyes -o x$ac_cv_func_posix_openpt = xyes -o x$have_clone = xyes; then AC_MSG_CHECKING(for UNIX98 ptys) - AC_TRY_LINK([#include ], - [grantpt(0);unlockpt(0);ptsname(0);], + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], + [[grantpt(0);unlockpt(0);ptsname(0);]])], [unix98_pty=yes AC_DEFINE(UNIX98_PTY, 1, "") AC_MSG_RESULT(yes)], @@ -118,11 +119,7 @@ AC_CHECK_FUNCS( \ updlastlogx \ ) -AC_CHECK_HEADERS( \ - utmp.h \ - utmpx.h \ - lastlog.h \ -) +AC_CHECK_HEADERS(lastlog.h) dnl# -------------------------------------------------------------------------- dnl# DO ALL UTMP AND WTMP CHECKING @@ -130,7 +127,7 @@ dnl# -------------------------------------------------------------------------- dnl# check for host field in utmp structure dnl# -------------------------------------------- -AC_CHECK_HEADER(utmp.h, +AC_CHECK_HEADERS(utmp.h, [AC_CACHE_CHECK([for struct utmp], struct_utmp, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include #include ]], [[struct utmp ut;]])],[struct_utmp=yes],[struct_utmp=no])]) @@ -152,11 +149,11 @@ AC_CACHE_CHECK(for ut_pid in utmp struct, struct_utmp_pid, if test x$struct_utmp_pid = xyes; then AC_DEFINE(HAVE_UTMP_PID, 1, Define if struct utmp contains ut_pid) fi -) dnl# AC_CHECK_HEADER(utmp.h +) dnl# AC_CHECK_HEADERS(utmp.h dnl# -------------------------------------------- -AC_CHECK_HEADER(utmpx.h, +AC_CHECK_HEADERS(utmpx.h, [AC_CACHE_CHECK([for struct utmpx], struct_utmpx, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include #include ]], [[struct utmpx ut;]])],[struct_utmpx=yes],[struct_utmpx=no])]) @@ -173,14 +170,12 @@ if test x$struct_utmpx_host = xyes; then fi AC_CACHE_CHECK(for session in utmpx struct, struct_utmpx_session, -[AC_TRY_COMPILE([#include -#include ], -[struct utmpx utx; utx.ut_session;], -struct_utmpx_session=yes, struct_utmpx_session=no)]) +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include +#include ]], [[struct utmpx utx; utx.ut_session;]])],[struct_utmpx_session=yes],[struct_utmpx_session=no])]) if test x$struct_utmpx_session = xyes; then AC_DEFINE(HAVE_UTMPX_SESSION, 1, Define if struct utmpx contains ut_session) fi -) dnl# AC_CHECK_HEADER(utmpx.h +) dnl# AC_CHECK_HEADERS(utmpx.h dnl# -------------------------------------------------------------------------- dnl# check for struct lastlog @@ -446,12 +441,12 @@ fi AC_DEFUN([SCM_RIGHTS_CHECK], [ AC_CACHE_CHECK(for unix-compliant filehandle passing ability, can_pass_fds, -[AC_TRY_LINK([ +[AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include // broken bsds (is that redundant?) need this #include #include #include -],[ +]], [[ { msghdr msg; iovec iov; @@ -475,7 +470,7 @@ AC_CACHE_CHECK(for unix-compliant filehandle passing ability, can_pass_fds, return sendmsg (3, &msg, 0); } -],[can_pass_fds=yes],[can_pass_fds=no])]) +]])],[can_pass_fds=yes],[can_pass_fds=no])]) if test x$can_pass_fds = xyes; then AC_DEFINE(HAVE_UNIX_FDPASS, 1, Define if sys/socket.h defines the necessary macros/functions for file handle passing) else @@ -486,7 +481,7 @@ fi AC_DEFUN([TTY_GROUP_CHECK], [ AC_CACHE_CHECK([for tty group], tty_group, -[AC_TRY_RUN([ +[AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include #include #include @@ -506,8 +501,7 @@ main() return 0; else return 1; -}], -[tty_group=yes],[tty_group=no],[tty_group=no])]) +}]])],[tty_group=yes],[tty_group=no],[tty_group=no])]) if test x$tty_group = xyes; then AC_DEFINE(TTY_GID_SUPPORT, 1, "") fi]) diff --git a/src/logging.C b/src/logging.C index 8f046073..c9106bb8 100644 --- a/src/logging.C +++ b/src/logging.C @@ -48,6 +48,7 @@ #include #include #include +#include /* * BSD style utmp entry diff --git a/src/ptytty.C b/src/ptytty.C index 989b2a50..37a02701 100644 --- a/src/ptytty.C +++ b/src/ptytty.C @@ -34,6 +34,7 @@ #include #include +#include #include #include @@ -43,7 +44,7 @@ #if defined(HAVE_DEV_PTMX) && defined(HAVE_SYS_STROPTS_H) # include /* for I_PUSH */ #endif -#ifdef HAVE_ISASTREAM +#if defined(HAVE_ISASTREAM) && defined(HAVE_STROPTS_H) # include #endif #if defined(HAVE_PTY_H) @@ -129,10 +130,11 @@ slave = _getpty (&pfd, O_RDWR | O_NONBLOCK | O_NOCTTY, 0622, 0); - if (slave != NULL) { - *ttydev = strdup (slave); - return pfd; - } + if (slave != NULL) + { + *ttydev = strdup (slave); + return pfd; + } return -1; } @@ -248,7 +250,7 @@ control_tty (int fd_tty) * close () - on the master side which causes a hang up to be sent * through - Geoff Wing */ -# ifdef HAVE_ISASTREAM +#if defined(HAVE_ISASTREAM) && defined(HAVE_STROPTS_H) if (isastream (fd_tty) == 1) # endif {