Annotation of coherent/d/bin/who.c, revision 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.