]> granicus.if.org Git - procps-ng/commitdiff
Synched top.[ch1] to Jims Wg release
authorcsmall <>
Mon, 26 Aug 2002 00:55:30 +0000 (00:55 +0000)
committercsmall <>
Mon, 26 Aug 2002 00:55:30 +0000 (00:55 +0000)
top.1
top.c
top.h

diff --git a/top.1 b/top.1
index 9802d26cd8637d228a6cd575a28eacd4f7ffd272..7c3bf8c972c88281aca882b01c0c5b41505ebb21 100644 (file)
--- a/top.1
+++ b/top.1
 .igEND
 .
 .\" Setup ////////////////////////////////////////////////////////////////
-.      \" ** Comment out 'll' to eliminate WIDTH fiddlin', 1 of 3
-.      ll +8
+\#  ** Comment out '.nr' or set to 0 to eliminate WIDTH fiddlin' !
+.nr half_xtra 4
+.
+.      ll +(\n[half_xtra] + \n[half_xtra])
 .
 \#                      Special right justify macros ---------------------
 \#                          - right justify start
 .      de Rjb
-.      \" ** Comment out 'll' to eliminate WIDTH fiddlin', 2 of 3
-.      ll -4
+.      ll -\n[half_xtra]
 .      rj \\$1
 ..
 \#                          - right justify end
 .      de Rje
-.      \" ** Comment out 'll' to eliminate WIDTH fiddlin', 3 of 3
-.      ll +4
+.      ll +\n[half_xtra]
 ..
 \#                      Jimmy's darn Bullet style ------------------------
 .      de Jbu
@@ -225,7 +225,7 @@ columns get misaligned.
 personal \*(CF, including any changes made on a per-window basis.
 Thus, once you personalize things they\fB remain personalized\fR until
 you decide to change them again.
-This \*(ME has been completely cured of:
+This \*(Me has been completely cured of:
 .Rjb 2
  i-cant-remember-so-please-do-that-all-over-again
  ( and again, and again ... )
@@ -239,14 +239,13 @@ go bye-bye.
 
 .New
 You have complete program\fB naming freedom\fR with no internal ties to a
-specific \*(CF.
-Thus, if you have permission to create symbolic links to /usr/bin (or can bribe
-the system administrator), these symlinks could be used to establish\fB
-different\fR \*(CFs reflecting the different\fB personalities\fR of your
-customized "\*(Mes", under whatever aliases you've used.
-
-Thus, you could have an alias for running \*(Me in 'Batch mode', another for when
-you work from the Linux console and maybe a third used with X-Windows.
+specific personal \*(CF.
+Symbolic links could be used to establish different \*(CFs reflecting
+the different personalities of your customized "\*(Mes", under whatever
+aliases you've used.
+
+Thus, you could have an alias for running \*(Me in 'Batch mode', another for
+when you work from the Linux console and maybe a third used with X-Windows.
 All of that, yet still just a single binary image!
 
 .\" ......................................................................
@@ -289,7 +288,7 @@ more distinct).
 
 .I Columns_Header\fR:
 Shows a\fB new\fR field and some\fB changed\fR labels (unseen to the right).
-Precious horizontal space is no longer squandered unlike your former top.
+Precious horizontal space is no longer squandered.
 
 .Scr
 All of that, however, is just the tip of the old iceberg.
@@ -318,7 +317,7 @@ in this document...
  ( or windows &\fB each\fR )| 6725 root       9   0  0.0   0:00.03 :
  ( could be shown in )| 6232 root       7 -10  1.9   4:25.86 :
  ( this way, or show )| 5561 root       9   0  0.0   0:00.33 :
- ( \fBall concurrently\fR! )| 5560 xfs        9   0  0.0   0:00.01 :
+ (\fB all concurrently\fR! )| 5560 xfs        9   0  0.0   0:00.01 :
                       | 5325 root       9   0  0.0   0:00.05 :
  ( will\fI change\fR often )| 4634 root       9   0  0.0   0:04.23 :
    -*-\fBRow hilites-->\fR  |\fB 1803 jgnome     9   0  0.0   1:55.30\fR :
@@ -333,7 +332,7 @@ assuming no \*(CF, thus no user customizations.
 However, items shown with an \*(AS could be overridden through the\fB
 command line\fR \*(EM a subject soon to be dealt with.
 
-    \fISystem_defaults\fR
+    \fIGlobal_defaults\fR
        'A' - Alt display        \fBOff\fR (full-screen)
      * 'd' - Delay time         3.0 seconds
        'I' - Irix mode          On\ \ (no, 'solaris' smp)
@@ -362,7 +361,7 @@ for a successful\fB close-encounter-of-the-1st-kind\fR with \*(Us.
 You need remember just the\fB help key\fR ('h' or '?') to survive
 \*(EM nay, prosper!
 What about quitting, you ask?
-Well, of course there's the 'Q' \*(CI, but then \*(ME does quite well
+Well, of course there's the 'Q' \*(CI, but then \*(Me does quite well
 with\fB signals\fR.
 So just zap him with the traditional \fI^C\fR when you're done.
 .br
@@ -746,8 +745,8 @@ then be\fB shown\fR as part of the \*(TD (screen width permitting).
 This will also be indicated by a leading \*(AS, as in this excerpt:
     \fR...
     \fR* J: %CPU       = CPU usage
-    \fR  K: TIME       = CPU Time
-    \fR  L: TIME+      = CPU Time, hundredths
+    \fR  k: TIME       = CPU Time
+    \fR  l: TIME+      = CPU Time, hundredths
     \fR* M: %MEM       = Memory usage (RES)
     \fR* N: VIRT       = Virtual Image (kb)
     \fR...
@@ -768,8 +767,8 @@ letter.
 .SH 3. INTERACTIVE Commands
 .\" ----------------------------------------------------------------------
 Listed below is a brief index of commands within categories.
-Some commands appear more than once and, while their meaning is consistent,
-the scope may vary depending on the context in which they are issued.
+Some commands appear more than once \*(EM their meaning or scope may vary
+depending on the context in which they are issued.
 
   3a.\fI GLOBAL_Commands\fR
         ?, ^L, <Sp>, =, A, d, F, h, O, I, k, Q, r, s, W, Z
@@ -783,7 +782,7 @@ the scope may vary depending on the context in which they are issued.
   3d.\fI COLOR_Mapping\fR
         <Enter>, a, b, H, M, q, S, T, w, z, 0 - 7
   4b.\fI COMMANDS_for_Windows\fR
-        -, _, =, +, A, F, g, O
+        -, _, =, +, A, a, F, g, O, w
 
 .\" ......................................................................
 .SS 3a. GLOBAL Commands
@@ -827,8 +826,9 @@ When operating in \*(AM this command has a slightly broader meaning.
 
 .TP 7
 \ \ \'\fBA\fR\' :\fIAlternate_Display_Mode_toggle\fR
-This command will switch between \*(FM and \*(AM
-(see 4. ALTERNATE\-DISPLAY Mode).
+This command will switch between \*(FM and \*(AM.
+See 4. ALTERNATE\-DISPLAY Mode and the 'F' or 'O' \*(CIs for insight into
+\*(CWs and field groups.
 
 .TP 7
 *\ \'\fBd\fR\' or \'\fBs\fR\' :\fIChange_Delay_Time_interval\fR
@@ -936,8 +936,8 @@ When you see 'Cpu(s) state:' in the \*(SA, the '1' toggle is \*O and all
 Otherwise, each \*(Pu is displayed separately as: 'cpu0, cpu1, ...'
 
 .in +4
-\*(NT If you receive a fatal error message in response to this command,
-your version of the kernel does not provide summary \*(Pu data in '/proc/stat'.
+\*(NT If you receive a fatal error message in response to this command, your
+version of the kernel does not provide separate \*(Pu data in '/proc/stat'.
 You can either avoid issuing this command or recompile \*(Me with the
 appropriate #define enabled so the command will be restricted to SMP.
 .in
@@ -985,7 +985,8 @@ your-brand-new-top and you'll make the program author a happy guy.
 \ \ \'\fBz\fR\' :\fIColor/Monochrome_toggle\fR
 Switches the \*(CW between your last used color scheme and the older form
 of black-on-white or white-on-black.
-It does not affect the state of the 'x', 'y' or 'b' toggles.
+This command will alter both the \*(SA and \*(TA but does not affect the
+state of the 'x', 'y' or 'b' toggles.
 
 .PP
 .\" .........................
@@ -1066,21 +1067,26 @@ Lose no sleep over 'reverse' and 'normal', ok?
 
 .TP 7
 \ \ \fB\ 7\fR\ \ upper case letters which \fISelect_a_Sort_Column\fR:
-\'C\fR\'\ \ :Sort by Command\fB line\fR or program\fB name\fR,
+\'\fBC\fR\'\ \ :Sort by Command\fB line\fR or program\fB name\fR,
 .br
 \ \ \ \ \ \ depending on the state of the 'c' toggle
 .br
-\'E\'\ \ :Sort by USER
+\'\fBE\fR\'\ \ :Sort by USER
 .br
-\'M\'\ \ :Sort by %MEM and/or RES
+\'\fBM\fR\'\ \ :Sort by %MEM and/or RES
 .br
-\'P\'\ \ :Sort by PID
+\'\fBP\fR\'\ \ :Sort by PID
 .br
-\'T\'\ \ :Sort by TIME and/or TIME+
+\'\fBT\fR\'\ \ :Sort by TIME and/or TIME+
 .br
-\'U\'\ \ :Sort by %CPU
+\'\fBU\fR\'\ \ :Sort by %CPU
 .br
-\'Y\'\ \ :Sort by TTY
+\'\fBY\fR\'\ \ :Sort by TTY
+
+.PP
+If you forget which field \*(Me is sorting, the '\fBR\fR' or '\fBx\fR'
+\*(CIs could be used for a quick visual reminder, without changing the
+selected sort column.
 
 .\" ......................................................................
 .SS 3d. COLOR Mapping
@@ -1196,9 +1202,10 @@ Come on, let's hear it, who ya gonna' blame, huh?
 .TP 7
 \ \ \'\fB-\fR\' or \'\fB_\fR\' :\fIShow/Hide_Window(s)_toggle\fR
 The '-' (minus) key turns the \*(CW's \*(TD \*O and \*F.
-When \*O, that \*(TA will show a minimum of 1 task and the columns header
-you've established with the 'f' and 'o' commands.
-It will also reflect any other \*(TA options/toggles you've applied.
+When \*O, that \*(TA will show a minimum of the columns header you've
+established with the 'f' and 'o' commands.
+It will also reflect any other \*(TA options/toggles you've applied yielding
+zero or more tasks.
 
 The '_' (upper case minus) key does the same for\fB all\fR \*(TDs.
 In other words, it switches between the currently visible \*(TD(s) and any
@@ -1403,7 +1410,7 @@ empty rows...
 .Img
  1:Def\fI no\fR highlight,  +\fB--------------------------------------\fR+
   thus disabled cmds: |1:Def - 15:50:32 up 16:29,  9 users,  :
-  b,i,n,u,x,y,z, etc. |Tasks: \fB 75\fR total,  \fB 2\fR running, \fB 73\fR sle:
+  b,i,n,u,x,y, etc.   |Tasks: \fB 75\fR total,  \fB 2\fR running, \fB 73\fR sle:
   & m = lost Mem/Swap |Cpu(s) state: \fB 10.6%\fR user,  \fB 0.0%\fR syst:
                       |______________________________________:
  2:Job was very busy: |\fI2__PID__PPID_Command____________TIME+_\fR:
@@ -1471,15 +1478,14 @@ not successfully, ha ha):
    \fBs\fR or\fB d\fR    Change\fB delay/update\fR interval
 
 The system \*(CF is\fB not\fR created by \*(Me.
-Rather,\fB you create this file manually\fR and place it in the\fI /etc\fR directory.
-Its name must agree with 'your-name-for-top'\ +\ 'rc' and must have\fI
-no\fR leading '.' (period).
-It must have\fI only_two_lines\fR.
+Rather,\fB you create this file manually\fR and place it in the \fI/etc\fR
+directory.
+Its name must be 'toprc' and must have\fI no\fR leading '.' (period).
+It must have only\fI two lines\fR.
 
-Here is an example of a system \*(CF placed in\fI /etc\fR
-as\fI top\fBrc\fR:\ \ /etc/\fItop\fBrc\fR
+Here is an example of the contents of\fI /etc/toprc\fR:
    \fBs\fR         # line 1: 'secure' mode switch
-   \fB5.0\fR       # line 2: 'delay'\ \ interval (secs)
+   \fB5.0\fR       # line 2: 'delay'\ \ interval in seconds
 
 .\" ......................................................................
 .SS 5b. PERSONAL Configuration File
diff --git a/top.c b/top.c
index adc1f9e08b25d8ce546879bf623f8270a409c826..b322657dc6a0dec29141a1e1a7023af526f2a663 100644 (file)
--- a/top.c
+++ b/top.c
@@ -72,12 +72,11 @@ static struct termios Savedtty,
                       Rawtty;
 static int  Ttychanged = 0;
 
-        /* Program name used in error messages and 'rc' file names */
+        /* Program name used in error messages and local 'rc' file name */
 static char *Myname;
 
-        /* The Name of the config file(s), dynamically constructed */
-static char  RCfile     [OURPATHSZ],
-             RCfile_Sys [SMLBUFSIZ];
+        /* The Name of the local config file, dynamically constructed */
+static char  RCfile [OURPATHSZ];
 
         /* The run-time acquired page size */
 static int  Page_size;
@@ -380,7 +379,11 @@ static void bye_bye (int eno, const char *str)
       "\nbye_bye's Summary report:"
       "\n\tProgram"
       "\n\t   Page_size = %d, Cpu_tot = %d"
-      "\n\tTerminal: %s"
+      "\n\t   %s, Hertz = %u (size %u bytes, %u-bit time)"
+      "\n\t   sizeof(CPUS_t) = %u, sizeof(HIST_t) = %u (%u HIST_t's/Page)"
+      "\n\t   CPU_FMTS_JUST1 = %s"
+      "  \t   CPU_FMTS_MULTI = %s"
+      "  \tTerminal: %s"
       "\n\t   device = %s, ncurses = v%s"
       "\n\t   max_colors = %d, max_pairs = %d"
       "\n\t   Cap_can_goto = %s"
@@ -388,7 +391,7 @@ static void bye_bye (int eno, const char *str)
       "\n\t   Max_lines = %d"
       "\n\tWindows and Curwin->"
       "\n\t   sizeof(WIN_t) = %u, GROUPSMAX = %d"
-      "\n\t   winname = %s, grpname = %s,"
+      "\n\t   winname = %s, grpname = %s"
 #ifdef CASEUP_HEXES
       "\n\t   winflags = %08X, maxpflgs = %d"
 #else
@@ -399,6 +402,9 @@ static void bye_bye (int eno, const char *str)
       "\n\t   sorttype  = %c"
       "\n"
       , Page_size, Cpu_tot
+      , procps_version, (unsigned)Hertz, sizeof(Hertz), sizeof(Hertz) * 8
+      , sizeof(CPUS_t), sizeof(HIST_t), Page_size / sizeof(HIST_t)
+      , CPU_FMTS_JUST1, CPU_FMTS_MULTI
 #ifdef PRETENDNOCAP
       , "dumb"
 #else
@@ -787,12 +793,12 @@ static char *scale_tics (TICS_t tics, const unsigned width)
 
       /* try successively higher units until it fits */
    t = tics / Hertz;
-   sprintf(buf, "%d:%02d.%02d"                 /* minutes:seconds.tenths */
-      , t/60, t%60, (int)((tics*100)/Hertz)%100);
+   sprintf(buf, "%u:%02u.%02u"                 /* minutes:seconds.hundredths */
+      , t/60, t%60, (unsigned)((tics*100)/Hertz)%100);
    if (strlen(buf) <= width)
       return buf;
 
-   sprintf(buf, "%d:%02d", t/60, t%60);         /* minutes:seconds */
+   sprintf(buf, "%u:%02u", t/60, t%60);         /* minutes:seconds */
    if (strlen(buf) <= width)
       return buf;
 
@@ -944,8 +950,8 @@ static void before (char *me)
 
 
         /*
-         * Build the two RC file names then try to read 'em. */
-        /* '/etc/RCfile_Sys' contains two lines consisting of the secure
+         * Build the local RC file name then try to read both of 'em. */
+        /* 'SYS_RCFILE' contains two lines consisting of the secure
          *   mode switch and an update interval.  It's presence limits what
          *   ordinary users are allowed to do. */
         /* '$HOME/RCfile' contains multiple lines - 2 global + 3 per window.
@@ -966,12 +972,11 @@ static void configs_read (void)
    char id;
    int i;
 
-   strcpy(RCfile_Sys, fmtmk("/etc/%src", Myname));
    if (getenv("HOME"))
       strcpy(RCfile, fmtmk("%s%c", getenv("HOME"), '/'));
    strcat(RCfile, fmtmk(".%src", Myname));
 
-   fp = fopen(RCfile_Sys, "r");
+   fp = fopen(SYS_RCFILE, "r");
    if (fp) {
       fbuf[0] = '\0';
       fgets(fbuf, sizeof(fbuf), fp);            /* sys rc file, line #1 */
@@ -1079,7 +1084,7 @@ static void parse_args (char **args)
                if (cp[1]) cp++;
                else if (*args) cp = *args++;
                else std_err("-n requires argument");
-               if (1 != sscanf(cp, "%d", &Loops) || 0 > Loops)
+               if (1 != sscanf(cp, "%d", &Loops) || 1 > Loops)
                   std_err(fmtmk("bad iterations arg '%s'", cp));
                break;
             case 'p':
@@ -1113,7 +1118,7 @@ static void parse_args (char **args)
          } /* end: switch (*cp) */
 
             /* advance cp and jump over any numerical args used above */
-         if (*cp) cp += strspn(++cp, "- ,.1234567890");
+         if (*cp) cp += strspn(&cp[1], "- ,.1234567890") + 1;
       } /* end: while (*cp) */
    } /* end: while (*args) */
 
@@ -1184,13 +1189,15 @@ static void display_fields (void)
       too lazy to handle his own asterisk (*) logic */
    putp(Cap_bold);
    for (i = 0; i < MAXtbl(Fieldstab); ++i) {
+      int b = (NULL != strchr(Curwin->fieldscur, i + 'A'));
          /* advance past any leading spaces */
       for (p = Fieldstab[i].head; ' ' == *p; ++p)
          ;
+
       printf("%s%c %c: %-10s = %s"
          , tg2((i / rmax) * cmax, (i % rmax) + yRSVD)
-         , strchr(Curwin->fieldscur, i + 'A') ? '*' : ' '
-         , i + 'A'
+         , b ? '*' : ' '
+         , b ? i + 'A' : i + 'a'
          , p
          , Fieldstab[i].desc);
    }
@@ -1670,9 +1677,9 @@ static void cpudo (FILE *fp, const char *fmt, CPUS_t *cpu, const char *pfx)
 {
         /* we'll trim to zero if we get negative time ticks,
            which has happened with some SMP kernels (pre-2.4?) */
-#define TRIMz(x)  ((tz = (long)x) < 0 ? 0 : tz)
+#define TRIMz(x)  ((tz = (STIC_t)x) < 0 ? 0 : tz)
    TICS_t u_tics, s_tics, n_tics, i_tics;
-   long   u_frme, s_frme, n_frme, i_frme, tot_frme, tz;
+   STIC_t u_frme, s_frme, n_frme, i_frme, tot_frme, tz;
 
 #ifdef PRETEND4CPUS
    rewind(fp);
@@ -1696,6 +1703,7 @@ static void cpudo (FILE *fp, const char *fmt, CPUS_t *cpu, const char *pfx)
       , (float)s_frme * 100 / tot_frme
       , (float)n_frme * 100 / tot_frme
       , (float)i_frme * 100 / tot_frme));
+   Msg_row += 1;
 
       /* remember for next time around */
    cpu->u = u_tics;
@@ -1716,7 +1724,6 @@ static void frame_states (proc_t **p, int show)
 {
    static HIST_t   *hist_sav = NULL;
    static unsigned  hist_siz;
-   static int       viewsav;
    static CPUS_t   *smpcpu;
    HIST_t          *hist_new;
    unsigned         total, running, sleeping, stopped, zombie;
@@ -1725,14 +1732,12 @@ static void frame_states (proc_t **p, int show)
 
    if (!hist_sav) {
       Frame_maxtask = 0;
-         /* room for 512 HIST_t's (if Page_size == 4k) */
       hist_siz = (Page_size / sizeof(HIST_t));
       hist_sav = alloc_c(hist_siz);
          /* note: we allocate one more CPUS_t than Cpu_tot so that the last
                   slot can hold tics representing the /proc/stat cpu summary
                   (first line read)  -- that slot supports summary cpu info */
       smpcpu = alloc_c((1 + Cpu_tot) * sizeof(CPUS_t));
-      viewsav = CHKw(Curwin, View_CPUSUM);
    }
    hist_new = alloc_c(hist_siz);
    total = running = sleeping = stopped = zombie = 0;
@@ -1796,37 +1801,23 @@ static void frame_states (proc_t **p, int show)
          , total, running, sleeping, stopped, zombie));
       Msg_row += 1;
 
-         /* clean old histories if we've changed modes */
-      if (CHKw(Curwin, View_CPUSUM) != viewsav) {
-         if (CHKw(Curwin, View_CPUSUM))
-               /* fresh start for the last slot in the history area */
-            memset(&smpcpu[Cpu_tot], '\0', sizeof(CPUS_t));
-         else
-               /* fresh start for the true smpcpu history area  */
-            memset(smpcpu, '\0', Cpu_tot * sizeof(CPUS_t));
-         viewsav = CHKw(Curwin, View_CPUSUM);
-      }
-
       if (!(fp = fopen("/proc/stat", "r")))
          std_err(fmtmk("Failed /proc/stat open: %s", strerror(errno)));
 
       if (CHKw(Curwin, View_CPUSUM)) {
             /* retrieve and display just the 1st /proc/stat line */
          cpudo(fp, CPU_FMTS_JUST1, &smpcpu[Cpu_tot], "Cpu(s) state:");
-         Msg_row += 1;
       } else {
          char tmp[SMLBUFSIZ];
 
             /* skip the 1st line, which reflects total cpu states */
-         if (!fgets(tmp, sizeof(tmp), fp))
-            std_err("Failed /proc/stat read");
+         if (!fgets(tmp, sizeof(tmp), fp)) std_err("Failed /proc/stat read");
             /* now do each cpu's states separately */
          for (i = 0; i < Cpu_tot; i++) {
             sprintf(tmp, "%-6scpu%-2d:"         /* [ cpu states as ]      */
                , i ? " " : "State"              /*    'State cpu0 : ... ' */
                , Mode_irixps ? i : Cpu_map[i]); /*    '      cpu1 : ... ' */
             cpudo(fp, CPU_FMTS_MULTI, &smpcpu[i], tmp);
-            Msg_row += 1;
          }
       }
       fclose(fp);
@@ -2168,7 +2159,7 @@ static void do_key (unsigned c)
       case 'g':
          if (Mode_altscr) {
             char tmp[GETBUFSIZ];
-            strcpy(tmp, ask4str(fmtmk("Rename window '%s' to (0-3 chars)"
+            strcpy(tmp, ask4str(fmtmk("Rename window '%s' to (1-3 chars)"
                , Curwin->winname)));
             if (tmp[0]) win_names(Curwin, tmp);
          }
@@ -2319,7 +2310,7 @@ static void do_key (unsigned c)
             fprintf(fp, "RCfile for \"%s with windows\"\t\t# shameless braggin'\n"
                , Myname);
             fprintf(fp, "Id:%c, "
-               "Mode_altscr=%d, Mode_irixps=%d, Delay_time=%.1f, Curwin=%d\n"
+               "Mode_altscr=%d, Mode_irixps=%d, Delay_time=%.3f, Curwin=%d\n"
                , RCF_FILEID
                , Mode_altscr, Mode_irixps, Delay_time, Curwin - Winstk[0]);
             for (i = 0; i < GROUPSMAX; i++) {
@@ -2553,7 +2544,7 @@ static void do_window (proc_t **ppt, WIN_t *q, int *lscr)
          * -- i swear that's the whole truth, so-help-me ! */
 static void sohelpme (int wix, int max)
 {
-   WIN_t *w;
+   WIN_t *w = Winstk[wix];
    int i, rsvd, size, wins;
 
       /* calc remaining number of visible windows + total 'user' lines */
@@ -2656,7 +2647,9 @@ static void so_lets_see_em (void)
          * it just SPLENDIDLY!  You go right on doing it EXACTLY the SAME!
          */
 int main (int dont_care_argc, char **argv)
-{ /*
+{
+   before(*argv);
+  /*
    Ok, she's gone now.  Don't you mind her, she means well but yes, she is
    a bit of a busy-body.  Always playing the matchmaker role, trying to do
    away with unmarried windows and bachelors.  So, back to business buddy!
@@ -2668,7 +2661,6 @@ int main (int dont_care_argc, char **argv)
    Well then, here, try THIS sandwich...
                                                            +-------------+ */
    windows_stage1();                                    /* top (sic) slice */
-   before(*argv);                                       /* > seasonings, < */
    configs_read();                                      /* > spread etc, < */
    parse_args(&argv[1]);                                /* > lean stuff, < */
    whack_terminal();                                    /* > onions etc. < */
diff --git a/top.h b/top.h
index 0b8421314ed2a4073912e53d179af85f9512d790..ddf02955ec82a99b150991daacf71ca19d08d0dc 100644 (file)
--- a/top.h
+++ b/top.h
 
         /* Defines intended to be experimented with ------------------------ */
 //#define CASEUP_HEXES            /* show any hex values in upper case       */
-//#define CASEUP_SCALE            /* show scaled times & memory upper case   */
+//#define CASEUP_SCALE            /* show scaled time/num suffix upper case  */
 //#define CASEUP_SUMMK            /* show memory summary kilobytes with 'K'  */
 //#define QUIT_NORMALQ            /* use 'q' to quit, not new default 'Q'    */
 //#define SORT_SUPRESS            /* *attempt* to reduce qsort overhead      */
+//#define TICS_64_BITS            /* accommodate Linux 2.5.xx 64-bit jiffies */
 //#define USE_LIB_STA3            /* use lib status (3 ch) vs. proc_t (1 ch) */
 //#define WARN_NOT_SMP            /* restrict '1' & 'I' commands to true smp */
 
 
 /*######  Some Typedef's and Enum's  #####################################*/
 
-        /* This typedef attempts to ensure consistent 'ticks' handling. */
+        /* These typedefs attempt to ensure consistent 'ticks' handling */
+#ifdef TICS_64_BITS
+typedef unsigned long long TICS_t;
+typedef          long long STIC_t;
+#else
 typedef unsigned long TICS_t;
+typedef          long STIC_t;
+#endif
 
         /* This structure consolidates the information that's used
            in a variety of display roles. */
@@ -257,8 +264,10 @@ typedef struct win {
 
 /*######  Display Support *Data*  ########################################*/
 
-        /* An rcfile 'footprint' used to invalidate existing */
-#define RCF_FILEID  'e'
+        /* An rcfile 'footprint' used to invalidate existing local rcfile
+           and the global rcfile path + name */
+#define RCF_FILEID  'g'
+#define SYS_RCFILE  "/etc/toprc"
 
         /* The default fields displayed and their order,
            if nothing is specified by the loser, oops user */
@@ -270,8 +279,13 @@ typedef struct win {
 
         /* These are the possible fscanf formats used in /proc/stat
            reads during history processing. */
+#ifdef TICS_64_BITS
+#define CPU_FMTS_MULTI  "cpu%*d %Lu %Lu %Lu %Lu\n"
+#define CPU_FMTS_JUST1  "cpu %Lu %Lu %Lu %Lu\n"
+#else
 #define CPU_FMTS_MULTI  "cpu%*d %lu %lu %lu %lu\n"
 #define CPU_FMTS_JUST1  "cpu %lu %lu %lu %lu\n"
+#endif
 
         /* Summary Lines specially formatted string(s) --
            see 'show_special' for syntax details + other cautions. */
@@ -338,8 +352,8 @@ typedef struct win {
    "%s's - \01Help for Interactive Commands\02 - %s\n" \
    "Window %s\06: \01Cumulative mode \03%s\02.  \01System\06: \01Delay time \03%.1f secs\02; \01Secure mode \03%s\02.\n" \
    "  sp or ^L    Redraw screen\n" \
-   "  o           Rearrange current window's fields\n" \
-   "  f           Add and remove current window's fields\n" \
+   "  o         . Rearrange current window's fields\n" \
+   "  f         . Add and remove current window's fields\n" \
    "  Z           Change color mappings for any window\05\n" \
    "\n" \
    "(7 letters) . Sort: \01C\02) cmd; \01M\02) mem; \01P\02) pid; \01T\02) time; \01U\02) cpu; \01Y\02) tty; \01E\02) user\n" \
@@ -391,10 +405,6 @@ typedef struct win {
    "  0x00040000  PF_KERNTHREAD (2.5)\n" \
    "  0x00100000  PF_USEDFPU (thru 2.4)\n" \
    "  0x00400000  PF_ATOMICALLOC\n" \
-   "\n" \
-   "Memory notes:\n" \
-   "  VIRT = SWAP + RES\n" \
-   "  RES  = CODE + DATA\n" \
    ""
 
         /* Windows/Field Group Help specially formatted string(s) --