date and time created 80/10/01 17:29:40 by bill
[unix-history] / usr / src / usr.bin / users / users.c
CommitLineData
407aebd6
BJ
1static char *sccsid = "@(#)users.c 4.1 (Berkeley) %G%";
2/*
3 * users
4 */
5char *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
13struct utmp utmp;
14
15main(argc, argv)
16char **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
36char *names[128];
37char **namp = names;
38putline()
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
47scmp(p, q)
48char **p, **q;
49{
50 return(strcmp(*p, *q));
51}
52summary()
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}