* lib/prototypes.h, libmisc/log.c: Added splint annotations.
* libmisc/log.c: Added SYSLOG warning when lseek fails (should not
happen).
+2009-04-27 Nicolas François <nicolas.francois@centraliens.net>
+
+ * lib/prototypes.h: Replace HAVE_UTMPX_H by USE_UTMPX.
+ * lib/prototypes.h, libmisc/log.c: Added splint annotations.
+ * libmisc/log.c: Added SYSLOG warning when lseek fails (should not
+ happen).
+
2009-04-27 Nicolas François <nicolas.francois@centraliens.net>
* libmisc/mail.c, libmisc/copydir.c: Added missing include of
#define _PROTOTYPES_H
#include <sys/stat.h>
-#if HAVE_UTMPX_H
+#if USE_UTMPX
#include <utmpx.h>
#else
#include <utmp.h>
extern /*@only@*/char **comma_to_list (const char *);
/* log.c */
-extern void dolastlog (struct lastlog *ll,
- const struct passwd *pw,
- const char *line,
- const char *host);
+extern void dolastlog (
+ struct lastlog *ll,
+ const struct passwd *pw,
+ /*@unique@*/const char *line,
+ /*@unique@*/const char *host);
/* login_nopam.c */
extern int login_access (const char *user, const char *from);
const char *host,
/*@null@*/const struct utmp *ut);
extern int setutmp (struct utmp *ut);
-#ifdef HAVE_UTMPX_H
+#ifdef USE_UTMPX
extern struct utmpx *prepare_utmpx (const char *name,
const char *line,
const char *host,
/*@null@*/const struct utmp *ut);
extern int setutmpx (struct utmpx *utx);
-#endif
+#endif /* USE_UTMPX */
/* valid.c */
extern bool valid (const char *, const struct passwd *);
* UID is extracted from the global (struct passwd) entry and the
* TTY information is gotten from the (struct utmp).
*/
-void
-dolastlog (struct lastlog *ll, const struct passwd *pw, const char *line,
- const char *host)
+void dolastlog (
+ struct lastlog *ll,
+ const struct passwd *pw,
+ /*@unique@*/const char *line,
+ /*@unique@*/const char *host)
{
int fd;
off_t offset;
offset = (off_t) pw->pw_uid * sizeof newlog;
if (lseek (fd, offset, SEEK_SET) != offset) {
- close (fd);
+ SYSLOG ((LOG_WARN,
+ "Can't read last lastlog entry for UID %lu in %s. Entry not updated.",
+ (unsigned long) pw->pw_uid, LASTLOG_FILE));
+ (void) close (fd);
return;
}