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

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

unix.superglobalmegacorp.com

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