[Toybox] [PATCH] who: make the output more like coreutils who.

enh enh at google.com
Thu Jan 31 13:13:20 PST 2019


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();
 }
-- 
2.20.1.495.gaa96b0ce6b-goog
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-who-make-the-output-more-like-coreutils-who.patch
Type: text/x-patch
Size: 1693 bytes
Desc: not available
URL: <http://lists.landley.net/pipermail/toybox-landley.net/attachments/20190131/fc4b7304/attachment-0002.bin>


More information about the Toybox mailing list