BSD 3 development
[unix-history] / usr / src / cmd / users.c
CommitLineData
2ea61fca
BJ
1/*
2 * users
3 */
4char *malloc();
5
6#include <stdio.h>
7#include <utmp.h>
8
9struct utmp utmp;
10
11main(argc, argv)
12char **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
32char *names[128];
33char **namp = names;
34putline()
35{
36 char temp[9];
37 strncpy(temp, utmp.ut_name, 8);
38 *namp = malloc(strlen(temp) + 1);
39 strcpy(*namp++, temp);
40}
41
42scmp(p, q)
43char **p, **q;
44{
45 return(strcmp(*p, *q));
46}
47summary()
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}