diff options
author | Elliott Hughes <enh@google.com> | 2017-11-16 16:35:10 -0800 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2017-12-03 01:27:06 -0600 |
commit | 247d7556a32cbcdc1fadd3a32072936b786e9be5 (patch) | |
tree | 1bb556e81fe159b36a94d93d5e05fb0f805f0625 /toys | |
parent | ebceb16fd2992f76a1b4b42eec2b6d0d380935ac (diff) | |
download | toybox-247d7556a32cbcdc1fadd3a32072936b786e9be5.tar.gz |
Add uptime -p.
We (Android) give up trying to teach folks what "up 142 days, 1:45"
means...
Bug: http://b/65205261
Diffstat (limited to 'toys')
-rw-r--r-- | toys/other/uptime.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/toys/other/uptime.c b/toys/other/uptime.c index 485dfee5..61aed8fb 100644 --- a/toys/other/uptime.c +++ b/toys/other/uptime.c @@ -4,18 +4,19 @@ * Copyright 2012 Luis Felipe Strano Moraes <lfelipe@profusion.mobi> * Copyright 2013 Jeroen van Rijn <jvrnix@gmail.com> -USE_UPTIME(NEWTOY(uptime, ">0s", TOYFLAG_USR|TOYFLAG_BIN)) +USE_UPTIME(NEWTOY(uptime, ">0ps", TOYFLAG_USR|TOYFLAG_BIN)) config UPTIME bool "uptime" default y depends on TOYBOX_UTMPX help - usage: uptime [-s] + usage: uptime [-ps] Tell the current time, how long the system has been running, the number of users, and the system load averages for the past 1, 5 and 15 minutes. + -p Pretty (human-readable) uptime -s Since when has the system been up? */ @@ -44,23 +45,37 @@ void uptime_main(void) return; } - // Obtain info about logged on users - setutxent(); - while ((entry = getutxent())) if (entry->ut_type == USER_PROCESS) users++; - endutxent(); - // Current time tm = localtime(&t); - xprintf(" %02d:%02d:%02d up ", tm->tm_hour, tm->tm_min, tm->tm_sec); // Uptime info.uptime /= 60; minutes = info.uptime%60; info.uptime /= 60; hours = info.uptime%24; days = info.uptime/24; + + if (toys.optflags & FLAG_p) { + int weeks = days/7; + days %= 7; + + xprintf("up %d week%s, %d day%s, %d hour%s, %d minute%s\n", + weeks, (weeks!=1)?"s":"", + days, (days!=1)?"s":"", + hours, (hours!=1)?"s":"", + minutes, (minutes!=1)?"s":""); + return; + } + + xprintf(" %02d:%02d:%02d up ", tm->tm_hour, tm->tm_min, tm->tm_sec); if (days) xprintf("%d day%s, ", days, (days!=1)?"s":""); if (hours) xprintf("%2d:%02d, ", hours, minutes); else printf("%d min, ", minutes); + + // Obtain info about logged on users + setutxent(); + while ((entry = getutxent())) if (entry->ut_type == USER_PROCESS) users++; + endutxent(); + printf(" %d user%s, ", users, (users!=1) ? "s" : ""); printf(" load average: %.02f, %.02f, %.02f\n", info.loads[0]/65536.0, info.loads[1]/65536.0, info.loads[2]/65536.0); |