BSD 4 release
[unix-history] / usr / src / cmd / who.c
index 194fe96..41a0fd3 100644 (file)
@@ -1,3 +1,4 @@
+static char *sccsid = "@(#)who.c       4.2 (Berkeley) 11/1/80";
 /*
  * who
  */
 /*
  * who
  */
@@ -5,24 +6,32 @@
 #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();
 
-char *ttyname(), *rindex(), *ctime(), *strcpy(), *index();
+char *ttyname(), *rindex(), *ctime(), *strcpy();
 main(argc, argv)
 char **argv;
 {
        register char *tp, *s;
        register FILE *fi;
 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)
        s = "/etc/utmp";
        if(argc == 2)
                s = argv[1];
        if (argc==3) {
                tp = ttyname(0);
                if (tp)
-                       tp = index(tp+1, '/') + 1;
+                       tp = rindex(tp, '/') + 1;
                else {  /* no tty - use best guess from passwd file */
                        pw = getpwuid(getuid());
                        strcpy(utmp.ut_name, pw?pw->pw_name: "?");
                else {  /* no tty - use best guess from passwd file */
                        pw = getpwuid(getuid());
                        strcpy(utmp.ut_name, pw?pw->pw_name: "?");
@@ -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 interdata
-                       printf("(Interdata) ");
-#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);
 }