diff options
-rw-r--r-- | toys/posix/who.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/toys/posix/who.c b/toys/posix/who.c index 53252e87..2515af38 100644 --- a/toys/posix/who.c +++ b/toys/posix/who.c @@ -8,6 +8,8 @@ * * Posix says to support many options (-abdHlmpqrstTu) but this * isn't aimed at minicomputers with modem pools. + * + * TODO: -a doesn't know how to format other entries USE_WHO(NEWTOY(who, "a", TOYFLAG_USR|TOYFLAG_BIN)) @@ -18,7 +20,7 @@ config WHO help usage: who - Print logged user information on system + Print information about logged in users. */ #define FOR_who @@ -29,20 +31,15 @@ void who_main(void) struct utmpx *entry; setutxent(); - while ((entry = getutxent())) { if (FLAG(a) || entry->ut_type == USER_PROCESS) { - time_t time; - int time_size; - char *times; + time_t t = entry->ut_tv.tv_sec; + struct tm *tm = localtime(&t); - time = entry->ut_tv.tv_sec; - times = ctime(&time); - time_size = strlen(times) - 2; - printf("%s\t%s\t%*.*s\t(%s)\n", entry->ut_user, entry->ut_line, - time_size, time_size, ctime(&time), entry->ut_host); + strftime(toybuf, sizeof(toybuf), "%F %H:%M", tm); + printf("%s\t%s\t%s (%s)\n", entry->ut_user, entry->ut_line, + toybuf, entry->ut_host); } } - endutxent(); } |