1 /* who.c - display who is on the system
2  *
3  * Copyright 2012 ProFUSION Embedded Systems
4  *
5  * by Luis Felipe Strano Moraes <lfelipe@profusion.mobi>
6  *
7  * See http://opengroup.org/onlinepubs/9699919799/utilities/who.html
8  *
9  * Posix says to support many options (-abdHlmpqrstTu) but this
10  * isn't aimed at minicomputers with modem pools.
11 
12 USE_WHO(NEWTOY(who, "a", TOYFLAG_USR|TOYFLAG_BIN))
13 
14 config WHO
15   bool "who"
16   default y
17   depends on TOYBOX_UTMPX
18   help
19     usage: who
20 
21     Print logged user information on system
22 */
23 
24 #define FOR_who
25 #include "toys.h"
26 
who_main(void)27 void who_main(void)
28 {
29   struct utmpx *entry;
30 
31   setutxent();
32 
33   while ((entry = getutxent())) {
34     if ((toys.optflags & FLAG_a) || entry->ut_type == USER_PROCESS) {
35       time_t time;
36       int time_size;
37       char *times;
38 
39       time = entry->ut_tv.tv_sec;
40       times = ctime(&time);
41       time_size = strlen(times) - 2;
42       printf("%s\t%s\t%*.*s\t(%s)\n", entry->ut_user, entry->ut_line,
43         time_size, time_size, ctime(&time), entry->ut_host);
44     }
45   }
46 
47   endutxent();
48 }
49