- stevesk@cvs.openbsd.org 2001/02/04 08:32:27
     [many files; did this manually to our top-level source dir]
     unexpand and remove end-of-line whitespace; ok markus@
diff --git a/loginrec.c b/loginrec.c
index dc723f7..d748332 100644
--- a/loginrec.c
+++ b/loginrec.c
@@ -30,7 +30,7 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-/** 
+/**
  ** loginrec.c:  platform-independent login recording and lastlog retrieval
  **/
 
@@ -63,7 +63,7 @@
   requires very thorough testing so we do not corrupt local auditing
   information. These files and their access methods are very system
   specific indeed.
-  
+
   For utmpx systems, the corresponding library functions are
   setutxent() etc. To the author's knowledge, all utmpx systems have
   these library functions and so no direct write is attempted. If such
@@ -82,14 +82,14 @@
 
   Calling the new code
   --------------------
-  
+
   In OpenSSH all login recording and retrieval is performed in
   login.c. Here you'll find working examples. Also, in the logintest.c
   program there are more examples.
 
   Internal handler calling method
   -------------------------------
-  
+
   When a call is made to login_login() or login_logout(), both
   routines set a struct logininfo flag defining which action (log in,
   or log out) is to be taken. They both then call login_write(), which
@@ -127,7 +127,7 @@
   with 'make logintest' as it's not built by default.)
 
   Otherwise, patches to the specific method(s) are very helpful!
-  
+
 */
 
 /**
@@ -163,7 +163,7 @@
 #include "log.h"
 #include "atomicio.h"
 
-RCSID("$Id: loginrec.c,v 1.30 2001/01/22 05:34:42 mouring Exp $");
+RCSID("$Id: loginrec.c,v 1.31 2001/02/05 12:42:17 stevesk Exp $");
 
 #ifdef HAVE_UTIL_H
 #  include <util.h>
@@ -207,7 +207,7 @@
  **/
 
 /* login_login(struct logininfo *)     -Record a login
- * 
+ *
  * Call with a pointer to a struct logininfo initialised with
  * login_init_entry() or login_alloc_entry()
  *
@@ -287,17 +287,17 @@
 	memset(li, '\0', sizeof(*li));
 	li->uid = uid;
 
-	/* 
+	/*
 	 * If we don't have a 'real' lastlog, we need the username to
 	 * reliably search wtmp(x) for the last login (see
-	 * wtmp_get_entry().) 
+	 * wtmp_get_entry().)
 	 */
 	pw = getpwuid(uid);
 	if (pw == NULL)
 		fatal("login_get_lastlog: Cannot find account for uid %i", uid);
-		
+
 	/* No MIN_SIZEOF here - we absolutely *must not* truncate the
-         * username */
+	 * username */
 	strlcpy(li->username, pw->pw_name, sizeof(li->username));
 
 	if (getlast_entry(li))
@@ -308,8 +308,8 @@
 
 
 /* login_alloc_entry(int, char*, char*, char*)    - Allocate and initialise
- *                                                  a logininfo structure 
- * 
+ *                                                  a logininfo structure
+ *
  * This function creates a new struct logininfo, a data structure
  * meant to carry the information required to portably record login info.
  *
@@ -338,20 +338,20 @@
 
 /* login_init_entry(struct logininfo *, int, char*, char*, char*)
  *                                        - initialise a struct logininfo
- * 
+ *
  * Populates a new struct logininfo, a data structure meant to carry
  * the information required to portably record login info.
  *
  * Returns: 1
  */
 int
-login_init_entry(struct logininfo *li, int pid, const char *username, 
+login_init_entry(struct logininfo *li, int pid, const char *username,
 		 const char *hostname, const char *line)
 {
 	struct passwd *pw;
-	
+
 	memset(li, 0, sizeof(*li));
-  
+
 	li->pid = pid;
 
 	/* set the line information */
@@ -384,7 +384,7 @@
 	struct timeval tv;
 
 	gettimeofday(&tv, NULL);
-	
+
 	li->tv_sec = tv.tv_sec;
 	li->tv_usec = tv.tv_usec;
 }
@@ -457,7 +457,7 @@
 #else /* !USE_LASTLOG */
 
 #ifdef DISABLE_LASTLOG
-	/* On some systems we shouldn't even try to obtain last login 
+	/* On some systems we shouldn't even try to obtain last login
 	 * time, e.g. AIX */
 	return 0;
 # else /* DISABLE_LASTLOG */
@@ -475,7 +475,7 @@
 	return 0;
 #   endif /* USE_WTMPX && (HAVE_TIME_IN_UTMPX || HAVE_TV_IN_UTMPX) */
 #  endif /* USE_WTMP && (HAVE_TIME_IN_UTMP || HAVE_TV_IN_UTMP) */
-# endif /* DISABLE_LASTLOG */ 
+# endif /* DISABLE_LASTLOG */
 #endif /* USE_LASTLOG */
 }
 
@@ -532,12 +532,12 @@
  * NOTE: use strncpy because we do NOT necessarily want zero
  * termination */
 char *
-line_abbrevname(char *dst, const char *src, int dstsize) 
+line_abbrevname(char *dst, const char *src, int dstsize)
 {
 	size_t len;
-	
+
 	memset(dst, '\0', dstsize);
-	
+
 	/* Always skip prefix if present */
 #ifdef sgi
 	if (strncmp(src, "/dev/tty", 8) == 0)
@@ -546,7 +546,7 @@
 	if (strncmp(src, "/dev/", 5) == 0)
 		src += 5;
 #endif
-		
+
 	len = strlen(src);
 
 	if (len > 0) {
@@ -554,9 +554,9 @@
 			src +=  ((int)len - dstsize);
 
 		/* note: _don't_ change this to strlcpy */
-		strncpy(dst, src, (size_t)dstsize); 
+		strncpy(dst, src, (size_t)dstsize);
 	}
-	
+
 	return dst;
 }
 
@@ -620,7 +620,7 @@
 
 	/*
 	 * These fields are only used when logging in, and are blank
-	 * for logouts. 
+	 * for logouts.
 	 */
 
 	/* Use strncpy because we don't necessarily want null termination */
@@ -632,7 +632,7 @@
 	/* this is just a 32-bit IP address */
 	if (li->hostaddr.sa.sa_family == AF_INET)
 		ut->ut_addr = li->hostaddr.sa_in.sin_addr.s_addr;
-# endif 
+# endif
 }
 #endif /* USE_UTMP || USE_WTMP || USE_LOGIN */
 
@@ -684,7 +684,7 @@
 
 	/*
 	 * These fields are only used when logging in, and are blank
-	 * for logouts. 
+	 * for logouts.
 	 */
 
 	/* strncpy(): Don't necessarily want null termination */
@@ -774,18 +774,18 @@
 		 * If the new ut_line is empty but the old one is not
 		 * and ut_line and ut_name match, preserve the old ut_line.
 		 */
-		if (atomicio(read, fd, &old_ut, sizeof(old_ut)) == sizeof(old_ut) && 
-			(ut->ut_host[0] == '\0') && (old_ut.ut_host[0] != '\0') && 
-			(strncmp(old_ut.ut_line, ut->ut_line, sizeof(ut->ut_line)) == 0) && 
+		if (atomicio(read, fd, &old_ut, sizeof(old_ut)) == sizeof(old_ut) &&
+			(ut->ut_host[0] == '\0') && (old_ut.ut_host[0] != '\0') &&
+			(strncmp(old_ut.ut_line, ut->ut_line, sizeof(ut->ut_line)) == 0) &&
 			(strncmp(old_ut.ut_name, ut->ut_name, sizeof(ut->ut_name)) == 0)) {
 			(void)memcpy(ut->ut_host, old_ut.ut_host, sizeof(ut->ut_host));
 		}
-		
+
 		(void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
 		if (atomicio(write, fd, ut, sizeof(*ut)) != sizeof(*ut))
 			log("utmp_write_direct: error writing %s: %s",
 			    UTMP_FILE, strerror(errno));
-      
+
 		(void)close(fd);
 		return 1;
 	} else {
@@ -887,7 +887,7 @@
 /* write a utmp entry direct to the file */
 static int
 utmpx_write_direct(struct logininfo *li, struct utmpx *utx)
-{  
+{
 	log("utmpx_write_direct: not implemented!");
 	return 0;
 }
@@ -957,7 +957,7 @@
  ** Low-level wtmp functions
  **/
 
-#ifdef USE_WTMP 
+#ifdef USE_WTMP
 
 /* write a wtmp entry direct to the end of the file */
 /* This is a slight modification of code in OpenBSD's logwtmp.c */
@@ -972,7 +972,7 @@
 		    WTMP_FILE, strerror(errno));
 		return 0;
 	}
-  	if (fstat(fd, &buf) == 0) 
+	if (fstat(fd, &buf) == 0)
 		if (atomicio(write, fd, ut, sizeof(*ut)) != sizeof(*ut)) {
 			ftruncate(fd, buf.st_size);
 			log("wtmp_write: problem writing %s: %s",
@@ -1019,7 +1019,7 @@
 
 
 /* Notes on fetching login data from wtmp/wtmpx
- * 
+ *
  * Logouts are usually recorded with (amongst other things) a blank
  * username on a given tty line.  However, some systems (HP-UX is one)
  * leave all fields set, but change the ut_type field to DEAD_PROCESS.
@@ -1038,7 +1038,7 @@
 static int
 wtmp_islogin(struct logininfo *li, struct utmp *ut)
 {
-	if (strncmp(li->username, ut->ut_name, 
+	if (strncmp(li->username, ut->ut_name,
 		MIN_SIZEOF(li->username, ut->ut_name)) == 0) {
 # ifdef HAVE_TYPE_IN_UTMP
 		if (ut->ut_type & USER_PROCESS)
@@ -1065,7 +1065,7 @@
 		    WTMP_FILE, strerror(errno));
 		return 0;
 	}
-  	if (fstat(fd, &st) != 0) {
+	if (fstat(fd, &st) != 0) {
 		log("wtmp_get_entry: couldn't stat %s: %s",
 		    WTMP_FILE, strerror(errno));
 		close(fd);
@@ -1139,7 +1139,7 @@
 		return 0;
 	}
 
-	if (fstat(fd, &buf) == 0) 
+	if (fstat(fd, &buf) == 0)
 		if (atomicio(write, fd, utx, sizeof(*utx)) != sizeof(*utx)) {
 			ftruncate(fd, buf.st_size);
 			log("wtmpx_write: problem writing %s: %s",
@@ -1221,13 +1221,13 @@
 		    WTMPX_FILE, strerror(errno));
 		return 0;
 	}
-  	if (fstat(fd, &st) != 0) {
+	if (fstat(fd, &st) != 0) {
 		log("wtmpx_get_entry: couldn't stat %s: %s",
 		    WTMP_FILE, strerror(errno));
 		close(fd);
 		return 0;
 	}
-	
+
 	/* Seek to the start of the last struct utmpx */
 	if (lseek(fd, (off_t)(0-sizeof(struct utmpx)), SEEK_END) == -1 ) {
 		/* probably a newly rotated wtmpx file */
@@ -1295,7 +1295,7 @@
 {
 # ifdef HAVE_LOGOUT
 	char line[8];
-  
+
 	(void)line_stripname(line, li->line, sizeof(line));
 
 	if (!logout(line)) {
@@ -1344,7 +1344,7 @@
 {
 	/* clear the structure */
 	memset(last, '\0', sizeof(*last));
-  
+
 	(void)line_stripname(last->ll_line, li->line, sizeof(last->ll_line));
 	strlcpy(last->ll_host, li->hostname,
 		MIN_SIZEOF(last->ll_host, li->hostname));
@@ -1357,7 +1357,7 @@
 	struct stat st;
 
 	if (stat(LASTLOG_FILE, &st) != 0) {
-		log("lastlog_perform_login: Couldn't stat %s: %s", LASTLOG_FILE, 
+		log("lastlog_perform_login: Couldn't stat %s: %s", LASTLOG_FILE,
 			strerror(errno));
 		return 0;
 	}
@@ -1399,18 +1399,18 @@
 		    lastlog_file, strerror(errno));
 		return 0;
 	}
-	
+
 	if (type == LL_FILE) {
 		/* find this uid's offset in the lastlog file */
 		offset = (off_t) ( (long)li->uid * sizeof(struct lastlog));
 
 		if ( lseek(*fd, offset, SEEK_SET) != offset ) {
 			log("lastlog_openseek: %s->lseek(): %s",
-		   	 lastlog_file, strerror(errno));
+			 lastlog_file, strerror(errno));
 			return 0;
 		}
 	}
-	
+
 	return 1;
 }
 
@@ -1425,7 +1425,7 @@
 
 	if (!lastlog_openseek(li, &fd, O_RDWR|O_CREAT))
 		return(0);
-		
+
 	/* write the entry */
 	if (atomicio(write, fd, &last, sizeof(last)) != sizeof(last)) {
 		close(fd);
@@ -1454,7 +1454,7 @@
 lastlog_populate_entry(struct logininfo *li, struct lastlog *last)
 {
 	line_fullname(li->line, last->ll_line, sizeof(li->line));
-	strlcpy(li->hostname, last->ll_host, 
+	strlcpy(li->hostname, last->ll_host,
 		MIN_SIZEOF(li->hostname, last->ll_host));
 	li->tv_sec = last->ll_time;
 }
@@ -1475,7 +1475,7 @@
 			return 1;
 		}
 	} else {
-		return 0;    
+		return 0;
 	}
 }
 #endif /* USE_LASTLOG */