]> andersk Git - openssh.git/commitdiff
- Added support for directory-based lastlogs
authordamien <damien>
Sun, 2 Jan 2000 00:45:33 +0000 (00:45 +0000)
committerdamien <damien>
Sun, 2 Jan 2000 00:45:33 +0000 (00:45 +0000)
 - Really fix typedefs, patch from Ben Taylor <bent@clark.net>
 - Prevent multiple inclusion of config.h and defines.h. Suggested
   by Andre Lucas <andre.lucas@dial.pipex.com>

ChangeLog
acconfig.h
bsd-misc.c
configure.in
defines.h
login.c

index f68458ca2791cfe06457eb6338364bd82f3402e6..04b200dca642575850c9fd48a4f950149b6d9780 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
  - Really fix broken default path. Fix from Jim Knoble 
    <jmknoble@pobox.com>
  - Remove test for quad_t. No longer needed.
+ - Released 1.2.1pre24
+
+ - Added support for directory-based lastlogs
+ - Really fix typedefs, patch from Ben Taylor <bent@clark.net>
+ - Prevent multiple inclusion of config.h and defines.h. Suggested
+   by Andre Lucas <andre.lucas@dial.pipex.com>
 
 19991230
  - OpenBSD CVS updates:
index 91eb43afaae9b99eb36811f6fe8b1dc638aeaf0c..c66983e6990c8a351e8029351439ead542baad75 100644 (file)
@@ -1,3 +1,6 @@
+#ifndef _CONFIG_H
+#define _CONFIG_H
+
 /* Generated automatically from acconfig.h by autoheader. */
 /* Please make your changes there */
 
 /* ******************* Shouldn't need to edit below this line ************** */
 
 #include "defines.h"
+
+#endif _CONFIG_H
index 0ffe5168ba4160522df8148ef42d18fafcf92099..a4dafb9d9b1dab8332e481e649d6f029c762ed21 100644 (file)
@@ -33,6 +33,8 @@
 **
 */
 
+#include "config.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -47,7 +49,6 @@
 
 #include "xmalloc.h"
 #include "ssh.h"
-#include "config.h"
 #include "bsd-misc.h"
 
 #ifndef offsetof
index 8b3af35f8745f88a57458902207afc5463bc1d5b..34c4dfaf37ce882b4c48aa1038446c5a0d6455b3 100644 (file)
@@ -354,8 +354,6 @@ AC_ARG_WITH(lastlog,
                        if test "x$gotlastlog" = "xdir" ; then
                                AC_MSG_RESULT(${lastlog}/)
                                AC_DEFINE(LASTLOG_IS_DIR)
-                               AC_MSG_WARN([*** Directory-based lastlogs are not yet supported ***])
-                               nolastlog=1
                        else
                                AC_MSG_RESULT($lastlog)
                                AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$lastlog")
index 2a265595386afeeee463ba9d16660b497aaa3539..40c1a3eadffd1f224152b725364d2725f51e4353 100644 (file)
--- a/defines.h
+++ b/defines.h
@@ -1,3 +1,6 @@
+#ifndef _DEFINES_H
+#define _DEFINES_H
+
 /* Necessary headers */
 
 #include <sys/types.h> /* For u_intXX_t */
@@ -61,7 +64,7 @@ typedef long int int64_t;
 # else
 #  if (SIZEOF_LONG_LONG_INT == 8)
 typedef long long int int64_t;
-#   define HAVE_INTXX_T
+#   define HAVE_INTXX_T 1
 #  else
 #   error "64 bit int type not found."
 #  endif
@@ -74,6 +77,7 @@ typedef long long int int64_t;
 typedef uint16_t u_int16_t;
 typedef uint32_t u_int32_t;
 typedef  uint64_t u_int64_t;
+# define HAVE_U_INTXX_T 1
 # else
 #  if (SIZEOF_SHORT_INT == 2)
 typedef unsigned short int u_int16_t;
@@ -90,7 +94,7 @@ typedef unsigned long int u_int64_t;
 #  else
 #   if (SIZEOF_LONG_LONG_INT == 8)
 typedef unsigned long long int u_int64_t;
-#    define HAVE_U_INTXX_T
+#    define HAVE_U_INTXX_T 1
 #   else
 #    error "64 bit int type not found."
 #   endif
@@ -224,3 +228,4 @@ typedef unsigned int size_t;
 # define PAM_STRERROR(a,b) pam_strerror((a),(b))
 #endif
 
+#endif /* _DEFINES_H */
diff --git a/login.c b/login.c
index fc3eef12a2c6b93a708ffd673471b0bb666abe22..f0cc61d1ac08d43662b70d18aca9f9c761b86cce 100644 (file)
--- a/login.c
+++ b/login.c
@@ -57,14 +57,24 @@ get_last_login_time(uid_t uid, const char *logname,
        struct lastlog ll;
        char *lastlog;
        int fd;
+#ifdef LASTLOG_IS_DIR
+       char buf[1024];
+#endif /* LASTLOG_IS_DIR */
 
        lastlog = _PATH_LASTLOG;
        buf[0] = '\0';
 
+#ifdef LASTLOG_IS_DIR
        fd = open(lastlog, O_RDONLY);
        if (fd < 0)
                return 0;
        lseek(fd, (off_t) ((long) uid * sizeof(ll)), SEEK_SET);
+#else /* LASTLOG_IS_DIR */
+       snprintf(buf, sizeof(buf), "%s/%s", lastlog, logname);
+       fd = open(buf, O_RDONLY);
+       if (fd < 0)
+               return 0;
+#endif /* LASTLOG_IS_DIR */
        if (read(fd, &ll, sizeof(ll)) != sizeof(ll)) {
                close(fd);
                return 0;
@@ -132,6 +142,9 @@ record_login(int pid, const char *ttyname, const char *user, uid_t uid,
 #if defined(_PATH_LASTLOG) && !defined(DISABLE_LASTLOG)
        struct lastlog ll;
        char *lastlog;
+#ifdef LASTLOG_IS_DIR
+       char buf[1024];
+#endif /* LASTLOG_IS_DIR */
 #endif /* defined(_PATH_LASTLOG) && !defined(DISABLE_LASTLOG) */
        struct utmp u;
 #if defined(HAVE_UTMPX_H) && defined(USE_UTMPX)
@@ -207,9 +220,15 @@ record_login(int pid, const char *ttyname, const char *user, uid_t uid,
                ll.ll_time = time(NULL);
                strncpy(ll.ll_line, ttyname + 5, sizeof(ll.ll_line));
                strncpy(ll.ll_host, host, sizeof(ll.ll_host));
+#ifdef LASTLOG_IS_DIR
+               snprintf(buf, sizeof(buf), "%s/%s", lastlog, logname);
+               fd = open(buf, O_RDWR);
+               if (fd >= 0) {
+#else /* LASTLOG_IS_DIR */
                fd = open(lastlog, O_RDWR);
                if (fd >= 0) {
                        lseek(fd, (off_t) ((long) uid * sizeof(ll)), SEEK_SET);
+#endif /* LASTLOG_IS_DIR */
                        if (write(fd, &ll, sizeof(ll)) != sizeof(ll))
                                log("Could not write %.100s: %.100s", lastlog, strerror(errno));
                        close(fd);
This page took 0.055201 seconds and 5 git commands to generate.