ubase

suckless linux base utils
git clone git://git.2f30.org/ubase.git
Log | Files | Refs | README | LICENSE

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:
lastlog.c | 35+++++++++++++++++------------------
login.c | 2+-
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"); }