Annotation of coherent/d/bin/who.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Rec'd from Lauren, 7-16-84.
                      3:  * Who is on the system
                      4:  * and who am i.
                      5:  */
                      6: 
                      7: #include <stdio.h>
                      8: #include <utmp.h>
                      9: 
                     10: char   *whofile = "/etc/utmp";
                     11: int    ordflag = 1;            /* Ordinary who */
                     12: 
                     13: char   obuf[BUFSIZ];
                     14: 
                     15: main(argc, argv)
                     16: char *argv[];
                     17: {
                     18:        register char *mytty = NULL;
                     19:        struct utmp utmp;
                     20:        register FILE *ufp;
                     21:        extern char *ttyname();
                     22:        extern char *ctime();
                     23: 
                     24:        setbuf(stdout, obuf);
                     25:        switch(argc) {
                     26:        case 1:                                 /* who */
                     27:                break;
                     28:        case 2:                                 /* who whofile */
                     29:                whofile = argv[1];
                     30:                ordflag = 0;
                     31:                break;
                     32:        case 3:                                 /* who am i */
                     33:                if ((mytty = ttyname(fileno(stderr))) != NULL)
                     34:                        mytty += 5;             /* space over "/dev" */
                     35:                break;
                     36:        case 4:                                 /* who whofile am i */
                     37:                whofile = argv[1];
                     38:                ordflag = 0;
                     39:                if ((mytty = ttyname(fileno(stderr))) != NULL)
                     40:                        mytty += 5;             /* space over "/dev" */
                     41:                break;
                     42:        default:
                     43:                usage();
                     44:        }
                     45:        if ((ufp = fopen(whofile, "r")) == NULL)
                     46:                werr("Cannot open %s\n", whofile);
                     47:        while (fread(&utmp, sizeof (utmp), 1, ufp) == 1) {
                     48:                if (ordflag && utmp.ut_name[0]=='\0')
                     49:                        continue;
                     50:                if (mytty!=NULL && strncmp(utmp.ut_line, mytty, 8))
                     51:                        continue;
                     52:                printf( "%-8.8s %-7.7s %.12s\n", utmp.ut_name, utmp.ut_line,
                     53:                        ctime( &utmp.ut_time)+4);
                     54:        }
                     55: }
                     56: 
                     57: /* VARARGS */
                     58: werr(x)
                     59: {
                     60:        if (!isatty(fileno(stdout)))
                     61:                fprintf(stderr, "who: ");
                     62:        fprintf(stderr, "%r", &x);
                     63:        exit (1);
                     64: }
                     65: 
                     66: usage()
                     67: {
                     68:        werr("Usage: who [who-file] [am I]\n");
                     69: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.