From: ed neville Date: Thu, 14 Oct 2021 08:37:42 +0000 (+1100) Subject: uptime: Correctly print pretty/short format X-Git-Tag: v4.0.0~101 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0496b39876d569fe1cecb76ad5ef212cd14c0374;p=procps-ng uptime: Correctly print pretty/short format uptime -p would show empty output after 52 weeks of uptime. This commit is largely the work of Ed but reformatted for newlib branch. Signed-off-by: Craig Small References: procps-ng/procps!141 procps-ng/procps#217 --- diff --git a/NEWS b/NEWS index efa44a6b..5f41025d 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,7 @@ procps-ng-NEXT * top: summary area memory lines can print two abreast * top: added two new autogroup fields * top: added long versions of command line options + * uptime: print short/pretty format correctly issue #217 * vmstat: add -y option to remove first line merge !72 procps-ng-3.3.17 diff --git a/proc/uptime.c b/proc/uptime.c index 0f1fab24..39ba5188 100644 --- a/proc/uptime.c +++ b/proc/uptime.c @@ -160,13 +160,49 @@ PROCPS_EXPORT char *procps_uptime_sprint_short(void) if (procps_uptime(&uptime_secs, &idle_secs) < 0) return shortbuf; - updecades = (int) uptime_secs / (60*60*24*365*10); + if (uptime_secs>60*60*24*365*10) { + updecades = (int) uptime_secs / (60*60*24*365*10); + uptime_secs -= updecades*60*60*24*365*10; + } + else { + updecades = 0; + } + if (uptime_secs>60*60*24*365) { + upyears = (int) uptime_secs / (60*60*24*365); + uptime_secs -= upyears*60*60*24*365; + } + else { + upyears = 0; + } + if (uptime_secs>60*60*24*7) { + upweeks = (int) uptime_secs / (60*60*24*7); + uptime_secs -= upweeks*60*60*24*7; + } + else { + upweeks = 0; + } + if (uptime_secs>60*60*24) { + updays = (int) uptime_secs / (60*60*24); + uptime_secs -= updays*60*60*24; + } + else { + updays = 0; + } + if (uptime_secs>60*60) { + uphours = (int) uptime_secs / (60*60); + uptime_secs -= uphours*60*60; + } + if (uptime_secs>60) { + upminutes = (int) uptime_secs / 60; + uptime_secs -= upminutes*60; + } + /*updecades = (int) uptime_secs / (60*60*24*365*10); upyears = ((int) uptime_secs / (60*60*24*365)) % 10; upweeks = ((int) uptime_secs / (60*60*24*7)) % 52; updays = ((int) uptime_secs / (60*60*24)) % 7; uphours = ((int) uptime_secs / (60*60)) % 24; upminutes = ((int) uptime_secs / (60)) % 60; - +*/ strcat(shortbuf, "up "); if (updecades) {