Also add trivial tests. --- tests/uptime.test | 10 ++++++++++ toys/other/uptime.c | 32 ++++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 tests/uptime.test
From 3fef24c5092fa1d3819fa39f6b8b4b7086c60b0e Mon Sep 17 00:00:00 2001 From: Elliott Hughes <e...@google.com> Date: Mon, 20 Mar 2017 17:56:12 -0700 Subject: [PATCH] Implement uptime -s.
Also add trivial tests. --- tests/uptime.test | 10 ++++++++++ toys/other/uptime.c | 32 ++++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 tests/uptime.test diff --git a/tests/uptime.test b/tests/uptime.test new file mode 100644 index 0000000..df65cd0 --- /dev/null +++ b/tests/uptime.test @@ -0,0 +1,10 @@ +#!/bin/bash + +[ -f testing.sh ] && . testing.sh + +#testing "name" "command" "result" "infile" "stdin" + +testing "uptime" "uptime | grep -q 'load average:' && echo t" "t\n" "" "" +testing "uptime -s" \ + "uptime -s | grep -q '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]$' && echo t" \ + "t\n" "" "" diff --git a/toys/other/uptime.c b/toys/other/uptime.c index 91887df..dc3c2df 100644 --- a/toys/other/uptime.c +++ b/toys/other/uptime.c @@ -5,42 +5,54 @@ * Copyright 2013 Jeroen van Rijn <jvr...@gmail.com> -USE_UPTIME(NEWTOY(uptime, NULL, 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 how long the system has been running and the system load - averages for the past 1, 5 and 15 minutes. + 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. + + -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; -- 2.12.0.367.g23dc2f6d3c-goog
_______________________________________________ Toybox mailing list Toybox@lists.landley.net http://lists.landley.net/listinfo.cgi/toybox-landley.net