… | |
… | |
7 | pty.h \ |
7 | pty.h \ |
8 | util.h \ |
8 | util.h \ |
9 | libutil.h \ |
9 | libutil.h \ |
10 | sys/ioctl.h \ |
10 | sys/ioctl.h \ |
11 | sys/stropts.h \ |
11 | sys/stropts.h \ |
|
|
12 | stropts.h \ |
12 | ) |
13 | ) |
13 | |
14 | |
14 | AC_CHECK_FUNCS( \ |
15 | AC_CHECK_FUNCS( \ |
15 | revoke \ |
16 | revoke \ |
16 | _getpty \ |
17 | _getpty \ |
… | |
… | |
63 | ;; |
64 | ;; |
64 | esac |
65 | esac |
65 | |
66 | |
66 | if test x$ac_cv_func_getpt = xyes -o x$ac_cv_func_posix_openpt = xyes -o x$have_clone = xyes; then |
67 | if test x$ac_cv_func_getpt = xyes -o x$ac_cv_func_posix_openpt = xyes -o x$have_clone = xyes; then |
67 | AC_MSG_CHECKING(for UNIX98 ptys) |
68 | AC_MSG_CHECKING(for UNIX98 ptys) |
68 | AC_TRY_LINK([#include <stdlib.h>], |
69 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]], |
69 | [grantpt(0);unlockpt(0);ptsname(0);], |
70 | [[grantpt(0);unlockpt(0);ptsname(0);]])], |
70 | [unix98_pty=yes |
71 | [unix98_pty=yes |
71 | AC_DEFINE(UNIX98_PTY, 1, "") |
72 | AC_DEFINE(UNIX98_PTY, 1, "") |
72 | AC_MSG_RESULT(yes)], |
73 | AC_MSG_RESULT(yes)], |
73 | [AC_MSG_RESULT(no)]) |
74 | [AC_MSG_RESULT(no)]) |
74 | fi |
75 | fi |
… | |
… | |
116 | updwtmp \ |
117 | updwtmp \ |
117 | updwtmpx \ |
118 | updwtmpx \ |
118 | updlastlogx \ |
119 | updlastlogx \ |
119 | ) |
120 | ) |
120 | |
121 | |
121 | AC_CHECK_HEADERS( \ |
122 | AC_CHECK_HEADERS(lastlog.h) |
122 | utmp.h \ |
|
|
123 | utmpx.h \ |
|
|
124 | lastlog.h \ |
|
|
125 | ) |
|
|
126 | |
123 | |
127 | dnl# -------------------------------------------------------------------------- |
124 | dnl# -------------------------------------------------------------------------- |
128 | dnl# DO ALL UTMP AND WTMP CHECKING |
125 | dnl# DO ALL UTMP AND WTMP CHECKING |
129 | dnl# -------------------------------------------------------------------------- |
126 | dnl# -------------------------------------------------------------------------- |
130 | dnl# check for host field in utmp structure |
127 | dnl# check for host field in utmp structure |
131 | |
128 | |
132 | dnl# -------------------------------------------- |
129 | dnl# -------------------------------------------- |
133 | AC_CHECK_HEADER(utmp.h, |
130 | AC_CHECK_HEADERS(utmp.h, |
134 | [AC_CACHE_CHECK([for struct utmp], struct_utmp, |
131 | [AC_CACHE_CHECK([for struct utmp], struct_utmp, |
135 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
132 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
136 | #include <utmp.h>]], [[struct utmp ut;]])],[struct_utmp=yes],[struct_utmp=no])]) |
133 | #include <utmp.h>]], [[struct utmp ut;]])],[struct_utmp=yes],[struct_utmp=no])]) |
137 | if test x$struct_utmp = xyes; then |
134 | if test x$struct_utmp = xyes; then |
138 | AC_DEFINE(HAVE_STRUCT_UTMP, 1, Define if utmp.h has struct utmp) |
135 | AC_DEFINE(HAVE_STRUCT_UTMP, 1, Define if utmp.h has struct utmp) |
… | |
… | |
150 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
147 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
151 | #include <utmp.h>]], [[struct utmp ut; ut.ut_pid;]])],[struct_utmp_pid=yes],[struct_utmp_pid=no])]) |
148 | #include <utmp.h>]], [[struct utmp ut; ut.ut_pid;]])],[struct_utmp_pid=yes],[struct_utmp_pid=no])]) |
152 | if test x$struct_utmp_pid = xyes; then |
149 | if test x$struct_utmp_pid = xyes; then |
153 | AC_DEFINE(HAVE_UTMP_PID, 1, Define if struct utmp contains ut_pid) |
150 | AC_DEFINE(HAVE_UTMP_PID, 1, Define if struct utmp contains ut_pid) |
154 | fi |
151 | fi |
155 | ) dnl# AC_CHECK_HEADER(utmp.h |
152 | ) dnl# AC_CHECK_HEADERS(utmp.h |
156 | |
153 | |
157 | dnl# -------------------------------------------- |
154 | dnl# -------------------------------------------- |
158 | |
155 | |
159 | AC_CHECK_HEADER(utmpx.h, |
156 | AC_CHECK_HEADERS(utmpx.h, |
160 | [AC_CACHE_CHECK([for struct utmpx], struct_utmpx, |
157 | [AC_CACHE_CHECK([for struct utmpx], struct_utmpx, |
161 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
158 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
162 | #include <utmpx.h>]], [[struct utmpx ut;]])],[struct_utmpx=yes],[struct_utmpx=no])]) |
159 | #include <utmpx.h>]], [[struct utmpx ut;]])],[struct_utmpx=yes],[struct_utmpx=no])]) |
163 | if test x$struct_utmpx = xyes; then |
160 | if test x$struct_utmpx = xyes; then |
164 | AC_DEFINE(HAVE_STRUCT_UTMPX, 1, Define if utmpx.h has struct utmpx) |
161 | AC_DEFINE(HAVE_STRUCT_UTMPX, 1, Define if utmpx.h has struct utmpx) |
… | |
… | |
171 | if test x$struct_utmpx_host = xyes; then |
168 | if test x$struct_utmpx_host = xyes; then |
172 | AC_DEFINE(HAVE_UTMPX_HOST, 1, Define if struct utmpx contains ut_host) |
169 | AC_DEFINE(HAVE_UTMPX_HOST, 1, Define if struct utmpx contains ut_host) |
173 | fi |
170 | fi |
174 | |
171 | |
175 | AC_CACHE_CHECK(for session in utmpx struct, struct_utmpx_session, |
172 | AC_CACHE_CHECK(for session in utmpx struct, struct_utmpx_session, |
176 | [AC_TRY_COMPILE([#include <sys/types.h> |
173 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
177 | #include <utmpx.h>], |
174 | #include <utmpx.h>]], [[struct utmpx utx; utx.ut_session;]])],[struct_utmpx_session=yes],[struct_utmpx_session=no])]) |
178 | [struct utmpx utx; utx.ut_session;], |
|
|
179 | struct_utmpx_session=yes, struct_utmpx_session=no)]) |
|
|
180 | if test x$struct_utmpx_session = xyes; then |
175 | if test x$struct_utmpx_session = xyes; then |
181 | AC_DEFINE(HAVE_UTMPX_SESSION, 1, Define if struct utmpx contains ut_session) |
176 | AC_DEFINE(HAVE_UTMPX_SESSION, 1, Define if struct utmpx contains ut_session) |
182 | fi |
177 | fi |
183 | ) dnl# AC_CHECK_HEADER(utmpx.h |
178 | ) dnl# AC_CHECK_HEADERS(utmpx.h |
184 | |
179 | |
185 | dnl# -------------------------------------------------------------------------- |
180 | dnl# -------------------------------------------------------------------------- |
186 | dnl# check for struct lastlog |
181 | dnl# check for struct lastlog |
187 | AC_CACHE_CHECK(for struct lastlog, struct_lastlog, |
182 | AC_CACHE_CHECK(for struct lastlog, struct_lastlog, |
188 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
183 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
… | |
… | |
444 | ]) |
439 | ]) |
445 | |
440 | |
446 | AC_DEFUN([SCM_RIGHTS_CHECK], |
441 | AC_DEFUN([SCM_RIGHTS_CHECK], |
447 | [ |
442 | [ |
448 | AC_CACHE_CHECK(for unix-compliant filehandle passing ability, can_pass_fds, |
443 | AC_CACHE_CHECK(for unix-compliant filehandle passing ability, can_pass_fds, |
449 | [AC_TRY_LINK([ |
444 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ |
450 | #include <cstddef> // broken bsds (is that redundant?) need this |
445 | #include <cstddef> // broken bsds (is that redundant?) need this |
451 | #include <sys/types.h> |
446 | #include <sys/types.h> |
452 | #include <sys/socket.h> |
447 | #include <sys/socket.h> |
453 | #include <sys/uio.h> |
448 | #include <sys/uio.h> |
454 | ],[ |
449 | ]], [[ |
455 | { |
450 | { |
456 | msghdr msg; |
451 | msghdr msg; |
457 | iovec iov; |
452 | iovec iov; |
458 | char buf [100]; |
453 | char buf [100]; |
459 | char data = 0; |
454 | char data = 0; |
… | |
… | |
473 | |
468 | |
474 | *(int *)CMSG_DATA (cmsg) = 5; |
469 | *(int *)CMSG_DATA (cmsg) = 5; |
475 | |
470 | |
476 | return sendmsg (3, &msg, 0); |
471 | return sendmsg (3, &msg, 0); |
477 | } |
472 | } |
478 | ],[can_pass_fds=yes],[can_pass_fds=no])]) |
473 | ]])],[can_pass_fds=yes],[can_pass_fds=no])]) |
479 | if test x$can_pass_fds = xyes; then |
474 | if test x$can_pass_fds = xyes; then |
480 | AC_DEFINE(HAVE_UNIX_FDPASS, 1, Define if sys/socket.h defines the necessary macros/functions for file handle passing) |
475 | AC_DEFINE(HAVE_UNIX_FDPASS, 1, Define if sys/socket.h defines the necessary macros/functions for file handle passing) |
481 | else |
476 | else |
482 | AC_MSG_ERROR([libptytty requires unix-compliant filehandle passing ability]) |
477 | AC_MSG_ERROR([libptytty requires unix-compliant filehandle passing ability]) |
483 | fi |
478 | fi |
484 | ]) |
479 | ]) |
485 | |
480 | |
486 | AC_DEFUN([TTY_GROUP_CHECK], |
481 | AC_DEFUN([TTY_GROUP_CHECK], |
487 | [ |
482 | [ |
488 | AC_CACHE_CHECK([for tty group], tty_group, |
483 | AC_CACHE_CHECK([for tty group], tty_group, |
489 | [AC_TRY_RUN([ |
484 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ |
490 | #include <sys/types.h> |
485 | #include <sys/types.h> |
491 | #include <sys/stat.h> |
486 | #include <sys/stat.h> |
492 | #include <unistd.h> |
487 | #include <unistd.h> |
493 | #include <grp.h> |
488 | #include <grp.h> |
494 | |
489 | |
… | |
… | |
504 | && (stat(tty, &st)) == 0 |
499 | && (stat(tty, &st)) == 0 |
505 | && st.st_gid == gr->gr_gid) |
500 | && st.st_gid == gr->gr_gid) |
506 | return 0; |
501 | return 0; |
507 | else |
502 | else |
508 | return 1; |
503 | return 1; |
509 | }], |
|
|
510 | [tty_group=yes],[tty_group=no],[tty_group=no])]) |
504 | }]])],[tty_group=yes],[tty_group=no],[tty_group=no])]) |
511 | if test x$tty_group = xyes; then |
505 | if test x$tty_group = xyes; then |
512 | AC_DEFINE(TTY_GID_SUPPORT, 1, "") |
506 | AC_DEFINE(TTY_GID_SUPPORT, 1, "") |
513 | fi]) |
507 | fi]) |
514 | |
508 | |