diff options
author | Elliott Hughes <enh@google.com> | 2017-03-21 12:11:29 -0700 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2017-03-22 08:17:17 -0500 |
commit | 1ac63acd762b6a714bc04a87d8f416a0f619092c (patch) | |
tree | 884acbafc44c327fc14869e6192b7ff77043082b /toys | |
parent | e97aeb6dea6ed654d599527c1f1d521e576743b4 (diff) | |
download | toybox-1ac63acd762b6a714bc04a87d8f416a0f619092c.tar.gz |
Implement uptime -s.
Also add trivial tests.
Diffstat (limited to 'toys')
-rw-r--r-- | toys/other/uptime.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/toys/other/uptime.c b/toys/other/uptime.c index 1acb39ef..485dfee5 100644 --- a/toys/other/uptime.c +++ b/toys/other/uptime.c @@ -4,43 +4,54 @@ * Copyright 2012 Luis Felipe Strano Moraes <lfelipe@profusion.mobi> * Copyright 2013 Jeroen van Rijn <jvrnix@gmail.com> - -USE_UPTIME(NEWTOY(uptime, NO_ARGS, TOYFLAG_USR|TOYFLAG_BIN)) +USE_UPTIME(NEWTOY(uptime, ">0s", TOYFLAG_USR|TOYFLAG_BIN)) config UPTIME bool "uptime" default y depends on TOYBOX_UTMPX help - usage: uptime + usage: uptime [-s] + + 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. - Tell how long the system has been running and the system load - averages for the past 1, 5 and 15 minutes. + -s Since when has the system been up? */ +#define FOR_uptime #include "toys.h" void uptime_main(void) { struct sysinfo info; - time_t tmptime; - struct tm * now; + time_t t; + struct tm *tm; unsigned int days, hours, minutes; struct utmpx *entry; int users = 0; // Obtain the data we need. sysinfo(&info); - time(&tmptime); - now = localtime(&tmptime); + time(&t); + + // Just show the time of boot? + if (toys.optflags & FLAG_s) { + t -= info.uptime; + tm = localtime(&t); + strftime(toybuf, sizeof(toybuf), "%F %T", tm); + xputs(toybuf); + return; + } // Obtain info about logged on users setutxent(); while ((entry = getutxent())) if (entry->ut_type == USER_PROCESS) users++; endutxent(); - // Time - xprintf(" %02d:%02d:%02d up ", now->tm_hour, now->tm_min, now->tm_sec); + // 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; |