diff options
author | peter <peter@FreeBSD.org> | 1997-03-11 13:43:33 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1997-03-11 13:43:33 +0000 |
commit | deba7db48c7897a6302d3d706887bbddc3604c00 (patch) | |
tree | de15b52a10645135d816eb7c2d0fdc19e613c445 /usr.bin/finger/util.c | |
parent | dc74a95b3c87ac7e618302b89dfff6205c05cfc0 (diff) | |
download | FreeBSD-src-deba7db48c7897a6302d3d706887bbddc3604c00.zip FreeBSD-src-deba7db48c7897a6302d3d706887bbddc3604c00.tar.gz |
Merge from Lite2
Diffstat (limited to 'usr.bin/finger/util.c')
-rw-r--r-- | usr.bin/finger/util.c | 64 |
1 files changed, 20 insertions, 44 deletions
diff --git a/usr.bin/finger/util.c b/usr.bin/finger/util.c index da1bb40..6931f86 100644 --- a/usr.bin/finger/util.c +++ b/usr.bin/finger/util.c @@ -35,13 +35,14 @@ */ #ifndef lint -static char sccsid[] = "@(#)util.c 8.1 (Berkeley) 6/6/93"; +static char sccsid[] = "@(#)util.c 8.3 (Berkeley) 4/28/95"; #endif /* not lint */ #include <sys/param.h> #include <sys/stat.h> #include <fcntl.h> #include <db.h> +#include <err.h> #include <pwd.h> #include <utmp.h> #include <errno.h> @@ -81,14 +82,14 @@ match(pw, user) if ((p = strtok(p, ",")) == NULL) return(0); - for (t = name; *t = *p; ++p) + for (t = name; (*t = *p) != '\0'; ++p) if (*t == '&') { (void)strcpy(t, pw->pw_name); while (*++t); } else ++t; - for (t = name; p = strtok(t, "\t "); t = NULL) + for (t = name; (p = strtok(t, "\t ")) != NULL; t = NULL) if (!strcasecmp(p, user)) return(1); return(0); @@ -170,17 +171,18 @@ enter_person(pw) if (db == NULL && (db = dbopen(NULL, O_RDWR, 0, DB_BTREE, NULL)) == NULL) - err("%s", strerror(errno)); + err(1, NULL); key.data = pw->pw_name; key.size = strlen(pw->pw_name); - switch((*db->get)(db, &key, &data, 0)) { + switch ((*db->get)(db, &key, &data, 0)) { case 0: - return(*(PERSON **)data.data); + memmove(&pn, data.data, sizeof pn); + return (pn); default: case -1: - err("db get: %s", strerror(errno)); + err(1, "db get"); /* NOTREACHED */ case 1: ++entries; @@ -191,8 +193,8 @@ enter_person(pw) data.size = sizeof(PERSON *); data.data = &pn; if ((*db->put)(db, &key, &data, 0)) - err("%s", strerror(errno)); - return(pn); + err(1, "db put"); + return (pn); } } @@ -204,6 +206,7 @@ find_person(name) register int cnt; DBT data, key; + PERSON *p; char buf[UT_NAMESIZE + 1]; if (!db) @@ -219,7 +222,10 @@ find_person(name) key.data = buf; key.size = cnt; - return((*db->get)(db, &key, &data, 0) ? NULL : *(PERSON **)data.data); + if ((*db->get)(db, &key, &data, 0)) + return (NULL); + memmove(&p, data.data, sizeof p); + return (p); } PERSON * @@ -228,7 +234,7 @@ palloc() PERSON *p; if ((p = malloc((u_int) sizeof(PERSON))) == NULL) - err("%s", strerror(errno)); + err(1, NULL); return(p); } @@ -239,7 +245,7 @@ walloc(pn) register WHERE *w; if ((w = malloc((u_int) sizeof(WHERE))) == NULL) - err("%s", strerror(errno)); + err(1, NULL); if (pn->whead == NULL) pn->whead = pn->wtail = w; else { @@ -309,8 +315,7 @@ find_idle_and_ttywrite(w) (void)snprintf(tbuf, sizeof(tbuf), "%s/%s", _PATH_DEV, w->tty); if (stat(tbuf, &sb) < 0) { - (void)fprintf(stderr, - "finger: %s: %s\n", tbuf, strerror(errno)); + warn(tbuf); return; } w->idletime = now < sb.st_atime ? 0 : now - sb.st_atime; @@ -343,7 +348,7 @@ userinfo(pn, pw) /* ampersands get replaced by the login name */ if (!(p = strsep(&bp, ","))) return; - for (t = name; *t = *p; ++p) + for (t = name; (*t = *p) != '\0'; ++p) if (*t == '&') { (void)strcpy(t, pw->pw_name); if (islower(*t)) @@ -373,35 +378,6 @@ userinfo(pn, pw) } } -#if __STDC__ -#include <stdarg.h> -#else -#include <varargs.h> -#endif - -void -#if __STDC__ -err(const char *fmt, ...) -#else -err(fmt, va_alist) - char *fmt; - va_dcl -#endif -{ - va_list ap; -#if __STDC__ - va_start(ap, fmt); -#else - va_start(ap); -#endif - (void)fprintf(stderr, "finger: "); - (void)vfprintf(stderr, fmt, ap); - va_end(ap); - (void)fprintf(stderr, "\n"); - exit(1); - /* NOTREACHED */ -} - /* * Is this user hiding from finger? * If ~<user>/.nofinger exists, return 1 (hide), else return 0 (nohide). |