]> granicus.if.org Git - procps-ng/commitdiff
top: tweaked the recently introduced 'STARTED' support
authorJim Warner <james.warner@comcast.net>
Sun, 27 Feb 2022 06:00:00 +0000 (00:00 -0600)
committerCraig Small <csmall@dropbear.xyz>
Mon, 28 Feb 2022 09:21:00 +0000 (20:21 +1100)
When the 'STARTED' field was added, the width was made
the same as the 'TIME+' field. Thus, a full time could
be shown (which then included hundredths of a second).

That kind of granularity is totally unnecessary. After
all, this column is potentially confusing enough since
it is so counterintuitive. So, this commit will reduce
the width of the field with some help from scale_tics.

Henceforth it will not include those ol' centiseconds.

[ along the way let's expand the man document with a ]
[ a remainder about content representation & scaling ]

Reference(s):
. introduced 'start time' field
commit 7647e96b0a35d473fa9bc644ea6107487b3b0527

Signed-off-by: Jim Warner <james.warner@comcast.net>
top/top.1
top/top.c
top/top.h
top/top_nls.c

index 61d62fd3b80b03e69f174f9a9a98b2af8a47a243..d448d7ebf452c8cca1bb8d8e721fd3a90375f06d 100644 (file)
--- a/top/top.1
+++ b/top/top.1
@@ -980,10 +980,15 @@ member of the session, called the session leader, which is usually the
 login shell.
 
 .TP 4
-\fBSTARTED \*(Em Start Time \fR
+\fBSTARTED \*(Em Start Time Interval\fR
 The length of time since system boot when a process started.
 Thus, the most recently started task will display the largest time interval.
 
+The value will be expressed as 'MM:SS' (minutes:sceonds) until the
+interval becomes too great to fit column width.
+At that point it will be scaled to 'HH,MM' (hours,minutes) and possibly
+beyond.
+
 .TP 4
 \fBSUID \*(Em Saved User Id \fR
 The\fI saved\fR user ID.
index f30ce57f98d7e96d93c73f6624831e3810576389..2fa8a6a7a56404eed256998eaea928fa4946e12b 100644 (file)
--- a/top/top.c
+++ b/top/top.c
@@ -1633,7 +1633,7 @@ end_justifies:
         /*
          * Do some scaling stuff.
          * Format 'tics' to fit 'width', then justify it. */
-static const char *scale_tics (TIC_t tics, int width, int justr) {
+static const char *scale_tics (TIC_t tics, int width, int justr, int abrv) {
 #ifdef CASEUP_SUFIX
  #define HH "%uH"                                                  // nls_maybe
  #define DD "%uD"
@@ -1656,7 +1656,7 @@ static const char *scale_tics (TIC_t tics, int width, int justr) {
    nt /= 100;                                   // total seconds
    nn  = nt % 60;                               // seconds past the minute
    nt /= 60;                                    // total minutes
-   if (width >= snprintf(buf, sizeof(buf), "%lu:%02u.%02u", nt, nn, cc))
+   if (!abrv && width >= snprintf(buf, sizeof(buf), "%lu:%02u.%02u", nt, nn, cc))
       goto end_justifies;
    if (width >= snprintf(buf, sizeof(buf), "%lu:%02u", nt, nn))
       goto end_justifies;
@@ -1776,7 +1776,7 @@ static struct {
    {     5,     -1,  A_right,  PIDS_IO_WRITE_OPS   },  // ul_int   EU_IWO
    {     5,     -1,  A_right,  PIDS_AUTOGRP_ID     },  // s_int    EU_AGI
    {     4,     -1,  A_right,  PIDS_AUTOGRP_NICE   },  // s_int    EU_AGN
-   {     9,     -1,  A_right,  PIDS_TICS_BEGAN     },  // ull_int  EU_TM3
+   {     7,     -1,  A_right,  PIDS_TICS_BEGAN     },  // ull_int  EU_TM3
    {     6,     -1,  A_right,  PIDS_UTILIZATION    }   // real     EU_CUU
 #define eu_LAST  EU_CUU
 // xtra Fieldstab 'pseudo pflag' entries for the newlib interface . . . . . . .
@@ -6236,18 +6236,18 @@ static const char *task_show (const WIN_t *q, int idx) {
          case EU_FLG:        // PIDS_FLAGS
             cp = make_str(hex_make(rSv(EU_FLG, ul_int), 1), W, Js, AUTOX_NO);
             break;
-   /* ull_int, scale_tics */
+   /* ull_int, scale_tics (try centiseconds) */
          case EU_TM2:        // PIDS_TICS_ALL
          case EU_TME:        // PIDS_TICS_ALL
          {  TIC_t t;
             if (CHKw(q, Show_CTIMES)) t = rSv(eu_TICS_ALL_C, ull_int);
             else t = rSv(i, ull_int);
-            cp = scale_tics(t, W, Jn);
+            cp = scale_tics(t, W, Jn, 0);
          }
             break;
-   /* ull_int, scale_time */
+   /* ull_int, scale_tics (try seconds) */
          case EU_TM3:        // PIDS_TICS_BEGAN
-            cp = scale_tics(rSv(EU_TM3, ull_int), W, Jn);
+            cp = scale_tics(rSv(EU_TM3, ull_int), W, Jn, 1);
             break;
    /* str, make_str (all AUTOX yes) */
          case EU_LXC:        // PIDS_LXCNAME
index f008f550685f6dfd381e965827a2d125c5a571f7..d3ba4d8c7299b511fd5be6af096f975573a8c596 100644 (file)
--- a/top/top.h
+++ b/top/top.h
@@ -624,7 +624,7 @@ typedef struct WIN_t {
 //atic const char   *scale_mem (int target, float num, int width, int justr);
 //atic const char   *scale_num (float num, int width, int justr);
 //atic const char   *scale_pcnt (float num, int width, int justr, int xtra);
-//atic const char   *scale_tics (TIC_t tics, int width, int justr);
+//atic const char   *scale_tics (TIC_t tics, int width, int justr, int abrv);
 /*------  Fields Management support  -------------------------------------*/
 /*atic struct        Fieldstab[] = { ... }                                */
 //atic void          adj_geometry (void);
index 64c9cc5ffba6c9e471b1fd2cd33967149f0e3ddd..7d496ac78c0350299860234c84f601f9a98b3df2 100644 (file)
@@ -350,7 +350,7 @@ static void build_two_nlstabs (void) {
 /* Translation Hint: maximum 'AGNI' = 4 */
    Head_nlstab[EU_AGN] = _("AGNI");
    Desc_nlstab[EU_AGN] = _("Autogroup Nice Value");
-/* Translation Hint: maximum 'STARTED' = 9 */
+/* Translation Hint: maximum 'STARTED' = 7 */
    Head_nlstab[EU_TM3] = _("STARTED");
    Desc_nlstab[EU_TM3] = _("Start Time from boot");
 /* Translation Hint: maximum '%CUU' = 6 */