From fa8a717bb908b526ab7b5fb5dfeeeda454d9d172 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Thu, 31 Jan 2019 13:11:47 -0800 Subject: who: make the output more like coreutils who. Also add a TODO for the (undocumented, half-finished) -a option. --- toys/posix/who.c | 19 ++++++++----------- 1 file 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(); } -- cgit v1.2.3