From aba4c79c0c625003869f3412eb9702b852597321 Mon Sep 17 00:00:00 2001 From: Bill Joy Date: Thu, 2 Oct 1980 01:29:35 -0800 Subject: [PATCH] date and time created 80/10/01 17:29:35 by bill SCCS-vsn: usr.bin/who/who.c 4.1 --- usr/src/usr.bin/who/who.c | 69 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 usr/src/usr.bin/who/who.c diff --git a/usr/src/usr.bin/who/who.c b/usr/src/usr.bin/who/who.c new file mode 100644 index 0000000000..5a0f0c759a --- /dev/null +++ b/usr/src/usr.bin/who/who.c @@ -0,0 +1,69 @@ +static char *sccsid = "@(#)who.c 4.1 (Berkeley) %G%"; +/* + * who + */ + +#include +#include +#include + +#define NMAX sizeof(utmp.ut_name) +#define LMAX sizeof(utmp.ut_line) + +struct utmp utmp; +struct passwd *pw; +struct passwd *getpwuid(); + +char *ttyname(), *rindex(), *ctime(), *strcpy(); +main(argc, argv) +char **argv; +{ + register char *tp, *s; + register FILE *fi; + extern char _sobuf[]; + + setbuf(stdout, _sobuf); + s = "/etc/utmp"; + if(argc == 2) + s = argv[1]; + if (argc==3) { + tp = ttyname(0); + if (tp) + tp = rindex(tp, '/') + 1; + else { /* no tty - use best guess from passwd file */ + pw = getpwuid(getuid()); + strcpy(utmp.ut_name, pw?pw->pw_name: "?"); + strcpy(utmp.ut_line, "tty??"); + time(&utmp.ut_time); + putline(); + exit(0); + } + } + if ((fi = fopen(s, "r")) == NULL) { + puts("who: cannot open utmp"); + exit(1); + } + while (fread((char *)&utmp, sizeof(utmp), 1, fi) == 1) { + if(argc==3) { + if (strcmp(utmp.ut_line, tp)) + continue; +#ifdef vax + printf("(Vax) "); +#endif + putline(); + exit(0); + } + if(utmp.ut_name[0] == '\0' && argc==1) + continue; + putline(); + } +} + +putline() +{ + register char *cbuf; + + printf("%-*.*s %-*.*s", NMAX, NMAX, utmp.ut_name, LMAX, LMAX, utmp.ut_line); + cbuf = ctime(&utmp.ut_time); + printf("%.12s\n", cbuf+4); +} -- 2.20.1