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 <csmall@dropbear.xyz>

References:
 procps-ng/procps!141
 procps-ng/procps#217
This commit is contained in:
ed neville 2021-10-14 19:37:42 +11:00 committed by Craig Small
parent 5f760d5085
commit 0496b39876
2 changed files with 39 additions and 2 deletions

1
NEWS
View File

@ -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

View File

@ -160,13 +160,49 @@ PROCPS_EXPORT char *procps_uptime_sprint_short(void)
if (procps_uptime(&uptime_secs, &idle_secs) < 0)
return shortbuf;
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) {