Annotation of 41BSD/cmd/users.c, revision 1.1.1.1

1.1       root        1: static char *sccsid = "@(#)users.c     4.1 (Berkeley) 10/1/80";
                      2: /*
                      3:  * users
                      4:  */
                      5: char   *malloc();
                      6: 
                      7: #include <stdio.h>
                      8: #include <utmp.h>
                      9: 
                     10: #define NMAX sizeof(utmp.ut_name)
                     11: #define LMAX sizeof(utmp.ut_line)
                     12: 
                     13: struct utmp utmp;
                     14: 
                     15: main(argc, argv)
                     16: char **argv;
                     17: {
                     18:        register char *tp, *s;
                     19:        register FILE *fi;
                     20: 
                     21:        s = "/etc/utmp";
                     22:        if(argc == 2)
                     23:                s = argv[1];
                     24:        if ((fi = fopen(s, "r")) == NULL) {
                     25:                puts("who: cannot open utmp");
                     26:                exit(1);
                     27:        }
                     28:        while (fread((char *)&utmp, sizeof(utmp), 1, fi) == 1) {
                     29:                if(utmp.ut_name[0] == '\0')
                     30:                        continue;
                     31:                putline();
                     32:        }
                     33:        summary();
                     34: }
                     35: 
                     36: char   *names[128];
                     37: char   **namp = names;
                     38: putline()
                     39: {
                     40:        char temp[NMAX+1];
                     41:        strncpy(temp, utmp.ut_name, NMAX);
                     42:        temp[NMAX] = 0;
                     43:        *namp = malloc(strlen(temp) + 1);
                     44:        strcpy(*namp++, temp);
                     45: }
                     46: 
                     47: scmp(p, q)
                     48: char **p, **q;
                     49: {
                     50:        return(strcmp(*p, *q));
                     51: }
                     52: summary()
                     53: {
                     54:        register char **p;
                     55: 
                     56:        qsort(names, namp - names, sizeof names[0], scmp);
                     57:        for (p=names; p < namp; p++) {
                     58:                if (p != names)
                     59:                        printf(" ");
                     60:                printf("%s", *p);
                     61:        }
                     62:        printf("\n");
                     63: }

unix.superglobalmegacorp.com

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