BSD 4 release
[unix-history] / usr / src / cmd / who.c
index 27e0b1d..41a0fd3 100644 (file)
@@ -1,3 +1,4 @@
+static char *sccsid = "@(#)who.c       4.2 (Berkeley) 11/1/80";
 /*
  * who
  */
 /*
  * who
  */
@@ -5,6 +6,12 @@
 #include <stdio.h>
 #include <utmp.h>
 #include <pwd.h>
 #include <stdio.h>
 #include <utmp.h>
 #include <pwd.h>
+#include <whoami.h>
+#include <ctype.h>
+
+#define NMAX sizeof(utmp.ut_name)
+#define LMAX sizeof(utmp.ut_line)
+
 struct utmp utmp;
 struct passwd *pw;
 struct passwd *getpwuid();
 struct utmp utmp;
 struct passwd *pw;
 struct passwd *getpwuid();
@@ -15,7 +22,9 @@ char **argv;
 {
        register char *tp, *s;
        register FILE *fi;
 {
        register char *tp, *s;
        register FILE *fi;
+       extern char _sobuf[];
 
 
+       setbuf(stdout, _sobuf);
        s = "/etc/utmp";
        if(argc == 2)
                s = argv[1];
        s = "/etc/utmp";
        if(argc == 2)
                s = argv[1];
@@ -38,11 +47,12 @@ char **argv;
        }
        while (fread((char *)&utmp, sizeof(utmp), 1, fi) == 1) {
                if(argc==3) {
        }
        while (fread((char *)&utmp, sizeof(utmp), 1, fi) == 1) {
                if(argc==3) {
+                       static char myname[]=sysname;
                        if (strcmp(utmp.ut_line, tp))
                                continue;
                        if (strcmp(utmp.ut_line, tp))
                                continue;
-#ifdef vax
-                       printf("(Vax) ");
-#endif
+                       if (islower(*myname))
+                               *myname = toupper(*myname);
+                       printf("(%s) ",myname);
                        putline();
                        exit(0);
                }
                        putline();
                        exit(0);
                }
@@ -56,7 +66,7 @@ putline()
 {
        register char *cbuf;
 
 {
        register char *cbuf;
 
-       printf("%-8.8s %-8.8s", utmp.ut_name, utmp.ut_line);
+       printf("%-*.*s %-*.*s", NMAX, NMAX, utmp.ut_name, LMAX, LMAX, utmp.ut_line);
        cbuf = ctime(&utmp.ut_time);
        printf("%.12s\n", cbuf+4);
 }
        cbuf = ctime(&utmp.ut_time);
        printf("%.12s\n", cbuf+4);
 }