commit 1aaec6250a5ca8949e30147259f9316d87eb93b5
parent 6af24e35f954e21bdafd3d0e0f7fb76e92ac93bd
Author: sin <sin@2f30.org>
Date: Mon, 18 Aug 2014 21:55:38 +0100
Convert lastlog(8) to {w,}eprintf()
Diffstat:
2 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/lastlog.c b/lastlog.c
@@ -1,4 +1,5 @@
/* See LICENSE file for copyright and license details. */
+#include <errno.h>
#include <paths.h>
#include <pwd.h>
#include <stdio.h>
@@ -7,6 +8,8 @@
#include <time.h>
#include <utmp.h>
+#include "util.h"
+
#define PASSWD "/etc/passwd"
static FILE *last;
@@ -18,18 +21,20 @@ lastlog(char *user)
struct lastlog ll;
time_t lltime;
+ errno = 0;
if ((pwd = getpwnam(user)) == NULL) {
- fprintf(stderr, "unknown user: %s\n", user);
+ if (errno)
+ weprintf("getpwnam %s:", user);
+ else
+ weprintf("unknown user: %s\n", user);
return;
}
fseek(last, pwd->pw_uid * sizeof(struct lastlog), 0);
fread(&ll, sizeof(struct lastlog), 1, last);
- if (ferror(last)) {
- perror("error reading lastlog");
- exit(EXIT_FAILURE);
- }
+ if (ferror(last))
+ eprintf("error reading lastlog\n");
/* on glibc `ll_time' can be an int32_t with compat32
* avoid compiler warning when calling ctime() */
@@ -44,29 +49,23 @@ main(int argc, char **argv)
FILE *fp;
char line[512], *p;
- if ((last = fopen(_PATH_LASTLOG, "r")) == NULL) {
- perror(_PATH_LASTLOG);
- exit(EXIT_FAILURE);
- }
+ if ((last = fopen(_PATH_LASTLOG, "r")) == NULL)
+ eprintf("fopen %s:", _PATH_LASTLOG);
if (argc > 1) {
while (*++argv)
lastlog(*argv);
} else {
- if ((fp = fopen(PASSWD, "r")) == NULL) {
- perror(PASSWD);
- exit(EXIT_FAILURE);
- }
+ if ((fp = fopen(PASSWD, "r")) == NULL)
+ eprintf("fopen %s:", PASSWD);
while ((fgets(line, sizeof(line), fp)) != NULL) {
- if ((p = strchr(line, ':')) == NULL) {
- fputs("incorrect password file", stderr);
- exit(-1);
- }
+ if ((p = strchr(line, ':')) == NULL)
+ eprintf("invalid passwd entry\n");
*p = '\0';
lastlog(line);
}
if (fclose(fp))
- perror(PASSWD);
+ weprintf("fclose %s:", PASSWD);
}
fclose(last);
diff --git a/login.c b/login.c
@@ -79,7 +79,7 @@ main(int argc, char *argv[])
pw = getpwnam(user);
if (!pw) {
if (errno)
- eprintf("getpwnam: %s:", user);
+ eprintf("getpwnam %s:", user);
else
eprintf("who are you?\n");
}