Add define for Kirk Smith's USR Courier driver. Change default baud
[unix-history] / usr / src / usr.bin / who / who.c
index 4d65cc2..22bc4eb 100644 (file)
@@ -1,4 +1,19 @@
-static char *sccsid = "@(#)who.c       4.2 (Berkeley) %G%";
+/*
+ * Copyright (c) 1980 Regents of the University of California.
+ * All rights reserved.  The Berkeley software License Agreement
+ * specifies the terms and conditions for redistribution.
+ */
+
+#ifndef lint
+char copyright[] =
+"@(#) Copyright (c) 1980 Regents of the University of California.\n\
+ All rights reserved.\n";
+#endif not lint
+
+#ifndef lint
+static char sccsid[] = "@(#)who.c      5.1 (Berkeley) %G%";
+#endif not lint
+
 /*
  * who
  */
 /*
  * who
  */
@@ -6,19 +21,22 @@ static char *sccsid = "@(#)who.c     4.2 (Berkeley) %G%";
 #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)
 #include <ctype.h>
 
 #define NMAX sizeof(utmp.ut_name)
 #define LMAX sizeof(utmp.ut_line)
+#define        HMAX sizeof(utmp.ut_host)
+
+struct utmp utmp;
+struct passwd *pw;
+struct passwd *getpwuid();
+char   hostname[32];
 
 
-struct utmp utmp;
-struct passwd *pw;
-struct passwd *getpwuid();
+char   *ttyname(), *rindex(), *ctime(), *strcpy();
 
 
-char *ttyname(), *rindex(), *ctime(), *strcpy();
 main(argc, argv)
 main(argc, argv)
-char **argv;
+       int argc;
+       char **argv;
 {
        register char *tp, *s;
        register FILE *fi;
 {
        register char *tp, *s;
        register FILE *fi;
@@ -28,13 +46,13 @@ char **argv;
        s = "/etc/utmp";
        if(argc == 2)
                s = argv[1];
        s = "/etc/utmp";
        if(argc == 2)
                s = argv[1];
-       if (argc==3) {
+       if (argc == 3) {
                tp = ttyname(0);
                if (tp)
                        tp = rindex(tp, '/') + 1;
                else {  /* no tty - use best guess from passwd file */
                        pw = getpwuid(getuid());
                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: "?");
+                       strncpy(utmp.ut_name, pw ? pw->pw_name : "?", NMAX);
                        strcpy(utmp.ut_line, "tty??");
                        time(&utmp.ut_time);
                        putline();
                        strcpy(utmp.ut_line, "tty??");
                        time(&utmp.ut_time);
                        putline();
@@ -46,17 +64,15 @@ char **argv;
                exit(1);
        }
        while (fread((char *)&utmp, sizeof(utmp), 1, fi) == 1) {
                exit(1);
        }
        while (fread((char *)&utmp, sizeof(utmp), 1, fi) == 1) {
-               if(argc==3) {
-                       static char myname[]=sysname;
+               if (argc == 3) {
+                       gethostname(hostname, sizeof (hostname));
                        if (strcmp(utmp.ut_line, tp))
                                continue;
                        if (strcmp(utmp.ut_line, tp))
                                continue;
-                       if (islower(*myname))
-                               *myname = toupper(*myname);
-                       printf("(%s) ",myname);
+                       printf("%s!", hostname);
                        putline();
                        exit(0);
                }
                        putline();
                        exit(0);
                }
-               if(utmp.ut_name[0] == '\0' && argc==1)
+               if (utmp.ut_name[0] == '\0' && argc == 1)
                        continue;
                putline();
        }
                        continue;
                putline();
        }
@@ -66,7 +82,12 @@ putline()
 {
        register char *cbuf;
 
 {
        register char *cbuf;
 
-       printf("%-*.*s %-*.*s", NMAX, NMAX, utmp.ut_name, LMAX, LMAX, utmp.ut_line);
+       printf("%-*.*s %-*.*s",
+               NMAX, NMAX, utmp.ut_name,
+               LMAX, LMAX, utmp.ut_line);
        cbuf = ctime(&utmp.ut_time);
        cbuf = ctime(&utmp.ut_time);
-       printf("%.12s\n", cbuf+4);
+       printf("%.12s", cbuf+4);
+       if (utmp.ut_host[0])
+               printf("\t(%.*s)", HMAX, utmp.ut_host);
+       putchar('\n');
 }
 }