summaryrefslogtreecommitdiffstats
path: root/usr.bin/finger/finger.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/finger/finger.c')
-rw-r--r--usr.bin/finger/finger.c39
1 files changed, 25 insertions, 14 deletions
diff --git a/usr.bin/finger/finger.c b/usr.bin/finger/finger.c
index 657426f..9235d13 100644
--- a/usr.bin/finger/finger.c
+++ b/usr.bin/finger/finger.c
@@ -51,7 +51,7 @@ static char copyright[] =
#endif /* not lint */
#ifndef lint
-static char sccsid[] = "@(#)finger.c 8.2 (Berkeley) 9/30/93";
+static char sccsid[] = "@(#)finger.c 8.5 (Berkeley) 5/4/95";
#endif /* not lint */
/*
@@ -69,16 +69,21 @@ static char sccsid[] = "@(#)finger.c 8.2 (Berkeley) 9/30/93";
*/
#include <sys/param.h>
+
+#include <db.h>
+#include <err.h>
+#include <errno.h>
#include <fcntl.h>
-#include <time.h>
#include <pwd.h>
-#include <utmp.h>
-#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <utmp.h>
#include <db.h>
#include <locale.h>
+
#include "finger.h"
DB *db;
@@ -185,7 +190,7 @@ main(argc, argv)
lflag_print();
else
sflag_print();
- exit(0);
+ return (0);
}
static void
@@ -199,7 +204,7 @@ loginlist()
char name[UT_NAMESIZE + 1];
if (!freopen(_PATH_UTMP, "r", stdin))
- err("%s: %s", _PATH_UTMP, strerror(errno));
+ err(1, "%s", _PATH_UTMP);
name[UT_NAMESIZE] = NULL;
while (fread((char *)&user, sizeof(user), 1, stdin) == 1) {
if (!user.ut_name[0])
@@ -216,12 +221,15 @@ loginlist()
}
if (db && lflag)
for (sflag = R_FIRST;; sflag = R_NEXT) {
+ PERSON *tmp;
+
r = (*db->seq)(db, &key, &data, sflag);
if (r == -1)
- err("db seq: %s", strerror(errno));
+ err(1, "db seq");
if (r == 1)
break;
- enter_lastlog(*(PERSON **)data.data);
+ memmove(&tmp, data.data, sizeof tmp);
+ enter_lastlog(tmp);
}
}
@@ -239,7 +247,7 @@ userlist(argc, argv)
if ((nargv = malloc((argc+1) * sizeof(char *))) == NULL ||
(used = calloc(argc, sizeof(int))) == NULL)
- err("%s", strerror(errno));
+ err(1, NULL);
/* Pull out all network requests. */
for (ap = p = argv, np = nargv; *p; ++p)
@@ -260,13 +268,13 @@ userlist(argc, argv)
*/
if (mflag)
for (p = argv; *p; ++p)
- if ((pw = getpwnam(*p)) && !hide(pw))
+ if (((pw = getpwnam(*p)) != NULL) && !hide(pw))
enter_person(pw);
else
(void)fprintf(stderr,
"finger: %s: no such user\n", *p);
else {
- while (pw = getpwent()) {
+ while ((pw = getpwent()) != NULL) {
for (p = argv, ip = used; *p; ++p, ++ip)
if (match(pw, *p) && !hide(pw)) {
enter_person(pw);
@@ -294,7 +302,7 @@ net: for (p = nargv; *p;) {
* appropriate data whenever a match occurs.
*/
if (!freopen(_PATH_UTMP, "r", stdin))
- err("%s: %s", _PATH_UTMP, strerror(errno));
+ err(1, "%s", _PATH_UTMP);
while (fread((char *)&user, sizeof(user), 1, stdin) == 1) {
if (!user.ut_name[0])
continue;
@@ -304,11 +312,14 @@ net: for (p = nargv; *p;) {
}
if (db)
for (sflag = R_FIRST;; sflag = R_NEXT) {
+ PERSON *tmp;
+
r = (*db->seq)(db, &key, &data, sflag);
if (r == -1)
- err("db seq: %s", strerror(errno));
+ err(1, "db seq");
if (r == 1)
break;
- enter_lastlog(*(PERSON **)data.data);
+ memmove(&tmp, data.data, sizeof tmp);
+ enter_lastlog(tmp);
}
}
OpenPOWER on IntegriCloud