libutil.h \
sys/ioctl.h \
sys/stropts.h \
+ stropts.h \
)
AC_CHECK_FUNCS( \
getpt \
posix_openpt \
isastream \
+ setuid \
+ seteuid \
+ setreuid \
+ setresuid \
)
have_clone=no
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 <stdlib.h>],
- [grantpt(0);unlockpt(0);ptsname(0);],
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h>]],
+ [[grantpt(0);unlockpt(0);ptsname(0);]])],
[unix98_pty=yes
AC_DEFINE(UNIX98_PTY, 1, "")
AC_MSG_RESULT(yes)],
AC_DEFUN([UTMP_CHECK],
[
+support_utmp=yes
+support_wtmp=yes
+support_lastlog=yes
+
+AC_ARG_ENABLE(utmp,
+ [AS_HELP_STRING([--enable-utmp],[enable utmp (utmpx) support])],
+ [if test x$enableval = xyes -o x$enableval = xno; then
+ support_utmp=$enableval
+ fi])
+
+AC_ARG_ENABLE(wtmp,
+ [AS_HELP_STRING([--enable-wtmp],[enable wtmp (wtmpx) support (requires --enable-utmp)])],
+ [if test x$enableval = xyes -o x$enableval = xno; then
+ support_wtmp=$enableval
+ fi])
+
+AC_ARG_ENABLE(lastlog,
+ [AS_HELP_STRING([--enable-lastlog],[enable lastlog support (requires --enable-utmp)])],
+ [if test x$enableval = xyes -o x$enableval = xno; then
+ support_lastlog=$enableval
+ fi])
+
+if test x$support_utmp = xyes; then
+ AC_DEFINE(UTMP_SUPPORT, 1, Define if you want to have utmp/utmpx support)
+fi
+if test x$support_wtmp = xyes; then
+ AC_DEFINE(WTMP_SUPPORT, 1, Define if you want to have wtmp support when utmp/utmpx is enabled)
+fi
+if test x$support_lastlog = xyes; then
+ AC_DEFINE(LASTLOG_SUPPORT, 1, Define if you want to have lastlog support when utmp/utmpx is enabled)
+fi
+
AC_CHECK_FUNCS( \
- ttyslot \
updwtmp \
updwtmpx \
+ updlastlogx \
)
-AC_CHECK_HEADERS( \
- utmp.h \
- utmpx.h \
- lastlog.h \
-)
+AC_CHECK_HEADERS(lastlog.h)
dnl# --------------------------------------------------------------------------
dnl# DO ALL UTMP AND WTMP CHECKING
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 <sys/types.h>
#include <utmp.h>]], [[struct utmp ut;]])],[struct_utmp=yes],[struct_utmp=no])])
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 <sys/types.h>
#include <utmpx.h>]], [[struct utmpx ut;]])],[struct_utmpx=yes],[struct_utmpx=no])])
fi
AC_CACHE_CHECK(for session in utmpx struct, struct_utmpx_session,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <utmpx.h>],
-[struct utmpx utx; utx.ut_session;],
-struct_utmpx_session=yes, struct_utmpx_session=no)])
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
+#include <utmpx.h>]], [[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
dnl# find utmp
AC_CACHE_CHECK(where utmp is located, path_utmp,
[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
+#include <stdlib.h>
#include <sys/types.h>
#include <utmp.h>
#include <errno.h>
dnl# a day newer, then dump the utmpx. People leave lots of junk around.
AC_CACHE_CHECK(where utmpx is located, path_utmpx,
[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
+#include <stdlib.h>
#include <sys/types.h>
#include <utmpx.h>
#include <errno.h>
dnl# find wtmp
AC_CACHE_CHECK(where wtmp is located, path_wtmp,
[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
+#include <stdlib.h>
#include <sys/types.h>
#ifdef HAVE_UTMP_H
#include <utmp.h>
main()
{
char **w, *wtmplist[] = {
- "/var/log/wtmp", "/var/adm/wtmp", "/etc/wtmp", "/usr/etc/wtmp", "/usr/adm/wtmp", NULL };
+ "/var/log/wtmp", "/var/adm/wtmp", "/etc/wtmp", "/usr/etc/wtmp", "/usr/adm/wtmp", NULL };
FILE *a, *f=fopen("conftestval", "w");
if (!f) exit(1);
#ifdef WTMP_FILE
dnl# find wtmpx
AC_CACHE_CHECK(where wtmpx is located, path_wtmpx,
[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
+#include <stdlib.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#endif
main()
{
char **w, *wtmplist[] = {
- "/var/log/wtmpx", "/var/adm/wtmpx", NULL };
+ "/var/log/wtmpx", "/var/adm/wtmpx", NULL };
FILE *a, *f=fopen("conftestval", "w");
if (!f) exit(1);
#ifdef WTMPX_FILE
dnl# find lastlog
AC_CACHE_CHECK(where lastlog is located, path_lastlog,
[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
+#include <stdlib.h>
#include <sys/types.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
AC_MSG_WARN(Define LASTLOG_FILE in config.h manually)])])
if test x$path_lastlog != x; then
AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$path_lastlog", Define location of lastlog)
- if test -d "$path_lastlog"; then
- AC_DEFINE(LASTLOG_IS_DIR, 1, Define if lastlog is provided via a directory)
- fi
fi
dnl# --------------------------------------------------------------------------
dnl# find lastlogx
AC_CACHE_CHECK(where lastlogx is located, path_lastlogx,
[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
+#include <stdlib.h>
#ifdef HAVE_UTMPX_H
#include <utmpx.h>
#endif
AC_DEFUN([SCM_RIGHTS_CHECK],
[
AC_CACHE_CHECK(for unix-compliant filehandle passing ability, can_pass_fds,
-[AC_TRY_LINK([
-#include <cstddef> // broken bsds (is that redundant) need this
+[AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <cstddef> // broken bsds (is that redundant?) need this
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/uio.h>
-],[
+]], [[
{
msghdr msg;
iovec iov;
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
AC_DEFUN([TTY_GROUP_CHECK],
[
AC_CACHE_CHECK([for tty group], tty_group,
-[AC_TRY_RUN([
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
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])