]> granicus.if.org Git - procps-ng/commitdiff
uptime: Correctly print pretty/short format
authored neville <ed@s5h.net>
Thu, 14 Oct 2021 08:37:42 +0000 (19:37 +1100)
committerCraig Small <csmall@dropbear.xyz>
Thu, 14 Oct 2021 08:37:42 +0000 (19:37 +1100)
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

NEWS
proc/uptime.c

diff --git a/NEWS b/NEWS
index efa44a6be917f3e371530194f86142024d0d90ad..5f41025d8901430cb9f8c317dd91474cd733c86c 100644 (file)
--- 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
index 0f1fab2420f94f167419b9cae9e5da633d73c17d..39ba51883e7ed9951da28789f904351427dfc7d0 100644 (file)
@@ -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) {