]> andersk Git - openssh.git/blobdiff - configure.in
Added new login recording code
[openssh.git] / configure.in
index 86284aa220858f92388bd342cbcc2555b5e6d38e..8bb647c1257887dcdf86a1a58e6c678ee0674f5d 100644 (file)
@@ -43,7 +43,6 @@ case "$host" in
        fi
        CFLAGS="$CFLAGS -D_HPUX_SOURCE"
        AC_DEFINE(IPADDR_IN_DISPLAY)
-       AC_DEFINE(USE_UTMPX)
        AC_MSG_CHECKING(for HPUX trusted system password database)
        if test -f /tcb/files/auth/system/default; then
                AC_MSG_RESULT(yes)
@@ -63,7 +62,6 @@ case "$host" in
        fi
        CFLAGS="$CFLAGS -D_HPUX_SOURCE"
        AC_DEFINE(IPADDR_IN_DISPLAY)
-       AC_DEFINE(USE_UTMPX)
        AC_MSG_CHECKING(for HPUX trusted system password database)
        if test -f /tcb/files/auth/system/default; then
                AC_MSG_RESULT(yes)
@@ -104,7 +102,8 @@ case "$host" in
        CFLAGS="$CFLAGS -I/usr/local/include"
        LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib -L/usr/ucblib -R/usr/ucblib"
        need_dash_r=1
-       AC_DEFINE(USE_UTMPX)
+       # hardwire lastlog location (can't detect it on some versions)
+       conf_lastlog_location="/var/adm/lastlog"
        ;;
 *-*-sunos4*)
        CFLAGS="$CFLAGS -DSUNOS4"
@@ -113,7 +112,6 @@ case "$host" in
 *-*-sysv*)
        CFLAGS="$CFLAGS -I/usr/local/include"
        LDFLAGS="$LDFLAGS -L/usr/local/lib"
-       AC_DEFINE(USE_UTMPX)
        MANTYPE='$(CATMAN)'
        mansubdir=cat
        LIBS="$LIBS -lgen -lsocket"
@@ -132,10 +130,20 @@ if test -z "$no_libnsl" ; then
 fi
 
 # Checks for header files.
-AC_CHECK_HEADERS(bstring.h endian.h lastlog.h login.h maillock.h netdb.h netgroup.h netinet/in_systm.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stropts.h sys/sysmacros.h sys/time.h sys/ttcompat.h stddef.h util.h utmp.h utmpx.h)
+AC_CHECK_HEADERS(bstring.h endian.h lastlog.h login.h maillock.h netdb.h netgroup.h netinet/in_systm.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stropts.h sys/sysmacros.h sys/time.h sys/ttcompat.h stddef.h time.h util.h utmp.h utmpx.h)
 
 # Checks for library functions.
-AC_CHECK_FUNCS(arc4random atexit b64_ntop bcopy bindresvport_af clock freeaddrinfo gai_strerror getaddrinfo getnameinfo getrusage innetgr md5_crypt memmove mkdtemp on_exit openpty pututline pututxline rresvport_af setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmp updwtmpx vsnprintf vhangup _getpty __b64_ntop)
+AC_CHECK_FUNCS(arc4random atexit b64_ntop bcopy bindresvport_af clock freeaddrinfo gai_strerror getaddrinfo getnameinfo getrusage innetgr md5_crypt memmove mkdtemp on_exit openpty rresvport_af setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy vsnprintf vhangup _getpty __b64_ntop)
+dnl    checks for time functions
+AC_CHECK_FUNCS(gettimeofday time)
+dnl    checks for libutil functions
+AC_CHECK_FUNCS(login logout updwtmp logwtmp)
+dnl    checks for utmp functions
+AC_CHECK_FUNCS(entutent getutent getutid getutline pututline setutent)
+AC_CHECK_FUNCS(utmpname)
+dnl    checks for utmpx functions
+AC_CHECK_FUNCS(entutxent getutxent getutxid getutxline pututxline )
+AC_CHECK_FUNCS(setutxent utmpxname)
 
 AC_CHECK_FUNC(login, 
        [AC_DEFINE(HAVE_LOGIN)],
@@ -501,6 +509,11 @@ OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmp.h, HAVE_ADDR_IN_UTMP)
 OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmpx.h, HAVE_ADDR_IN_UTMPX)
 OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmp.h, HAVE_ADDR_V6_IN_UTMP)
 OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmpx.h, HAVE_ADDR_V6_IN_UTMPX)
+OSSH_CHECK_HEADER_FOR_FIELD(ut_exit, utmp.h, HAVE_EXIT_IN_UTMP)
+OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP)
+OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX)
+OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX)
+
 
 
 AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
@@ -590,48 +603,6 @@ if test ! -z "$MAIL" ; then
        AC_DEFINE_UNQUOTED(MAIL_DIRECTORY, "$maildir")
 fi
 
-# Look for lastlog location
-AC_ARG_WITH(lastlog,
-       [  --with-lastlog=FILE     Location of lastlog file],
-       [
-               if test "x$withval" = "xno" ; then
-                       AC_DEFINE(DISABLE_LASTLOG)
-               else
-                       AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$withval")
-               fi
-       ],
-       [
-               AC_MSG_CHECKING([location of lastlog file])
-               for lastlog in /var/log/lastlog /var/adm/lastlog /usr/adm/lastlog  /etc/security/lastlog ; do
-                       if test -f $lastlog ; then
-                               gotlastlog="file"
-                               break
-                       fi
-                       if test -d $lastlog ; then
-                               gotlastlog="dir"
-                               break
-                       fi
-               done
-               if test -z "$gotlastlog" ; then
-                       AC_MSG_RESULT(not found)
-                       nolastlog=1
-               else
-                       if test "x$gotlastlog" = "xdir" ; then
-                               AC_MSG_RESULT(${lastlog}/)
-                               AC_DEFINE(LASTLOG_IS_DIR)
-                       else
-                               AC_MSG_RESULT($lastlog)
-                               AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$lastlog")
-                       fi
-               fi      
-       ]
-)
-
-if test ! -z "$nolastlog" ; then
-       AC_MSG_WARN([*** Disabling lastlog support *** ])
-       AC_DEFINE(DISABLE_LASTLOG)
-fi
-
 if test -z "$no_dev_ptmx" ; then
        AC_CHECK_FILE("/dev/ptmx", 
                [
@@ -838,16 +809,6 @@ AC_ARG_WITH(md5-passwords,
        ]
 )
 
-# Check whether to enable utmpx support
-AC_ARG_WITH(utmpx,
-       [  --with-utmpx            Enable utmpx support],
-       [
-               if test "x$withval" != "xno" ; then
-                       AC_DEFINE(USE_UTMPX)
-               fi
-       ]
-)
-
 # Whether to disable shadow password support
 AC_ARG_WITH(shadow,
        [  --without-shadow        Disable shadow password support],
@@ -922,6 +883,197 @@ AC_ARG_WITH(pid-dir,
 AC_DEFINE_UNQUOTED(PIDDIR, "$piddir")
 AC_SUBST(piddir)
 
+dnl allow user to disable some login recording features
+AC_ARG_ENABLE(lastlog,
+       [ --disable-lastlog        disable use of lastlog even if detected [no]],
+       [ AC_DEFINE(DISABLE_LASTLOG) ]
+)
+AC_ARG_ENABLE(utmp,
+       [ --disable-utmp           disable use of utmp even if detected [no]],
+       [ AC_DEFINE(DISABLE_UTMP) ]
+)
+AC_ARG_ENABLE(utmpx,
+       [ --disable-utmpx          disable use of utmpx even if detected [no]],
+       [ AC_DEFINE(DISABLE_UTMPX) ]
+)
+AC_ARG_ENABLE(wtmp,
+       [ --disable-wtmp           disable use of wtmp even if detected [no]],
+       [ AC_DEFINE(DISABLE_WTMP) ]
+)
+AC_ARG_ENABLE(wtmpx,
+       [ --disable-wtmpx          disable use of wtmpx even if detected [no]],
+       [ AC_DEFINE(DISABLE_WTMPX) ]
+)
+AC_ARG_ENABLE(libutil,
+       [ --disable-libutil        disable use of libutil (login() etc.) [no]],
+       [ AC_DEFINE(DISABLE_LOGIN) ]
+)
+AC_ARG_ENABLE(pututline,
+       [ --disable-pututline      disable use of pututline() etc. ([uw]tmp) [no]],
+       [ AC_DEFINE(DISABLE_PUTUTLINE) ]
+)
+AC_ARG_ENABLE(pututxline,
+       [ --disable-pututxline      disable use of pututxline() etc. ([uw]tmpx) [no]],
+       [ AC_DEFINE(DISABLE_PUTUTXLINE) ]
+)
+AC_ARG_WITH(lastlog,
+  [ --with-lastlog=FILE|DIR  specify lastlog location [common locations]],
+  [ conf_lastlog_location="$withval";  ],)
+
+dnl lastlog, [uw]tmpx? detection
+dnl  NOTE: set the paths in the platform section to avoid the
+dnl   need for command-line parameters
+dnl lastlog and [uw]tmp are subject to a file search if all else fails
+
+dnl lastlog detection
+dnl  NOTE: the code itself will detect if lastlog is a directory
+AC_MSG_CHECKING([if your system defines LASTLOG_FILE])
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <utmp.h>
+#ifdef HAVE_LASTLOG_H
+#  include <lastlog.h>
+#endif
+#ifdef PATHS_H
+#  include <paths.h>
+#endif
+       ],
+       [ char *lastlog = LASTLOG_FILE; ],
+       [ AC_MSG_RESULT(yes) ],
+       [ AC_MSG_RESULT(no)
+         system_lastlog_path=no ]
+)
+if test -z "$conf_lastlog_location"; then
+       if test x"$system_lastlog_path" = x"no" ; then
+               for f in /var/log/lastlog /usr/adm/lastlog /var/adm/lastlog /etc/security/lastlog ; do
+                               if test -e $f ; then
+                                       conf_lastlog_location=$f
+                               fi
+               done
+               if test -z "$conf_lastlog_location"; then
+                       AC_MSG_WARN([** Cannot find lastlog - disabling feature **])
+                       AC_DEFINE(DISABLE_LASTLOG)
+               fi
+       fi
+fi
+
+if test -n "$conf_lastlog_location"; then
+       AC_DEFINE_UNQUOTED(CONF_LASTLOG_FILE, "$conf_lastlog_location")
+fi     
+
+dnl utmp detection
+AC_MSG_CHECKING([if your system defines UTMP_FILE])
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <utmp.h>
+#ifdef PATHS_H
+#  include <paths.h>
+#endif
+       ],
+       [ char *utmp = UTMP_FILE; ],
+       [ AC_MSG_RESULT(yes) ],
+       [ AC_MSG_RESULT(no)
+         system_utmp_path=no ]
+)
+if test -z "$conf_utmp_location"; then
+       if test x"$system_utmp_path" = x"no" ; then
+               for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
+                       if test -f $f ; then
+                               conf_utmp_location=$f
+                       fi
+               done
+               if test -z "$conf_utmp_location"; then
+                       AC_DEFINE(DISABLE_UTMP)
+               fi
+       fi
+fi
+if test -n "$conf_utmp_location"; then
+       AC_DEFINE_UNQUOTED(CONF_UTMP_FILE, "$conf_utmp_location")
+fi     
+
+dnl wtmp detection
+AC_MSG_CHECKING([if your system defines WTMP_FILE])
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <utmp.h>
+#ifdef PATHS_H
+#  include <paths.h>
+#endif
+       ],
+       [ char *wtmp = WTMP_FILE; ],
+       [ AC_MSG_RESULT(yes) ],
+       [ AC_MSG_RESULT(no)
+         system_wtmp_path=no ]
+)
+if test -z "$conf_wtmp_location"; then
+       if test x"$system_wtmp_path" = x"no" ; then
+               for f in /usr/adm/wtmp /var/log/wtmp; do
+                       if test -f $f ; then
+                               conf_wtmp_location=$f
+                       fi
+               done
+               if test -z "$conf_wtmp_location"; then
+                       AC_DEFINE(DISABLE_WTMP)
+               fi
+       fi
+fi
+if test -n "$conf_wtmp_location"; then
+       AC_DEFINE_UNQUOTED(CONF_WTMP_FILE, "$conf_wtmp_location")
+fi     
+
+
+dnl utmpx detection - I don't know any system so perverse as to require
+dnl  utmpx, but not define UTMPX_FILE (ditto wtmpx.) No doubt it's out
+dnl  there, though.
+AC_MSG_CHECKING([if your system defines UTMPX_FILE])
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <utmp.h>
+#ifdef HAVE_UTMPX_H
+#include <utmpx.h>
+#endif
+#ifdef PATHS_H
+#  include <paths.h>
+#endif
+       ],
+       [ char *utmpx = UTMPX_FILE; ],
+       [ AC_MSG_RESULT(yes) ],
+       [ AC_MSG_RESULT(no)
+         system_utmpx_path=no ]
+)
+if test -z "$conf_utmpx_location"; then
+       if test x"$system_utmpx_path" = x"no" ; then
+               AC_DEFINE(DISABLE_UTMPX)
+       fi
+else
+       AC_DEFINE_UNQUOTED(CONF_UTMPX_FILE, "$conf_utmpx_location")
+fi     
+
+dnl wtmpx detection
+AC_MSG_CHECKING([if your system defines WTMPX_FILE])
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <utmp.h>
+#ifdef HAVE_UTMPX_H
+#include <utmpx.h>
+#endif
+#ifdef PATHS_H
+#  include <paths.h>
+#endif
+       ],
+       [ char *wtmpx = WTMPX_FILE; ],
+       [ AC_MSG_RESULT(yes) ],
+       [ AC_MSG_RESULT(no)
+         system_wtmpx_path=no ]
+)
+if test -z "$conf_wtmpx_location"; then
+       if test x"$system_wtmpx_path" = x"no" ; then
+               AC_DEFINE(DISABLE_WTMPX)
+       fi
+else
+       AC_DEFINE_UNQUOTED(CONF_WTMPX_FILE, "$conf_wtmpx_location")
+fi     
+
 
 # Change default command timeout for builtin PRNG
 entropy_timeout=100
This page took 0.061348 seconds and 4 git commands to generate.