diff options
Diffstat (limited to '')
| -rw-r--r-- | src/log-login-lastlog.c | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/src/log-login-lastlog.c b/src/log-login-lastlog.c index 46509df..f8f8d3c 100644 --- a/src/log-login-lastlog.c +++ b/src/log-login-lastlog.c @@ -1,7 +1,7 @@ /** * cerberus-logging – Log-in logging extension for cerberus * - * Copyright © 2014, 2015 Mattias Andrée (maandree@member.fsf.org) + * Copyright © 2014, 2015 Mattias Andrée (m@maandree.se) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,31 +21,32 @@ #include <pwd.h> -int do_log(void) +int +do_log(void) { - struct passwd* pwd; - struct lastlog ll; - time_t t; - int fd; + struct passwd *pwd; + struct lastlog ll; + time_t t; + int fd; - if (!streq(action, "login")) - return 0; + if (!streq(action, "login")) + return 0; - if (pwd = getpwnam(username), pwd == NULL) return -1; - if (fd = open(_PATH_LASTLOG, O_RDWR, 0), fd < 0) return -1; - if (lseek(fd, (off_t)(pwd->pw_uid * sizeof(ll)), SEEK_SET) == -1) goto fail; - - memset(&ll, 0, sizeof(ll)); - - time(&t), ll.ll_time = (typeof(ll.ll_time))t; - xstrcpy(ll.ll_line, ttyname); - xstrcpy(ll.ll_host, hostname); - - if (write_all(fd, (char*)&ll, sizeof(ll))) - goto fail; - - return close(fd), 0; - fail: - return close(fd), -1; -} + if (pwd = getpwnam(username), !pwd) return -1; + if (fd = open(_PATH_LASTLOG, O_RDWR, 0), fd < 0) return -1; + if (lseek(fd, (off_t)(pwd->pw_uid * sizeof(ll)), SEEK_SET) == -1) goto fail; + memset(&ll, 0, sizeof(ll)); + + time(&t); + ll.ll_time = (typeof(ll.ll_time))t; + xstrcpy(ll.ll_line, ttyname); + xstrcpy(ll.ll_host, hostname); + + if (write_all(fd, (char *)&ll, sizeof(ll))) + goto fail; + + return close(fd), 0; +fail: + return close(fd), -1; +} |
