diff --git a/0001-top-add-the-major-version-to-dlopen-of-libnuma-sonam.patch b/0001-top-add-the-major-version-to-dlopen-of-libnuma-sonam.patch deleted file mode 100644 index 3337aae..0000000 --- a/0001-top-add-the-major-version-to-dlopen-of-libnuma-sonam.patch +++ /dev/null @@ -1,42 +0,0 @@ -From b55f9b97db9101e8fb1903d03f7bc7e9c8476572 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Thu, 6 Jun 2013 00:00:00 -0500 -Subject: [PATCH] top: add the major version to dlopen of libnuma soname - -When the plug-in approach to NUMA support was added, I -carelessly employed the compile-time linker convention -for naming the library. Technically this then required -the 'devel' package for NUMA support to be present for -the unqualified soname symlink to be available. Either -that or one must have manually created such a symlink. - -This commit adds the missing major version to dlopen() -of libnuma.so.1 so simply having a more likely package -such as 'numactl' will enable both '2' & '3' commands. - -References(s): -http://www.freelists.org/post/procps/top-NUMA-node-CPU-utilization-support,25 -. initial dlopen support -commit edba932a7e9b950dd91bc486e107788e977a5186 - -Signed-off-by: Jim Warner ---- - top/top.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git top/top.c top/top.c -index 2b05a60..0d7ee2d 100644 ---- top/top.c -+++ top/top.c -@@ -3246,7 +3246,7 @@ static void before (char *me) { - #if defined(PRETEND_NUMA) || defined(PRETEND8CPUS) - Numa_node_tot = Numa_max_node() + 1; - #else -- Libnuma_handle = dlopen("libnuma.so", RTLD_LAZY); -+ Libnuma_handle = dlopen("libnuma.so.1", RTLD_LAZY); - if (Libnuma_handle) { - Numa_max_node = dlsym(Libnuma_handle, "numa_max_node"); - Numa_node_of_cpu = dlsym(Libnuma_handle, "numa_node_of_cpu"); --- -1.7.9.2 - diff --git a/0002-top-trade-two-groff_mdoc-macros-for-groff-equivalent.patch b/0002-top-trade-two-groff_mdoc-macros-for-groff-equivalent.patch deleted file mode 100644 index a41049d..0000000 --- a/0002-top-trade-two-groff_mdoc-macros-for-groff-equivalent.patch +++ /dev/null @@ -1,570 +0,0 @@ -From b79b927f9781c02c82f906bf8bc5aa16c5df2a87 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Thu, 20 Jun 2013 00:00:00 -0500 -Subject: [PATCH] top: trade two groff_mdoc macros for groff equivalents - -The .Bd and .Ed macros, from the mdoc collection, have -caused a few raised eyebrows (lintian, doclifter, etc) -in the past. With this commit, we will trade their use -for the standard existing groff .nf & .fi equivalents. - -Signed-off-by: Jim Warner ---- - top/top.1 | 155 +++++++++++++++++++++++++++++++------------------------------ - 1 file changed, 78 insertions(+), 77 deletions(-) - -diff --git top/top.1 top/top.1 -index 53ebaf2..0a753a8 100644 ---- top/top.1 -+++ top/top.1 -@@ -118,7 +118,7 @@ display and used when reading and writing a \*(CF. - .\" ---------------------------------------------------------------------- - The remaining Table of Contents - --.Bd -literal -+.nf - 1. COMMAND\-LINE Options - 2. SUMMARY Display - a. UPTIME and LOAD Averages -@@ -152,7 +152,7 @@ The remaining Table of Contents - c. The Big Bird Window - d. The Ol' Switcheroo - 8. BUGS, 9. HISTORY Former top, 10. AUTHOR, 11. SEE Also --.Ed -+.fi - - .\" ...................................................................... - .SS Operation -@@ -181,19 +181,19 @@ Following any re-size operation, if a \*(We screen is corrupted, appears - incomplete or disordered, simply typing something innocuous like a - punctuation character or cursor motion key will usually restore it. - In extreme cases, the following sequence almost certainly will: --.Bd -literal -compact -+.nf - \fIkey/cmd objective \fR - ^Z \fBsuspend\fR \*(We - fg \fBresume\fR \*(We - force a screen \fBredraw\fR (if necessary) --.Ed -+.fi - - But if the display is still corrupted, there is one more step you could try. - Insert this command after \*(We has been suspended but before resuming it. --.Bd -literal -compact -+.nf - \fIkey/cmd objective \fR - reset restore your \fBterminal settings\fR --.Ed -+.fi - - \*(NT the width of \*(We's display will be limited to \*(WX positions. - Displaying all fields requires \*(WF characters. -@@ -208,7 +208,7 @@ Lastly, some of \*(We's screens or functions require the use of cursor - motion keys like the standard \*(KAs plus the Home, End, PgUp and PgDn keys. - If your terminal or emulator does not provide those keys, the following - combinations are accepted as alternatives: --.Bd -literal -compact -+.nf - \fI key equivalent-key-combinations \fR - Up alt +\fB \\\fR or alt +\fB k \fR - Down alt +\fB /\fR or alt +\fB j \fR -@@ -218,14 +218,14 @@ combinations are accepted as alternatives: - PgDn alt +\fB Down\fR or alt + ctrl +\fB j \fR - Home alt +\fB Left\fR or alt + ctrl +\fB h \fR - End alt +\fB Right\fR or alt + ctrl +\fB l \fR --.Ed -+.fi - - The \fBUp\fR and \fBDown\fR \*(KAs have special significance when prompted - for line input terminated with the key. - Those keys, or their aliases, can be used to retrieve previous input lines - which can then be edited and re-input. - And there are four additional keys available with line oriented input. --.Bd -literal -compact -+.nf - \fI key special-significance \fR - Up recall \fBolder\fR strings for re-editing - Down recall \fBnewer\fR strings or \fBerase\fR entire line -@@ -233,7 +233,7 @@ And there are four additional keys available with line oriented input. - Delete character \fBremoved\fR at cursor, moving others left - Home jump to \fBbeginning\fR of input line - End jump to \fBend\fR of input line --.Ed -+.fi - - .\" ...................................................................... - .SS Startup Defaults -@@ -243,7 +243,7 @@ Even so, items shown with an \*(AK could be overridden through the - command-line. - All are explained in detail in the sections that follow. - --.Bd -literal -+.nf - \fIGlobal-defaults\fR - 'A' - Alt display Off (full-screen) - * 'd' - Delay time 3.0 seconds -@@ -270,7 +270,7 @@ All are explained in detail in the sections that follow. - 'x' - Column hilite Off (no, sort field) - 'y' - Row hilite On\ \ (yes, running tasks) - 'z' - color/mono Off (no, colors) --.Ed -+.fi - - .\" ---------------------------------------------------------------------- - .SH 1. COMMAND-LINE Options -@@ -417,12 +417,12 @@ these provisions. - .SS 2a. UPTIME and LOAD Averages - .\" ---------------------------------------------------------------------- - This portion consists of a single line containing: --.Bd -literal -compact -+.nf - \fBprogram\fR or\fB window\fR name, depending on display mode - current time and length of time since last boot - total number of users - system load avg over the last 1, 5 and 15 minutes --.Ed -+.fi - - .\" ...................................................................... - .SS 2b. TASK and CPU States -@@ -434,14 +434,14 @@ state percentages. - Line 1 shows total\fB tasks\fR or\fB threads\fR, depending on the state - of the Threads-mode toggle. - That total is further classified as: --.Bd -literal -compact -+.nf - running; sleeping; stopped; zombie --.Ed -+.fi - - Line 2 shows \*(PU state percentages based on the interval since the - last refresh. Where two labels are shown below, those for more recent - kernel versions are shown first. --.Bd -literal -compact -+.nf - \fBus\fR,\fB user\fR : time running un-niced user processes - \fBsy\fR,\fB system\fR : time running kernel processes - \fBni\fR,\fB nice\fR : time running niced user processes -@@ -449,7 +449,7 @@ kernel versions are shown first. - \fBhi\fR : time spent servicing hardware interrupts - \fBsi\fR : time spent servicing software interrupts - \fBst\fR : time stolen from this vm by the hypervisor --.Ed -+.fi - - .\" ...................................................................... - .SS 2c. MEMORY Usage -@@ -459,24 +459,24 @@ through exbibytes (EiB) depending on the scaling factor enforced - with the 'E' \*(CI. - - Line 1 reflects \*(MP, classified as: --.Bd -literal -compact -+.nf - total, used, free and buffers --.Ed -+.fi - - Line 2 reflects mostly \*(MV, classified as: --.Bd -literal -compact -+.nf - total, used, free and cached (which is \*(MP) --.Ed -+.fi - - This table may help in interpreting the scaled values displayed: --.Bd -literal -compact -+.nf - KiB = kibibyte = 1024 bytes - MiB = mebibyte = 1024 KiB = 1,048,576 bytes - GiB = gibibyte = 1024 MiB = 1,073,741,824 bytes - TiB = tebibyte = 1024 GiB = 1,099,511,627,776 bytes - PiB = pebibyte = 1024 TiB = 1,125,899,906,842,624 bytes - EiB = exbibyte = 1024 PiB = 1,152,921,504,606,846,976 bytes --.Ed -+.fi - - .\" ---------------------------------------------------------------------- - .SH 3. FIELDS / Columns -@@ -893,7 +893,7 @@ Listed below is a brief index of commands within categories. - Some commands appear more than once \*(Em their meaning or scope may vary - depending on the context in which they are issued. - --.Bd -literal -+.nf - 4a.\fI Global-Commands \fR - ?, =, 0, - A, B, d, E, e, g, h, H, I, k, q, r, s, W, X, Y, Z -@@ -912,7 +912,7 @@ depending on the context in which they are issued. - C, Up, Dn, Left, Right, PgUp, PgDn, Home, End - 5d.\fI Searching-in-a-Window \fR - L, & --.Ed -+.fi - - .\" ...................................................................... - .SS 4a. GLOBAL Commands -@@ -1053,10 +1053,10 @@ However, you can send any signal, via number or name. - - If you wish to abort the kill process, do one of the following - depending on your progress: --.Bd -literal -+.nf - 1) at the pid prompt, type an invalid number - 2) at the signal prompt, type 0 (or any invalid signal) --.Ed -+.fi - - .TP 7 - \ \ \ \fBq\fR\ \ :\fIQuit \fR -@@ -1077,10 +1077,10 @@ and are prevented from lowering it. - - If you wish to abort the renice process, do one of the following - depending on your progress: --.Bd -literal -+.nf - 1) at the pid prompt, type an invalid number - 2) at the nice prompt, type with no input --.Ed -+.fi - - .TP 7 - \ \ \ \fBW\fR\ \ :\fIWrite-the-Configuration-File \fR -@@ -1097,14 +1097,14 @@ by a '+' in the last position. - - This \*(CI can be used to alter the widths of the following fields: - --.Bd -literal -+.nf - \fI field default field default field default \fR - GID 5 GROUP 8 WCHAN 10 - RUID 5 RUSER 8 - SUID 5 SUSER 8 - UID 5 USER 8 - TTY 8 --.Ed -+.fi - - You will be prompted for the amount to be added to the default - widths shown above. -@@ -1137,7 +1137,7 @@ particular file or command. - They are familiar to anyone who has used the pager 'less' and are - summarized here for future reference. - --.Bd -literal -+.nf - \fI key function \fR - '=' alternate status\-line, file or pipeline - '/' find, equivalent to 'L' locate -@@ -1146,7 +1146,7 @@ summarized here for future reference. - 'b' scroll up, equivalent to - 'g' first line, equivalent to - 'G' last line, equivalent to --.Ed -+.fi - - .TP 7 - \ \ \ \fBZ\fR\ \ :\fIChange-Color-Mapping \fR -@@ -1391,14 +1391,14 @@ simply decrease the size of the \*(TD(s) above it. - For compatibility, this \*(We supports most of the former \*(We sort keys. - Since this is primarily a service to former \*(We users, these commands do - not appear on any help screen. --.Bd -literal -compact -+.nf - \fI command sorted-field supported \fR - A start time (non-display) \fB No \fR - M %MEM Yes - N PID Yes - P %CPU Yes - T TIME+ Yes --.Ed -+.fi - - Before using any of the following sort provisions, \*(We suggests that you - temporarily turn on column highlighting using the 'x' \*(CI. -@@ -1452,7 +1452,7 @@ in all four windows before returning to the \*(We display. - - .P - The following \*(CIs are available. --.Bd -literal -compact -+.nf - \fB4\fR upper case letters to select a\fB target \fR - \fB8\fR numbers to select a\fB color \fR - normal toggles available \fR -@@ -1463,7 +1463,7 @@ The following \*(CIs are available. - 'a'/'w' :apply, then go to next/prior - :apply and exit - 'q' :abandon current changes and exit --.Ed -+.fi - - If you use 'a' or 'w' to cycle the targeted window, you will - have applied the color scheme that was displayed when you left that window. -@@ -1577,11 +1577,11 @@ It does not require that the window name be visible - - .IP "*" 3 - The \*(CIs shown with an \*(AK have use beyond \*(AM. --.Bd -literal -compact -+.nf - '=', 'A', 'g' are always available - 'a', 'w' act the same with color mapping - \ and fields management --.Ed -+.fi - - .\" ...................................................................... - .SS 5c. SCROLLING a Window -@@ -1641,10 +1641,10 @@ line is not otherwise being used. - That message will take one of two forms depending on whether or not a - variable width column has also been scrolled. - --.Bd -literal -+.nf - \fBscroll coordinates: y = n/n (tasks), x = n/n (fields)\fR - \fRscroll coordinates: y = n/n (tasks), x = n/n (fields)\fB + nn\fR --.Ed -+.fi - - The coordinates shown as \fBn\fR/\fBn\fR are relative to the upper left - corner of the \*(CW. -@@ -1806,12 +1806,12 @@ When prompted for selection criteria, the data you provide must take one - of two forms. - There are 3 required pieces of information, with a 4th as optional. - These examples use spaces for clarity but your input generally would not. --.Bd -literal -+.nf - #1 \fB#2\fR #3 ( required ) - Field\-Name ? include\-if\-value - \fB!\fR Field\-Name ? \fBexclude\fR\-if\-value - #4 ( optional ) --.Ed -+.fi - - Items #1, #3 and #4 should be self\-explanatory. - Item \fB#2\fR represents both a required \fIdelimiter\fR and the \fIoperator\fR -@@ -1843,25 +1843,26 @@ See the 'j', 'J' and 'e' \*(CIs for additional information. - .P - These \fBGROUP\fR filters could produce the exact same results or the - second one might not display anything at all, just a blank \*(TW. --.Bd -literal -+.nf - GROUP=root ( only the same results when ) - GROUP=ROOT ( invoked via lower case 'o' ) --.Ed -+.fi - - Either of these \fBRES\fR filters might yield inconsistent and/or - misleading results, depending on the current memory scaling factor. - Or both filters could produce the exact same results. -+.nf - RES>9999 ( only the same results when ) - !RES<10000 ( memory scaling is at 'KiB' ) --.Ed -+.fi - - This \fBnMin\fR filter illustrates a problem unique to scalable fields. - This particular field can display a maximum of 4 digits, beyond which values - are automatically scaled to KiB or above. - So while amounts greater than 9999 exist, they will appear as 2.6m, 197k, etc. --.Bd -literal -+.nf - nMin>9999 ( always a blank \*(TW ) --.Ed -+.fi - .RE - - .B Potential Solutions -@@ -1877,16 +1878,16 @@ Assuming field \fBnTH\fR is displayed, the first filter will result in - only multi-threaded processes being shown. - It also reminds us that a trailing space is part of every displayed field. - The second filter achieves the exact same results with less typing. --.Bd -literal -+.nf - !nTH=' 1 ' ( ' for clarity only ) - nTH>1 ( same with less i/p ) --.Ed -+.fi - - With Forest View mode active and the \fBCOMMAND\fR column in view, this - filter effectively collapses child processes so that just 3 levels are shown. --.Bd -literal -+.nf - !COMMAND=' `- ' ( ' for clarity only ) --.Ed -+.fi - - The final two filters appear as in response to the status request key (^O). - In reality, each filter would have required separate input. -@@ -1894,10 +1895,10 @@ The \fBPR\fR example shows the two concurrent filters necessary to display - tasks with priorities of 20 or more, since some might be negative. - Then by exploiting trailing spaces, the \fBnMin\fR series of filters could - achieve the failed '9999' objective discussed above. --.Bd -literal -+.nf - 'PR>20' + '!PR=-' ( 2 for right result ) - '!nMin=0 ' + '!nMin=1 ' + '!nMin=2 ' + '!nMin=3 ' ... --.Ed -+.fi - .RE - - \*(NT When 'Other Filtering' is active, \*(We turns column highlighting -@@ -1917,11 +1918,11 @@ is shown to an ordinary user. - More importantly, it will limit what ordinary users are allowed - to do when \*(We is running. - They will not be able to issue the following commands. --.Bd -literal -compact -+.nf - k Kill a task - r Renice a task - d or s Change delay/sleep interval --.Ed -+.fi - - The system \*(CF is\fB not\fR created by \*(We. - Rather, you create this file manually and place it in the \fI/etc \fR -@@ -1930,10 +1931,10 @@ Its name must be 'toprc' and must have no leading '.' (period). - It must have only two lines. - - Here is an example of the contents of\fI /etc/toprc\fR: --.Bd -literal -compact -+.nf - s # line 1: 'secure' mode switch - 5.0 # line 2: 'delay'\ \ interval in seconds --.Ed -+.fi - - .\" ...................................................................... - .SS 6b. PERSONAL Configuration File -@@ -1942,7 +1943,7 @@ This file is written as '$HOME/.your\-name\-4\-\*(We' + 'rc'. - Use the 'W' \*(CI to create it or update it. - - Here is the general layout: --.Bd -literal -compact -+.nf - global # line 1: the program name/alias notation - " # line 2: id,altscr,irixps,delay,curwin - per ea # line a: winname,fieldscur -@@ -1952,7 +1953,7 @@ Here is the general layout: - " # any remaining lines are devoted to the - " # generalized 'inspect' provisions - " # discussed below --.Ed -+.fi - - If the $HOME variable is not present, \*(We will try to write the - personal \*(CF to the current directory, subject to permissions. -@@ -1980,11 +1981,11 @@ of content. - Otherwise they consist of the following 3 elements, each of which\fI must\fR - be separated by a tab character (thus 2 '\\t' total): - --.Bd -literal -compact -+.nf - .type: literal 'file' or 'pipe' - .name: selection shown on the Inspect screen - .fmts: string representing a path or command --.Ed -+.fi - - The two types of Inspect entries are\fI not\fR interchangeable. - Those designated '\fBfile\fR' will be accessed using fopen and -@@ -1996,31 +1997,31 @@ If the file or pipeline represented in your '.fmts' deals with the specific PID - input or accepted when prompted, then the format string must also contain - the '\fB%d\fR' specifier, as these examples illustrate. - --.Bd -literal -compact -+.nf - .fmts= /proc/\fI%d\fR/numa_maps - .fmts= lsof -P -p\fI %d\fR --.Ed -+.fi - - For '\fBpipe\fR' type entries only, you may also wish to redirect stderr to - stdout for a more comprehensive result. - Thus the format string becomes: - --.Bd -literal -compact -+.nf - .fmts= pmap -x %d\fI 2>&1\fR --.Ed -+.fi - - Here are examples of both types of Inspect entries as they might appear - in the rcfile. - The first entry will be ignored due to the initial '#' character. - For clarity, the pseudo tab depictions (^I) are surrounded by an - extra space but the actual tabs would not be. --.Bd -literal -compact -+.nf - - # pipe ^I Sockets ^I lsof -n -P -i 2>&1 - pipe ^I Open Files ^I lsof -P -p %d 2>&1 - file ^I NUMA Info ^I /proc/%d/numa_maps - pipe ^I Log ^I tail -n100 /var/log/syslog | sort -Mr --.Ed -+.fi - - Except for the commented entry above, these next examples show what could - be echoed to achieve similar results, assuming the rcfile name was '.toprc'. -@@ -2028,11 +2029,11 @@ However, due to the embedded tab characters, each of these lines should be - preceded by '\fB/bin/echo \-e\fR', not just a simple an 'echo', to - enable backslash interpretation regardless of which shell you use. - --.Bd -literal -compact -+.nf - "pipe\\tOpen Files\\tlsof -P -p %d 2>&1" >> ~/.toprc - "file\\tNUMA Info\\t/proc/%d/numa_maps" >> ~/.toprc - "pipe\\tLog\\ttail -n200 /var/log/syslog | sort -Mr" >> ~/.toprc --.Ed -+.fi - - \fBCaution\fR: - If any inspect entry you create produces output with unprintable characters -@@ -2041,12 +2042,12 @@ depending on their value. - This applies to tab characters as well, which will show as '^I'. - If you want a truer representation, any embedded tabs should be expanded. - --.Bd -literal -compact -+.nf - # next would have contained '\\t' ... - # file ^I ^I /proc/%d/status - # but this will eliminate embedded '\\t' ... - pipe ^I ^I cat /proc/%d/status | expand - --.Ed -+.fi - - The above example takes what could have been a 'file' entry but employs - a 'pipe' instead so as to expand the embedded tabs. -@@ -2063,11 +2064,11 @@ That does not affect operation other than to make some selections invisible. - However, if some choices are lost to truncation but you want to see more options, - there is an easy solution hinted at below. - --.Bd -literal -compact -+.nf - Inspection Pause at pid ... - Use: left/right then ... - Options: help 1 2 3 4 5 6 7 8 9 10 11 ... --.Ed -+.fi - - The entries in the \*(We rcfile would have a number for the '.name' element and - the 'help' entry would identify a shell script you've written explaining what -@@ -2099,7 +2100,7 @@ seconds or less. - - For this experiment, under x-windows open an xterm and maximize it. - Then do the following: --.Bd -literal -compact -+.nf - . provide a scheduling boost and tiny delay via: - nice -n -10 \*(We -d.09 - . keep sorted column highlighting \*F so as to -@@ -2108,7 +2109,7 @@ Then do the following: - . try various sort columns (TIME/MEM work well), - and normal or reverse sorts to bring the most - active processes into view --.Ed -+.fi - - What you'll see is a very busy Linux doing what he's always done for you, - but there was no program available to illustrate this. --- -1.7.9.2 - diff --git a/0003-library-for-atexit-support-fix-fileutils-for-EPIPE.patch b/0003-library-for-atexit-support-fix-fileutils-for-EPIPE.patch deleted file mode 100644 index 629b9de..0000000 --- a/0003-library-for-atexit-support-fix-fileutils-for-EPIPE.patch +++ /dev/null @@ -1,42 +0,0 @@ -From ce5e995921e770bfcda25e42fe090aeccdbf1291 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Tue, 25 Jun 2013 00:00:00 -0500 -Subject: [PATCH] library: for atexit() support, fix fileutils for EPIPE - -When fileutils with stream error checking was borrowed -from GNU lib, an omission was also propagated where an -errno of EPIPE wouldn't be preserved in close_stream() -making a test for EPIPE in close_stdout() meaningless. - -This patch corrects such oversight so that an errno of -EPIPE no longer produces 'write error' at program end. - -( gnulib provides for optionally ignoring EPIPE, but ) -( if a program chooses to ignore it, then their code ) -( appears to suffer from this close_stream oversight ) - -Reference(s): -. original fileutilis addition -commit c7cf98b0e03780f78abe5275c6fb282f71a2369f -. bugzilla report -https://bugzilla.redhat.com/show_bug.cgi?id=976199 ---- - lib/fileutils.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git lib/fileutils.c lib/fileutils.c -index a9ef2ff..1ade3d8 100644 ---- lib/fileutils.c -+++ lib/fileutils.c -@@ -24,7 +24,7 @@ int close_stream(FILE * stream) - const int prev_fail = (ferror(stream) != 0); - const int fclose_fail = (fclose(stream) != 0); - if (prev_fail || (fclose_fail && (some_pending || errno != EBADF))) { -- if (!fclose_fail) -+ if (!fclose_fail && errno != EPIPE) - errno = 0; - return EOF; - } --- -1.7.9.2 - diff --git a/0004-top-enable-screen-contents-preservation-at-end-of-jo.patch b/0004-top-enable-screen-contents-preservation-at-end-of-jo.patch deleted file mode 100644 index 4a07b9b..0000000 --- a/0004-top-enable-screen-contents-preservation-at-end-of-jo.patch +++ /dev/null @@ -1,150 +0,0 @@ -From 5c974ff44da4fbbb9170dd15bdd81555c62c31a9 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Fri, 28 Jun 2013 00:00:00 -0500 -Subject: [PATCH] top: enable screen contents preservation at end-of-job - -The title of this commit is actually quite misleading. - -Were it more accurate, it would at least mention a tty -emulator's scrollback buffer, which was the cumulation -of a long pursuit to reduce the SIGWINCH overhead when -a window manager carelessly floods an application with -that signal *while* a user is still resizing a window! - -Disabling and enabling that scrollback buffer resulted -in the final top display replaced with original screen -contents, a phenomenon acknowledged at the time but it -also represented a user interface change which has now -produced the first request for return to old behavior. - -After the SIGWINCH dust settled, another problem arose -regarding behaviors under the 'screen' window manager. -In response, top was refactored a bit to avoid display -corruption. That was before discovering 'screen' could -duplicate the scrollback buffer behavior top expected. - -As it turns out, the 'screen' refactoring had probably -made scrollback buffer manipulation unnecessary. Still -one could argue that a window should not be allowed to -scroll while a constantly updating program was active. - -The solution represented in this commit returns former -behavior at program end (retaining top's last screen). -And if we ever wish to disable scrollback buffers, the -associated logic was retained but made conditional. It -is not reflected in configure.ac but might be someday. - -Lastly, this commit corrects cursor positioning when a -^C is issued under 'Fields Management' at any terminal -that didn't have a scrollback buffer (i.e. a console). - -Reference(s): -https://bugzilla.redhat.com/show_bug.cgi?id=977561 -http://www.freelists.org/post/procps/top-library-miscellaneous-tweaks,1 -. screen program refactor -commit 0fe393ff270922cd4f6edbcaabba006314e73a37 -. scrollback buffer disabled -commit dedaf6e1a81738ff08ee8e8523871e12f555ad6d -. sigwinch management defines -commit adca737758e5afc7be344a736953931894cbc19f -commit 4f33b6b8c56464b4044deb29a3bb0e32622e108f - -Signed-off-by: Jim Warner ---- - top/top.c | 18 +++++++++++------- - top/top.h | 1 + - 2 files changed, 12 insertions(+), 7 deletions(-) - -diff --git top/top.c top/top.c -index 0d7ee2d..07217c8 100644 ---- top/top.c -+++ top/top.c -@@ -72,8 +72,9 @@ static struct termios Tty_original, // our inherited terminal definition - Tty_raw; // for unsolicited input - static int Ttychanged = 0; - -- /* Last established cursor state/shape */ -+ /* Last established cursor state/shape, and is re-position needed */ - static const char *Cursor_state = ""; -+static int Cursor_repos; - - /* Program name used in error messages and local 'rc' file name */ - static char *Myname; -@@ -350,12 +351,15 @@ static void at_eoj (void) { - if (Ttychanged) { - tcsetattr(STDIN_FILENO, TCSAFLUSH, &Tty_original); - if (keypad_local) putp(keypad_local); -+ if (Cursor_repos) putp(tg2(0, Screen_rows)); - putp("\n"); -+#ifdef OFF_SCROLLBK - if (exit_ca_mode) { - // this next will also replace top's most recent screen with the - // original display contents that were visible at our invocation - putp(exit_ca_mode); - } -+#endif - putp(Cap_curs_norm); - putp(Cap_clr_eol); - #ifndef RMAN_IGNORED -@@ -591,17 +595,13 @@ static void sig_endpgm (int dont_care_sig) { - - /* - * Catches: -- * SIGTSTP, SIGTTIN and SIGTTOU -- * note: -- * we don't fiddle with with those enter/exit_ca_mode strings -- * because we want to retain most of the last screen contents -- * as a visual reminder this program is suspended, not ended! */ -+ * SIGTSTP, SIGTTIN and SIGTTOU */ - static void sig_paused (int dont_care_sig) { - // POSIX.1-2004 async-signal-safe: tcsetattr, tcdrain, raise - if (-1 == tcsetattr(STDIN_FILENO, TCSAFLUSH, &Tty_original)) - error_exit(fmtmk(N_fmt(FAIL_tty_set_fmt), strerror(errno))); - if (keypad_local) putp(keypad_local); -- putp(tg2(0, Screen_rows)); -+ if (Cursor_repos) putp(tg2(0, Screen_rows)); - putp(Cap_curs_norm); - #ifndef RMAN_IGNORED - putp(Cap_smam); -@@ -2120,6 +2120,7 @@ static void fields_utility (void) { - int i, key; - FLG_t f; - -+ Cursor_repos = 1; - spewFI - signify_that: - putp(Cap_clr_scr); -@@ -2180,6 +2181,7 @@ signify_that: - break; - } - } while (key != 'q' && key != kbd_ESC); -+ Cursor_repos = 0; - #undef unSCRL - #undef swapEM - #undef spewFI -@@ -3768,8 +3770,10 @@ static void whack_terminal (void) { - // thanks anyway stdio, but we'll manage buffering at the frame level... - setbuffer(stdout, Stdout_buf, sizeof(Stdout_buf)); - #endif -+#ifdef OFF_SCROLLBK - // this has the effect of disabling any troublesome scrollback buffer... - if (enter_ca_mode) putp(enter_ca_mode); -+#endif - // and don't forget to ask iokey to initialize his tinfo_tab - iokey(0); - } // end: whack_terminal -diff --git top/top.h top/top.h -index f356798..a8a7357 100644 ---- top/top.h -+++ top/top.h -@@ -41,6 +41,7 @@ - //#define INSP_SAVEBUF /* preserve 'Insp_buf' contents in a file */ - //#define INSP_SLIDE_1 /* when scrolling left/right don't move 8 */ - //#define OFF_HST_HASH /* use BOTH qsort+bsrch vs. hashing scheme */ -+//#define OFF_SCROLLBK /* disable tty emulators scrollback buffer */ - //#define OFF_STDIOLBF /* disable our own stdout _IOFBF override */ - //#define PRETEND2_5_X /* pretend we're linux 2.5.x (for IO-wait) */ - //#define PRETEND8CPUS /* pretend we're smp with 8 ticsers (sic) */ --- -1.7.9.2 - diff --git a/0005-top-refine-some-miscellaneous-signals-interrupt-stuf.patch b/0005-top-refine-some-miscellaneous-signals-interrupt-stuf.patch deleted file mode 100644 index a867686..0000000 --- a/0005-top-refine-some-miscellaneous-signals-interrupt-stuf.patch +++ /dev/null @@ -1,232 +0,0 @@ -From 25ed080eaa9cec603bc486b47b4a96d6438cf94f Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Sun, 30 Jun 2013 00:00:00 -0500 -Subject: [PATCH] top: refine some miscellaneous signals interrupt stuff - -This commit mostly justs renames a few identifiers but -it also will now suppress any end-of-job report if top -wasn't ended via the 'q' key convention (i.e. signal). - -Signed-off-by: Jim Warner ---- - top/top.c | 48 +++++++++++++++++++++++++----------------------- - top/top.h | 4 ++-- - 2 files changed, 27 insertions(+), 25 deletions(-) - -diff --git top/top.c top/top.c -index 07217c8..cb7f3b8 100644 ---- top/top.c -+++ top/top.c -@@ -174,7 +174,7 @@ static WIN_t *Curwin; - and/or that are simply more efficiently handled as globals - [ 'Frames_...' (plural) stuff persists beyond 1 frame ] - [ or are used in response to async signals received ! ] */ --static volatile int Frames_resize; // time to rebuild all column headers -+static volatile int Frames_signal; // time to rebuild all column headers - static int Frames_libflags; // PROC_FILLxxx flags - static int Frame_maxtask; // last known number of active tasks - // ie. current 'size' of proc table -@@ -377,7 +377,7 @@ static void bye_bye (const char *str) { - at_eoj(); // restore tty in preparation for exit - #ifdef ATEOJ_RPTSTD - { proc_t *p; -- if (!str && Ttychanged) { fprintf(stderr, -+ if (!str && !Frames_signal && Ttychanged) { fprintf(stderr, - "\n%s's Summary report:" - "\n\tProgram" - "\n\t Linux version = %u.%u.%u, %s" -@@ -447,7 +447,7 @@ static void bye_bye (const char *str) { - - #ifndef OFF_HST_HASH - #ifdef ATEOJ_RPTHSH -- if (!str && Ttychanged) { -+ if (!str && !Frames_signal && Ttychanged) { - int i, j, pop, total_occupied, maxdepth, maxdepth_sav, numdepth - , cross_foot, sz = HHASH_SIZ * (unsigned)sizeof(int); - int depths[HHASH_SIZ]; -@@ -588,6 +588,7 @@ static void sig_endpgm (int dont_care_sig) { - // POSIX.1-2004 async-signal-safe: sigfillset, sigprocmask - sigfillset(&ss); - sigprocmask(SIG_BLOCK, &ss, NULL); -+ Frames_signal = BREAK_sig; - bye_bye(NULL); - (void)dont_care_sig; - } // end: sig_endpgm -@@ -619,7 +620,7 @@ static void sig_paused (int dont_care_sig) { - #endif - if (keypad_xmit) putp(keypad_xmit); - putp(Cursor_state); -- Frames_resize = RESIZ_sig; -+ Frames_signal = BREAK_sig; - (void)dont_care_sig; - } // end: sig_paused - -@@ -630,7 +631,7 @@ static void sig_paused (int dont_care_sig) { - static void sig_resize (int dont_care_sig) { - // POSIX.1-2004 async-signal-safe: tcdrain - tcdrain(STDOUT_FILENO); -- Frames_resize = RESIZ_sig; -+ Frames_signal = BREAK_sig; - (void)dont_care_sig; - } // end: sig_resize - -@@ -928,12 +929,13 @@ static inline int ioa (struct timespec *ts) { - FD_ZERO(&fs); - FD_SET(STDIN_FILENO, &fs); - --#ifndef SIGNALS_LESS // conditional comments are silly, but help in documenting -- // hold here until we've got keyboard input, any signal (including SIGWINCH) --#else -+#ifdef SIGNALS_LESS // conditional comments are silly, but help in documenting - // hold here until we've got keyboard input, any signal except SIGWINCH --#endif - // or (optionally) we timeout with nanosecond granularity -+#else -+ // hold here until we've got keyboard input, any signal (including SIGWINCH) -+ // or (optionally) we timeout with nanosecond granularity -+#endif - rc = pselect(STDIN_FILENO + 1, &fs, NULL, NULL, ts, &Sigwinch_set); - - if (rc < 0) rc = 0; -@@ -1263,7 +1265,7 @@ static float get_float (const char *prompt) { - float f; - - line = ioline(prompt); -- if (!line[0] || Frames_resize) return -1.0; -+ if (!line[0] || Frames_signal) return -1.0; - // note: we're not allowing negative floats - if (strcspn(line, "+,.0123456789")) { - show_msg(N_txt(BAD_numfloat_txt)); -@@ -1284,7 +1286,7 @@ static int get_int (const char *prompt) { - int n; - - line = ioline(prompt); -- if (Frames_resize) return GET_INT_BAD; -+ if (Frames_signal) return GET_INT_BAD; - if (!line[0]) return GET_INTNONE; - // note: we've got to allow negative ints (renice) - if (strcspn(line, "-+0123456789")) { -@@ -1822,7 +1824,7 @@ static void adj_geometry (void) { - PSU_CLREOS(0); - - fflush(stdout); -- Frames_resize = RESIZ_clr; -+ Frames_signal = BREAK_off; - } // end: adj_geometry - - -@@ -2134,7 +2136,7 @@ signify_that: - display_fields(i, (p != NULL)); - fflush(stdout); - -- if (Frames_resize) goto signify_that; -+ if (Frames_signal) goto signify_that; - key = iokey(1); - if (key < 1) goto signify_that; - -@@ -3053,7 +3055,7 @@ signify_that: - lest repeated keys produce immediate re-selection in caller */ - tcflush(STDIN_FILENO, TCIFLUSH); - -- if (Frames_resize) goto signify_that; -+ if (Frames_signal) goto signify_that; - key = iokey(1); - if (key < 1) goto signify_that; - -@@ -3158,7 +3160,7 @@ signify_that: - , pid, p->cmd, p->euser, sels)); - INSP_MKSL(0, " "); - -- if (Frames_resize) goto signify_that; -+ if (Frames_signal) goto signify_that; - if (key == INT_MAX) key = iokey(1); - if (key < 1) goto signify_that; - -@@ -3903,7 +3905,7 @@ signify_that: - putp(Cap_clr_eos); - fflush(stdout); - -- if (Frames_resize) goto signify_that; -+ if (Frames_signal) goto signify_that; - key = iokey(1); - if (key < 1) goto signify_that; - -@@ -4135,7 +4137,7 @@ signify_that: - putp(Cap_clr_eos); - fflush(stdout); - -- if (Frames_resize) goto signify_that; -+ if (Frames_signal) goto signify_that; - key = iokey(1); - if (key < 1) goto signify_that; - -@@ -4151,7 +4153,7 @@ signify_that: - , Winstk[2].rc.winname, Winstk[3].rc.winname)); - putp(Cap_clr_eos); - fflush(stdout); -- if (Frames_resize || (key = iokey(1)) < 1) { -+ if (Frames_signal || (key = iokey(1)) < 1) { - adj_geometry(); - putp(Cap_clr_scr); - } else w = win_select(key); -@@ -4341,7 +4343,7 @@ static void keys_global (int ch) { - if (0 > pid) pid = def; - str = ioline(fmtmk(N_fmt(GET_sigs_num_fmt), pid, SIGTERM)); - if (*str) sig = signal_name_to_number(str); -- if (Frames_resize) break; -+ if (Frames_signal) break; - if (0 < sig && kill(pid, sig)) - show_msg(fmtmk(N_fmt(FAIL_signals_fmt) - , pid, sig, strerror(errno))); -@@ -4909,12 +4911,12 @@ static void do_key (int ch) { - for (i = 0; i < MAXTBL(key_tab); ++i) - if (strchr(key_tab[i].keys, ch)) { - key_tab[i].func(ch); -- Frames_resize = RESIZ_kbd; -+ Frames_signal = BREAK_kbd; - putp((Cursor_state = Cap_curs_hide)); - return; - } - }; -- /* Frames_resize above will force a rebuild of all column headers and -+ /* Frames_signal above will force a rebuild of all column headers and - the PROC_FILLxxx flags. It's NOT simply lazy programming. Here are - some keys that COULD require new column headers and/or libproc flags: - 'A' - likely -@@ -5458,7 +5460,7 @@ static void frame_make (void) { - int i, scrlins; - - // deal with potential signal(s) since the last time around... -- if (Frames_resize) -+ if (Frames_signal) - zap_fieldstab(); - - // whoa either first time or thread/task mode change, (re)prime the pump... -@@ -5549,7 +5551,7 @@ int main (int dont_care_argc, char **argv) { - produce a screen refresh. in this main loop frame_make - assumes responsibility for such refreshes. other logic - in contact with users must deal more obliquely with an -- interrupt/refresh (hint: Frames_resize + return code)! -+ interrupt/refresh (hint: Frames_signal + return code)! - - (everything is perfectly justified plus right margins) - (are completely filled, but of course it must be luck) -diff --git top/top.h top/top.h -index a8a7357..43d1ebc 100644 ---- top/top.h -+++ top/top.h -@@ -208,9 +208,9 @@ enum scale_enum { - SK_Kb, SK_Mb, SK_Gb, SK_Tb, SK_Pb, SK_Eb, SK_SENTINEL - }; - -- /* Used to manipulate (and document) the Frames_resize states */ -+ /* Used to manipulate (and document) the Frames_signal states */ - enum resize_states { -- RESIZ_clr, RESIZ_kbd, RESIZ_sig -+ BREAK_off = 0, BREAK_kbd, BREAK_sig - }; - - /* This typedef just ensures consistent 'process flags' handling */ --- -1.7.9.2 - diff --git a/0006-top-cursor-repositioning-includes-line-oriented-inpu.patch b/0006-top-cursor-repositioning-includes-line-oriented-inpu.patch deleted file mode 100644 index bd8781a..0000000 --- a/0006-top-cursor-repositioning-includes-line-oriented-inpu.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 33104a2bcc321495107d72e4cfee4090b1d90f76 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Mon, 1 Jul 2013 00:00:00 -0500 -Subject: [PATCH] top: cursor repositioning includes line oriented input - -A recent patch introduced the ability to recognize the -need to reposition the cursor at suspension or program -end. There remained unmet 1 additional potential need. - -This commit extends that ability to embrace line input -so that if a user issues ^Z or ^C while being prompted -the resulting shell output will no longer be embedded. - -Reference(s): -http://www.freelists.org/post/procps/top-library-miscellaneous-tweaks,7 -commit 5c974ff44da4fbbb9170dd15bdd81555c62c31a9 - -Signed-off-by: Jim Warner ---- - top/top.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git top/top.c top/top.c -index cb7f3b8..223ed70 100644 ---- top/top.c -+++ top/top.c -@@ -1081,12 +1081,14 @@ static char *ioline (const char *prompt) { - static char buf[MEDBUFSIZ]; - char *p; - -+ Cursor_repos = 1; - show_pmt(prompt); - memset(buf, '\0', sizeof(buf)); - ioch(1, buf, sizeof(buf)-1); - - if ((p = strpbrk(buf, ws))) *p = '\0'; - // note: we DO produce a vaid 'string' -+ Cursor_repos = 0; - return buf; - } // end: ioline - -@@ -1117,6 +1119,7 @@ static char *ioline (const char *prompt) { - }; - static struct lin_s *anchor, *plin; - -+ Cursor_repos = 1; - if (!anchor) { - anchor = alloc_c(sizeof(struct lin_s)); - anchor->str = alloc_s(""); // top-of-stack == empty str -@@ -1182,6 +1185,7 @@ static char *ioline (const char *prompt) { - putp(tg2(beg+pos, Msg_row)); - } while (key && key != kbd_ENTER && key != kbd_ESC); - -+ Cursor_repos = 0; - // weed out duplicates, including empty strings (top-of-stack)... - for (i = 0, plin = anchor; ; i++) { - #ifdef RECALL_FIXED --- -1.7.9.2 - diff --git a/0007-top-correct-improve-or-otherwise-tweak-some-comments.patch b/0007-top-correct-improve-or-otherwise-tweak-some-comments.patch deleted file mode 100644 index 66f3ff4..0000000 --- a/0007-top-correct-improve-or-otherwise-tweak-some-comments.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 6967bf80a61fa42d8b02b08c358ea582a02f6856 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Thu, 4 Jul 2013 00:00:00 -0500 -Subject: [PATCH] top: correct, improve or otherwise tweak some comments - -Signed-off-by: Jim Warner ---- - top/top.c | 18 +++++++++--------- - 1 file changed, 9 insertions(+), 9 deletions(-) - -diff --git top/top.c top/top.c -index 223ed70..978071c 100644 ---- top/top.c -+++ top/top.c -@@ -2794,7 +2794,7 @@ static void insp_cnt_nl (void) { - Insp_p[0] = Insp_buf; - Insp_p[Insp_nl++] = cur; - Insp_p[Insp_nl] = end; -- if ((end - cur) == 1) // if there's a eof null delimiter, -+ if ((end - cur) == 1) // if there's an eof null delimiter, - --Insp_nl; // don't count it as a new line - } // end: insp_cnt_nl - -@@ -3824,12 +3824,12 @@ static WIN_t *win_select (int ch) { - if (1 > (ch = iokey(1))) return w; - } - switch (ch) { -- case 'a': // we don't carry 'a' / 'w' in our -- w = w->next; // pmt - they're here for a good -- break; // friend of ours -- wins_colors. -- case 'w': // (however those letters work via -- w = w->prev; // the pmt too but gee, end-loser -- break; // should just press the darn key) -+ case 'a': // we don't carry 'a' / 'w' in our -+ w = w->next; // pmt - they're here for a good -+ break; // friend of ours -- wins_colors. -+ case 'w': // (however those letters work via -+ w = w->prev; // the pmt too but gee, end-loser -+ break; // should just press the darn key) - case '1': case '2' : case '3': case '4': - w = &Winstk[ch - '1']; - break; -@@ -5483,6 +5483,7 @@ static void frame_make (void) { - Max_lines = (Screen_rows - Msg_row) - 1; - OFFw(w, INFINDS_xxx); - -+ // one way or another, rid us of any prior frame's msg - if (VIZISw(w) && CHKw(w, View_SCROLL)) show_scroll(); - else PUTT("%s%s", tg2(0, Msg_row), Cap_clr_eol); - -@@ -5501,8 +5502,7 @@ static void frame_make (void) { - } - } - -- /* clear to end-of-screen (critical if last window is 'idleps off'), -- then put the cursor in-its-place, and rid us of any prior frame's msg -+ /* clear to end-of-screen - critical if last window is 'idleps off' - (main loop must iterate such that we're always called before sleep) */ - if (scrlins < Max_lines) { - putp(Cap_nl_clreos); --- -1.7.9.2 - diff --git a/0008-top-tweak-cursor-state-code-to-swat-an-obscure-bugle.patch b/0008-top-tweak-cursor-state-code-to-swat-an-obscure-bugle.patch deleted file mode 100644 index 724a010..0000000 --- a/0008-top-tweak-cursor-state-code-to-swat-an-obscure-bugle.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 30e90e426980c3122c668dd2a6b9236d4db6e048 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Fri, 5 Jul 2013 00:00:00 -0500 -Subject: [PATCH] top: tweak cursor state code to swat an obscure buglet - -An obscure bug has been discovered where a 'W' with an -old rcfile, warning against overwrite, would display a -cursor that should normally be hidden. This followed a -user's reply. So some logic was rearranged just a bit. - -Signed-off-by: Jim Warner ---- - top/top.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git top/top.c top/top.c -index 978071c..8978cd1 100644 ---- top/top.c -+++ top/top.c -@@ -3104,6 +3104,7 @@ signify_that: - case '/': - case 'n': - insp_find_str(key, &curcol, &curlin); -+ // must re-hide cursor in case a prompt for a string makes it huge - putp((Cursor_state = Cap_curs_hide)); - break; - case '=': -@@ -4901,23 +4902,21 @@ static void do_key (int ch) { - }; - int i; - -- putp((Cursor_state = Cap_curs_hide)); - switch (ch) { - case 0: // ignored (always) - case kbd_ESC: // ignored (sometimes) -- return; -+ goto all_done; - case 'q': // no return from this guy - bye_bye(NULL); - case 'W': // no need for rebuilds - write_rcfile(); -- return; -+ goto all_done; - default: // and now, the real work... - for (i = 0; i < MAXTBL(key_tab); ++i) - if (strchr(key_tab[i].keys, ch)) { - key_tab[i].func(ch); - Frames_signal = BREAK_kbd; -- putp((Cursor_state = Cap_curs_hide)); -- return; -+ goto all_done; - } - }; - /* Frames_signal above will force a rebuild of all column headers and -@@ -4943,6 +4942,8 @@ static void do_key (int ch) { - */ - - show_msg(N_txt(UNKNOWN_cmds_txt)); -+all_done: -+ putp((Cursor_state = Cap_curs_hide)); - } // end: do_key - - --- -1.7.9.2 - diff --git a/0009-top-correct-cursor-positioning-for-all-Z-or-C-cases.patch b/0009-top-correct-cursor-positioning-for-all-Z-or-C-cases.patch deleted file mode 100644 index 5202e67..0000000 --- a/0009-top-correct-cursor-positioning-for-all-Z-or-C-cases.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 46a1356219cfab67240704af9cd73b58a20d4232 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Sat, 6 Jul 2013 00:00:00 -0500 -Subject: [PATCH] top: correct cursor positioning for all ^Z or ^C cases - -Some more (very obscure) conditions where a suspension -or program end might embed the shell prompt within top -output have been uncovered beyond the 2 already known. - -We had already covered some suspend/end contingencies: -1. the users were using the 'fields management' screen -2. the users were prompted for any line oriented input - -However, there remained some situations where ^Z or ^C -could still produce a misplaced cursor + shell prompt: -3. the 'g' command while waiting for the window choice -4. the 'W' command if about to overwrite an old rcfile -5. the '=' command when exploiting the Inspect feature -6. the period during which any error message was shown - -But, even when all those bases are covered there still -remains a remote possibility that such interrupts will -occur during a top repaint cycle. So rather than throw -yet more code at these self-inflicted problems perhaps -it is better if we just throw in the proverbial towel. - -Thus, I'll take the only sane approach and restore the -results expected ever since top's inception and before -scrollback buffers entered the picture. Namely, with a -^Z or ^C the cursor will be placed on the final screen -row. That usually means it will immediately follow the -last output line but it may follow many blank lines if -the user interrupts top when *not* on the main screen. - -Reference(s): -. expanded repositioning (for line oriented input) -commit 33104a2bcc321495107d72e4cfee4090b1d90f76 -. introduced repositioning (for fields management) -commit 5c974ff44da4fbbb9170dd15bdd81555c62c31a9 -. scrollback buffers (the cursor handling changes) -commit dedaf6e1a81738ff08ee8e8523871e12f555ad6d - -Signed-off-by: Jim Warner ---- - top/top.c | 13 +++---------- - 1 file changed, 3 insertions(+), 10 deletions(-) - -diff --git top/top.c top/top.c -index 8978cd1..e2451f5 100644 ---- top/top.c -+++ top/top.c -@@ -72,9 +72,8 @@ static struct termios Tty_original, // our inherited terminal definition - Tty_raw; // for unsolicited input - static int Ttychanged = 0; - -- /* Last established cursor state/shape, and is re-position needed */ -+ /* Last established cursor state/shape */ - static const char *Cursor_state = ""; --static int Cursor_repos; - - /* Program name used in error messages and local 'rc' file name */ - static char *Myname; -@@ -351,7 +350,7 @@ static void at_eoj (void) { - if (Ttychanged) { - tcsetattr(STDIN_FILENO, TCSAFLUSH, &Tty_original); - if (keypad_local) putp(keypad_local); -- if (Cursor_repos) putp(tg2(0, Screen_rows)); -+ putp(tg2(0, Screen_rows)); - putp("\n"); - #ifdef OFF_SCROLLBK - if (exit_ca_mode) { -@@ -602,7 +601,7 @@ static void sig_paused (int dont_care_sig) { - if (-1 == tcsetattr(STDIN_FILENO, TCSAFLUSH, &Tty_original)) - error_exit(fmtmk(N_fmt(FAIL_tty_set_fmt), strerror(errno))); - if (keypad_local) putp(keypad_local); -- if (Cursor_repos) putp(tg2(0, Screen_rows)); -+ putp(tg2(0, Screen_rows)); - putp(Cap_curs_norm); - #ifndef RMAN_IGNORED - putp(Cap_smam); -@@ -1081,14 +1080,12 @@ static char *ioline (const char *prompt) { - static char buf[MEDBUFSIZ]; - char *p; - -- Cursor_repos = 1; - show_pmt(prompt); - memset(buf, '\0', sizeof(buf)); - ioch(1, buf, sizeof(buf)-1); - - if ((p = strpbrk(buf, ws))) *p = '\0'; - // note: we DO produce a vaid 'string' -- Cursor_repos = 0; - return buf; - } // end: ioline - -@@ -1119,7 +1116,6 @@ static char *ioline (const char *prompt) { - }; - static struct lin_s *anchor, *plin; - -- Cursor_repos = 1; - if (!anchor) { - anchor = alloc_c(sizeof(struct lin_s)); - anchor->str = alloc_s(""); // top-of-stack == empty str -@@ -1185,7 +1181,6 @@ static char *ioline (const char *prompt) { - putp(tg2(beg+pos, Msg_row)); - } while (key && key != kbd_ENTER && key != kbd_ESC); - -- Cursor_repos = 0; - // weed out duplicates, including empty strings (top-of-stack)... - for (i = 0, plin = anchor; ; i++) { - #ifdef RECALL_FIXED -@@ -2126,7 +2121,6 @@ static void fields_utility (void) { - int i, key; - FLG_t f; - -- Cursor_repos = 1; - spewFI - signify_that: - putp(Cap_clr_scr); -@@ -2187,7 +2181,6 @@ signify_that: - break; - } - } while (key != 'q' && key != kbd_ESC); -- Cursor_repos = 0; - #undef unSCRL - #undef swapEM - #undef spewFI --- -1.7.9.2 - diff --git a/0010-ps-address-a-potential-newline-quirk-the-libselinux.patch b/0010-ps-address-a-potential-newline-quirk-the-libselinux.patch deleted file mode 100644 index 9a6ecce..0000000 --- a/0010-ps-address-a-potential-newline-quirk-the-libselinux.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 7c4894dd222ff951e9b8a7efce00a9d9ab9ee586 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Wed, 7 Aug 2013 12:58:57 -0500 -Subject: [PATCH] ps: address a potential 'newline' quirk the libselinux - -Sometimes with libselinux present but SELinux inactive -the context reported is "unconfined" which contains an -embedded newline. This then causes misalignment of any -subsequent data. So, ps will now protect against that. - -Reference(s): -http://www.freelists.org/post/procps/enablelibselinux-switch,14 - -Signed-off-by: Jim Warner ---- - ps/output.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git ps/output.c ps/output.c -index b7b21d1..d457a89 100644 ---- ps/output.c -+++ ps/output.c -@@ -1339,6 +1339,7 @@ static int pr_context(char *restrict const outbuf, const proc_t *restrict const - len = strlen(context); - if(len > max_len) len = max_len; - memcpy(outbuf, context, len); -+ if (outbuf[len-1] == '\n') --len; - outbuf[len] = '\0'; - free(context); - }else{ --- -1.7.9.2 - diff --git a/0012-top-hint-that-Summary-Area-cached-is-Mem-not-Swap.patch b/0012-top-hint-that-Summary-Area-cached-is-Mem-not-Swap.patch deleted file mode 100644 index 772c5fb..0000000 --- a/0012-top-hint-that-Summary-Area-cached-is-Mem-not-Swap.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 739effd90701d5d327624cd833d20c7f35981613 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Fri, 9 Aug 2013 00:00:00 -0500 -Subject: [PATCH] top: hint that Summary Area 'cached' is Mem (not Swap) - -This patch just provides a visual clue to separate the -values reported for cached Memory from other values on -the Swapped line (which is being shared due to space). - -Reference(s): -http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=718670 - -Signed-off-by: Jim Warner ---- - top/top_nls.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git top/top_nls.c top/top_nls.c -index fa6969e..25c7f56 100644 ---- top/top_nls.c -+++ top/top_nls.c -@@ -618,7 +618,7 @@ static void build_uniq_nlstab (void) { - . words: total, used, free, buffers, cached */ - Uniq_nlstab[MEMORY_lines_fmt] = _("" - "%s Mem: ~3 %9.9s~2total,~3 %9.9s~2used,~3 %9.9s~2free,~3 %9.9s~2buffers~3\n" -- "%s Swap:~3 %9.9s~2total,~3 %9.9s~2used,~3 %9.9s~2free,~3 %9.9s~2cached~3\n"); -+ "%s Swap:~3 %9.9s~2total,~3 %9.9s~2used,~3 %9.9s~2free.~3 %9.9s~2cached Mem~3\n"); - - Uniq_nlstab[INSP_hdrsels_fmt] = _("" - "Inspection~2 Pause at: pid ~1%d~6 running ~1%s~6 as user ~1%s~6\n" --- -1.7.9.2 - diff --git a/0013-top-modest-efficiency-change-to-message-line-handlin.patch b/0013-top-modest-efficiency-change-to-message-line-handlin.patch deleted file mode 100644 index e7283dc..0000000 --- a/0013-top-modest-efficiency-change-to-message-line-handlin.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 80e678343653ccadaaf66bf719b3da9d6168d9ec Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Thu, 15 Aug 2013 00:00:00 -0500 -Subject: [PATCH] top: modest efficiency change to message line handling - -When the final solution for cursor positioning for all -^Z or ^C cases was introduced the revised placement of -message line management introduced with the window mgr -'screen' refactor was retained. Those two commits mean -that a former tgoto was no longer needed when clearing -that msg line or displaying the scroll coordinate msg. - -This patch eliminates the tgoto employed by frame_make -while assimilating a now defunct show_scroll function. - -Reference(s): -. final cursor positioning for ^Z or ^C -commit 46a1356219cfab67240704af9cd73b58a20d4232 -. 'screen' window manager refactor -commit 0fe393ff270922cd4f6edbcaabba006314e73a37 - -Signed-off-by: Jim Warner ---- - top/top.c | 22 ++++++++++------------ - top/top.h | 1 - - 2 files changed, 10 insertions(+), 13 deletions(-) - -diff --git top/top.c top/top.c -index e2451f5..c29bb07 100644 ---- top/top.c -+++ top/top.c -@@ -751,13 +751,6 @@ static int show_pmt (const char *str) { - - - /* -- * Show a special coordinate message, in support of scrolling */ --static inline void show_scroll (void) { -- PUTT(Scroll_fmts, tg2(0, Msg_row), Frame_maxtask); --} // end: show_scroll -- -- -- /* - * Show lines with specially formatted elements, but only output - * what will fit within the current screen width. - * Our special formatting consists of: -@@ -857,7 +850,7 @@ static void show_special (int interact, const char *glob) { - - /* - * Create a nearly complete scroll coordinates message, but still -- * a format string since we'll be missing a tgoto and total tasks. */ -+ * a format string since we'll be missing the current total tasks. */ - static void updt_scroll_msg (void) { - char tmp1[SMLBUFSIZ], tmp2[SMLBUFSIZ]; - int totpflgs = Curwin->totpflgs; -@@ -878,8 +871,10 @@ static void updt_scroll_msg (void) { - if (Curwin->varcolbeg) - snprintf(tmp2, sizeof(tmp2), "%s + %d", tmp1, Curwin->varcolbeg); - #endif -+ // this Scroll_fmts string no longer provides for termcap tgoto so that -+ // the usage timing is critical -- see frame_make() for additional info - snprintf(Scroll_fmts, sizeof(Scroll_fmts) -- , "%%s%s %.*s%s", Caps_off, Screen_cols - 3, tmp2, Cap_clr_eol); -+ , "%s %.*s%s", Caps_off, Screen_cols - 3, tmp2, Cap_clr_eol); - } // end: updt_scroll_msg - - /*###### Low Level Memory/Keyboard/File I/O support ####################*/ -@@ -5477,9 +5472,12 @@ static void frame_make (void) { - Max_lines = (Screen_rows - Msg_row) - 1; - OFFw(w, INFINDS_xxx); - -- // one way or another, rid us of any prior frame's msg -- if (VIZISw(w) && CHKw(w, View_SCROLL)) show_scroll(); -- else PUTT("%s%s", tg2(0, Msg_row), Cap_clr_eol); -+ /* one way or another, rid us of any prior frame's msg -+ [ now that this is positioned after the call to summary_show(), ] -+ [ we no longer need or employ tg2(0, Msg_row) since all summary ] -+ [ lines end with a newline, and header lines begin with newline ] */ -+ if (VIZISw(w) && CHKw(w, View_SCROLL)) PUTT(Scroll_fmts, Frame_maxtask); -+ else putp(Cap_clr_eol); - - if (!Rc.mode_altscr) { - // only 1 window to show so, piece o' cake -diff --git top/top.h top/top.h -index 43d1ebc..017644f 100644 ---- top/top.h -+++ top/top.h -@@ -658,7 +658,6 @@ typedef struct WIN_t { - //atic void capsmk (WIN_t *q); - //atic void show_msg (const char *str); - //atic int show_pmt (const char *str); --//atic inline void show_scroll (void); - //atic void show_special (int interact, const char *glob); - //atic void updt_scroll_msg (void); - /*------ Low Level Memory/Keyboard/File I/O support --------------------*/ --- -1.7.9.2 - diff --git a/0014-top-correct-improve-and-otherwise-tweak-configs_read.patch b/0014-top-correct-improve-and-otherwise-tweak-configs_read.patch deleted file mode 100644 index 0a2725c..0000000 --- a/0014-top-correct-improve-and-otherwise-tweak-configs_read.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 819ede1a6bc25d732cf84d15c48be9ca86f336a2 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Tue, 20 Aug 2013 00:00:00 -0500 -Subject: [PATCH] top: correct, improve and otherwise tweak configs_read - -This patch addresses the four '-Wunused-result' errors -generated whenever an optimized compile is invoked. It -also made the configs_read() guy a little more robust. - -In the process, some logic was rearranged slightly and -some comments were re-indented simply for consistency. - -Reference(s): -warning: ignoring return value of 'fgets', declared with attribute warn_unused_result [-Wunused-result] -warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result] - -Signed-off-by: Jim Warner ---- - top/top.c | 38 +++++++++++++++++++------------------- - 1 file changed, 19 insertions(+), 19 deletions(-) - -diff --git top/top.c top/top.c -index c29bb07..bdfcf20 100644 ---- top/top.c -+++ top/top.c -@@ -3394,26 +3394,25 @@ static void configs_read (void) { - - fp = fopen(SYS_RCFILESPEC, "r"); - if (fp) { -- fbuf[0] = '\0'; -- fgets(fbuf, sizeof(fbuf), fp); // sys rc file, line 1 -- if (strchr(fbuf, 's')) Secure_mode = 1; -- fbuf[0] = '\0'; -- fgets(fbuf, sizeof(fbuf), fp); // sys rc file, line 2 -- sscanf(fbuf, "%f", &Rc.delay_time); -+ if (fgets(fbuf, sizeof(fbuf), fp)) { // sys rc file, line 1 -+ Secure_mode = 1; -+ if (fgets(fbuf, sizeof(fbuf), fp)) // sys rc file, line 2 -+ sscanf(fbuf, "%f", &Rc.delay_time); -+ } - fclose(fp); - } - - fp = fopen(Rc_name, "r"); - if (fp) { - int tmp_whole, tmp_fract; -- fbuf[0] = '\0'; -- fgets(fbuf, sizeof(fbuf), fp); // ignore eyecatcher -+ if (fgets(fbuf, sizeof(fbuf), fp)) // ignore eyecatcher -+ ; // avoid -Wunused-result - if (6 != fscanf(fp - , "Id:%c, Mode_altscr=%d, Mode_irixps=%d, Delay_time=%d.%d, Curwin=%d\n" - , &Rc.id, &Rc.mode_altscr, &Rc.mode_irixps, &tmp_whole, &tmp_fract, &i)) { - p = fmtmk(N_fmt(RC_bad_files_fmt), Rc_name); - Rc_questions = -1; -- goto try_inspect_entries; // maybe a faulty 'inspect' echo -+ goto try_inspect_entries; // maybe a faulty 'inspect' echo - } - // you saw that, right? (fscanf stickin' it to 'i') - Curwin = &Winstk[i]; -@@ -3442,20 +3441,20 @@ static void configs_read (void) { - goto default_or_error; - - switch (Rc.id) { -- case 'f': // 3.3.0 thru 3.3.3 (procps-ng) -- SETw(w, Show_JRNUMS); // fall through ! -- case 'g': // current RCF_VERSION_ID -- default: // and future versions? -+ case 'a': // 3.2.8 (former procps) -+ if (config_cvt(w)) -+ goto default_or_error; -+ break; -+ case 'f': // 3.3.0 thru 3.3.3 (procps-ng) -+ SETw(w, Show_JRNUMS); // fall through ! -+ case 'g': // current RCF_VERSION_ID -+ default: // and future versions? - if (strlen(w->rc.fieldscur) != sizeof(DEF_FIELDS) - 1) - goto default_or_error; - for (x = 0; x < P_MAXPFLGS; ++x) - if (P_MAXPFLGS <= FLDget(w, x)) - goto default_or_error; - break; -- case 'a': // 3.2.8 (former procps) -- if (config_cvt(w)) -- goto default_or_error; -- break; - } - #ifndef USE_X_COLHDR - OFFw(w, NOHIFND_xxx | NOHISEL_xxx); -@@ -3463,8 +3462,9 @@ static void configs_read (void) { - } // end: for (GROUPSMAX) - - // any new addition(s) last, for older rcfiles compatibility... -- fscanf(fp, "Fixed_widest=%d, Summ_mscale=%d, Task_mscale=%d, Zero_suppress=%d\n" -- , &Rc.fixed_widest, &Rc.summ_mscale, &Rc.task_mscale, &Rc.zero_suppress); -+ if (fscanf(fp, "Fixed_widest=%d, Summ_mscale=%d, Task_mscale=%d, Zero_suppress=%d\n" -+ , &Rc.fixed_widest, &Rc.summ_mscale, &Rc.task_mscale, &Rc.zero_suppress)) -+ ; // avoid -Wunused-result - - try_inspect_entries: - // we'll start off Inspect stuff with 1 'potential' blank line --- -1.7.9.2 - diff --git a/0015-top-swat-bug-affecting-batch-mode-and-width-provisio.patch b/0015-top-swat-bug-affecting-batch-mode-and-width-provisio.patch deleted file mode 100644 index 9d47bc2..0000000 --- a/0015-top-swat-bug-affecting-batch-mode-and-width-provisio.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 06c19f5ba4e8fcb704936609e8ef7d328ca54a28 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Thu, 29 Aug 2013 00:00:00 -0500 -Subject: [PATCH] top: swat bug affecting batch mode and width provision - -Normally, the internally tracked 'Screen_cols' can not -exceed the lessor of 512 or actual screen width. There -was one case, however, where that 512 byte upper limit -was no longer properly imposed as it should have been. - -When operating in 'Batch' mode the actual screen width -was allowed to be exceeded when the optional -w switch -was also used. But, it should never have exceeded 512. - -This patch ensures the upper limit is always observed. - -Reference(s): -http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=721204 - -Signed-off-by: Jim Warner ---- - top/top.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git top/top.c top/top.c -index bdfcf20..9996fbf 100644 ---- top/top.c -+++ top/top.c -@@ -1792,6 +1792,7 @@ static void adj_geometry (void) { - if (w_cols && w_cols < W_MIN_COL) w_cols = W_MIN_COL; - if (w_rows && w_rows < W_MIN_ROW) w_rows = W_MIN_ROW; - } -+ if (w_cols > SCREENMAX) w_cols = SCREENMAX; - w_set = 1; - } - --- -1.7.9.2 - diff --git a/0018-top-restore-the-lost-final-newline-when-in-Batch-mod.patch b/0018-top-restore-the-lost-final-newline-when-in-Batch-mod.patch deleted file mode 100644 index f07c068..0000000 --- a/0018-top-restore-the-lost-final-newline-when-in-Batch-mod.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 4141efaf13254564f0377289bcf5a1a1389f60af Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Tue, 17 Sep 2013 00:00:00 -0500 -Subject: [PATCH] top: restore the lost final newline when in Batch mode - -This patch adds the final newline when exiting 'Batch' -mode. Interestingly, it has been missing since release -3.3.5 but undetected until the Redhat bugzilla report. - -Reference(s): -https://bugzilla.redhat.com/show_bug.cgi?id=1008674 - -Signed-off-by: Jim Warner ---- - top/top.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git top/top.c top/top.c -index 6f4f728..44bc380 100644 ---- top/top.c -+++ top/top.c -@@ -527,6 +527,7 @@ static void bye_bye (const char *str) { - fputs(str, stderr); - exit(EXIT_FAILURE); - } -+ if (Batch) putp("\n"); - exit(EXIT_SUCCESS); - } // end: bye_bye - --- -1.7.9.2 - diff --git a/0019-top-swat-bug-impacting-idle-mode-user-filtering.patch b/0019-top-swat-bug-impacting-idle-mode-user-filtering.patch deleted file mode 100644 index 489fdb5..0000000 --- a/0019-top-swat-bug-impacting-idle-mode-user-filtering.patch +++ /dev/null @@ -1,62 +0,0 @@ -From e6a78f2745ca6c7ceed4406d3ce5397e77518b11 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Fri, 27 Sep 2013 12:12:12 -0500 -Subject: [PATCH] top: swat bug impacting 'idle' mode & 'user' filtering - -When Other filtering was introduced the nature of what -constituted a displayed row changed. No longer would a -task_show() call guarantee that another line is shown. -Rather, a non-empty string must have also been tested. - -Unfortunately, when any task window was being filtered -for 'idle' mode or a particular 'user', the proc index -was incremented twice due to the perils of copy/paste. -Combining such an index increment with the new test of -task_show results works fine if filtering is inactive. - -This was a particularly insidious bug which meant that -an adjacent task would be skipped whenever the current -task met 'idle' and/or 'user' filter criteria, and was -not otherwise excluded due to 'Other' filter criteria. - -And, since it was the very next task that was ignored, -the bug was very susceptible to a window's sort order. -This could be illustrated when filtering on some user, -while sorting on PID. Then, toggling Forest View could -make otherwise unseen tasks appear and then disappear. - -User workarounds are possible via interactive commands -trading the 'i' and 'u'/'U' provisions for the 'o'/'O' -other filtering capability thus avoiding an extra i++. -But that is certainly less than ideal and doesn't help -the 3.3.7 and 3.3.8 distorted command line provisions. - -( this little buggie may end up costing me my pocket ) -( protector, my coding badge & maybe even my cubicle ) - -Reference(s): -http://www.freelists.org/post/procps/Idle-elides-nonidle-processes -. bug originated with 'Other' filtering -commit 5edc6fb3174f1fd02bbfca61ec6d8a3a2e12f71c - -Signed-off-by: Jim Warner ---- - top/top.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git top/top.c top/top.c -index 44bc380..aa2777b 100644 ---- top/top.c -+++ top/top.c -@@ -5399,7 +5399,7 @@ static int window_show (WIN_t *q, int wmax) { - while (i < Frame_maxtask && lwin < wmax) { - if ((CHKw(q, Show_IDLEPS) || isBUSY(q->ppt[i])) - && user_matched(q, q->ppt[i]) -- && *task_show(q, q->ppt[i++])) -+ && *task_show(q, q->ppt[i])) - ++lwin; - ++i; - } --- -1.7.9.2 - diff --git a/0021-top-address-some-potential-libnuma-display-corruptio.patch b/0021-top-address-some-potential-libnuma-display-corruptio.patch deleted file mode 100644 index cdeb416..0000000 --- a/0021-top-address-some-potential-libnuma-display-corruptio.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 35dc6dcc49cc9cf8cff4300cb03a38dbe44c05db Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Sun, 3 Nov 2013 00:00:00 -0500 -Subject: [PATCH] top: address some potential libnuma display corruption - -There is a chance that the libnuma library may corrupt -top's display with some stderr warning messages in the -event something under /sys/devices/system/node/ cannot -be accessed. And, while 2 overridable 'weak' functions -are provided to alter such behavior, we can't use them -since top dynamically links to the library via dlopen. - -This commit will redirect stderr to '/dev/null' during -just the first screen display cycle. Thus we can avoid -the corruption which would have remained visible until -the underlining screen row's data had finally changed. - -Lastly, this patch should allow such a library warning -to actually appear when one finally exits our program. - -[ i think the libnuma folks should consider changing ] -[ the error/warning interfaces to accommodate dlopen ] -[ rather than forcing something like the ugly kludge ] -[ we have employed or libnuma dependency on everyone ] - -Reference(s): -https://bugzilla.redhat.com/show_bug.cgi?id=998678 - -Signed-off-by: Jim Warner ---- - top/top.c | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) - -diff --git top/top.c top/top.c -index aa2777b..a48a5b9 100644 ---- top/top.c -+++ top/top.c -@@ -220,6 +220,7 @@ static int Numa_node_tot; - static int Numa_node_sel = -1; - #ifndef NUMA_DISABLE - static void *Libnuma_handle; -+static int stderr_save = -1; - #if defined(PRETEND_NUMA) || defined(PRETEND8CPUS) - static int Numa_max_node(void) { return 3; } - static int Numa_node_of_cpu(int num) { return (num % 4); } -@@ -4043,6 +4044,17 @@ static void wins_stage_2 (void) { - // fill in missing Fieldstab members and build each window's columnhdr - zap_fieldstab(); - -+#ifndef NUMA_DISABLE -+ /* there's a chance that damn libnuma may spew to stderr so we gotta -+ make sure he does not corrupt poor ol' top's first output screen! -+ Yes, he provides some overridable 'weak' functions to change such -+ behavior but we can't exploit that since we don't follow a normal -+ ld route to symbol resolution (we use that dlopen() guy instead)! */ -+ stderr_save = dup(fileno(stderr)); -+ if (-1 < stderr_save && freopen("/dev/null", "w", stderr)) -+ ; // avoid -Wunused-result -+#endif -+ - // lastly, initialize a signal set used to throttle one troublesome signal - sigemptyset(&Sigwinch_set); - #ifdef SIGNALS_LESS -@@ -5508,6 +5520,16 @@ static void frame_make (void) { - the normal non-interactive output optimization... */ - if (!Cap_can_goto) PSU_CLREOS(0); - -+#ifndef NUMA_DISABLE -+ /* we gotta reverse the stderr redirect which was employed in wins_stage_2 -+ and needed because the two libnuma 'weak' functions were useless to us! */ -+ if (-1 < stderr_save) { -+ dup2(stderr_save, fileno(stderr)); -+ close(stderr_save); -+ stderr_save = -1; -+ } -+#endif -+ - /* lastly, check auto-sized width needs for the next iteration */ - if (AUTOX_MODE && Autox_found) - widths_resize(); --- -1.7.9.2 - diff --git a/0022-top-fix-miscellaneous-spelling-errors-in-man-documen.patch b/0022-top-fix-miscellaneous-spelling-errors-in-man-documen.patch deleted file mode 100644 index 5ff9989..0000000 --- a/0022-top-fix-miscellaneous-spelling-errors-in-man-documen.patch +++ /dev/null @@ -1,76 +0,0 @@ -From 5a8adee659524ef72583d8ea494721d279b5bea1 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Tue, 5 Nov 2013 00:00:00 -0600 -Subject: [PATCH] top: fix miscellaneous spelling errors in man document - -Signed-off-by: Jim Warner ---- - procps-ng-3.3.8/top/top.1 | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - ---- top/top.1 -+++ top/top.1 2014-05-15 10:27:04.482756345 +0000 -@@ -383,8 +383,8 @@ Display only processes with a user id or - The '\-u' option matches on \fI effective\fR user whereas the '\-U' option - matches on\fI any\fR user (real, effective, saved, or filesystem). - --Prepending an exclamation point ('!') to the user id or name instucts top to --display only processes with users not matching the one provided. -+Prepending an exclamation point ('!') to the user id or name instructs top -+to display only processes with users not matching the one provided. - - The 'p', 'u' and 'U' \*(COs are mutually exclusive. - -@@ -650,8 +650,8 @@ If you see 'rt' in this field, it means - 'real time' scheduling priority. - - Under linux, real time priority is somewhat misleading since traditionally --the operating itself was not preemptable. --And while the 2.6 kernel can be made mostly preemptable, it is not always so. -+the operating itself was not preemptible. -+And while the 2.6 kernel can be made mostly preemptible, it is not always so. - - .TP 4 - 17.\fB RES \*(Em Resident Memory Size (KiB) \fR -@@ -1337,10 +1337,10 @@ matches on\fB any\fR user (real, effecti - - Thereafter, in that \*(TW only matching users will be shown, or possibly - no processes will be shown. --Prepending an exclamation point ('!') to the user id or name instucts top -+Prepending an exclamation point ('!') to the user id or name instructs top - to display only processes with users not matching the one provided. - --Different \*(TWs can can be used to filter different users. -+Different \*(TWs can be used to filter different users. - Later, if you wish to monitor all users again in the \*(CW, re-issue this - command but just press at the prompt. - -@@ -1349,7 +1349,7 @@ command but just press at the pr - In this mode, processes are reordered according to their parents and - the layout of the COMMAND column resembles that of a tree. - In forest view mode it is still possible to toggle between program --name and commamd line (\*(Xc 'c' \*(CI) or between processes and -+name and command line (\*(Xc 'c' \*(CI) or between processes and - threads (\*(Xc 'H' \*(CI). - - \*(NT Typing any key affecting the sort order will exit forest view -@@ -1673,8 +1673,8 @@ The above \*(CIs are\fB always\fR availa - available in \*(AM if the \*(CW's \*(TD has been toggled \*F. - - \*(NT When any form of filtering is active, you can expect some slight --abberations when scrolling since not all tasks will be visible. --This is paticularly apparent when using the Up/Down \*(KAs. -+aberrations when scrolling since not all tasks will be visible. -+This is particularly apparent when using the Up/Down \*(KAs. - - .\" ...................................................................... - .SS 5d. SEARCHING in a Window -@@ -2037,7 +2037,7 @@ enable backslash interpretation regardle - - \fBCaution\fR: - If any inspect entry you create produces output with unprintable characters --they will be displayed in either the ^C notation or hexidecimal form, -+they will be displayed in either the ^C notation or hexadecimal form, - depending on their value. - This applies to tab characters as well, which will show as '^I'. - If you want a truer representation, any embedded tabs should be expanded. diff --git a/0023-top-do-not-forget-the-fscanf-s-terminating-null-byte.patch b/0023-top-do-not-forget-the-fscanf-s-terminating-null-byte.patch new file mode 100644 index 0000000..8cd4b3c --- /dev/null +++ b/0023-top-do-not-forget-the-fscanf-s-terminating-null-byte.patch @@ -0,0 +1,31 @@ +From 14ef47af57f48d1e51ab91e80fd8f132fabb665a Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Tue, 3 Dec 2013 15:00:00 -0600 +Subject: [PATCH] top: do not forget the fscanf %s terminating null byte + +Reference(s): +http://www.freelists.org/post/procps/procpsng-339-defects-found + +Signed-off-by: Jim Warner +--- + top/top.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git top/top.c top/top.c +index 4d1d912..bb15d01 100644 +--- top/top.c ++++ top/top.c +@@ -3445,8 +3445,8 @@ static void configs_read (void) { + WIN_t *w = &Winstk[i]; + p = fmtmk(N_fmt(RC_bad_entry_fmt), i+1, Rc_name); + +- // note: "fieldscur=%__s" on next line should equal PFLAGSSIZ ! +- if (2 != fscanf(fp, "%3s\tfieldscur=%80s\n" ++ // note: "fieldscur=%__s" on next line should equal (PFLAGSSIZ -1) ! ++ if (2 != fscanf(fp, "%3s\tfieldscur=%79s\n" + , w->rc.winname, w->rc.fieldscur)) + goto default_or_error; + #if PFLAGSSIZ > 80 +-- +1.7.9.2 + diff --git a/0023-top-expand-on-column-highlight-quirks-in-man-documen.patch b/0023-top-expand-on-column-highlight-quirks-in-man-documen.patch deleted file mode 100644 index 6bd5624..0000000 --- a/0023-top-expand-on-column-highlight-quirks-in-man-documen.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 9c776bbcde2260f454b51b86d46aafcc2f7dc71c Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Wed, 6 Nov 2013 00:00:00 -0600 -Subject: [PATCH] top: expand on column highlight quirks in man document - -Confession is supposed to be good for the sole, right? - -After a senior moment regarding the 'x' toggle quirks, -and thinking top had somehow regressed, I concluded an -additional explanatory note might well be appropriate. - -Those quirks were already documented under the 5d & 5e -topics. But there was no such caution documented under -the 'x' command explanation itself, found in topic 4c. - -Signed-off-by: Jim Warner ---- - top/top.1 | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git top/top.1 top/top.1 -index 64a6a36..87659be 100644 ---- top/top.1 -+++ top/top.1 -@@ -1270,6 +1270,11 @@ The sort field might\fI not\fR be visible because: - 1) there is insufficient\fI Screen Width \fR - 2) the 'f' \*(CI turned it \*F - -+\*(NT Whenever 'Searching' and/or 'Other Filtering' is active in a window, -+column highlighting is temporarily disabled. -+\*(XC notes at the end of topics 5d. SEARCHING and 5e. FILTERING for an -+explanation why. -+ - .TP 7 - \ \ \ \fBy\fR\ \ :\fIRow-Highlight\fR toggle \fR - Changes highlighting for "running" tasks. --- -1.7.9.2 - diff --git a/0024-sysctl-system-loads-default-config-file.patch b/0024-sysctl-system-loads-default-config-file.patch new file mode 100644 index 0000000..8bdb1bd --- /dev/null +++ b/0024-sysctl-system-loads-default-config-file.patch @@ -0,0 +1,41 @@ +From 7f6efed9bb85d1e212e06985ea3e06720f6ca949 Mon Sep 17 00:00:00 2001 +From: Craig Small +Date: Fri, 27 Dec 2013 23:08:14 +1100 +Subject: [PATCH] sysctl --system loads default config file + +Commit cdca71e94506fbb921ab2c626be3ad05c4287498 fixed +the loading the sysctl.conf file, but had the logic +for checking the file exists reversed incorrectly. +--- + NEWS | 4 ++++ + sysctl.c | 2 +- + 2 files changed, 5 insertions(+), 1 deletion(-) + +diff --git NEWS NEWS +index 287f867..1c710a3 100644 +--- NEWS ++++ NEWS +@@ -1,3 +1,7 @@ ++procps-ng-3.3.10 ++---------------- ++ * sysctl --system loads default config file - Debian #732920 ++ + procps-ng-3.3.9 + --------------- + * kernel namespaces support added to skill, pgrep, ps and top +diff --git sysctl.c sysctl.c +index bb3e6b7..33c9403 100644 +--- sysctl.c ++++ sysctl.c +@@ -640,7 +640,7 @@ static int PreloadSystem(void) + } + + +- if (stat(DEFAULT_PRELOAD, &ts) < 0 && S_ISREG(ts.st_mode)) { ++ if (stat(DEFAULT_PRELOAD, &ts) < 0 || S_ISREG(ts.st_mode)) { + if (!Quiet) + printf(_("* Applying %s ...\n"), DEFAULT_PRELOAD); + rc |= Preload(DEFAULT_PRELOAD); +-- +1.7.9.2 + diff --git a/0024-top-add-some-flexibility-to-dlopen-for-numa-support.patch b/0024-top-add-some-flexibility-to-dlopen-for-numa-support.patch deleted file mode 100644 index ff42ea7..0000000 --- a/0024-top-add-some-flexibility-to-dlopen-for-numa-support.patch +++ /dev/null @@ -1,60 +0,0 @@ -From bdb2fe005616bb40f2da53da02b01f91cabf9a87 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Thu, 7 Nov 2013 00:00:00 -0600 -Subject: [PATCH] top: add some flexibility to dlopen() for numa support - -A recent libnuma potential corruption problem solution -suggests that libnuma could change in the future so as -to not spew to stderr. This then raises a question how -top could exploit any such library change since we are -currently locked into version #1 of the library by way -of our dlopen("libnuma.so.1", RTLD_LAZY) runtime call. - -While not an ultimate solution, this commit will first -try for the most recent version of that library during -top's startup before trying the original libnuma.so.1. -We do this via the unqualified library soname symlink. - -For this new dlopen() call to succeed, technically the -numa 'devel' package would usually have been required, -but that's not always true with every distro. And when -the libnuma.so symlink isn't present, it can always be -manually added should a newer & better behaved library -arrive & users tire of the stderr warning at top exit. - -Reference(s): -commit 24bd950cb2e1722d459461f0f9c0c30a4b9ffdaa - -Signed-off-by: Jim Warner ---- - top/top.c | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git top/top.c top/top.c -index a48a5b9..e619ddd 100644 ---- top/top.c -+++ top/top.c -@@ -3246,8 +3246,9 @@ static void before (char *me) { - #if defined(PRETEND_NUMA) || defined(PRETEND8CPUS) - Numa_node_tot = Numa_max_node() + 1; - #else -- Libnuma_handle = dlopen("libnuma.so.1", RTLD_LAZY); -- if (Libnuma_handle) { -+ // we'll try for the most recent version, then a version we know works... -+ if ((Libnuma_handle = dlopen("libnuma.so", RTLD_LAZY)) -+ || (Libnuma_handle = dlopen("libnuma.so.1", RTLD_LAZY))) { - Numa_max_node = dlsym(Libnuma_handle, "numa_max_node"); - Numa_node_of_cpu = dlsym(Libnuma_handle, "numa_node_of_cpu"); - if (Numa_max_node && Numa_node_of_cpu) -@@ -3265,7 +3266,7 @@ static void before (char *me) { - #endif - // lastly, establish a robust signals environment - sigemptyset(&sa.sa_mask); -- // with user position perserved through SIGWINCH, we must avoid SA_RESTART -+ // with user position preserved through SIGWINCH, we must avoid SA_RESTART - sa.sa_flags = 0; - for (i = SIGRTMAX; i; i--) { - switch (i) { --- -1.7.9.2 - diff --git a/0025-Split-help-lines-to-help-translators.patch b/0025-Split-help-lines-to-help-translators.patch new file mode 100644 index 0000000..c05e380 --- /dev/null +++ b/0025-Split-help-lines-to-help-translators.patch @@ -0,0 +1,371 @@ +From 8a38cd5eb449c47450e31aa093635e8cfaaf2f73 Mon Sep 17 00:00:00 2001 +From: Craig Small +Date: Sat, 28 Dec 2013 09:25:39 +1100 +Subject: [PATCH] Split help lines to help translators + +To assist translators, the help lines are split so that each translation +chunk has one option. This gives bonus of if we add or change an option, +only that option remains untranslated rather than the entire help block. + +Reference: + http://www.freelists.org/post/procps/procpsng-for-Translation-Project,1 + +Signed-off-by: Craig Small +--- + pidof.c | 8 ++-- + pmap.c | 26 ++++++------ + ps/help.c | 131 +++++++++++++++++++++++++++++-------------------------------- + skill.c | 42 ++++++++++---------- + slabtop.c | 28 ++++++------- + watch.c | 20 +++++----- + 6 files changed, 125 insertions(+), 130 deletions(-) + +diff --git pidof.c pidof.c +index 2e0911d..6a38675 100644 +--- pidof.c ++++ pidof.c +@@ -60,10 +60,10 @@ static int __attribute__ ((__noreturn__)) usage(int opt) + fputs(USAGE_HEADER, fp); + fprintf(fp, _(" %s [options] [program [...]]\n"), program_invocation_short_name); + fputs(USAGE_OPTIONS, fp); +- fputs(_(" -s, --single-shot return one PID only\n" +- " -c, --check-root omit processes with different root\n" +- " -x scripts too\n" +- " -o, --omit-pid omit processes with PID\n"), fp); ++ fputs(_(" -s, --single-shot return one PID only\n"), fp); ++ fputs(_(" -c, --check-root omit processes with different root\n"), fp); ++ fputs(_(" -x scripts too\n"), fp); ++ fputs(_(" -o, --omit-pid omit processes with PID\n"), fp); + fputs(USAGE_SEPARATOR, fp); + fputs(USAGE_HELP, fp); + fputs(USAGE_VERSION, fp); +diff --git pmap.c pmap.c +index 8f111a0..4ecabce 100644 +--- pmap.c ++++ pmap.c +@@ -108,19 +108,19 @@ usage(FILE * out) + fprintf(out, + _(" %s [options] pid [pid ...]\n"), program_invocation_short_name); + fputs(USAGE_OPTIONS, out); +- fputs(_(" -x, --extended show details\n" +- " -X show even more details\n" +- " WARNING: format changes according to /proc/PID/smaps\n" +- " -XX show everything the kernel provides\n" +- " -c, --read-rc read the default rc\n" +- " -C, --read-rc-from= read the rc from file\n" +- " -n, --create-rc create new default rc\n" +- " -N, --create-rc-to= create new rc to file\n" +- " NOTE: pid arguments are not allowed with -n, -N\n" +- " -d, --device show the device format\n" +- " -q, --quiet do not display header and footer\n" +- " -p, --show-path show path in the mapping\n" +- " -A, --range=[,] limit results to the given range\n"), out); ++ fputs(_(" -x, --extended show details\n"), out); ++ fputs(_(" -X show even more details\n"), out); ++ fputs(_(" WARNING: format changes according to /proc/PID/smaps\n"), out); ++ fputs(_(" -XX show everything the kernel provides\n"), out); ++ fputs(_(" -c, --read-rc read the default rc\n"), out); ++ fputs(_(" -C, --read-rc-from= read the rc from file\n"), out); ++ fputs(_(" -n, --create-rc create new default rc\n"), out); ++ fputs(_(" -N, --create-rc-to= create new rc to file\n"), out); ++ fputs(_(" NOTE: pid arguments are not allowed with -n, -N\n"), out); ++ fputs(_(" -d, --device show the device format\n"), out); ++ fputs(_(" -q, --quiet do not display header and footer\n"), out); ++ fputs(_(" -p, --show-path show path in the mapping\n"), out); ++ fputs(_(" -A, --range=[,] limit results to the given range\n"), out); + fputs(USAGE_SEPARATOR, out); + fputs(USAGE_HELP, out); + fputs(USAGE_VERSION, out); +diff --git ps/help.c ps/help.c +index b536f1a..9133903 100644 +--- ps/help.c ++++ ps/help.c +@@ -96,85 +96,80 @@ void do_help (const char *opt, int rc) { + " %s [options]\n"), myname); + + if (section == HELP_SMP || section == HELP_ALL) { +- fprintf(out, _("\n" +- "Basic options:\n" +- " -A, -e all processes\n" +- " -a all with tty, except session leaders\n" +- " a all with tty, including other users\n" +- " -d all except session leaders\n" +- " -N, --deselect negate selection\n" +- " r only running processes\n" +- " T all processes on this terminal\n" +- " x processes without controlling ttys\n")); ++ fputs(_("\nBasic options:\n"), out); ++ fputs(_(" -A, -e all processes\n"), out); ++ fputs(_(" -a all with tty, except session leaders\n"), out); ++ fputs(_(" a all with tty, including other users\n"), out); ++ fputs(_(" -d all except session leaders\n"), out); ++ fputs(_(" -N, --deselect negate selection\n"), out); ++ fputs(_(" r only running processes\n"), out); ++ fputs(_(" T all processes on this terminal\n"), out); ++ fputs(_(" x processes without controlling ttys\n"), out); + } + if (section == HELP_LST || section == HELP_ALL) { +- fprintf(out, _("\n" +- "Selection by list:\n" +- " -C command name\n" +- " -G, --Group real group id or name\n" +- " -g, --group session or effective group name\n" +- " -p, --pid process id\n" +- " --ppid select by parent process id\n" +- " -s, --sid session id\n" +- " -t, t, --tty terminal\n" +- " -u, U, --user effective user id or name\n" +- " -U, --User real user id or name\n" +- "\n" ++ fputs(_("\nSelection by list:\n"), out); ++ fputs(_(" -C command name\n"), out); ++ fputs(_(" -G, --Group real group id or name\n"), out); ++ fputs(_(" -g, --group session or effective group name\n"), out); ++ fputs(_(" -p, --pid process id\n"), out); ++ fputs(_(" --ppid select by parent process id\n"), out); ++ fputs(_(" -s, --sid session id\n"), out); ++ fputs(_(" -t, t, --tty terminal\n"), out); ++ fputs(_(" -u, U, --user effective user id or name\n"), out); ++ fputs(_(" -U, --User real user id or name\n"), out); ++ fputs(_("\n" + " selection take either:\n" + " comma-separated list e.g. '-u root,nobody' or\n" +- " blank-separated list e.g. '-p 123 4567'\n")); ++ " blank-separated list e.g. '-p 123 4567'\n"), out); + } + if (section == HELP_OUT || section == HELP_ALL) { +- fprintf(out, _("\n" +- "Output formats:\n" +- " -F extra full\n" +- " -f full-format, including command lines\n" +- " f, --forest ascii art process tree\n" +- " -H show process hierarchy\n" +- " -j jobs format\n" +- " j BSD job control format\n" +- " -l long format\n" +- " l BSD long format\n" +- " -M, Z add security data (for SELinux)\n" +- " -O preloaded with default columns\n" +- " O as -O, with BSD personality\n" +- " -o, o, --format \n" +- " user defined format\n" +- " s signal format\n" +- " u user-oriented format\n" +- " v virtual memory format\n" +- " X register format\n" +- " -y do not show flags, show rrs vs. addr (used with -l)\n" +- " --context display security context (for SELinux)\n" +- " --headers repeat header lines, one per page\n" +- " --no-headers do not print header at all\n" +- " --cols, --columns, --width \n" +- " set screen width\n" +- " --rows, --lines \n" +- " set screen height\n")); ++ fputs(_("\nOutput formats:\n"), out); ++ fputs(_(" -F extra full\n"), out); ++ fputs(_(" -f full-format, including command lines\n"), out); ++ fputs(_(" f, --forest ascii art process tree\n"), out); ++ fputs(_(" -H show process hierarchy\n"), out); ++ fputs(_(" -j jobs format\n"), out); ++ fputs(_(" j BSD job control format\n"), out); ++ fputs(_(" -l long format\n"), out); ++ fputs(_(" l BSD long format\n"), out); ++ fputs(_(" -M, Z add security data (for SELinux)\n"), out); ++ fputs(_(" -O preloaded with default columns\n"), out); ++ fputs(_(" O as -O, with BSD personality\n"), out); ++ fputs(_(" -o, o, --format \n" ++ " user defined format\n"), out); ++ fputs(_(" s signal format\n"), out); ++ fputs(_(" u user-oriented format\n"), out); ++ fputs(_(" v virtual memory format\n"), out); ++ fputs(_(" X register format\n"), out); ++ fputs(_(" -y do not show flags, show rrs vs. addr (used with -l)\n"), out); ++ fputs(_(" --context display security context (for SELinux)\n"), out); ++ fputs(_(" --headers repeat header lines, one per page\n"), out); ++ fputs(_(" --no-headers do not print header at all\n"), out); ++ fputs(_(" --cols, --columns, --width \n" ++ " set screen width\n"), out); ++ fputs(_(" --rows, --lines \n" ++ " set screen height\n"), out); + } + if (section == HELP_THD || section == HELP_ALL) { +- fprintf(out, _("\n" +- "Show threads:\n" +- " H as if they where processes\n" +- " -L possibly with LWP and NLWP columns\n" +- " -m, m after processes\n" +- " -T possibly with SPID column\n")); ++ fputs(_("\nShow threads:\n"), out); ++ fputs(_(" H as if they where processes\n"), out); ++ fputs(_(" -L possibly with LWP and NLWP columns\n"), out); ++ fputs(_(" -m, m after processes\n"), out); ++ fputs(_(" -T possibly with SPID column\n"), out); + } + if (section == HELP_MSC || section == HELP_ALL) { ++ fputs(_("\nMiscellaneous options:\n"), out); ++ fputs(_(" -c show scheduling class with -l option\n"), out); ++ fputs(_(" c show true command name\n"), out); ++ fputs(_(" e show the environment after command\n"), out); ++ fputs(_(" k, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]\n"), out); ++ fputs(_(" L list format specifiers\n"), out); ++ fputs(_(" n display numeric uid and wchan\n"), out); ++ fputs(_(" S, --cumulative include some dead child process data\n"), out); ++ fputs(_(" -y do not show flags, show rss (only with -l)\n"), out); ++ fputs(_(" -V, V, --version display version information and exit\n"), out); ++ fputs(_(" -w, w unlimited output width\n"), out); + fprintf(out, _("\n" +- "Miscellaneous options:\n" +- " -c show scheduling class with -l option\n" +- " c show true command name\n" +- " e show the environment after command\n" +- " k, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]\n" +- " L list format specifiers\n" +- " n display numeric uid and wchan\n" +- " S, --cumulative include some dead child process data\n" +- " -y do not show flags, show rss (only with -l)\n" +- " -V, V, --version display version information and exit\n" +- " -w, w unlimited output width\n" +- "\n" + " --%s <%s|%s|%s|%s|%s|%s>\n" + " display help and exit\n") + , the_word_help +diff --git skill.c skill.c +index 01b29cb..5c8192a 100644 +--- skill.c ++++ skill.c +@@ -324,11 +324,11 @@ static void __attribute__ ((__noreturn__)) kill_usage(FILE * out) + fprintf(out, + _(" %s [options] [...]\n"), program_invocation_short_name); + fputs(USAGE_OPTIONS, out); +- fputs(_(" [...] send signal to every listed\n" +- " -, -s, --signal \n" +- " specify the to be sent\n" +- " -l, --list=[] list all signal names, or convert one to a name\n" +- " -L, --table list all signal names in a nice table\n"), out); ++ fputs(_(" [...] send signal to every listed\n"), out); ++ fputs(_(" -, -s, --signal \n" ++ " specify the to be sent\n"), out); ++ fputs(_(" -l, --list=[] list all signal names, or convert one to a name\n"), out); ++ fputs(_(" -L, --table list all signal names in a nice table\n"), out); + fputs(USAGE_SEPARATOR, out); + fputs(USAGE_HELP, out); + fputs(USAGE_VERSION, out); +@@ -351,25 +351,25 @@ static void __attribute__ ((__noreturn__)) skillsnice_usage(FILE * out) + program_invocation_short_name); + } + fputs(USAGE_OPTIONS, out); +- fputs(_(" -f, --fast fast mode (not implemented)\n" +- " -i, --interactive interactive\n" +- " -l, --list list all signal names\n" +- " -L, --table list all signal names in a nice table\n" +- " -n, --no-action no action\n" +- " -v, --verbose explain what is being done\n" +- " -w, --warnings enable warnings (not implemented)\n"), out); ++ fputs(_(" -f, --fast fast mode (not implemented)\n"), out); ++ fputs(_(" -i, --interactive interactive\n"), out); ++ fputs(_(" -l, --list list all signal names\n"), out); ++ fputs(_(" -L, --table list all signal names in a nice table\n"), out); ++ fputs(_(" -n, --no-action no action\n"), out); ++ fputs(_(" -v, --verbose explain what is being done\n"), out); ++ fputs(_(" -w, --warnings enable warnings (not implemented)\n"), out); + fputs(USAGE_SEPARATOR, out); + fputs(_("Expression can be: terminal, user, pid, command.\n" +- "The options below may be used to ensure correct interpretation.\n" +- " -c, --command expression is a command name\n" +- " -p, --pid expression is a process id number\n" +- " -t, --tty expression is a terminal\n" +- " -u, --user expression is a username\n"), out); ++ "The options below may be used to ensure correct interpretation.\n"), out); ++ fputs(_(" -c, --command expression is a command name\n"), out); ++ fputs(_(" -p, --pid expression is a process id number\n"), out); ++ fputs(_(" -t, --tty expression is a terminal\n"), out); ++ fputs(_(" -u, --user expression is a username\n"), out); + fputs(USAGE_SEPARATOR, out); +- fputs(_("Alternatively, expression can be:\n" +- " --ns match the processes that belong to the same\n" +- " namespace as \n" +- " --nslist list which namespaces will be considered for\n" ++ fputs(_("Alternatively, expression can be:\n"), out); ++ fputs(_(" --ns match the processes that belong to the same\n" ++ " namespace as \n"), out); ++ fputs(_(" --nslist list which namespaces will be considered for\n" + " the --ns option.\n" + " Available namespaces: ipc, mnt, net, pid, user, uts\n"), out); + +diff --git slabtop.c slabtop.c +index dc89c4d..c135ec5 100644 +--- slabtop.c ++++ slabtop.c +@@ -188,24 +188,24 @@ static void __attribute__((__noreturn__)) usage(FILE *out) + fputs(USAGE_HEADER, out); + fprintf(out, _(" %s [options]\n"), program_invocation_short_name); + fputs(USAGE_OPTIONS, out); +- fputs(_(" -d, --delay delay updates\n" +- " -o, --once only display once, then exit\n" +- " -s, --sort specify sort criteria by character (see below)\n"), out); ++ fputs(_(" -d, --delay delay updates\n"), out); ++ fputs(_(" -o, --once only display once, then exit\n"), out); ++ fputs(_(" -s, --sort specify sort criteria by character (see below)\n"), out); + fputs(USAGE_SEPARATOR, out); + fputs(USAGE_HELP, out); + fputs(USAGE_VERSION, out); + +- fputs(_("\nThe following are valid sort criteria:\n" +- " a: sort by number of active objects\n" +- " b: sort by objects per slab\n" +- " c: sort by cache size\n" +- " l: sort by number of slabs\n" +- " v: sort by number of active slabs\n" +- " n: sort by name\n" +- " o: sort by number of objects (the default)\n" +- " p: sort by pages per slab\n" +- " s: sort by object size\n" +- " u: sort by cache utilization\n"), out); ++ fputs(_("\nThe following are valid sort criteria:\n"), out); ++ fputs(_(" a: sort by number of active objects\n"), out); ++ fputs(_(" b: sort by objects per slab\n"), out); ++ fputs(_(" c: sort by cache size\n"), out); ++ fputs(_(" l: sort by number of slabs\n"), out); ++ fputs(_(" v: sort by number of active slabs\n"), out); ++ fputs(_(" n: sort by name\n"), out); ++ fputs(_(" o: sort by number of objects (the default)\n"), out); ++ fputs(_(" p: sort by pages per slab\n"), out); ++ fputs(_(" s: sort by object size\n"), out); ++ fputs(_(" u: sort by cache utilization\n"), out); + fprintf(out, USAGE_MAN_TAIL("slabtop(1)")); + + exit(out == stderr ? EXIT_FAILURE : EXIT_SUCCESS); +diff --git watch.c watch.c +index 436d213..032dfb7 100644 +--- watch.c ++++ watch.c +@@ -88,16 +88,16 @@ static void __attribute__ ((__noreturn__)) + fprintf(out, + _(" %s [options] command\n"), program_invocation_short_name); + fputs(USAGE_OPTIONS, out); +- fputs(_(" -b, --beep beep if command has a non-zero exit\n" +- " -c, --color interpret ANSI color sequences\n" +- " -d, --differences[=]\n" +- " highlight changes between updates\n" +- " -e, --errexit exit if command has a non-zero exit\n" +- " -g, --chgexit exit when output from command changes\n" +- " -n, --interval seconds to wait between updates\n" +- " -p, --precise attempt run command in precise intervals\n" +- " -t, --no-title turn off header\n" +- " -x, --exec pass command to exec instead of \"sh -c\"\n"), out); ++ fputs(_(" -b, --beep beep if command has a non-zero exit\n"), out); ++ fputs(_(" -c, --color interpret ANSI color sequences\n"), out); ++ fputs(_(" -d, --differences[=]\n" ++ " highlight changes between updates\n"), out); ++ fputs(_(" -e, --errexit exit if command has a non-zero exit\n"), out); ++ fputs(_(" -g, --chgexit exit when output from command changes\n"), out); ++ fputs(_(" -n, --interval seconds to wait between updates\n"), out); ++ fputs(_(" -p, --precise attempt run command in precise intervals\n"), out); ++ fputs(_(" -t, --no-title turn off header\n"), out); ++ fputs(_(" -x, --exec pass command to exec instead of \"sh -c\"\n"), out); + fputs(USAGE_SEPARATOR, out); + fputs(USAGE_HELP, out); + fputs(_(" -v, --version output version information and exit\n"), out); +-- +1.7.9.2 + diff --git a/0025-top-minimize-the-statistics-overhead-for-numa-suppor.patch b/0025-top-minimize-the-statistics-overhead-for-numa-suppor.patch deleted file mode 100644 index a15fbbc..0000000 --- a/0025-top-minimize-the-statistics-overhead-for-numa-suppor.patch +++ /dev/null @@ -1,109 +0,0 @@ -From f12c0d5c6e84f9409ac3a73c066841a8ff5aab0b Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Fri, 8 Nov 2013 00:00:00 -0600 -Subject: [PATCH] top: minimize the statistics overhead for numa support - -A recent libnuma potential corruption problem solution -has caused me to reevaluate some associated numa logic -for efficiency. Here is a summary of the problems that -exist with current libnuma/user possible interactions: - -. Whenever the numa library was present extra overhead -would always be incurred in maintaining the node stats -even when the '2' or '3' commands were not being used. - -. As part of such overhead a separate loop was used to -reinitialize each cpu/node structure with each display -cycle so that prior accumulated totals were preserved. -Again, it didn't matter if numa data was really shown. - -This commit attempts to refocus on the 'critical path' -costs in a running top by optimizing for the occasions -when numa node data is not being displayed. Under such -conditions, no extra overhead will be incurred whether -or not a distribution has the libnuma library present. - -To achieve this goal, some additional overhead will be -incurred, but only when actually displaying numa data. -And all such new costs have been minimized in spite of -the gcc inclination to duplicate subscript resolution. - -Reference(s): -commit 24bd950cb2e1722d459461f0f9c0c30a4b9ffdaa - -Signed-off-by: Jim Warner ---- - top/top.c | 46 +++++++++++++++++++++++----------------------- - 1 file changed, 23 insertions(+), 23 deletions(-) - -diff --git top/top.c top/top.c -index e619ddd..9d12693 100644 ---- top/top.c -+++ top/top.c -@@ -2361,18 +2361,9 @@ static CPU_t *cpus_refresh (CPU_t *cpus) { - #endif - - #ifndef NUMA_DISABLE -- for (i = 0; i < Numa_node_tot; i++) { -- node = sumSLOT + 1 + i; -- // remember from last time around -- memcpy(&cpus[node].sav, &cpus[node].cur, sizeof(CT_t)); -- // initialize current node statistics -- memset(&cpus[node].cur, 0, sizeof(CT_t)); --#ifndef CPU_ZEROTICS -- cpus[node].edge = cpus[sumSLOT].edge; -- // this is for symmetry only, it's not currently required -- cpus[node].cur.tot = cpus[sumSLOT].cur.tot; --#endif -- } -+ // forget all of the prior node statistics (maybe) -+ if (CHKw(Curwin, View_CPUNOD)) -+ memset(&cpus[sumSLOT + 1], 0, Numa_node_tot * sizeof(CPU_t)); - #endif - - // now value each separate cpu's tics... -@@ -2400,21 +2391,30 @@ static CPU_t *cpus_refresh (CPU_t *cpus) { - cpus[i].id = i; - #endif - #ifndef NUMA_DISABLE -- if (Numa_node_tot -+ /* henceforth, with just a little more arithmetic we can avoid -+ maintaining *any* node stats unless they're actually needed */ -+ if (CHKw(Curwin, View_CPUNOD) -+ && Numa_node_tot - && -1 < (node = Numa_node_of_cpu(cpus[i].id))) { -+ // use our own pointer to avoid gcc subscript bloat -+ CPU_t *nod_ptr = &cpus[sumSLOT + 1 + node]; -+ nod_ptr->cur.u += cpus[i].cur.u; nod_ptr->sav.u += cpus[i].sav.u; -+ nod_ptr->cur.n += cpus[i].cur.n; nod_ptr->sav.n += cpus[i].sav.n; -+ nod_ptr->cur.s += cpus[i].cur.s; nod_ptr->sav.s += cpus[i].sav.s; -+ nod_ptr->cur.i += cpus[i].cur.i; nod_ptr->sav.i += cpus[i].sav.i; -+ nod_ptr->cur.w += cpus[i].cur.w; nod_ptr->sav.w += cpus[i].sav.w; -+ nod_ptr->cur.x += cpus[i].cur.x; nod_ptr->sav.x += cpus[i].sav.x; -+ nod_ptr->cur.y += cpus[i].cur.y; nod_ptr->sav.y += cpus[i].sav.y; -+ nod_ptr->cur.z += cpus[i].cur.z; nod_ptr->sav.z += cpus[i].sav.z; -+#ifndef CPU_ZEROTICS -+ /* yep, we re-value this repeatedly for each cpu encountered, but we -+ can then avoid a prior loop to selectively initialize each node */ -+ nod_ptr->edge = cpus[sumSLOT].edge; -+#endif - cpus[i].node = node; -- node += (sumSLOT + 1); -- cpus[node].cur.u += cpus[i].cur.u; -- cpus[node].cur.n += cpus[i].cur.n; -- cpus[node].cur.s += cpus[i].cur.s; -- cpus[node].cur.i += cpus[i].cur.i; -- cpus[node].cur.w += cpus[i].cur.w; -- cpus[node].cur.x += cpus[i].cur.x; -- cpus[node].cur.y += cpus[i].cur.y; -- cpus[node].cur.z += cpus[i].cur.z; - } - #endif -- } -+ } // end: for each cpu - - Cpu_faux_tot = i; // tolerate cpus taken offline - --- -1.7.9.2 - diff --git a/0026-library-fixing-uninitialized-variable-pos-in-whattim.patch b/0026-library-fixing-uninitialized-variable-pos-in-whattim.patch new file mode 100644 index 0000000..24c1c35 --- /dev/null +++ b/0026-library-fixing-uninitialized-variable-pos-in-whattim.patch @@ -0,0 +1,25 @@ +From 38cbeedeb7dc94c95482343e547addc1748344b0 Mon Sep 17 00:00:00 2001 +From: Jaromir Capik +Date: Thu, 2 Jan 2014 18:21:31 +0100 +Subject: [PATCH] library: fixing uninitialized variable 'pos' in whattime.c + +--- + proc/whattime.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git proc/whattime.c proc/whattime.c +index 9d6abb3..eb345fb 100644 +--- proc/whattime.c ++++ proc/whattime.c +@@ -58,6 +58,8 @@ char *sprint_uptime(int human_readable) { + realtime = localtime(&realseconds); + pos = sprintf(buf, " %02d:%02d:%02d ", + realtime->tm_hour, realtime->tm_min, realtime->tm_sec); ++ } else { ++ pos = 0; + } + + /* read and calculate the amount of uptime */ +-- +1.7.9.2 + diff --git a/0026-top-eliminate-yet-more-gcc-subscript-resolution-bloa.patch b/0026-top-eliminate-yet-more-gcc-subscript-resolution-bloa.patch deleted file mode 100644 index 69a9623..0000000 --- a/0026-top-eliminate-yet-more-gcc-subscript-resolution-bloa.patch +++ /dev/null @@ -1,149 +0,0 @@ -From 89c2f28e393830d899e3e91b60c830a6f07d38d5 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Sat, 9 Nov 2013 00:00:00 -0600 -Subject: [PATCH] top: eliminate yet more gcc subscript resolution bloat - -This patch is inspired by the 'minimize numa overhead' -patch. It trades the use of subscripts for pointers to -avoid gcc repeated subscript offset calculation bloat. - -Now, throughout the cpus_refresh function, a subscript -will be resolved just once & this will (dramatically?) -reduce the path-length taken for each and every frame! - -For example, a non-optimized compilation could produce -400+ fewer machine instructions through pointer usage. - -[ ok, optimized compiles only save 18+ instructions! ] - -Lastly, any residual 'symmetry only' crap is now gone! - -Signed-off-by: Jim Warner ---- - top/top.c | 65 +++++++++++++++++++++++++++++++------------------------------ - 1 file changed, 33 insertions(+), 32 deletions(-) - -diff --git top/top.c top/top.c -index 9d12693..151693d 100644 ---- top/top.c -+++ top/top.c -@@ -2298,6 +2298,7 @@ static CPU_t *cpus_refresh (CPU_t *cpus) { - static FILE *fp = NULL; - static int siz, sav_slot = -1; - static char *buf; -+ CPU_t *sum_ptr; // avoid gcc subscript bloat - int i, num, tot_read; - #ifndef NUMA_DISABLE - int node; -@@ -2342,76 +2343,76 @@ static CPU_t *cpus_refresh (CPU_t *cpus) { - #undef buffGRW - - // remember from last time around -- memcpy(&cpus[sumSLOT].sav, &cpus[sumSLOT].cur, sizeof(CT_t)); -+ sum_ptr = &cpus[sumSLOT]; -+ memcpy(&sum_ptr->sav, &sum_ptr->cur, sizeof(CT_t)); - // then value the last slot with the cpu summary line - if (4 > sscanf(bp, "cpu %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu" -- , &cpus[sumSLOT].cur.u, &cpus[sumSLOT].cur.n, &cpus[sumSLOT].cur.s -- , &cpus[sumSLOT].cur.i, &cpus[sumSLOT].cur.w, &cpus[sumSLOT].cur.x -- , &cpus[sumSLOT].cur.y, &cpus[sumSLOT].cur.z)) -+ , &sum_ptr->cur.u, &sum_ptr->cur.n, &sum_ptr->cur.s -+ , &sum_ptr->cur.i, &sum_ptr->cur.w, &sum_ptr->cur.x -+ , &sum_ptr->cur.y, &sum_ptr->cur.z)) - error_exit(N_txt(FAIL_statget_txt)); - #ifndef CPU_ZEROTICS -- cpus[sumSLOT].cur.tot = cpus[sumSLOT].cur.u + cpus[sumSLOT].cur.s -- + cpus[sumSLOT].cur.n + cpus[sumSLOT].cur.i + cpus[sumSLOT].cur.w -- + cpus[sumSLOT].cur.x + cpus[sumSLOT].cur.y + cpus[sumSLOT].cur.z; -+ sum_ptr->cur.tot = sum_ptr->cur.u + sum_ptr->cur.s -+ + sum_ptr->cur.n + sum_ptr->cur.i + sum_ptr->cur.w -+ + sum_ptr->cur.x + sum_ptr->cur.y + sum_ptr->cur.z; - /* if a cpu has registered substantially fewer tics than those expected, - we'll force it to be treated as 'idle' so as not to present misleading - percentages. */ -- cpus[sumSLOT].edge = -- ((cpus[sumSLOT].cur.tot - cpus[sumSLOT].sav.tot) / smp_num_cpus()) / (100 / TICS_EDGE); -+ sum_ptr->edge = -+ ((sum_ptr->cur.tot - sum_ptr->sav.tot) / smp_num_cpus()) / (100 / TICS_EDGE); - #endif - - #ifndef NUMA_DISABLE - // forget all of the prior node statistics (maybe) - if (CHKw(Curwin, View_CPUNOD)) -- memset(&cpus[sumSLOT + 1], 0, Numa_node_tot * sizeof(CPU_t)); -+ memset(sum_ptr + 1, 0, Numa_node_tot * sizeof(CPU_t)); - #endif - - // now value each separate cpu's tics... - for (i = 0; i < sumSLOT; i++) { -+ CPU_t *cpu_ptr = &cpus[i]; // avoid gcc subscript bloat - #ifdef PRETEND8CPUS - bp = buf; - #endif - bp = 1 + strchr(bp, '\n'); - // remember from last time around -- memcpy(&cpus[i].sav, &cpus[i].cur, sizeof(CT_t)); -- if (4 > sscanf(bp, "cpu%d %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", &cpus[i].id -- , &cpus[i].cur.u, &cpus[i].cur.n, &cpus[i].cur.s -- , &cpus[i].cur.i, &cpus[i].cur.w, &cpus[i].cur.x -- , &cpus[i].cur.y, &cpus[i].cur.z)) { -- memmove(&cpus[i], &cpus[sumSLOT], sizeof(CPU_t)); -+ memcpy(&cpu_ptr->sav, &cpu_ptr->cur, sizeof(CT_t)); -+ if (4 > sscanf(bp, "cpu%d %Lu %Lu %Lu %Lu %Lu %Lu %Lu %Lu", &cpu_ptr->id -+ , &cpu_ptr->cur.u, &cpu_ptr->cur.n, &cpu_ptr->cur.s -+ , &cpu_ptr->cur.i, &cpu_ptr->cur.w, &cpu_ptr->cur.x -+ , &cpu_ptr->cur.y, &cpu_ptr->cur.z)) { -+ memmove(cpu_ptr, sum_ptr, sizeof(CPU_t)); - break; // tolerate cpus taken offline - } - - #ifndef CPU_ZEROTICS -- cpus[i].edge = cpus[sumSLOT].edge; -- // this is for symmetry only, it's not currently required -- cpus[i].cur.tot = cpus[sumSLOT].cur.tot; -+ cpu_ptr->edge = sum_ptr->edge; - #endif - #ifdef PRETEND8CPUS -- cpus[i].id = i; -+ cpu_ptr->id = i; - #endif - #ifndef NUMA_DISABLE - /* henceforth, with just a little more arithmetic we can avoid - maintaining *any* node stats unless they're actually needed */ - if (CHKw(Curwin, View_CPUNOD) - && Numa_node_tot -- && -1 < (node = Numa_node_of_cpu(cpus[i].id))) { -+ && -1 < (node = Numa_node_of_cpu(cpu_ptr->id))) { - // use our own pointer to avoid gcc subscript bloat -- CPU_t *nod_ptr = &cpus[sumSLOT + 1 + node]; -- nod_ptr->cur.u += cpus[i].cur.u; nod_ptr->sav.u += cpus[i].sav.u; -- nod_ptr->cur.n += cpus[i].cur.n; nod_ptr->sav.n += cpus[i].sav.n; -- nod_ptr->cur.s += cpus[i].cur.s; nod_ptr->sav.s += cpus[i].sav.s; -- nod_ptr->cur.i += cpus[i].cur.i; nod_ptr->sav.i += cpus[i].sav.i; -- nod_ptr->cur.w += cpus[i].cur.w; nod_ptr->sav.w += cpus[i].sav.w; -- nod_ptr->cur.x += cpus[i].cur.x; nod_ptr->sav.x += cpus[i].sav.x; -- nod_ptr->cur.y += cpus[i].cur.y; nod_ptr->sav.y += cpus[i].sav.y; -- nod_ptr->cur.z += cpus[i].cur.z; nod_ptr->sav.z += cpus[i].sav.z; -+ CPU_t *nod_ptr = sum_ptr + 1 + node; -+ nod_ptr->cur.u += cpu_ptr->cur.u; nod_ptr->sav.u += cpu_ptr->sav.u; -+ nod_ptr->cur.n += cpu_ptr->cur.n; nod_ptr->sav.n += cpu_ptr->sav.n; -+ nod_ptr->cur.s += cpu_ptr->cur.s; nod_ptr->sav.s += cpu_ptr->sav.s; -+ nod_ptr->cur.i += cpu_ptr->cur.i; nod_ptr->sav.i += cpu_ptr->sav.i; -+ nod_ptr->cur.w += cpu_ptr->cur.w; nod_ptr->sav.w += cpu_ptr->sav.w; -+ nod_ptr->cur.x += cpu_ptr->cur.x; nod_ptr->sav.x += cpu_ptr->sav.x; -+ nod_ptr->cur.y += cpu_ptr->cur.y; nod_ptr->sav.y += cpu_ptr->sav.y; -+ nod_ptr->cur.z += cpu_ptr->cur.z; nod_ptr->sav.z += cpu_ptr->sav.z; - #ifndef CPU_ZEROTICS - /* yep, we re-value this repeatedly for each cpu encountered, but we - can then avoid a prior loop to selectively initialize each node */ -- nod_ptr->edge = cpus[sumSLOT].edge; -+ nod_ptr->edge = sum_ptr->edge; - #endif -- cpus[i].node = node; -+ cpu_ptr->node = node; - } - #endif - } // end: for each cpu --- -1.7.9.2 - diff --git a/0027-pgrep-Fixing-memory-leak-in-do_regcomp.patch b/0027-pgrep-Fixing-memory-leak-in-do_regcomp.patch new file mode 100644 index 0000000..3abd15c --- /dev/null +++ b/0027-pgrep-Fixing-memory-leak-in-do_regcomp.patch @@ -0,0 +1,26 @@ +From 69de8db3e27b63fdcd8e3dce4d63e725d80bf05b Mon Sep 17 00:00:00 2001 +From: Jaromir Capik +Date: Thu, 2 Jan 2014 18:39:27 +0100 +Subject: [PATCH] pgrep: Fixing memory leak in do_regcomp() + +--- + pgrep.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git pgrep.c pgrep.c +index 6290ec5..93a7c89 100644 +--- pgrep.c ++++ pgrep.c +@@ -460,6 +460,9 @@ static regex_t * do_regcomp (void) + } + + re_err = regcomp (preg, re, REG_EXTENDED | REG_NOSUB | opt_case); ++ ++ if (opt_exact) free(re); ++ + if (re_err) { + regerror (re_err, preg, errbuf, sizeof(errbuf)); + fputs(errbuf,stderr); +-- +1.7.9.2 + diff --git a/0028-sysctl-Fixing-memory-leaks-in-PreloadSystem.patch b/0028-sysctl-Fixing-memory-leaks-in-PreloadSystem.patch new file mode 100644 index 0000000..caee073 --- /dev/null +++ b/0028-sysctl-Fixing-memory-leaks-in-PreloadSystem.patch @@ -0,0 +1,30 @@ +From 8622b582da06fb93a8f06d302215269835fca9a9 Mon Sep 17 00:00:00 2001 +From: Jaromir Capik +Date: Thu, 2 Jan 2014 19:49:36 +0100 +Subject: [PATCH] sysctl: Fixing memory leaks in PreloadSystem() + +--- + sysctl.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git sysctl.c sysctl.c +index 33c9403..51af15d 100644 +--- sysctl.c ++++ sysctl.c +@@ -645,6 +645,13 @@ static int PreloadSystem(void) + printf(_("* Applying %s ...\n"), DEFAULT_PRELOAD); + rc |= Preload(DEFAULT_PRELOAD); + } ++ ++ /* cleaning */ ++ for (i = 0; i < ncfgs; ++i) { ++ free(cfgs[i]); ++ } ++ if (cfgs) free(cfgs); ++ + return rc; + } + +-- +1.7.9.2 + diff --git a/0029-ps-ignore-SIGCONT.patch b/0029-ps-ignore-SIGCONT.patch new file mode 100644 index 0000000..190b7b2 --- /dev/null +++ b/0029-ps-ignore-SIGCONT.patch @@ -0,0 +1,47 @@ +From d06aaaaf2bd8f3b5f0235e75f4f04c0ad69c7d6d Mon Sep 17 00:00:00 2001 +From: Craig Small +Date: Tue, 14 Jan 2014 22:23:58 +1100 +Subject: [PATCH] ps: ignore SIGCONT + +SIGCONT is a continue signal. It seems that some zsh setups can send +this signal, causing ps to abort. This is not what "continue" means. +This change just uses the default handler which will continue a stopped +process. + +References: + http://bugs.debian.org/732410 + http://www.zsh.org/cgi-bin/mla/redirect?WORKERNUMBER=32251 + +Signed-off-by: Craig Small +--- + NEWS | 1 + + ps/display.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git NEWS NEWS +index 1c710a3..a2afaa3 100644 +--- NEWS ++++ NEWS +@@ -1,6 +1,7 @@ + procps-ng-3.3.10 + ---------------- + * sysctl --system loads default config file - Debian #732920 ++ * ps doesn't exit on SIGCONT + + procps-ng-3.3.9 + --------------- +diff --git ps/display.c ps/display.c +index c20285d..693154b 100644 +--- ps/display.c ++++ ps/display.c +@@ -563,6 +563,7 @@ int main(int argc, char *argv[]){ + default: + sigaction(i,&sa,NULL); + case 0: ++ case SIGCONT: + case SIGINT: /* ^C */ + case SIGTSTP: /* ^Z */ + case SIGTTOU: /* see stty(1) man page */ +-- +1.7.9.2 + diff --git a/0031-vmstat-wide-output-still-not-wide-enough.patch b/0031-vmstat-wide-output-still-not-wide-enough.patch new file mode 100644 index 0000000..fd36594 --- /dev/null +++ b/0031-vmstat-wide-output-still-not-wide-enough.patch @@ -0,0 +1,47 @@ +From 1baf31be9bbfd6fb82629176e595d2d2cef85ef3 Mon Sep 17 00:00:00 2001 +From: Jaromir Capik +Date: Mon, 20 Jan 2014 19:59:39 +0100 +Subject: [PATCH] vmstat: wide output still not wide enough? + +8 digits per memory column is apparently still too low +for systems with 128TB of RAM. Anyway, setting the limit +to 999TB (12 digits) must be sufficient for now as it +produces wide gaps on "regular" computers. +This commit also increases the number of digits per cpu +columns from 2 to 3 as some of them can hit the 100% +maximum in corner cases. +--- + vmstat.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git vmstat.c vmstat.c +index 67515c1..c01351d 100644 +--- vmstat.c ++++ vmstat.c +@@ -187,12 +187,12 @@ static void new_header(void) + const char header[] = + "procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n"; + const char wide_header[] = +- "procs ---------------memory-------------- ---swap-- -----io---- -system-- ------cpu-----\n"; ++ "procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------\n"; + + const char format[] = + "%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %4s %2s %2s %2s %2s %2s\n"; + const char wide_format[] = +- "%2s %2s %8s %8s %8s %8s %4s %4s %5s %5s %4s %4s %2s %2s %2s %2s %2s\n"; ++ "%2s %2s %12s %12s %12s %12s %4s %4s %5s %5s %4s %4s %3s %3s %3s %3s %3s\n"; + + printf(w_option ? _(wide_header) : _(header)); + printf( +@@ -249,7 +249,7 @@ static void new_format(void) + const char format[] = + "%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %4u %2u %2u %2u %2u %2u\n"; + const char wide_format[] = +- "%2u %2u %8lu %8lu %8lu %8lu %4u %4u %5u %5u %4u %4u %2u %2u %2u %2u %2u\n"; ++ "%2u %2u %12lu %12lu %12lu %12lu %4u %4u %5u %5u %4u %4u %3u %3u %3u %3u %3u\n"; + + unsigned int tog = 0; /* toggle switch for cleaner code */ + unsigned int i; +-- +1.7.9.2 + diff --git a/0032-library-skip-replacement-of-trailing-0-in-read_unvec.patch b/0032-library-skip-replacement-of-trailing-0-in-read_unvec.patch new file mode 100644 index 0000000..63815b4 --- /dev/null +++ b/0032-library-skip-replacement-of-trailing-0-in-read_unvec.patch @@ -0,0 +1,43 @@ +From ae9676a337e38526b994d189444f3fd02ab800ad Mon Sep 17 00:00:00 2001 +From: Jaromir Capik +Date: Fri, 24 Jan 2014 18:07:34 +0100 +Subject: [PATCH] library: skip replacement of trailing '\0' in + read_unvectored() + +Under some circumstances the ksh shell doesn't fork new processes +when executing scripts and the script is interpreted by the +parent process. That makes the execution faster, but it means +ksh needs to reuse the /proc/PID/cmdline for the new script name +and arguments while the file length needs to stay untouched. +The fork is skipped only when the new cmdline is shorter than +the parent's cmdline and the rest of the file is filled +with '\0'. This is perfectly ok until we try to read the cmdline +of such process. As the read_unvectored() function replaces +all zeros with chosen separator, these trailing zeros are replaced +with spaces in case of the ps tool. Consequently it appends +multiple spaces at the end of the arguments string even when these +zeros do not represent any separators and therefore shouldn't +be replaced. +With this commit the read_unvectored() function skips the +replacement of trailing zeros and separates valid content only. + +Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1057600 +--- + proc/readproc.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git proc/readproc.c proc/readproc.c +index 286e173..46dfa10 100644 +--- proc/readproc.c ++++ proc/readproc.c +@@ -686,6 +686,7 @@ static int read_unvectored(char *restrict const dst, unsigned sz, const char* wh + close(fd); + if(n){ + int i=n; ++ while(i && dst[i-1]=='\0') --i; // skip trailing zeroes + while(i--) + if(dst[i]=='\n' || dst[i]=='\0') dst[i]=sep; + if(dst[n-1]==' ') dst[n-1]='\0'; +-- +1.7.9.2 + diff --git a/0032-top-do-not-lie-about-purported-alphabetical-ordering.patch b/0032-top-do-not-lie-about-purported-alphabetical-ordering.patch deleted file mode 100644 index a5fee49..0000000 --- a/0032-top-do-not-lie-about-purported-alphabetical-ordering.patch +++ /dev/null @@ -1,63 +0,0 @@ -Based on 57ab5eed15a577fda6ce24753948ab29f30de2d4 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Fri, 29 Nov 2013 00:00:00 -0600 -Subject: [PATCH] top: do not lie about purported alphabetical orderings - -Excluding those special X_XON/X_XOF enums, which might -not even be present, restore strict collating order of -all the case labels in the task_show switch statement. - -Also, adjust a few sort callbacks for the same reason. - -Signed-off-by: Jim Warner ---- - top/top.c | 10 +++++----- - 1 file changed, 5 insertions(+), 5 deletions(-) - -diff --git top/top.c top/top.c -index 70eaa4a..59dcb3f 100644 ---- top/top.c -+++ top/top.c -@@ -246,9 +246,9 @@ SCB_NUM1(CPU, pcpu) - SCB_NUM1(DAT, drs) - SCB_NUM1(DRT, dt) - SCB_STRS(ENV, environ[0]) --SCB_NUM1(FLG, flags) - SCB_NUM1(FL1, maj_flt) - SCB_NUM1(FL2, min_flt) -+SCB_NUM1(FLG, flags) - SCB_NUM1(FV1, maj_delta) - SCB_NUM1(FV2, min_delta) - SCB_NUMx(GID, egid) -@@ -5220,15 +5220,15 @@ static const char *task_show (const WIN_t *q, const proc_t *p) { - case P_ENV: - makeVAR(p->environ[0]); - break; -- case P_FLG: -- cp = make_str(hex_make(p->flags, 1), W, Js, AUTOX_NO); -- break; - case P_FL1: - cp = scale_num(p->maj_flt, W, Jn); - break; - case P_FL2: - cp = scale_num(p->min_flt, W, Jn); - break; -+ case P_FLG: -+ cp = make_str(hex_make(p->flags, 1), W, Js, AUTOX_NO); -+ break; - case P_FV1: - cp = scale_num(p->maj_delta, W, Jn); - break; -@@ -5308,8 +5308,8 @@ static const char *task_show (const WIN_t *q, const proc_t *p) { - case P_THD: - cp = make_num(p->nlwp, W, Jn, AUTOX_NO); - break; -- case P_TME: - case P_TM2: -+ case P_TME: - { TIC_t t = p->utime + p->stime; - if (CHKw(q, Show_CTIMES)) t += (p->cutime + p->cstime); - cp = scale_tics(t, W, Jn); --- -1.7.9.2 - diff --git a/0033-kill-for-PID-1-restored.patch b/0033-kill-for-PID-1-restored.patch new file mode 100644 index 0000000..19ff40a --- /dev/null +++ b/0033-kill-for-PID-1-restored.patch @@ -0,0 +1,41 @@ +From 4359cf069819d9fb53493933e00d9af5c37bced5 Mon Sep 17 00:00:00 2001 +From: Craig Small +Date: Tue, 28 Jan 2014 22:35:26 +1100 +Subject: [PATCH] kill for PID -1 restored + +Both the man page and the shell builtin kill mention you can +use PID -1, which means nuke everything you can get at. +Alas this "fun" option was missing and the only way to get +around it was with "kill -HUP -- -1". + +This small change means kill -HUP -1 is back for all those +destructive types. The error was introduced when the argument +parser was fixed for other problems. + +Thanks to Mike for pointing this out. + +Signed-off-by: Craig Small +--- + skill.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git skill.c skill.c +index 5c8192a..1c99985 100644 +--- skill.c ++++ skill.c +@@ -477,6 +477,12 @@ static void __attribute__ ((__noreturn__)) + display_kill_version(); + exit(EXIT_SUCCESS); + case '?': ++ /* Special case is -1 which means all except init */ ++ if (optopt == '1') { ++ if (kill(-1, signo) != 0) ++ exitvalue = EXIT_FAILURE; ++ exit(exitvalue); ++ } + if (!isdigit(optopt)) { + xwarnx(_("invalid argument %c"), optopt); + kill_usage(stderr); +-- +1.7.9.2 + diff --git a/0033-top-follow-usual-name-conventions-for-global-variabl.patch b/0033-top-follow-usual-name-conventions-for-global-variabl.patch deleted file mode 100644 index 381cffb..0000000 --- a/0033-top-follow-usual-name-conventions-for-global-variabl.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 4c464acf283b83f052af075f1190f146550c77a5 Mon Sep 17 00:00:00 2001 -From: Jim Warner -Date: Sat, 30 Nov 2013 00:00:00 -0600 -Subject: [PATCH] top: follow usual name conventions for global variable - -A recent change involving a one cycle stderr redirect, -to handle a libnuma potential transgression, failed to -follow normal global variable naming conventions. This -patch will capitalize the 1st letter of 'Stderr_save'. - -Reference(s): -commit 35dc6dcc49cc9cf8cff4300cb03a38dbe44c05db - -Signed-off-by: Jim Warner ---- - top/top.c | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git top/top.c top/top.c -index 59dcb3f..4d1d912 100644 ---- top/top.c -+++ top/top.c -@@ -220,7 +220,7 @@ static int Numa_node_tot; - static int Numa_node_sel = -1; - #ifndef NUMA_DISABLE - static void *Libnuma_handle; --static int stderr_save = -1; -+static int Stderr_save = -1; - #if defined(PRETEND_NUMA) || defined(PRETEND8CPUS) - static int Numa_max_node(void) { return 3; } - static int Numa_node_of_cpu(int num) { return (num % 4); } -@@ -4069,8 +4069,8 @@ static void wins_stage_2 (void) { - Yes, he provides some overridable 'weak' functions to change such - behavior but we can't exploit that since we don't follow a normal - ld route to symbol resolution (we use that dlopen() guy instead)! */ -- stderr_save = dup(fileno(stderr)); -- if (-1 < stderr_save && freopen("/dev/null", "w", stderr)) -+ Stderr_save = dup(fileno(stderr)); -+ if (-1 < Stderr_save && freopen("/dev/null", "w", stderr)) - ; // avoid -Wunused-result - #endif - -@@ -5553,10 +5553,10 @@ static void frame_make (void) { - #ifndef NUMA_DISABLE - /* we gotta reverse the stderr redirect which was employed in wins_stage_2 - and needed because the two libnuma 'weak' functions were useless to us! */ -- if (-1 < stderr_save) { -- dup2(stderr_save, fileno(stderr)); -- close(stderr_save); -- stderr_save = -1; -+ if (-1 < Stderr_save) { -+ dup2(Stderr_save, fileno(stderr)); -+ close(Stderr_save); -+ Stderr_save = -1; - } - #endif - --- -1.7.9.2 - diff --git a/0034-Check-for-presence-of-disks-in-vmstat.patch b/0034-Check-for-presence-of-disks-in-vmstat.patch new file mode 100644 index 0000000..788dd3a --- /dev/null +++ b/0034-Check-for-presence-of-disks-in-vmstat.patch @@ -0,0 +1,79 @@ +From 5a34ff0a99a3c5e7ba4f7982d5de3d0dcc9e3045 Mon Sep 17 00:00:00 2001 +From: Craig Small +Date: Wed, 29 Jan 2014 22:22:11 +1100 +Subject: [PATCH] Check for presence of disks in vmstat + +vmstat -d or vmstat -p would crash mysteriously under different +circumstances. The problem was eventually tracked down to /sys not +being mounted which meant is_disk() always returned false. +The partition would then be attempted to be linked to a non-existent +disk causing a segfault. + +vmstat will now not link to a disk if none exists. +The change in testing will skip those tests when /sys/block doesn't +exist. + +Many thanks to Daniel Schepler for his analysis and suggestions. + +Bug-Debian: http://bugs.debian.org/736628 +--- + proc/sysinfo.c | 7 +++++-- + testsuite/vmstat.test/vmstat.exp | 22 +++++++++++++++------- + 2 files changed, 20 insertions(+), 9 deletions(-) + +diff --git proc/sysinfo.c proc/sysinfo.c +index f318376..1680cc4 100644 +--- proc/sysinfo.c ++++ proc/sysinfo.c +@@ -938,8 +938,11 @@ unsigned int getdiskstat(struct disk_stat **disks, struct partition_stat **parti + &(*partitions)[cPartition].writes, + &(*partitions)[cPartition].requested_writes + ); +- (*partitions)[cPartition++].parent_disk = cDisk-1; +- (*disks)[cDisk-1].partitions++; ++ ++ if (cDisk > 0) { ++ (*partitions)[cPartition++].parent_disk = cDisk-1; ++ (*disks)[cDisk-1].partitions++; ++ } + } + } + +diff --git testsuite/vmstat.test/vmstat.exp testsuite/vmstat.test/vmstat.exp +index fb5de14..f470afc 100644 +--- testsuite/vmstat.test/vmstat.exp ++++ testsuite/vmstat.test/vmstat.exp +@@ -26,15 +26,23 @@ expect_pass "$test" "^Cache\\s+Num\\s+Total\\s+Size\\s+Pages\\s+\(\[\(\)A-Za-z0- + } + + set test "vmstat disk information (-d option)" +-spawn $vmstat -d +-expect_pass "$test" "^disk\[ -\]+reads\[ -\]+writes\[ -\]+IO\[ -\]+\\s+total\\s+merged\\s+sectors\\s+ms\\s+total\\s+merged\\s+sectors\\s+ms\\s+cur\\s+sec\\s+" ++if { [ file readable "/sys/block" ] == 0 } { ++ unsupported "$test /sys/block not readable" ++} else { ++ spawn $vmstat -d ++ expect_pass "$test" "^disk\[ -\]+reads\[ -\]+writes\[ -\]+IO\[ -\]+\\s+total\\s+merged\\s+sectors\\s+ms\\s+total\\s+merged\\s+sectors\\s+ms\\s+cur\\s+sec\\s+" ++} + + # Need a partition + set diskstats [ exec cat /proc/diskstats ] +-if [ regexp "\\s+\\d+\\s+\\d+\\s+\(\[a-z\]+\\d+\)\\s+\[0-9\]\[0-9\]+" $diskstats line partition == 1 ] { +- set test "vmstat partition (using $partition)" +- spawn $vmstat -p $partition +- expect_pass "$test" "^${partition}\\s+reads" ++if { [ file readable "/sys/block" ] == 0 } { ++ unsupported "vmstat partition /sys/block not readable" + } else { +- unsupported "vmstat partition (cannot find partition)" ++ if [ regexp "\\s+\\d+\\s+\\d+\\s+\(\[a-z\]+\\d+\)\\s+\[0-9\]\[0-9\]+" $diskstats line partition == 1 ] { ++ set test "vmstat partition (using $partition)" ++ spawn $vmstat -p $partition ++ expect_pass "$test" "^${partition}\\s+reads" ++ } else { ++ unsupported "vmstat partition (cannot find partition)" ++ } + } +-- +1.7.9.2 + diff --git a/0035-PID-2-to-9-for-kill-too.patch b/0035-PID-2-to-9-for-kill-too.patch new file mode 100644 index 0000000..1744ff3 --- /dev/null +++ b/0035-PID-2-to-9-for-kill-too.patch @@ -0,0 +1,53 @@ +From 39210a89debaff023fa97250bee63c57fe9dfcfb Mon Sep 17 00:00:00 2001 +From: Craig Small +Date: Wed, 29 Jan 2014 22:28:02 +1100 +Subject: [PATCH] PID -2 to -9 for kill too + +Commit 4359cf069819d9fb53493933e00d9af5c37bced5 restored kill's ability +to kill PID -1. This however left PIDs -2 to -9 (or rather process +groups 2 to 9) still having this problem. The check is now generically +looking for a digit and parses it correctly. +--- + skill.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +diff --git skill.c skill.c +index 1c99985..60ed274 100644 +--- skill.c ++++ skill.c +@@ -195,7 +195,8 @@ static void check_proc(int pid, struct run_time_conf_t *run_time) + if (i == -1) + goto closure; + } +- read(fd, buf, 128); ++ if (read(fd, buf, 128) <= 0) ++ goto closure; + buf[127] = '\0'; + tmp = strrchr(buf, ')'); + *tmp++ = '\0'; +@@ -477,15 +478,16 @@ static void __attribute__ ((__noreturn__)) + display_kill_version(); + exit(EXIT_SUCCESS); + case '?': +- /* Special case is -1 which means all except init */ +- if (optopt == '1') { +- if (kill(-1, signo) != 0) +- exitvalue = EXIT_FAILURE; +- exit(exitvalue); +- } + if (!isdigit(optopt)) { + xwarnx(_("invalid argument %c"), optopt); + kill_usage(stderr); ++ } else { ++ /* Special case for signal digit negative ++ * PIDs */ ++ pid = (long)('0' - optopt); ++ if (kill((pid_t)pid, signo) != 0) ++ exitvalue = EXIT_FAILURE; ++ exit(exitvalue); + } + loop=0; + break; +-- +1.7.9.2 + diff --git a/0035-top-provide-for-discontinuous-not-active-NUMA-nodes.patch b/0035-top-provide-for-discontinuous-not-active-NUMA-nodes.patch index bf45ba8..488bfe1 100644 --- a/0035-top-provide-for-discontinuous-not-active-NUMA-nodes.patch +++ b/0035-top-provide-for-discontinuous-not-active-NUMA-nodes.patch @@ -81,13 +81,13 @@ index bb15d01..cb1a063 100644 Msg_row += 1; // display each cpu node's states for (i = 0; i < Numa_node_tot; i++) { -+ CPU_t *nod_ptr = &smpcpu[1 + smp_num_cpus() + i]; ++ CPU_t *nod_ptr = &smpcpu[1 + smp_num_cpus + i]; if (!isROOM(anyFLG, 1)) break; +#ifndef OFF_NUMASKIP + if (nod_ptr->id) { +#endif snprintf(tmp, sizeof(tmp), N_fmt(NUMA_nodenam_fmt), i); -- summary_hlp(&smpcpu[1 + smp_num_cpus() + i], tmp); +- summary_hlp(&smpcpu[1 + smp_num_cpus + i], tmp); + summary_hlp(nod_ptr, tmp); Msg_row += 1; +#ifndef OFF_NUMASKIP diff --git a/0036-pgrep-fails-to-show-full-command-line-with-au.patch b/0036-pgrep-fails-to-show-full-command-line-with-au.patch new file mode 100644 index 0000000..516196a --- /dev/null +++ b/0036-pgrep-fails-to-show-full-command-line-with-au.patch @@ -0,0 +1,42 @@ +From 6f1c04259d979ff04d129f235c950e48e94c7e76 Mon Sep 17 00:00:00 2001 +From: Elliott Forney +Date: Thu, 30 Jan 2014 21:36:26 +1100 +Subject: [PATCH] pgrep fails to show full command line with -au + +pgrep does not show the full command line when the -a and -u flags are +combined. The -a flag is ignored when the -u flag is used as well. + +In addition, the supplied patch by Elliot did not fix the problem +when invert flag ( -v ) was used; a very small tweak to the patch +fixed this problem as well. This problem existed before. + +Signed-off-by: Craig Small +--- + pgrep.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git pgrep.c pgrep.c +index 93a7c89..2a0ee19 100644 +--- pgrep.c ++++ pgrep.c +@@ -417,7 +417,7 @@ static PROCTAB *do_openproc (void) + PROCTAB *ptp; + int flags = 0; + +- if (opt_pattern || opt_full) ++ if (opt_pattern || opt_full || opt_longlong) + flags |= PROC_FILLCOM; + if (opt_ruid || opt_rgid) + flags |= PROC_FILLSTATUS; +@@ -538,7 +538,7 @@ static struct el * select_procs (int *num) + match = match_strlist (tty, opt_term); + } + } +- if (task.cmdline && (opt_longlong || opt_full) && match && opt_pattern) { ++ if (task.cmdline && (opt_longlong || opt_full) ) { + int i = 0; + int bytes = sizeof (cmdline) - 1; + +-- +1.7.9.2 + diff --git a/0037-fail-on-null-string-for-arguments.patch b/0037-fail-on-null-string-for-arguments.patch new file mode 100644 index 0000000..62eb976 --- /dev/null +++ b/0037-fail-on-null-string-for-arguments.patch @@ -0,0 +1,38 @@ +From c304ffa994c2beacf3eabf9986a67d2065b60cc4 Mon Sep 17 00:00:00 2001 +From: Ryan Cox +Date: Mon, 28 Oct 2013 21:05:35 -0600 +Subject: [PATCH] fail on null string for arguments + +--- + pgrep.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git pgrep.c pgrep.c +index 6290ec5..38c380b 100644 +--- pgrep.c ++++ pgrep.c +@@ -142,13 +142,19 @@ static int __attribute__ ((__noreturn__)) usage(int opt) + + static struct el *split_list (const char *restrict str, int (*convert)(const char *, struct el *)) + { +- char *copy = xstrdup (str); +- char *ptr = copy; ++ char *copy; ++ char *ptr; + char *sep_pos; + int i = 0; + int size = 0; + struct el *list = NULL; + ++ if (str[0] == '\0') ++ return NULL; ++ ++ copy = xstrdup (str); ++ ptr = copy; ++ + do { + if (i == size) { + size = size * 5 / 4 + 4; +-- +1.7.9.2 + diff --git a/0037-top-avoid-name-conflict-in-the-next-version-of-stdli.patch b/0037-top-avoid-name-conflict-in-the-next-version-of-stdli.patch index 7bd9d4b..1a7f52a 100644 --- a/0037-top-avoid-name-conflict-in-the-next-version-of-stdli.patch +++ b/0037-top-avoid-name-conflict-in-the-next-version-of-stdli.patch @@ -23,13 +23,15 @@ http://www.freelists.org/post/procps/top-wont-compile-anymore Signed-off-by: Jim Warner --- - top/top.c | 274 +++++++++++++++++++++++++++++----------------------------- - top/top.h | 44 ++++----- - top/top_nls.c | 186 +++++++++++++++++++-------------------- - 3 files changed, 252 insertions(+), 252 deletions(-) + top/top.c | 290 +++++++++++++++++++++++++++++----------------------------- + top/top.h | 46 ++++----- + top/top_nls.c | 210 +++++++++++++++++++++--------------------- + 3 files changed, 273 insertions(+), 273 deletions(-) +diff --git top/top.c top/top.c +index 23dad92..ca3d24a 100644 --- top/top.c -+++ top/top.c 2014-05-15 11:24:26.438236477 +0000 ++++ top/top.c @@ -18,12 +18,6 @@ * Sami Kerola, */ @@ -79,7 +81,7 @@ Signed-off-by: Jim Warner #define AUTOX_MODE (0 > Rc.fixed_widest) /* Support for scale_mem and scale_num (to avoid duplication. */ -@@ -1681,9 +1681,9 @@ static FLD_t Fieldstab[] = { +@@ -1688,9 +1688,9 @@ static FLD_t Fieldstab[] = { a -1 width represents variable width columns a 0 width represents columns set once at startup (see zap_fieldstab) .lflg anomalies: @@ -92,7 +94,7 @@ Signed-off-by: Jim Warner L_EITHER - must L_status, else L_stat == 64-bit math (__udivdi3) on 32-bit ! .width .scale .align .sort .lflg -@@ -1708,11 +1708,11 @@ static FLD_t Fieldstab[] = { +@@ -1715,11 +1715,11 @@ static FLD_t Fieldstab[] = { { 0, -1, A_right, SF(CPN), L_stat }, { 0, -1, A_right, SF(CPU), L_stat }, { 6, -1, A_right, SF(TME), L_stat }, @@ -107,7 +109,7 @@ Signed-off-by: Jim Warner #endif #ifndef NOBOOST_MEMS { 7, SK_Kb, A_right, SF(VRT), L_statm }, -@@ -1866,10 +1866,10 @@ static void build_headers (void) { +@@ -1879,10 +1879,10 @@ static void build_headers (void) { w->hdrcaplen += strlen(Caps_off) + strlen(w->capclr_msg); } #else @@ -121,7 +123,7 @@ Signed-off-by: Jim Warner Frames_libflags |= Fieldstab[w->procflgs[i]].lflg; s = scat(s, justify_pad(N_col(f) , VARcol(f) ? w->varcolsz : Fieldstab[f].width -@@ -1892,7 +1892,7 @@ static void build_headers (void) { +@@ -1905,7 +1905,7 @@ static void build_headers (void) { // we must also accommodate an out of view sort field... f = w->rc.sortindx; Frames_libflags |= Fieldstab[f].lflg; @@ -130,7 +132,7 @@ Signed-off-by: Jim Warner } // end: VIZISw(w) if (Rc.mode_altscr) w = w->next; -@@ -1945,16 +1945,16 @@ static void calibrate_fields (void) { +@@ -1958,16 +1958,16 @@ static void calibrate_fields (void) { if (VIZISw(w)) { w->hdrcaplen = 0; // really only used with USE_X_COLHDR // build window's pflgsall array, establish upper bounds for maxpflgs @@ -150,7 +152,7 @@ Signed-off-by: Jim Warner } else w->pflgsall[w->totpflgs++] = f; #endif -@@ -1970,7 +1970,7 @@ static void calibrate_fields (void) { +@@ -1983,7 +1983,7 @@ static void calibrate_fields (void) { f = w->pflgsall[i + w->begpflg]; w->procflgs[i] = f; #ifndef USE_X_COLHDR @@ -159,7 +161,7 @@ Signed-off-by: Jim Warner #endif h = N_col(f); len = (VARcol(f) ? (int)strlen(h) : Fieldstab[f].width) + COLPADSIZ; -@@ -1980,7 +1980,7 @@ static void calibrate_fields (void) { +@@ -1993,7 +1993,7 @@ static void calibrate_fields (void) { s = scat(s, fmtmk("%*.*s", len, len, h)); } #ifndef USE_X_COLHDR @@ -168,7 +170,7 @@ Signed-off-by: Jim Warner #endif /* establish the final maxpflgs and prepare to grow the variable column -@@ -1997,7 +1997,7 @@ static void calibrate_fields (void) { +@@ -2010,7 +2010,7 @@ static void calibrate_fields (void) { for (i = w->totpflgs - 1; -1 < i; i--) { f = w->pflgsall[i]; #ifndef USE_X_COLHDR @@ -177,7 +179,7 @@ Signed-off-by: Jim Warner #endif h = N_col(f); len = (VARcol(f) ? (int)strlen(h) : Fieldstab[f].width) + COLPADSIZ; -@@ -2006,7 +2006,7 @@ static void calibrate_fields (void) { +@@ -2019,7 +2019,7 @@ static void calibrate_fields (void) { w->endpflg = i; } #ifndef USE_X_COLHDR @@ -186,7 +188,7 @@ Signed-off-by: Jim Warner #endif } // end: if (VIZISw(w)) -@@ -2063,10 +2063,10 @@ static void display_fields (int focus, i +@@ -2076,10 +2076,10 @@ static void display_fields (int focus, i int rmax = Screen_rows - yRSVD; // total useable rows static int col_sav, row_sav; @@ -201,7 +203,7 @@ Signed-off-by: Jim Warner if (i > 1) { cmax /= i; xadd = 1; } if (cmax > xTOTL) cmax = xTOTL; smax = cmax - xPRFX; -@@ -2081,7 +2081,7 @@ static void display_fields (int focus, i +@@ -2094,7 +2094,7 @@ static void display_fields (int focus, i } fflush(stdout); @@ -210,7 +212,7 @@ Signed-off-by: Jim Warner int b = FLDviz(w, i), x = (i / rmax) * cmax, y = (i % rmax) + yRSVD; const char *e = (i == focus && extend) ? w->capclr_hdr : ""; FLG_t f = FLDget(w, i); -@@ -2156,7 +2156,7 @@ signify_that: +@@ -2169,7 +2169,7 @@ signify_that: if (i > 0) { --i; if (p) swapEM } break; case kbd_DOWN: @@ -219,7 +221,7 @@ Signed-off-by: Jim Warner break; case kbd_LEFT: case kbd_ENTER: -@@ -2171,7 +2171,7 @@ signify_that: +@@ -2184,7 +2184,7 @@ signify_that: break; case kbd_END: case kbd_PGDN: @@ -228,7 +230,7 @@ Signed-off-by: Jim Warner break; case kbd_SPACE: case 'd': -@@ -2209,7 +2209,7 @@ static inline void widths_resize (void) +@@ -2222,7 +2222,7 @@ static inline void widths_resize (void) // next var may also be set by the guys that actually truncate stuff Autox_found = 0; @@ -237,7 +239,7 @@ Signed-off-by: Jim Warner if (Autox_array[i]) { Fieldstab[i].width++; Autox_array[i] = 0; -@@ -2229,58 +2229,58 @@ static void zap_fieldstab (void) { +@@ -2242,58 +2242,58 @@ static void zap_fieldstab (void) { char buf[8]; if (!once) { @@ -263,7 +265,7 @@ Signed-off-by: Jim Warner - Fieldstab[P_CPN].width = 1; + Fieldstab[EU_CPN].width = 1; - if (1 < (digits = (unsigned)snprintf(buf, sizeof(buf), "%u", (unsigned)smp_num_cpus()))) { + if (1 < (digits = (unsigned)snprintf(buf, sizeof(buf), "%u", (unsigned)smp_num_cpus))) { if (5 < digits) error_exit(N_txt(FAIL_widecpu_txt)); - Fieldstab[P_CPN].width = digits; + Fieldstab[EU_CPN].width = digits; @@ -273,17 +275,17 @@ Signed-off-by: Jim Warner Cpu_pmax = 99.9; - Fieldstab[P_CPU].width = 5; + Fieldstab[EU_CPU].width = 5; - if (Rc.mode_irixps && smp_num_cpus() > 1 && !Thread_mode) { - Cpu_pmax = 100.0 * smp_num_cpus(); - if (smp_num_cpus() > 1000) { + if (Rc.mode_irixps && smp_num_cpus > 1 && !Thread_mode) { + Cpu_pmax = 100.0 * smp_num_cpus; + if (smp_num_cpus > 1000) { if (Cpu_pmax > 9999999.0) Cpu_pmax = 9999999.0; - Fieldstab[P_CPU].width = 8; + Fieldstab[EU_CPU].width = 8; - } else if (smp_num_cpus() > 100) { + } else if (smp_num_cpus > 100) { if (Cpu_pmax > 999999.0) Cpu_pmax = 999999.0; - Fieldstab[P_CPU].width = 7; + Fieldstab[EU_CPU].width = 7; - } else if (smp_num_cpus() > 10) { + } else if (smp_num_cpus > 10) { if (Cpu_pmax > 99999.0) Cpu_pmax = 99999.0; - Fieldstab[P_CPU].width = 6; + Fieldstab[EU_CPU].width = 6; @@ -295,27 +297,27 @@ Signed-off-by: Jim Warner Cpu_pmax = 99.9; - Fieldstab[P_CPU].width = 4; + Fieldstab[EU_CPU].width = 4; - if (Rc.mode_irixps && smp_num_cpus() > 1 && !Thread_mode) { - Cpu_pmax = 100.0 * smp_num_cpus(); - if (smp_num_cpus() > 1000) { + if (Rc.mode_irixps && smp_num_cpus > 1 && !Thread_mode) { + Cpu_pmax = 100.0 * smp_num_cpus; + if (smp_num_cpus > 1000) { if (Cpu_pmax > 9999999.0) Cpu_pmax = 9999999.0; - Fieldstab[P_CPU].width = 7; + Fieldstab[EU_CPU].width = 7; - } else if (smp_num_cpus() > 100) { + } else if (smp_num_cpus > 100) { if (Cpu_pmax > 999999.0) Cpu_pmax = 999999.0; - Fieldstab[P_CPU].width = 6; + Fieldstab[EU_CPU].width = 6; - } else if (smp_num_cpus() > 10) { + } else if (smp_num_cpus > 10) { if (Cpu_pmax > 99999.0) Cpu_pmax = 99999.0; - Fieldstab[P_CPU].width = 5; + Fieldstab[EU_CPU].width = 5; } else { if (Cpu_pmax > 999.9) Cpu_pmax = 999.9; } -@@ -2289,23 +2289,23 @@ static void zap_fieldstab (void) { - +@@ -2303,26 +2303,26 @@ static void zap_fieldstab (void) { /* and accommodate optional wider non-scalable columns (maybe) */ if (!AUTOX_MODE) { + int i; - Fieldstab[P_UED].width = Fieldstab[P_URD].width - = Fieldstab[P_USD].width = Fieldstab[P_GID].width + Fieldstab[EU_UED].width = Fieldstab[EU_URD].width @@ -332,6 +334,10 @@ Signed-off-by: Jim Warner - Fieldstab[P_WCH].width + Fieldstab[EU_WCH].width = Rc.fixed_widest ? 10 + Rc.fixed_widest : 10; +- for (i = P_NS1; i < P_NS1 + NUM_NS; i++) ++ for (i = EU_NS1; i < EU_NS1 + NUM_NS; i++) + Fieldstab[i].width + = Rc.fixed_widest ? 10 + Rc.fixed_widest : 10; } /* plus user selectable scaling */ @@ -346,7 +352,7 @@ Signed-off-by: Jim Warner // lastly, ensure we've got proper column headers... calibrate_fields(); -@@ -3491,8 +3491,8 @@ static void configs_read (void) { +@@ -3510,8 +3510,8 @@ static void configs_read (void) { default: // and future versions? if (strlen(w->rc.fieldscur) != sizeof(DEF_FIELDS) - 1) goto default_or_error; @@ -357,7 +363,7 @@ Signed-off-by: Jim Warner goto default_or_error; break; } -@@ -3671,16 +3671,16 @@ static void parse_args (char **args) { +@@ -3690,16 +3690,16 @@ static void parse_args (char **args) { else error_exit(fmtmk(N_fmt(MISSING_args_fmt), ch)); if (*cp == '+') { SETw(Curwin, Qsrt_NORMAL); ++cp; } else if (*cp == '-') { OFFw(Curwin, Qsrt_NORMAL); ++cp; } @@ -377,7 +383,7 @@ Signed-off-by: Jim Warner puts(N_col(i)); bye_bye(NULL); case 'p': -@@ -4244,9 +4244,9 @@ static void other_selection (int ch) { +@@ -4263,9 +4263,9 @@ static void other_selection (int ch) { } ops = *(pval); *(pval++) = '\0'; @@ -389,7 +395,7 @@ Signed-off-by: Jim Warner show_msg(fmtmk(N_fmt(XTRA_badflds_fmt), glob)); return; } -@@ -4521,7 +4521,7 @@ static void keys_task (int ch) { +@@ -4540,7 +4540,7 @@ static void keys_task (int ch) { if (*p == w->rc.sortindx) { --p; #ifndef USE_X_COLHDR @@ -398,7 +404,7 @@ Signed-off-by: Jim Warner #endif if (p >= w->procflgs) { w->rc.sortindx = *p; -@@ -4542,7 +4542,7 @@ static void keys_task (int ch) { +@@ -4561,7 +4561,7 @@ static void keys_task (int ch) { if (*p == w->rc.sortindx) { ++p; #ifndef USE_X_COLHDR @@ -407,7 +413,7 @@ Signed-off-by: Jim Warner #endif if (p < w->procflgs + w->maxpflgs) { w->rc.sortindx = *p; -@@ -4611,7 +4611,7 @@ static void keys_task (int ch) { +@@ -4630,7 +4630,7 @@ static void keys_task (int ch) { case 'V': if (VIZCHKw(w)) { TOGw(w, Show_FOREST); @@ -416,7 +422,7 @@ Signed-off-by: Jim Warner show_msg(fmtmk(N_fmt(FOREST_modes_fmt) , CHKw(w, Show_FOREST) ? N_txt(ON_word_only_txt) : N_txt(OFF_one_word_txt))); } -@@ -4731,13 +4731,13 @@ static void keys_window (int ch) { +@@ -4750,13 +4750,13 @@ static void keys_window (int ch) { w->varcolbeg -= SCROLLAMT; else if (0 < w->begpflg) { w->begpflg -= 1; @@ -432,7 +438,7 @@ Signed-off-by: Jim Warner } #endif break; -@@ -4748,14 +4748,14 @@ static void keys_window (int ch) { +@@ -4767,14 +4767,14 @@ static void keys_window (int ch) { w->varcolbeg += SCROLLAMT; if (0 > w->varcolbeg) w->varcolbeg = 0; } else if (w->begpflg + 1 < w->totpflgs) { @@ -449,7 +455,7 @@ Signed-off-by: Jim Warner w->begpflg += (w->begpflg + 3 < w->totpflgs) ? 3 : 0; else w->begpflg += 1; } -@@ -4812,19 +4812,19 @@ static void keys_xtra (int ch) { +@@ -4831,19 +4831,19 @@ static void keys_xtra (int ch) { we would just whack do_key's key_tab entry and this function... */ switch (ch) { case 'M': @@ -473,7 +479,7 @@ Signed-off-by: Jim Warner // xmsg = "Time"; break; default: // keep gcc happy -@@ -5204,30 +5204,30 @@ static const char *task_show (const WIN_ +@@ -5223,30 +5223,30 @@ static const char *task_show (const WIN_ switch (i) { #ifndef USE_X_COLHDR // these 2 aren't real procflgs, they're used in column highlighting! @@ -512,7 +518,7 @@ Signed-off-by: Jim Warner { float u = (float)p->pcpu * Frame_etscale; /* process can't use more %cpu than number of threads it has ( thanks Jaromir Capik ) */ -@@ -5236,139 +5236,139 @@ static const char *task_show (const WIN_ +@@ -5255,150 +5255,150 @@ static const char *task_show (const WIN_ cp = scale_pcnt(u, W, Jn); } break; @@ -566,6 +572,24 @@ Signed-off-by: Jim Warner + case EU_NCE: cp = make_num(p->nice, W, Jn, AUTOX_NO); break; +- case P_NS1: // IPCNS +- case P_NS2: // MNTNS +- case P_NS3: // NETNS +- case P_NS4: // PIDNS +- case P_NS5: // USERNS +- case P_NS6: // UTSNS +- { long ino = p->ns[i - P_NS1]; ++ case EU_NS1: // IPCNS ++ case EU_NS2: // MNTNS ++ case EU_NS3: // NETNS ++ case EU_NS4: // PIDNS ++ case EU_NS5: // USERNS ++ case EU_NS6: // UTSNS ++ { long ino = p->ns[i - EU_NS1]; + if (ino > 0) cp = make_num(ino, W, Jn, i); + else cp = make_str("-", W, Js, i); + } + break; #ifdef OOMEM_ENABLE - case P_OOA: + case EU_OOA: @@ -703,8 +727,8 @@ Signed-off-by: Jim Warner break; default: // keep gcc happy --- top/top.h -+++ top/top.h 2014-05-15 11:25:39.890735226 +0000 -@@ -181,27 +181,27 @@ char *strcasestr(const char *haystack, c ++++ top/top.h +@@ -181,28 +181,28 @@ char *strcasestr(const char *haystack, const char *needle); /* Flags for each possible field (and then some) -- these MUST be kept in sync with the FLD_t Fieldstab[] array !! */ enum pflag { @@ -733,9 +757,11 @@ Signed-off-by: Jim Warner - P_ENV, - P_FV1, P_FV2, - P_USE, +- P_NS1, P_NS2, P_NS3, P_NS4, P_NS5, P_NS6, + EU_ENV, + EU_FV1, EU_FV2, + EU_USE, ++ EU_NS1, EU_NS2, EU_NS3, EU_NS4, EU_NS5, EU_NS6, #ifdef USE_X_COLHDR // not really pflags, used with tbl indexing - P_MAXPFLGS @@ -743,11 +769,11 @@ Signed-off-by: Jim Warner #else // not really pflags, used with tbl indexing & col highlighting - P_MAXPFLGS, X_XON, X_XOF -+ EU_MAXPFLGS, X_XON, X_XOF ++ EU_MAXPFLGS, EU_XON, EU_XOF #endif }; -@@ -445,7 +445,7 @@ typedef struct WIN_t { +@@ -446,7 +446,7 @@ typedef struct WIN_t { #define VARright(w) (1 == w->maxpflgs && VARcol(w->procflgs[0])) #else #define VARright(w) ((1 == w->maxpflgs && VARcol(w->procflgs[0])) || \ @@ -756,7 +782,7 @@ Signed-off-by: Jim Warner #endif #define VARleft(w) (w->varcolbeg && VARright(w)) #define SCROLLAMT 8 -@@ -475,7 +475,7 @@ typedef struct WIN_t { +@@ -476,7 +476,7 @@ typedef struct WIN_t { /* Used to create *most* of the sort callback functions note: some of the callbacks are NOT your father's callbacks, they're highly optimized to save them ol' precious cycles! */ @@ -765,7 +791,7 @@ Signed-off-by: Jim Warner #define SCB_NUM1(f,n) \ static int SCB_NAME(f) (const proc_t **P, const proc_t **Q) { \ if ( (*P)->n < (*Q)->n ) return SORT_lt; \ -@@ -596,16 +596,16 @@ typedef struct WIN_t { +@@ -598,16 +598,16 @@ typedef struct WIN_t { /* The default values for the local config file */ #define DEF_RCFILE { \ RCF_VERSION_ID, 0, 1, DEF_DELAY, 0, { \ @@ -786,7 +812,7 @@ Signed-off-by: Jim Warner COLOR_YELLOW, COLOR_YELLOW, COLOR_GREEN, COLOR_YELLOW, \ "Usr", USR_FIELDS } \ }, 0, SK_Kb, SK_Kb, 0 } -@@ -645,7 +645,7 @@ typedef struct WIN_t { +@@ -647,7 +647,7 @@ typedef struct WIN_t { /* ( see the find_string function for the one true required protoype ) */ /*------ Sort callbacks ------------------------------------------------*/ /* for each possible field, in the form of: */ @@ -795,8 +821,10 @@ Signed-off-by: Jim Warner /*------ Tiny useful routine(s) ----------------------------------------*/ //atic const char *fmtmk (const char *fmts, ...); //atic inline char *scat (char *dst, const char *src); +diff --git top/top_nls.c top/top_nls.c +index 1dd6d46..0f37d89 100644 --- top/top_nls.c -+++ top/top_nls.c 2014-05-15 11:26:38.222235592 +0000 ++++ top/top_nls.c @@ -94,8 +94,8 @@ * + none of the important translator only comments will * clutter and obscure the main program @@ -808,7 +836,7 @@ Signed-off-by: Jim Warner const char *Norm_nlstab[norm_MAX]; const char *Uniq_nlstab[uniq_MAX]; -@@ -121,144 +121,144 @@ static void build_two_nlstabs (void) { +@@ -121,162 +121,162 @@ static void build_two_nlstabs (void) { . */ /* Translation Hint: maximum 'PID' = 5 */ @@ -1040,10 +1068,40 @@ Signed-off-by: Jim Warner - Desc_nlstab[P_USE] = _("Res+Swap Size (KiB)"); + Head_nlstab[EU_USE] = _("USED"); + Desc_nlstab[EU_USE] = _("Res+Swap Size (KiB)"); + /* Translation Hint: maximum 'nsIPC' = 10 */ +- Head_nlstab[P_NS1] = _("nsIPC"); +- Desc_nlstab[P_NS1] = _("IPC namespace Inode"); ++ Head_nlstab[EU_NS1] = _("nsIPC"); ++ Desc_nlstab[EU_NS1] = _("IPC namespace Inode"); + /* Translation Hint: maximum 'nsMNT' = 10 */ +- Head_nlstab[P_NS2] = _("nsMNT"); +- Desc_nlstab[P_NS2] = _("MNT namespace Inode"); ++ Head_nlstab[EU_NS2] = _("nsMNT"); ++ Desc_nlstab[EU_NS2] = _("MNT namespace Inode"); + /* Translation Hint: maximum 'nsNET' = 10 */ +- Head_nlstab[P_NS3] = _("nsNET"); +- Desc_nlstab[P_NS3] = _("NET namespace Inode"); ++ Head_nlstab[EU_NS3] = _("nsNET"); ++ Desc_nlstab[EU_NS3] = _("NET namespace Inode"); + /* Translation Hint: maximum 'nsPID' = 10 */ +- Head_nlstab[P_NS4] = _("nsPID"); +- Desc_nlstab[P_NS4] = _("PID namespace Inode"); ++ Head_nlstab[EU_NS4] = _("nsPID"); ++ Desc_nlstab[EU_NS4] = _("PID namespace Inode"); + /* Translation Hint: maximum 'nsUSER' = 10 */ +- Head_nlstab[P_NS5] = _("nsUSER"); +- Desc_nlstab[P_NS5] = _("USER namespace Inode"); ++ Head_nlstab[EU_NS5] = _("nsUSER"); ++ Desc_nlstab[EU_NS5] = _("USER namespace Inode"); + /* Translation Hint: maximum 'nsUTS' = 10 */ +- Head_nlstab[P_NS6] = _("nsUTS"); +- Desc_nlstab[P_NS6] = _("UTS namespace Inode"); ++ Head_nlstab[EU_NS6] = _("nsUTS"); ++ Desc_nlstab[EU_NS6] = _("UTS namespace Inode"); } -@@ -663,7 +663,7 @@ void initialize_nls (void) { +@@ -681,7 +681,7 @@ void initialize_nls (void) { memset(Head_nlstab, 0, sizeof(Head_nlstab)); memset(Desc_nlstab, 0, sizeof(Desc_nlstab)); build_two_nlstabs(); @@ -1052,3 +1110,6 @@ Signed-off-by: Jim Warner if (!Head_nlstab[i]) { fprintf(stderr, nls_err, "Head", i); exit(1); +-- +1.7.9.2 + diff --git a/0038-Update-help-files.patch b/0038-Update-help-files.patch new file mode 100644 index 0000000..5b7c7d1 --- /dev/null +++ b/0038-Update-help-files.patch @@ -0,0 +1,176 @@ +From 8e7ef322e21b2232d2a1ff9482ec8ce2808fc5c3 Mon Sep 17 00:00:00 2001 +From: Craig Small +Date: Sun, 2 Feb 2014 18:13:01 +1100 +Subject: [PATCH] Update help files + +Benno Schulenberg suggested some changes to the help messages +to provide some consistency and clarity for both the users and +translators of procps. + +The test needed to be updated as the pmap output changed too. + +Signed-off-by: Craig Small +--- + pgrep.c | 14 +++++++------- + pidof.c | 2 +- + pmap.c | 2 +- + ps/help.c | 22 +++++++++++----------- + skill.c | 6 +++--- + testsuite/pmap.test/pmap.exp | 2 +- + 6 files changed, 24 insertions(+), 24 deletions(-) + +diff --git pgrep.c pgrep.c +index fda7924..d8d3dcb 100644 +--- pgrep.c ++++ pgrep.c +@@ -115,19 +115,19 @@ static int __attribute__ ((__noreturn__)) usage(int opt) + } + fputs(_(" -c, --count count of matching processes\n"), fp); + fputs(_(" -f, --full use full process name to match\n"), fp); +- fputs(_(" -g, --pgroup match listed process group IDs\n"), fp); +- fputs(_(" -G, --group match real group IDs\n"), fp); ++ fputs(_(" -g, --pgroup match listed process group IDs\n"), fp); ++ fputs(_(" -G, --group match real group IDs\n"), fp); + fputs(_(" -n, --newest select most recently started\n"), fp); + fputs(_(" -o, --oldest select least recently started\n"), fp); +- fputs(_(" -P, --parent match only child processes of the given parent\n"), fp); +- fputs(_(" -s, --session match session IDs\n"), fp); ++ fputs(_(" -P, --parent match only child processes of the given parent\n"), fp); ++ fputs(_(" -s, --session match session IDs\n"), fp); + fputs(_(" -t, --terminal match by controlling terminal\n"), fp); +- fputs(_(" -u, --euid match by effective IDs\n"), fp); +- fputs(_(" -U, --uid match by real IDs\n"), fp); ++ fputs(_(" -u, --euid match by effective IDs\n"), fp); ++ fputs(_(" -U, --uid match by real IDs\n"), fp); + fputs(_(" -x, --exact match exactly with the command name\n"), fp); + fputs(_(" -F, --pidfile read PIDs from file\n"), fp); + fputs(_(" -L, --logpidfile fail if PID file is not locked\n"), fp); +- fputs(_(" --ns match the processes that belong to the same\n" ++ fputs(_(" --ns match the processes that belong to the same\n" + " namespace as \n"), fp); + fputs(_(" --nslist list which namespaces will be considered for\n" + " the --ns option.\n" +diff --git pidof.c pidof.c +index 6a38675..d1a9f31 100644 +--- pidof.c ++++ pidof.c +@@ -62,7 +62,7 @@ static int __attribute__ ((__noreturn__)) usage(int opt) + fputs(USAGE_OPTIONS, fp); + fputs(_(" -s, --single-shot return one PID only\n"), fp); + fputs(_(" -c, --check-root omit processes with different root\n"), fp); +- fputs(_(" -x scripts too\n"), fp); ++ fputs(_(" -x also find shells running the named scripts\n"), fp); + fputs(_(" -o, --omit-pid omit processes with PID\n"), fp); + fputs(USAGE_SEPARATOR, fp); + fputs(USAGE_HELP, fp); +diff --git pmap.c pmap.c +index 4ecabce..66c1c2d 100644 +--- pmap.c ++++ pmap.c +@@ -106,7 +106,7 @@ usage(FILE * out) + { + fputs(USAGE_HEADER, out); + fprintf(out, +- _(" %s [options] pid [pid ...]\n"), program_invocation_short_name); ++ _(" %s [options] PID [PID ...]\n"), program_invocation_short_name); + fputs(USAGE_OPTIONS, out); + fputs(_(" -x, --extended show details\n"), out); + fputs(_(" -X show even more details\n"), out); +diff --git ps/help.c ps/help.c +index 9133903..1b98b73 100644 +--- ps/help.c ++++ ps/help.c +@@ -109,18 +109,18 @@ void do_help (const char *opt, int rc) { + if (section == HELP_LST || section == HELP_ALL) { + fputs(_("\nSelection by list:\n"), out); + fputs(_(" -C command name\n"), out); +- fputs(_(" -G, --Group real group id or name\n"), out); ++ fputs(_(" -G, --Group real group id or name\n"), out); + fputs(_(" -g, --group session or effective group name\n"), out); +- fputs(_(" -p, --pid process id\n"), out); +- fputs(_(" --ppid select by parent process id\n"), out); ++ fputs(_(" -p, --pid process id\n"), out); ++ fputs(_(" --ppid select by parent process id\n"), out); + fputs(_(" -s, --sid session id\n"), out); + fputs(_(" -t, t, --tty terminal\n"), out); +- fputs(_(" -u, U, --user effective user id or name\n"), out); +- fputs(_(" -U, --User real user id or name\n"), out); ++ fputs(_(" -u, U, --user effective user id or name\n"), out); ++ fputs(_(" -U, --User real user id or name\n"), out); + fputs(_("\n" +- " selection take either:\n" +- " comma-separated list e.g. '-u root,nobody' or\n" +- " blank-separated list e.g. '-p 123 4567'\n"), out); ++ " The selection options take as their argument either:\n" ++ " a comma-separated list e.g. '-u root,nobody' or\n" ++ " or a blank-separated list e.g. '-p 123 4567'\n"), out); + } + if (section == HELP_OUT || section == HELP_ALL) { + fputs(_("\nOutput formats:\n"), out); +@@ -136,7 +136,7 @@ void do_help (const char *opt, int rc) { + fputs(_(" -O preloaded with default columns\n"), out); + fputs(_(" O as -O, with BSD personality\n"), out); + fputs(_(" -o, o, --format \n" +- " user defined format\n"), out); ++ " user-defined format\n"), out); + fputs(_(" s signal format\n"), out); + fputs(_(" u user-oriented format\n"), out); + fputs(_(" v virtual memory format\n"), out); +@@ -152,7 +152,7 @@ void do_help (const char *opt, int rc) { + } + if (section == HELP_THD || section == HELP_ALL) { + fputs(_("\nShow threads:\n"), out); +- fputs(_(" H as if they where processes\n"), out); ++ fputs(_(" H as if they were processes\n"), out); + fputs(_(" -L possibly with LWP and NLWP columns\n"), out); + fputs(_(" -m, m after processes\n"), out); + fputs(_(" -T possibly with SPID column\n"), out); +@@ -163,7 +163,7 @@ void do_help (const char *opt, int rc) { + fputs(_(" c show true command name\n"), out); + fputs(_(" e show the environment after command\n"), out); + fputs(_(" k, --sort specify sort order as: [+|-]key[,[+|-]key[,...]]\n"), out); +- fputs(_(" L list format specifiers\n"), out); ++ fputs(_(" L show format specifiers\n"), out); + fputs(_(" n display numeric uid and wchan\n"), out); + fputs(_(" S, --cumulative include some dead child process data\n"), out); + fputs(_(" -y do not show flags, show rss (only with -l)\n"), out); +diff --git skill.c skill.c +index 60ed274..9f3b4fc 100644 +--- skill.c ++++ skill.c +@@ -356,7 +356,7 @@ static void __attribute__ ((__noreturn__)) skillsnice_usage(FILE * out) + fputs(_(" -i, --interactive interactive\n"), out); + fputs(_(" -l, --list list all signal names\n"), out); + fputs(_(" -L, --table list all signal names in a nice table\n"), out); +- fputs(_(" -n, --no-action no action\n"), out); ++ fputs(_(" -n, --no-action do not actually kill processes; just print what would happen\n"), out); + fputs(_(" -v, --verbose explain what is being done\n"), out); + fputs(_(" -w, --warnings enable warnings (not implemented)\n"), out); + fputs(USAGE_SEPARATOR, out); +@@ -371,8 +371,8 @@ static void __attribute__ ((__noreturn__)) skillsnice_usage(FILE * out) + fputs(_(" --ns match the processes that belong to the same\n" + " namespace as \n"), out); + fputs(_(" --nslist list which namespaces will be considered for\n" +- " the --ns option.\n" +- " Available namespaces: ipc, mnt, net, pid, user, uts\n"), out); ++ " the --ns option; available namespaces are\n:" ++ " ipc, mnt, net, pid, user, uts\n"), out); + + fputs(USAGE_SEPARATOR, out); + fputs(USAGE_SEPARATOR, out); +diff --git testsuite/pmap.test/pmap.exp testsuite/pmap.test/pmap.exp +index bc2550a..5a9e603 100644 +--- testsuite/pmap.test/pmap.exp ++++ testsuite/pmap.test/pmap.exp +@@ -22,7 +22,7 @@ set pmap_ext_footer "\[ -\]+\\s+total kB\\s+\\d+(\\s+\[\\d-\]+){2,3}\\s*\$" + set test "pmap with no arguments" + spawn $pmap + #expect_pass "$test" "^\(lt-\)\?pmap: argument missing" +-expect_pass "$test" "Usage:\\s+\(lt-\)?pmap \\\[options\\\] pid \\\[pid \.\.\.\\\]" ++expect_pass "$test" "Usage:\\s+\(lt-\)?pmap \\\[options\\\] PID \\\[PID \.\.\.\\\]" + + set test "pmap standard output" + spawn $pmap $mypid +-- +1.7.9.2 + diff --git a/0038-top-protect-against-distortion-when-system-time-rese.patch b/0038-top-protect-against-distortion-when-system-time-rese.patch index 921250c..e43ddc8 100644 --- a/0038-top-protect-against-distortion-when-system-time-rese.patch +++ b/0038-top-protect-against-distortion-when-system-time-rese.patch @@ -1,4 +1,4 @@ -Based on 22e658297494e11ef92a81069b49a40420b8d824 Mon Sep 17 00:00:00 2001 +From 22e658297494e11ef92a81069b49a40420b8d824 Mon Sep 17 00:00:00 2001 From: Jim Warner Date: Fri, 25 Apr 2014 00:00:00 -0500 Subject: [PATCH] top: protect against distortion when system time reset @@ -49,9 +49,11 @@ Signed-off-by: Jim Warner top/top.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) +diff --git top/top.c top/top.c +index d767495..cbcb152 100644 --- top/top.c -+++ top/top.c 2014-05-15 00:00:00.000000000 +0000 -@@ -2514,17 +2514,14 @@ static void procs_hlp (proc_t *this) { ++++ top/top.c +@@ -2518,17 +2518,14 @@ static void procs_hlp (proc_t *this) { HST_t *h; if (!this) { @@ -73,4 +75,7 @@ Signed-off-by: Jim Warner + uptime_sav = uptime_cur; // if in Solaris mode, adjust our scaling for all cpus - Frame_etscale = 100.0f / ((float)Hertz * (float)et * (Rc.mode_irixps ? 1 : smp_num_cpus())); + Frame_etscale = 100.0f / ((float)Hertz * (float)et * (Rc.mode_irixps ? 1 : smp_num_cpus)); +-- +1.7.9.2 + diff --git a/0039-vmstat-Support-for-timestamps-with-t-fix-for-wd.patch b/0039-vmstat-Support-for-timestamps-with-t-fix-for-wd.patch new file mode 100644 index 0000000..733ebc0 --- /dev/null +++ b/0039-vmstat-Support-for-timestamps-with-t-fix-for-wd.patch @@ -0,0 +1,386 @@ +Based on 4fcd56bf582ee2ef5b205625ca3d1bfed90364e9 Mon Sep 17 00:00:00 2001 +From: Jaromir Capik +Date: Tue, 4 Feb 2014 19:10:42 +0100 +Subject: [PATCH] vmstat: Support for timestamps with '-t' & fix for '-wd' + +From now the vmstat can append a timestamp to each line in the +VMSTAT and DISKSTAT mode. You can achieve that with the '-t' +switch. +The '-w' switch now works in the DISKSTAT mode too. +--- + vmstat.8 | 3 + + vmstat.c | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++----------- + 2 files changed, 167 insertions(+), 33 deletions(-) + +diff --git vmstat.8 vmstat.8 +index ef6cbe9..420d9f3 100644 +--- vmstat.8 ++++ vmstat.8 +@@ -74,6 +74,9 @@ or 1048576 + bytes. Note this does not change the swap (si/so) or block (bi/bo) + fields. + .TP ++\fB\-t\fR, \fB\-\-timestamp\fR ++Append timestamp to each line ++.TP + \fB\-w\fR, \fB\-\-wide\fR + Wide output mode (useful for systems with higher amount of memory, + where the default output mode suffers from unwanted column breakage). +diff --git vmstat.c vmstat.c +index c01351d..a84d2d2 100644 +--- vmstat.c ++++ vmstat.c +@@ -43,6 +43,7 @@ + #include + #include + #include ++#include + #include "c.h" + #include "fileutils.h" + #include "nls.h" +@@ -75,6 +76,9 @@ static int a_option; + /* "-w" means "wide output" */ + static int w_option; + ++/* "-t" means "show timestamp" */ ++static int t_option; ++ + static unsigned sleep_time = 1; + static int infinite_updates = 0; + static unsigned long num_updates; +@@ -100,6 +104,7 @@ static void __attribute__ ((__noreturn__)) + fputs(_(" -p, --partition partition specific statistics\n"), out); + fputs(_(" -S, --unit define display unit\n"), out); + fputs(_(" -w, --wide wide output\n"), out); ++ fputs(_(" -t, --timestamp show timestamp\n"), out); + fputs(USAGE_SEPARATOR, out); + fputs(USAGE_HELP, out); + fputs(USAGE_VERSION, out); +@@ -180,21 +185,33 @@ static int format_1000(unsigned long long val64, char *restrict dst) + + static void new_header(void) + { ++ struct tm *tm_ptr; ++ time_t the_time; ++ char timebuf[32]; ++ + /* Translation Hint: Translating folloging header & fields + * that follow (marked with max x chars) might not work, + * unless manual page is translated as well. */ +- +- const char header[] = +- "procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----\n"; +- const char wide_header[] = +- "procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------\n"; ++ const char *header = ++ _("procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----"); ++ const char *wide_header = ++ _("procs -----------------------memory---------------------- ---swap-- -----io---- -system-- --------cpu--------"); ++ const char *timestamp_header = _(" -----timestamp-----"); + + const char format[] = +- "%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %4s %2s %2s %2s %2s %2s\n"; ++ "%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %4s %2s %2s %2s %2s %2s"; + const char wide_format[] = +- "%2s %2s %12s %12s %12s %12s %4s %4s %5s %5s %4s %4s %3s %3s %3s %3s %3s\n"; ++ "%2s %2s %12s %12s %12s %12s %4s %4s %5s %5s %4s %4s %3s %3s %3s %3s %3s"; ++ ++ ++ printf(w_option ? wide_header : header); ++ ++ if (t_option) { ++ printf(timestamp_header); ++ } ++ ++ printf("\n"); + +- printf(w_option ? _(wide_header) : _(header)); + printf( + w_option ? wide_format : format, + /* Translation Hint: max 2 chars */ +@@ -235,6 +252,19 @@ static void new_header(void) + _("wa"), + /* Translation Hint: max 2 chars */ + _("st")); ++ ++ if (t_option) { ++ (void) time( &the_time ); ++ tm_ptr = localtime( &the_time ); ++ if (strftime(timebuf, sizeof(timebuf), "%Z", tm_ptr)) { ++ timebuf[strlen(timestamp_header) - 1] = '\0'; ++ } else { ++ timebuf[0] = '\0'; ++ } ++ printf(" %*s", (int)(strlen(timestamp_header) - 1), timebuf); ++ } ++ ++ printf("\n"); + } + + static unsigned long unitConvert(unsigned long size) +@@ -247,9 +277,9 @@ static unsigned long unitConvert(unsigned long size) + static void new_format(void) + { + const char format[] = +- "%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %4u %2u %2u %2u %2u %2u\n"; ++ "%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %4u %2u %2u %2u %2u %2u"; + const char wide_format[] = +- "%2u %2u %12lu %12lu %12lu %12lu %4u %4u %5u %5u %4u %4u %3u %3u %3u %3u %3u\n"; ++ "%2u %2u %12lu %12lu %12lu %12lu %4u %4u %5u %5u %4u %4u %3u %3u %3u %3u %3u"; + + unsigned int tog = 0; /* toggle switch for cleaner code */ + unsigned int i; +@@ -263,6 +293,9 @@ static void new_format(void) + unsigned int sleep_half; + unsigned long kb_per_page = sysconf(_SC_PAGESIZE) / 1024ul; + long long debt = 0; /* handle idle ticks running backwards */ ++ struct tm *tm_ptr; ++ time_t the_time; ++ char timebuf[32]; + + sleep_half = (sleep_time / 2); + new_header(); +@@ -272,6 +305,12 @@ static void new_format(void) + cpu_zzz, pgpgin, pgpgout, pswpin, pswpout, intr, ctxt, &running, + &blocked, &dummy_1, &dummy_2); + ++ if (t_option) { ++ (void) time( &the_time ); ++ tm_ptr = localtime( &the_time ); ++ strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", tm_ptr); ++ } ++ + duse = *cpu_use + *cpu_nic; + dsys = *cpu_sys + *cpu_xxx + *cpu_yyy; + didl = *cpu_idl; +@@ -298,6 +337,12 @@ static void new_format(void) + (unsigned)( (100*dstl + divo2) / Div ) + ); + ++ if (t_option) { ++ printf(" %s", timebuf); ++ } ++ ++ printf("\n"); ++ + /* main loop */ + for (i = 1; infinite_updates || i < num_updates; i++) { + sleep(sleep_time); +@@ -313,6 +358,12 @@ static void new_format(void) + pgpgout + tog, pswpin + tog, pswpout + tog, intr + tog, + ctxt + tog, &running, &blocked, &dummy_1, &dummy_2); + ++ if (t_option) { ++ (void) time( &the_time ); ++ tm_ptr = localtime( &the_time ); ++ strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", tm_ptr); ++ } ++ + duse = + cpu_use[tog] - cpu_use[!tog] + cpu_nic[tog] - cpu_nic[!tog]; + dsys = +@@ -364,6 +415,12 @@ static void new_format(void) + /* st */ + (unsigned)( (100*dstl+divo2)/Div ) + ); ++ ++ if (t_option) { ++ printf(" %s", timebuf); ++ } ++ ++ printf("\n"); + } + } + +@@ -453,11 +510,33 @@ static int diskpartition_format(const char *partition_name) + + static void diskheader(void) + { ++ struct tm *tm_ptr; ++ time_t the_time; ++ char timebuf[32]; ++ + /* Translation Hint: Translating folloging header & fields + * that follow (marked with max x chars) might not work, + * unless manual page is translated as well. */ +- printf(_("disk- ------------reads------------ ------------writes----------- -----IO------\n")); +- printf("%5s %6s %6s %7s %7s %6s %6s %7s %7s %6s %6s\n", ++ const char *header = ++ _("disk- ------------reads------------ ------------writes----------- -----IO------"); ++ const char *wide_header = ++ _("disk- -------------------reads------------------- -------------------writes------------------ ------IO-------"); ++ const char *timestamp_header = _(" -----timestamp-----"); ++ ++ const char format[] = ++ "%5s %6s %6s %7s %7s %6s %6s %7s %7s %6s %6s"; ++ const char wide_format[] = ++ "%5s %9s %9s %11s %11s %9s %9s %11s %11s %7s %7s"; ++ ++ printf(w_option ? wide_header : header); ++ ++ if (t_option) { ++ printf(timestamp_header); ++ } ++ ++ printf("\n"); ++ ++ printf(w_option ? wide_format : format, + " ", + /* Translation Hint: max 6 chars */ + _("total"), +@@ -479,25 +558,53 @@ static void diskheader(void) + _("cur"), + /* Translation Hint: max 6 chars */ + _("sec")); ++ ++ if (t_option) { ++ (void) time( &the_time ); ++ tm_ptr = localtime( &the_time ); ++ if (strftime(timebuf, sizeof(timebuf), "%Z", tm_ptr)) { ++ timebuf[strlen(timestamp_header) - 1] = '\0'; ++ } else { ++ timebuf[0] = '\0'; ++ } ++ printf(" %*s", (int)(strlen(timestamp_header) - 1), timebuf); ++ } ++ ++ printf("\n"); + } + + static void diskformat(void) + { ++ const char format[] = ++ "%-5s %6u %6u %7llu %7u %6u %6u %7llu %7u %6u %6u"; ++ const char wide_format[] = ++ "%-5s %9u %9u %11llu %11u %9u %9u %11llu %11u %7u %7u"; ++ + FILE *fDiskstat; + struct disk_stat *disks; + struct partition_stat *partitions; + unsigned long ndisks, i, j, k; +- const char format[] = "%-5s %6u %6u %7llu %7u %6u %6u %7llu %7u %6u %6u\n"; ++ struct tm *tm_ptr; ++ time_t the_time; ++ char timebuf[32]; ++ + + if ((fDiskstat = fopen("/proc/diskstats", "rb"))) { + fclose(fDiskstat); + ndisks = getdiskstat(&disks, &partitions); ++ ++ if (t_option) { ++ (void) time( &the_time ); ++ tm_ptr = localtime( &the_time ); ++ strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", tm_ptr); ++ } ++ + if (!moreheaders) + diskheader(); + for (k = 0; k < ndisks; k++) { + if (moreheaders && ((k % height) == 0)) + diskheader(); +- printf(format, ++ printf(w_option ? wide_format : format, + disks[k].disk_name, + disks[k].reads, + disks[k].merged_reads, +@@ -510,31 +617,51 @@ static void diskformat(void) + disks[k].inprogress_IO ? disks[k].inprogress_IO / 1000 : 0, + disks[k].milli_spent_IO ? disks[k]. + milli_spent_IO / 1000 : 0); ++ ++ if (t_option) { ++ printf(" %s", timebuf); ++ } ++ ++ printf("\n"); + fflush(stdout); + } + free(disks); + free(partitions); ++ + for (j = 1; infinite_updates || j < num_updates; j++) { + sleep(sleep_time); + ndisks = getdiskstat(&disks, &partitions); +- for (i = 0; i < ndisks; i++, k++) { +- if (moreheaders && ((k % height) == 0)) +- diskheader(); +- printf(format, +- disks[i].disk_name, +- disks[i].reads, +- disks[i].merged_reads, +- disks[i].reads_sectors, +- disks[i].milli_reading, +- disks[i].writes, +- disks[i].merged_writes, +- disks[i].written_sectors, +- disks[i].milli_writing, +- disks[i].inprogress_IO ? disks[i].inprogress_IO / 1000 : 0, +- disks[i].milli_spent_IO ? disks[i]. +- milli_spent_IO / 1000 : 0); +- fflush(stdout); +- } ++ ++ if (t_option) { ++ (void) time( &the_time ); ++ tm_ptr = localtime( &the_time ); ++ strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", tm_ptr); ++ } ++ ++ for (i = 0; i < ndisks; i++, k++) { ++ if (moreheaders && ((k % height) == 0)) ++ diskheader(); ++ printf(w_option ? wide_format : format, ++ disks[i].disk_name, ++ disks[i].reads, ++ disks[i].merged_reads, ++ disks[i].reads_sectors, ++ disks[i].milli_reading, ++ disks[i].writes, ++ disks[i].merged_writes, ++ disks[i].written_sectors, ++ disks[i].milli_writing, ++ disks[i].inprogress_IO ? disks[i].inprogress_IO / 1000 : 0, ++ disks[i].milli_spent_IO ? disks[i]. ++ milli_spent_IO / 1000 : 0); ++ ++ if (t_option) { ++ printf(" %s", timebuf); ++ } ++ ++ printf("\n"); ++ fflush(stdout); ++ } + free(disks); + free(partitions); + } +@@ -740,6 +867,7 @@ int main(int argc, char *argv[]) + {"partition", required_argument, NULL, 'p'}, + {"unit", required_argument, NULL, 'S'}, + {"wide", no_argument, NULL, 'w'}, ++ {"timestamp", no_argument, NULL, 't'}, + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'V'}, + {NULL, 0, NULL, 0} +@@ -754,7 +882,7 @@ int main(int argc, char *argv[]) + atexit(close_stdout); + + while ((c = +- getopt_long(argc, argv, "afmnsdDp:S:whV", longopts, ++ getopt_long(argc, argv, "afmnsdDp:S:wthV", longopts, + NULL)) != EOF) + switch (c) { + case 'V': +@@ -820,6 +948,9 @@ int main(int argc, char *argv[]) + case 'w': + w_option = 1; + break; ++ case 't': ++ t_option = 1; ++ break; + default: + /* no other aguments defined yet. */ + usage(stderr); +-- +1.7.9.2 + diff --git a/0040-watch-Don-t-leak-extra-fds-to-the-child.patch b/0040-watch-Don-t-leak-extra-fds-to-the-child.patch new file mode 100644 index 0000000..6bd7689 --- /dev/null +++ b/0040-watch-Don-t-leak-extra-fds-to-the-child.patch @@ -0,0 +1,34 @@ +From 835b6294d18a6ad79ff56aaeb0038bc6d006384b Mon Sep 17 00:00:00 2001 +From: Josh Stone +Date: Tue, 4 Feb 2014 09:46:58 -0800 +Subject: [PATCH] watch: Don't leak extra fds to the child + +Once the write side of the pipe has been duped to stdout for the child, +the original pipefd is no longer needed, so it can be closed to avoid +leaking to the child. + +The leak can easily be seen with "watch ls -l /proc/self/fd", but I +found this due to "watch lvs" diagnosing itself: + + File descriptor 4 (pipe:[3163616]) leaked on lvs invocation. + +Signed-off-by: Josh Stone +--- + watch.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git watch.c watch.c +index 032dfb7..f0a3ec3 100644 +--- watch.c ++++ watch.c +@@ -387,6 +387,7 @@ static int run_command(char *restrict command, char **restrict command_argv) + if (dup2(pipefd[1], 1) < 0) { /* replace stdout with write side of pipe */ + xerr(3, _("dup2 failed")); + } ++ close(pipefd[1]); /* once duped, the write fd isn't needed */ + dup2(1, 2); /* stderr should default to stdout */ + + if (flags & WATCH_EXEC) { /* pass command to exec instead of system */ +-- +1.7.9.2 + diff --git a/0041-vmstat-Fixing-format-security-flaws.patch b/0041-vmstat-Fixing-format-security-flaws.patch new file mode 100644 index 0000000..f01d6d9 --- /dev/null +++ b/0041-vmstat-Fixing-format-security-flaws.patch @@ -0,0 +1,46 @@ +From dc072aced7250fed9b01fb05f0d672678752a63e Mon Sep 17 00:00:00 2001 +From: Jaromir Capik +Date: Wed, 5 Feb 2014 17:09:45 +0100 +Subject: [PATCH] vmstat: Fixing format-security flaws + +Previously the headers were printed directly without +the format specifier. That way is considered insecure +and leads to build errors with -Werror=format-security +flag set. +--- + vmstat.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git vmstat.c vmstat.c +index a84d2d2..a2fd351 100644 +--- vmstat.c ++++ vmstat.c +@@ -204,10 +204,10 @@ static void new_header(void) + "%2s %2s %12s %12s %12s %12s %4s %4s %5s %5s %4s %4s %3s %3s %3s %3s %3s"; + + +- printf(w_option ? wide_header : header); ++ printf("%s", w_option ? wide_header : header); + + if (t_option) { +- printf(timestamp_header); ++ printf("%s", timestamp_header); + } + + printf("\n"); +@@ -528,10 +528,10 @@ static void diskheader(void) + const char wide_format[] = + "%5s %9s %9s %11s %11s %9s %9s %11s %11s %7s %7s"; + +- printf(w_option ? wide_header : header); ++ printf("%s", w_option ? wide_header : header); + + if (t_option) { +- printf(timestamp_header); ++ printf("%s", timestamp_header); + } + + printf("\n"); +-- +1.7.9.2 + diff --git a/0043-Added-get-trans-target-to-Makefile.patch b/0043-Added-get-trans-target-to-Makefile.patch new file mode 100644 index 0000000..3bf026e --- /dev/null +++ b/0043-Added-get-trans-target-to-Makefile.patch @@ -0,0 +1,27 @@ +From 2ade4b082b8c970bb1e1a6711d79f82b90075431 Mon Sep 17 00:00:00 2001 +From: Craig Small +Date: Sat, 22 Feb 2014 11:34:53 +1100 +Subject: [PATCH] Added get-trans target to Makefile + +The get-trans target rsyncs the latest copies of translation files +from the translation project. I put this target in because I always +forget the exact syntax of the command. + +Signed-off-by: Craig Small +--- + Makefile.am | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git Makefile.am Makefile.am +index 7075e67..335fbc5 100644 +--- Makefile.am ++++ Makefile.am +@@ -123,3 +123,5 @@ $(top_srcdir)/.version: + dist-hook: + echo $(VERSION) > $(distdir)/.tarball-version + ++get-trans: ++ rsync -Lrtvz translationproject.org::tp/latest/procps/ po +-- +1.7.9.2 + diff --git a/0045-library-properly-handle-memory-used-by-tmpfs.patch b/0045-library-properly-handle-memory-used-by-tmpfs.patch new file mode 100644 index 0000000..529375f --- /dev/null +++ b/0045-library-properly-handle-memory-used-by-tmpfs.patch @@ -0,0 +1,155 @@ +Based on 3569c0351fae7797e8d62feae7229d2d6d2aa0a1 Mon Sep 17 00:00:00 2001 +From: Jakob Unterwurzacher +Date: Tue, 18 Feb 2014 22:12:21 +0100 +Subject: [PATCH] library: properly handle memory used by tmpfs + +tmpfs has become much more widely used since distributions use it for +/tmp (Fedora 18+). In /proc/meminfo, memory used by tmpfs is accounted +into "Cached" (aka "NR_FILE_PAGES", + http://lxr.free-electrons.com/source/mm/shmem.c#L301 ). + +The tools just pass it on, so what top, free and vmstat report as +"cached" is the sum of page cache and tmpfs. + +free has the extremely useful "-/+ buffers/cache" output. However, now +that tmpfs is accounted into "cached", those numbers are way off once +you have big files in /tmp. + +Fortunately, kernel 2.6.32 introduces "Shmem", which makes tmpfs memory +usage accessible from userspace ( +https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4b02108ac1b3354a22b0d83c684797692efdc395 ). + +This patch substracts Shmem from Cached to get the actual page cache +memory. This makes both issues mentioned above disappear. For older +kernels, Shmem is not available (hence zero) and this patch is no-op. + +Additionally: +* Update the man pages of free and vmstat to explain what is happening +* Finally drop "MemShared" from the /proc/meminfo parser, it has been + dead for 10+ years and is only causing confusion ( removed in kernel + 2.5.54, see + https://git.kernel.org/cgit/linux/kernel/git/tglx/history.git/commit/?id=fe04e9451e5a159247cf9f03c615a4273ac0c571 ) +--- + free.1 | 29 ++++++++++++++++++++++++----- + proc/sysinfo.c | 8 ++++---- + proc/sysinfo.h | 3 +-- + vmstat.8 | 3 ++- + 4 files changed, 31 insertions(+), 12 deletions(-) + +diff --git free.1 free.1 +index 1e8e7ef..21cce28 100644 +--- free.1 ++++ free.1 +@@ -11,11 +11,30 @@ free \- Display amount of free and used memory in the system + .SH DESCRIPTION + .B free + displays the total amount of free and used physical and swap memory in the +-system, as well as the buffers used by the kernel. +-The shared memory column represents either the MemShared value (2.4 series +-kernels) or the Shmem value (2.6 series kernels and later) taken from the +-/proc/meminfo file. The value is zero if none of the entries is exported +-by the kernel. ++system, as well as the buffers and caches used by the kernel. The ++information is gathered by parsing /proc/meminfo. The displayed ++columns are: ++.TP ++\fBtotal\fR ++Total installed memory (MemTotal and SwapTotal in /proc/meminfo) ++.TP ++\fBused\fR ++Used memory (calculated as total - free) ++.TP ++\fBfree\fR ++Unused memory (MemFree and SwapFree in /proc/meminfo) ++.TP ++\fBshared\fR ++Memory used (mostly) by tmpfs (Shmem in /proc/meminfo, available on ++kernels 2.6.32, displayed as zero if not available) ++.TP ++\fBbuffers\fR ++Memory used by kernel buffers (Buffers in /proc/meminfo) ++.TP ++\fBcached\fR ++Memory used by the page cache (calculated as Cached - Shmem in ++/proc/meminfo - the Cached value is actually the sum of page cache and ++tmpfs memory) + .SH OPTIONS + .TP + \fB\-b\fR, \fB\-\-bytes\fR +diff --git proc/sysinfo.c proc/sysinfo.c +index 1680cc4..e07ca86 100644 +--- proc/sysinfo.c ++++ proc/sysinfo.c +@@ -531,7 +531,6 @@ static int compare_mem_table_structs(const void *a, const void *b){ + * + * MemTotal: 61768 kB old + * MemFree: 1436 kB old +- * MemShared: 0 kB old (now always zero; not calculated) + * Buffers: 1312 kB old + * Cached: 20932 kB old + * Active: 12464 kB new +@@ -560,7 +559,7 @@ static int compare_mem_table_structs(const void *a, const void *b){ + * Hugepagesize: 4096 kB 2.5.??+ + */ + +-/* obsolete since 2.6.x, but reused for shmem in 2.6.32+ */ ++/* Shmem in 2.6.32+ */ + unsigned long kb_main_shared; + /* old but still kicking -- the important stuff */ + unsigned long kb_main_buffers; +@@ -631,14 +630,13 @@ void meminfo(void){ + {"LowTotal", &kb_low_total}, + {"Mapped", &kb_mapped}, // kB version of vmstat nr_mapped + {"MemFree", &kb_main_free}, // important +- {"MemShared", &kb_main_shared}, // obsolete since kernel 2.6! (sharing the variable with Shmem replacement) + {"MemTotal", &kb_main_total}, // important + {"NFS_Unstable", &kb_nfs_unstable}, + {"PageTables", &kb_pagetables}, // kB version of vmstat nr_page_table_pages + {"ReverseMaps", &nr_reversemaps}, // same as vmstat nr_page_table_pages + {"SReclaimable", &kb_swap_reclaimable}, // "swap reclaimable" (dentry and inode structures) + {"SUnreclaim", &kb_swap_unreclaimable}, +- {"Shmem", &kb_main_shared}, // kernel 2.6 and later (sharing the output variable with obsolete MemShared) ++ {"Shmem", &kb_main_shared}, // kernel 2.6.32 and later + {"Slab", &kb_slab}, // kB version of vmstat nr_slab + {"SwapCached", &kb_swap_cached}, + {"SwapFree", &kb_swap_free}, // important +@@ -690,6 +688,8 @@ nextline: + kb_main_used = 0; + } + kb_main_cached += kb_swap_reclaimable + kb_swap_cached + kb_nfs_unstable; ++ /* "Cached" includes "Shmem" - we want only the page cache here */ ++ kb_main_cached -= kb_main_shared; + } + + /*****************************************************************/ +diff --git proc/sysinfo.h proc/sysinfo.h +index 1eb3472..2291631 100644 +--- proc/sysinfo.h ++++ proc/sysinfo.h +@@ -20,8 +20,7 @@ extern int uptime (double *uptime_secs, double *idle_secs); + extern unsigned long getbtime(void); + extern void loadavg(double *av1, double *av5, double *av15); + +- +-/* obsolete */ ++/* Shmem in 2.6.32+ */ + extern unsigned long kb_main_shared; + /* old but still kicking -- the important stuff */ + extern unsigned long kb_main_buffers; +diff --git vmstat.8 vmstat.8 +index 420d9f3..2782a42 100644 +--- vmstat.8 ++++ vmstat.8 +@@ -102,7 +102,8 @@ b: The number of processes in uninterruptible sleep. + swpd: the amount of virtual memory used. + free: the amount of idle memory. + buff: the amount of memory used as buffers. +-cache: the amount of memory used as cache. ++cache: the amount of memory used as cache (excluding tmpfs memory for ++kernels 2.6.32+) + inact: the amount of inactive memory. (\-a option) + active: the amount of active memory. (\-a option) + .fi +-- +1.7.9.2 + diff --git a/0046-Minor-i18n-fixes.patch b/0046-Minor-i18n-fixes.patch new file mode 100644 index 0000000..2186f21 --- /dev/null +++ b/0046-Minor-i18n-fixes.patch @@ -0,0 +1,106 @@ +From 2ec9f5c22e3eeaf4da514e0e6ec9374cfdbb9a99 Mon Sep 17 00:00:00 2001 +From: Yuri Chornoivan +Date: Mon, 3 Mar 2014 21:58:56 +1100 +Subject: [PATCH] Minor i18n fixes + +Minor fixes that the translator (Yuri) has found in some of the +strings. You only know how many typos and thinkos you have when +someone is trying to translate it. + +Signed-off-by: Craig Small +--- + ps/help.c | 4 ++-- + skill.c | 2 +- + slabtop.c | 4 ++++ + top/top.c | 2 +- + top/top_nls.c | 2 +- + 5 files changed, 9 insertions(+), 5 deletions(-) + +diff --git ps/help.c ps/help.c +index 1b98b73..8bde12b 100644 +--- ps/help.c ++++ ps/help.c +@@ -120,7 +120,7 @@ void do_help (const char *opt, int rc) { + fputs(_("\n" + " The selection options take as their argument either:\n" + " a comma-separated list e.g. '-u root,nobody' or\n" +- " or a blank-separated list e.g. '-p 123 4567'\n"), out); ++ " a blank-separated list e.g. '-p 123 4567'\n"), out); + } + if (section == HELP_OUT || section == HELP_ALL) { + fputs(_("\nOutput formats:\n"), out); +@@ -141,7 +141,7 @@ void do_help (const char *opt, int rc) { + fputs(_(" u user-oriented format\n"), out); + fputs(_(" v virtual memory format\n"), out); + fputs(_(" X register format\n"), out); +- fputs(_(" -y do not show flags, show rrs vs. addr (used with -l)\n"), out); ++ fputs(_(" -y do not show flags, show rss vs. addr (used with -l)\n"), out); + fputs(_(" --context display security context (for SELinux)\n"), out); + fputs(_(" --headers repeat header lines, one per page\n"), out); + fputs(_(" --no-headers do not print header at all\n"), out); +diff --git skill.c skill.c +index 9f3b4fc..2b1ce2f 100644 +--- skill.c ++++ skill.c +@@ -751,7 +751,7 @@ int main(int argc, char ** argv) + kill_main(argc, argv); + break; + default: +- fprintf(stderr, _("skill: \"%s\" is not support\n"), ++ fprintf(stderr, _("skill: \"%s\" is not supported\n"), + program_invocation_short_name); + fprintf(stderr, USAGE_MAN_TAIL("skill(1)")); + return EXIT_FAILURE; +diff --git slabtop.c slabtop.c +index c135ec5..4be35b9 100644 +--- slabtop.c ++++ slabtop.c +@@ -376,15 +376,19 @@ int main(int argc, char *argv[]) + " %-35s: %.2fK / %.2fK / %.2fK\n\n", + /* Translation Hint: Next five strings must not + * exceed 35 length in characters. */ ++ /* xgettext:no-c-format */ + _("Active / Total Objects (% used)"), + stats.nr_active_objs, stats.nr_objs, + 100.0 * stats.nr_active_objs / stats.nr_objs, ++ /* xgettext:no-c-format */ + _("Active / Total Slabs (% used)"), + stats.nr_active_slabs, stats.nr_slabs, + 100.0 * stats.nr_active_slabs / stats.nr_slabs, ++ /* xgettext:no-c-format */ + _("Active / Total Caches (% used)"), + stats.nr_active_caches, stats.nr_caches, + 100.0 * stats.nr_active_caches / stats.nr_caches, ++ /* xgettext:no-c-format */ + _("Active / Total Size (% used)"), + stats.active_size / 1024.0, stats.total_size / 1024.0, + 100.0 * stats.active_size / stats.total_size, +diff --git top/top.c top/top.c +index ca3d24a..d767495 100644 +--- top/top.c ++++ top/top.c +@@ -779,7 +779,7 @@ static int show_pmt (const char *str) { + * Our special formatting consists of: + * "some text <_delimiter_> some more text <_delimiter_>...\n" + * Where <_delimiter_> is a two byte combination consisting of a +- * tilde followed by an ascii digit in the the range of 1 - 8. ++ * tilde followed by an ascii digit in the range of 1 - 8. + * examples: ~1, ~5, ~8, etc. + * The tilde is effectively stripped and the next digit + * converted to an index which is then used to select an +diff --git top/top_nls.c top/top_nls.c +index 0f37d89..b47459a 100644 +--- top/top_nls.c ++++ top/top_nls.c +@@ -404,7 +404,7 @@ static void build_norm_nlstab (void) { + Norm_nlstab[YINSP_demo01_txt] = _("Open Files"); + Norm_nlstab[YINSP_demo02_txt] = _("NUMA Info"); + Norm_nlstab[YINSP_demo03_txt] = _("Log"); +- Norm_nlstab[YINSP_deqfmt_txt] = _("the '=' key will eventually show the actual file read or command(s) excuted ..."); ++ Norm_nlstab[YINSP_deqfmt_txt] = _("the '=' key will eventually show the actual file read or command(s) executed ..."); + Norm_nlstab[YINSP_deqtyp_txt] = _("demo"); + Norm_nlstab[YINSP_dstory_txt] = _("" + "This is simulated output representing the contents of some file or the output\n" +-- +1.7.9.2 + diff --git a/0046-top-miscellaneous-accumulated-changes-to-program-cod.patch b/0046-top-miscellaneous-accumulated-changes-to-program-cod.patch index c042843..55604fa 100644 --- a/0046-top-miscellaneous-accumulated-changes-to-program-cod.patch +++ b/0046-top-miscellaneous-accumulated-changes-to-program-cod.patch @@ -1,4 +1,4 @@ -Based on 0caa6d6e676c8d28b933066d19c112b02ed59245 Mon Sep 17 00:00:00 2001 +From 0caa6d6e676c8d28b933066d19c112b02ed59245 Mon Sep 17 00:00:00 2001 From: Jim Warner Date: Wed, 7 May 2014 00:00:00 -0500 Subject: [PATCH] top: miscellaneous accumulated changes to program code @@ -8,8 +8,9 @@ Subject: [PATCH] top: miscellaneous accumulated changes to program code Signed-off-by: Jim Warner --- - top/top.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + top/top.c | 5 ++--- + top/top_nls.c | 28 ++++++++++++++-------------- + 2 files changed, 16 insertions(+), 17 deletions(-) diff --git top/top.c top/top.c index 9f33a05..bc755f3 100644 @@ -31,3 +32,111 @@ index 9f33a05..bc755f3 100644 break; default: // what we REALLY wanted (maybe) if (isprint(key) && logCOL < bufMAX && phyCOL < Screen_cols) { +@@ -4624,7 +4624,6 @@ static void keys_task (int ch) { + if (*str != kbd_ESC + && (errmsg = user_certify(w, str, ch))) + show_msg(errmsg); +- + } + break; + case 'V': +diff --git top/top_nls.c top/top_nls.c +index 01c8d1e..ea1c088 100644 +--- top/top_nls.c ++++ top/top_nls.c +@@ -129,31 +129,31 @@ static void build_two_nlstabs (void) { + /* Translation Hint: maximum 'UID' = 5 */ + Head_nlstab[EU_UED] = _("UID"); + Desc_nlstab[EU_UED] = _("Effective User Id"); +-/* Translation Hint: maximum 'USER' = 8 */ ++/* Translation Hint: maximum 'USER' = 7 */ + Head_nlstab[EU_UEN] = _("USER"); + Desc_nlstab[EU_UEN] = _("Effective User Name"); + /* Translation Hint: maximum 'RUID' = 5 */ + Head_nlstab[EU_URD] = _("RUID"); + Desc_nlstab[EU_URD] = _("Real User Id"); +-/* Translation Hint: maximum 'RUSER' = 8 */ ++/* Translation Hint: maximum 'RUSER' = 7 */ + Head_nlstab[EU_URN] = _("RUSER"); + Desc_nlstab[EU_URN] = _("Real User Name"); + /* Translation Hint: maximum 'SUID' = 5 */ + Head_nlstab[EU_USD] = _("SUID"); + Desc_nlstab[EU_USD] = _("Saved User Id"); +-/* Translation Hint: maximum 'SUSER' = 8 */ ++/* Translation Hint: maximum 'SUSER' = 7 */ + Head_nlstab[EU_USN] = _("SUSER"); + Desc_nlstab[EU_USN] = _("Saved User Name"); + /* Translation Hint: maximum 'GID' = 5 */ + Head_nlstab[EU_GID] = _("GID"); + Desc_nlstab[EU_GID] = _("Group Id"); +-/* Translation Hint: maximum 'GROUP' = 8 */ ++/* Translation Hint: maximum 'GROUP' = 7 */ + Head_nlstab[EU_GRP] = _("GROUP"); + Desc_nlstab[EU_GRP] = _("Group Name"); + /* Translation Hint: maximum 'PGRP' = 5 */ + Head_nlstab[EU_PGD] = _("PGRP"); + Desc_nlstab[EU_PGD] = _("Process Group Id"); +-/* Translation Hint: maximum 'TTY' = 8 */ ++/* Translation Hint: maximum 'TTY' = 7 */ + Head_nlstab[EU_TTY] = _("TTY"); + Desc_nlstab[EU_TTY] = _("Controlling Tty"); + /* Translation Hint: maximum 'TPGID' = 5 */ +@@ -180,7 +180,7 @@ static void build_two_nlstabs (void) { + /* Translation Hint: maximum '' = 6 */ + Head_nlstab[EU_TME] = _("TIME"); + Desc_nlstab[EU_TME] = _("CPU Time"); +-/* Translation Hint: maximum 'TIME+' = 9 */ ++/* Translation Hint: maximum 'TIME+' = 7 */ + Head_nlstab[EU_TM2] = _("TIME+"); + Desc_nlstab[EU_TM2] = _("CPU Time, hundredths"); + /* Translation Hint: maximum '%MEM' = 4 */ +@@ -222,7 +222,7 @@ static void build_two_nlstabs (void) { + /* Translation Hint: maximum 'WCHAN' = 7 */ + Head_nlstab[EU_WCH] = _("WCHAN"); + Desc_nlstab[EU_WCH] = _("Sleeping in Function"); +-/* Translation Hint: maximum 'Flags' = 8 */ ++/* Translation Hint: maximum 'Flags' = 7 */ + Head_nlstab[EU_FLG] = _("Flags"); + Desc_nlstab[EU_FLG] = _("Task Flags "); + /* Translation Hint: maximum 'CGROUPS' = 7 */ +@@ -241,7 +241,7 @@ static void build_two_nlstabs (void) { + /* Translation Hint: maximum 'Adj' = 3 */ + Head_nlstab[EU_OOA] = _("Adj"); + Desc_nlstab[EU_OOA] = _("oom_adjustment (2^X)"); +-/* Translation Hint: maximum 'Badness' = 8 */ ++/* Translation Hint: maximum 'Badness' = 7 */ + Head_nlstab[EU_OOM] = _("Badness"); + Desc_nlstab[EU_OOM] = _("oom_score (badness)"); + #endif +@@ -259,22 +259,22 @@ static void build_two_nlstabs (void) { + /* Translation Hint: maximum 'USED' = 4 */ + Head_nlstab[EU_USE] = _("USED"); + Desc_nlstab[EU_USE] = _("Res+Swap Size (KiB)"); +-/* Translation Hint: maximum 'nsIPC' = 10 */ ++/* Translation Hint: maximum 'nsIPC' = 7 */ + Head_nlstab[EU_NS1] = _("nsIPC"); + Desc_nlstab[EU_NS1] = _("IPC namespace Inode"); +-/* Translation Hint: maximum 'nsMNT' = 10 */ ++/* Translation Hint: maximum 'nsMNT' = 7 */ + Head_nlstab[EU_NS2] = _("nsMNT"); + Desc_nlstab[EU_NS2] = _("MNT namespace Inode"); +-/* Translation Hint: maximum 'nsNET' = 10 */ ++/* Translation Hint: maximum 'nsNET' = 7 */ + Head_nlstab[EU_NS3] = _("nsNET"); + Desc_nlstab[EU_NS3] = _("NET namespace Inode"); +-/* Translation Hint: maximum 'nsPID' = 10 */ ++/* Translation Hint: maximum 'nsPID' = 7 */ + Head_nlstab[EU_NS4] = _("nsPID"); + Desc_nlstab[EU_NS4] = _("PID namespace Inode"); +-/* Translation Hint: maximum 'nsUSER' = 10 */ ++/* Translation Hint: maximum 'nsUSER' = 7 */ + Head_nlstab[EU_NS5] = _("nsUSER"); + Desc_nlstab[EU_NS5] = _("USER namespace Inode"); +-/* Translation Hint: maximum 'nsUTS' = 10 */ ++/* Translation Hint: maximum 'nsUTS' = 7 */ + Head_nlstab[EU_NS6] = _("nsUTS"); + Desc_nlstab[EU_NS6] = _("UTS namespace Inode"); + } +-- +1.7.9.2 + diff --git a/0047-sysctl-increase-max-supported-line-length-of-the-con.patch b/0047-sysctl-increase-max-supported-line-length-of-the-con.patch new file mode 100644 index 0000000..58ea4b4 --- /dev/null +++ b/0047-sysctl-increase-max-supported-line-length-of-the-con.patch @@ -0,0 +1,43 @@ +From 9c7e8b82f872e2d46ce866255ff132e0e6a0f937 Mon Sep 17 00:00:00 2001 +From: Sami Farin +Date: Fri, 14 Mar 2014 00:00:00 -0600 +Subject: [PATCH] sysctl: increase max supported line length of the conf file + +I ran into this limit with net.ipv4.ip_local_reserved_ports , +sysctl complained about the line after the long line, further +slowing down my error hunting. + +Due to fgets usage, increase buffer size to 4096 chars with +minimum amount of code changes. + +Signed-off-by: Sami Farin +--- + sysctl.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git sysctl.c sysctl.c +index 51af15d..fc224e5 100644 +--- sysctl.c ++++ sysctl.c +@@ -483,14 +483,16 @@ static int pattern_match(const char *string, const char *pat) + return (1); + } + ++#define LINELEN 4096 ++ + /* + * Preload the sysctl's from the conf file. We parse the file and then + * reform it (strip out whitespace). + */ + static int Preload(const char *restrict const filename) + { +- char oneline[256]; +- char buffer[256]; ++ char oneline[LINELEN]; ++ char buffer[LINELEN]; + FILE *fp; + char *t; + int n = 0; +-- +1.7.9.2 + diff --git a/0049-fix-url-for-rsync.patch b/0049-fix-url-for-rsync.patch new file mode 100644 index 0000000..8c342a6 --- /dev/null +++ b/0049-fix-url-for-rsync.patch @@ -0,0 +1,27 @@ +From 0b3f63456a1265e13274fd7c6ba0903e4cb3db5a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tr=E1=BA=A7n=20Ng=E1=BB=8Dc=20Qu=C3=A2n?= + +Date: Thu, 17 Apr 2014 14:12:01 +0700 +Subject: [PATCH] fix url for rsync +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Trần Ngọc Quân +--- + Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git Makefile.am Makefile.am +index 335fbc5..b32e9ce 100644 +--- Makefile.am ++++ Makefile.am +@@ -124,4 +124,4 @@ dist-hook: + echo $(VERSION) > $(distdir)/.tarball-version + + get-trans: +- rsync -Lrtvz translationproject.org::tp/latest/procps/ po ++ rsync -Lrtvz translationproject.org::tp/latest/procps-ng/ po +-- +1.7.9.2 + diff --git a/0051-top-update-copyright-dates-plus-1-preprocessor-chang.patch b/0051-top-update-copyright-dates-plus-1-preprocessor-chang.patch new file mode 100644 index 0000000..019779c --- /dev/null +++ b/0051-top-update-copyright-dates-plus-1-preprocessor-chang.patch @@ -0,0 +1,73 @@ +From e2868da34e6d2085fdafcd9b28cdbf01c69361c5 Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Fri, 25 Apr 2014 00:00:00 -0600 +Subject: [PATCH] top: update copyright dates plus 1 preprocessor change + +Signed-off-by: Jim Warner +--- + top/top.c | 4 ++-- + top/top.h | 2 +- + top/top_nls.c | 2 +- + top/top_nls.h | 2 +- + 4 files changed, 5 insertions(+), 5 deletions(-) + +diff --git top/top.c top/top.c +index cbcb152..0428496 100644 +--- top/top.c ++++ top/top.c +@@ -1,6 +1,6 @@ + /* top.c - Source file: show Linux processes */ + /* +- * Copyright (c) 2002-2013, by: James C. Warner ++ * Copyright (c) 2002-2014, by: James C. Warner + * All rights reserved. 8921 Hilloway Road + * Eden Prairie, Minnesota 55347 USA + * +@@ -3464,7 +3464,7 @@ static void configs_read (void) { + if (2 != fscanf(fp, "%3s\tfieldscur=%79s\n" + , w->rc.winname, w->rc.fieldscur)) + goto default_or_error; +-#if PFLAGSSIZ > 80 ++#if PFLAGSSIZ != 80 + // too bad fscanf is not as flexible with his format string as snprintf + # error Hey, fix the above fscanf 'PFLAGSSIZ' dependency ! + #endif +diff --git top/top.h top/top.h +index 5d1aead..836b9fb 100644 +--- top/top.h ++++ top/top.h +@@ -1,6 +1,6 @@ + /* top.h - Header file: show Linux processes */ + /* +- * Copyright (c) 2002-2013, by: James C. Warner ++ * Copyright (c) 2002-2014, by: James C. Warner + * All rights reserved. 8921 Hilloway Road + * Eden Prairie, Minnesota 55347 USA + * +diff --git top/top_nls.c top/top_nls.c +index b47459a..01c8d1e 100644 +--- top/top_nls.c ++++ top/top_nls.c +@@ -1,6 +1,6 @@ + /* top_nls.c - provide the basis for future nls translations */ + /* +- * Copyright (c) 2011-2013, by: James C. Warner ++ * Copyright (c) 2011-2014, by: James C. Warner + * All rights reserved. 8921 Hilloway Road + * Eden Prairie, Minnesota 55347 USA + * +diff --git top/top_nls.h top/top_nls.h +index 1b6d575..9010263 100644 +--- top/top_nls.h ++++ top/top_nls.h +@@ -1,6 +1,6 @@ + /* top_nls.h - provide the basis for future nls translations */ + /* +- * Copyright (c) 2011-2013, by: James C. Warner ++ * Copyright (c) 2011-2014, by: James C. Warner + * All rights reserved. 8921 Hilloway Road + * Eden Prairie, Minnesota 55347 USA + * +-- +1.7.9.2 + diff --git a/0052-top-refactor-man-document-so-as-to-allow-translation.patch b/0052-top-refactor-man-document-so-as-to-allow-translation.patch new file mode 100644 index 0000000..add74e4 --- /dev/null +++ b/0052-top-refactor-man-document-so-as-to-allow-translation.patch @@ -0,0 +1,464 @@ +From f3e55ee661d54bb667b3c0cf07411094ad7fc980 Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Wed, 23 Apr 2014 00:00:01 -0500 +Subject: [PATCH] top: refactor man document so as to allow translations + +The majority of changes in this commit are intended to +enable translation of top's man page. There were three +kinds of errors as seen by that po4a-updatepo program. + +. a valid but unrecognized request concerning no-break +. an internally defined macro with a groff .de request +. occasional apostrophe at the beginning of some lines + +With respect to the apostrophe, some have been changed +to back-tic since line placement could not be assured. +And other parts were re-flowed to avoid temptations to +escape as \' (technically an acute accent). Of course, +the opening back-tic with closing apostrophe looks odd +when ASCII, but should be rendered correctly as UTF-8. + +It may yet be necessary to change the remaining single +'opening' quotes to back-tics as translation proceeds. +Should that become necessary, I intend to reduce quote +usage to the bare minimum throughout the man document. + +There were also some formatting changes to enhance the +man2html output and then to other formats via htmldoc. +And, I wish to acknowledge that my meager groff skills +do not serve those programs very well at all. In other +words groff yet remains mostly incomprehensible to me. + +Lastly a few content plus copyright updates were made. + +Message(s): +. Unknown macro '.c2 `'. Remove it from the document, or refer to the Locale::Po4a::Man manpage to see how po4a can handle new macros. +. This page defines a new macro with '.de'. Since po4a is not a real groff parser, this is not supported. +. Unknown macro ''real time' scheduling priority.'. Remove it from the document, or refer to the Locale::Po4a::Man manpage to see how po4a can handle new macros. + +Reference(s): +. oriiginal post/patch +http://www.freelists.org/post/procps/Translations-for-man-pages + +Signed-off-by: Jim Warner +--- + top/top.1 | 138 ++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 69 insertions(+), 69 deletions(-) + +diff --git top/top.1 top/top.1 +index f25acff..644ae46 100644 +--- top/top.1 ++++ top/top.1 +@@ -1,7 +1,7 @@ + .ig + . manual page for NEW and IMPROVED linux top + . +-. Copyright (c) 2002-2013, by: James C. Warner ++. Copyright (c) 2002-2014, by: James C. Warner + . All rights reserved. 8921 Hilloway Road + . Eden Prairie, Minnesota 55347 USA + . +@@ -13,14 +13,6 @@ + . + .ll +(\n[half_xtra] + \n[half_xtra]) + . +-\# ** we use single quote char (') a lot, so change the no-break ctrl char +-.c2 ` +-. +-\# Our own Bullet style(s) -------------------------- +-.de jBu +-.IP "o" 3 +-.. +-. + \# Commonly used strings (for consistency) ---------- + \# - our em-dashes + .ds Em \fR\ \-\-\ \fR +@@ -32,11 +24,11 @@ + .ds F \fIOff\fR + .ds O \fIOn\fR + . +-.ds AK asterisk (\'*\') ++.ds AK asterisk (`*') + .ds AM alternate\-display mode + .ds AS auxiliary storage + .ds CF configuration file +-.ds CG \'current\' window/field group ++.ds CG `current' window/field group + .ds CI interactive command + \# - Note: our 'Command Line' used in 2 places + \# ( and managed to fit in an 80x24 terminal ) +@@ -44,7 +36,7 @@ + \-\fBu\fR|\fBU\fR user \-\fBp\fR pid \-\fBo\fR fld \-\fBw\fR [cols] \fR + .ds CO command\-line option + .ds CT command toggle +-.ds CW \'current\' window ++.ds CW `current' window + .ds FG field group + .ds FM full\-screen mode + .ds KA arrow key +@@ -76,7 +68,7 @@ + . + .\" Document ///////////////////////////////////////////////////////////// + .\" ---------------------------------------------------------------------- +-.TH TOP 1 "November 2013" "procps-ng" "User Commands" ++.TH TOP 1 "April 2014" "procps-ng" "User Commands" + .\" ---------------------------------------------------------------------- + + .\" ---------------------------------------------------------------------- +@@ -646,8 +638,8 @@ The process ID (pid) of a task's parent. + .TP 4 + 16.\fB PR \*(Em Priority \fR + The scheduling priority of the task. +-If you see 'rt' in this field, it means the task is running under +-'real time' scheduling priority. ++If you see 'rt' in this field, it means the task is running ++under 'real time' scheduling priority. + + Under linux, real time priority is somewhat misleading since traditionally + the operating itself was not preemptible. +@@ -880,27 +872,27 @@ Entries marked with an asterisk are the currently displayed fields, + screen width permitting. + + .RS +4 +-.jBu ++.IP \(bu 3 + As the on screen instructions indicate, you navigate among the fields with + the\fB Up\fR and\fB Down\fR \*(KAs. + The PgUp, PgDn, Home and End keys can also be used to quickly reach the + first or last available field. + +-.jBu ++.IP \(bu 3 + The\fB Right\fR \*(KA selects a field for repositioning and + the\fB Left\fR \*(KA or the <\fBEnter\fR> key commits that field's + placement. + +-.jBu ++.IP \(bu 3 + The '\fBd\fR' key or the <\fBSpace\fR> bar toggles a field's display + status, and thus the presence or absence of the asterisk. + +-.jBu ++.IP \(bu 3 + The '\fBs\fR' key designates a field as the sort field. + \*(XT 4c. TASK AREA Commands, SORTING for additional information regarding + your selection of a sort field. + +-.jBu ++.IP \(bu 3 + The '\fBa\fR' and '\fBw\fR' keys can be used to cycle through all available + windows and the '\fBq\fR' or <\fBEsc\fR> keys exit Fields Management. + .RS -4 +@@ -982,8 +974,8 @@ those \*(CIs applicable to \*(AM. + Removes restrictions on which tasks are shown. + This command will reverse any 'i' (idle tasks) and 'n' (max tasks) + commands that might be active. +-It also provides for an exit from pid monitoring, 'user' filtering and +-'other' filtering. ++It also provides for an exit from pid monitoring, 'user' filtering ++and 'other' filtering. + See the '\-p' \*(CO for a discussion of PID monitoring, the 'U' or 'u' + \*(CIs for user filtering and the 'O' or 'o' \*(CIs for 'other' filtering. + +@@ -1138,7 +1130,7 @@ This \*(CI can be used to alter the widths of the following fields: + SUID 5 SUSER 8 nsMNT 10 + UID 5 USER 8 nsNET 10 + TTY 8 nsPID 10 +- nsUSR 10 ++ nsUSER 10 + nsUTS 10 + .fi + +@@ -1268,10 +1260,10 @@ The \*(TA \*(CIs are\fB always\fR available in \*(FM. + The \*(TA \*(CIs are\fB never available\fR in \*(AM\fI if\fR the \*(CW's + \*(TD has been toggled \*F (\*(Xt 5. ALTERNATE\-DISPLAY Provisions). + +-.TP 2 ++.PP + .\" .................................................. + .B APPEARANCE\fR of \*(TW +-.PD 0 ++ + .TP 7 + \ \ \ \fBJ\fR\ \ :\fIJustify-Numeric-Columns\fR toggle \fR + Alternates between right-justified (the default) and +@@ -1330,7 +1322,7 @@ the state of the 'x', 'y' or 'b' toggles. + .PP + .\" .................................................. + .B CONTENT\fR of \*(TW +-.PD 0 ++ + .TP 7 + \ \ \ \fBc\fR\ \ :\fICommand-Line/Program-Name\fR toggle \fR + This command will be honored whether or not the 'COMMAND' column +@@ -1400,7 +1392,7 @@ mode in the \*(CW. + .PP + .\" .................................................. + .B SIZE\fR of \*(TW +-.PD 0 ++ + .TP 7 + \ \ \ \fBi\fR\ \ :\fIIdle-Process\fR toggle \fR + Displays all tasks or just active tasks. +@@ -1425,10 +1417,12 @@ already been painted. + + \*(NT If you wish to increase the size of the last visible \*(TD when in \*(AM, + simply decrease the size of the \*(TD(s) above it. ++.PP + +-.TP 2 + .\" .................................................. + .B SORTING\fR of \*(TW ++.PP ++.RS +3 + For compatibility, this \*(We supports most of the former \*(We sort keys. + Since this is primarily a service to former \*(We users, these commands do + not appear on any help screen. +@@ -1462,10 +1456,8 @@ Moves the sort column to the right unless the current sort field is + the last field being displayed. + + .PP +-.in +2 + The following \*(CIs will\fB always\fR be honored whether or not + the current sort field is visible. +-.in + + .TP 7 + \ \ \ \fBf\fR | \fBF\fR\ \ :\fIFields-Management \fR +@@ -1479,10 +1471,9 @@ when running \*(We with column highlighting turned \*F. + Using this \*(CI you can alternate between high-to-low and low-to-high sorts. + + .PP +-.in +2 + \*(NT Field sorting uses internal values, not those in column display. + Thus, the TTY and WCHAN fields will violate strict ASCII collating sequence. +-.in ++.RE + + .\" ...................................................................... + .SS 4d. COLOR Mapping +@@ -1515,6 +1506,7 @@ The Color Mapping screen can also be used to change the \*(CG in + either \*(FM or \*(AM. + Whatever was targeted when 'q' or was pressed will be made current + as you return to the \*(We display. ++.PP + + .\" ---------------------------------------------------------------------- + .SH 5. ALTERNATE\-DISPLAY Provisions +@@ -1537,6 +1529,7 @@ The \*(SA will always exist, even if it's only the message line. + At any given time only\fI one\fR \*(SA can be displayed. + However, depending on your commands, there could be from\fI zero \fR + to\fI four\fR separate \*(TDs currently showing on the screen. ++.PP + + .TP 3 + .B Current Window\fR: +@@ -1578,9 +1571,9 @@ and horizontal scrolling. + + The '+' key does the same for all windows. + The four \*(TDs will reappear, evenly balanced. +-They will also have retained any customizations you had previously applied, +-except for the 'i' (idle tasks), 'n' (max tasks), 'u'/'U' (user filter), +-'o'/'O' (other filter) and scrolling \*(CIs. ++They will also have retained any customizations you had previously ++applied, except for the 'i' (idle tasks), 'n' (max tasks), 'u'/'U' ++(user filter), 'o'/'O' (other filter) and scrolling \*(CIs. + + .TP 7 + *\ \ \fBA\fR\ \ :\fIAlternate-Display-Mode\fR toggle \fR +@@ -1619,9 +1612,9 @@ It does not require that the window name be visible + .IP "*" 3 + The \*(CIs shown with an \*(AK have use beyond \*(AM. + .nf +- \'=', 'A', 'g' are always available +- \'a', 'w' act the same with color mapping +- \ and fields management ++ '=', 'A', 'g' are always available ++ 'a', 'w' act the same with color mapping ++ and fields management + .fi + + .\" ...................................................................... +@@ -1790,28 +1783,31 @@ a mistake, command recall will be your friend. + Remember the Up/Down \*(KAs or their aliases when prompted for input. + + .B Filter Basics +-.IP " . " 6 +-field names are case sensitive and spelled as in the header +-.IP " . " 6 +-selection values need not comprise the full displayed field +-.IP " . " 6 +-a selection is either case insensitive or sensitive to case +-.IP " . " 6 +-the default is inclusion, prepending '!' denotes exclusions +-.IP " . " 6 +-multiple selection criteria can be applied to a \*(TW +-.IP " . " 6 +-inclusion and exclusion criteria can be used simultaneously +-.IP " . " 6 +-the 1 equality and 2 relational filters can be freely mixed +-.IP " . " 6 +-separate unique filters are maintained for each \*(TW +-.RE ++.RS +3 ++.TP 3 ++1. field names are case sensitive and spelled as in the header ++.TP 3 ++2. selection values need not comprise the full displayed field ++.TP 3 ++3. a selection is either case insensitive or sensitive to case ++.TP 3 ++4. the default is inclusion, prepending '!' denotes exclusions ++.TP 3 ++5. multiple selection criteria can be applied to a \*(TW ++.TP 3 ++6. inclusion and exclusion criteria can be used simultaneously ++.TP 3 ++7. the 1 equality and 2 relational filters can be freely mixed ++.TP 3 ++8. separate unique filters are maintained for each \*(TW ++.PP + + If a field is not turned on or is not currently in view, then your selection + criteria will not affect the display. + Later, should a filtered field become visible, the selection criteria will + then be applied. ++.PP ++.RE + + .B Keyboard Summary + .TP 6 +@@ -1838,6 +1834,7 @@ It also has additional impact so please \*(Xt 4a. GLOBAL Commands. + This clears the selection criteria in all windows, assuming you are in \*(AM. + As with the '=' \*(CI, it too has additional consequences so you might wish to + \*(Xt 5b. COMMANDS for Windows. ++.PP + .RE + + .B Input Requirements +@@ -1867,16 +1864,17 @@ with homogeneous data. + When some field's numeric amounts have been subjected to \fIscaling\fR + while others have not, that data is no longer homogeneous. + +-If you establish a relational filter and you \fBhave\fR changed the default +-'Numeric' or 'Character' \fIjustification\fR, that filter is likely to fail. ++If you establish a relational filter and you \fBhave\fR changed the ++default 'Numeric' or 'Character' \fIjustification\fR, that filter is likely to fail. + When a relational filter is applied to a memory field and you \fBhave not\fR + changed the \fIscaling\fR, it may produce misleading results. +-This happens, for example, because '100.0m' (MiB) would appear greater than +-'1.000g' (GiB) when compared as strings. ++This happens, for example, because '100.0m' (MiB) would appear greater ++than '1.000g' (GiB) when compared as strings. + + If your filtered results appear suspect, simply altering justification or + scaling may yet achieve the desired objective. + See the 'j', 'J' and 'e' \*(CIs for additional information. ++.PP + .RE + + .B Potential Problems +@@ -1904,6 +1902,7 @@ So while amounts greater than 9999 exist, they will appear as 2.6m, 197k, etc. + .nf + nMin>9999 ( always a blank \*(TW ) + .fi ++.PP + .RE + + .B Potential Solutions +@@ -1940,13 +1939,14 @@ achieve the failed '9999' objective discussed above. + 'PR>20' + '!PR=-' ( 2 for right result ) + '!nMin=0 ' + '!nMin=1 ' + '!nMin=2 ' + '!nMin=3 ' ... + .fi +-.RE ++.RS -3 + + \*(NT When 'Other Filtering' is active, \*(We turns column highlighting + \*F to prevent false matches on internal non-display escape sequences. + Such highlighting will be restored when a window is no longer subject + to filtering. + \*(XC 'x' \*(CI for additional information on sort column highlighting. ++.RE + + .\" ---------------------------------------------------------------------- + .SH 6. FILES +@@ -1990,7 +1990,7 @@ Here is the general layout: + per ea # line a: winname,fieldscur + window # line b: winflags,sortindx,maxtasks + " # line c: summclr,msgsclr,headclr,taskclr +- global # line 15: fixed-width incr ++ global # line 15: width, memory scaling & zeroes overrides + " # any remaining lines are devoted to the + " # generalized 'inspect' provisions + " # discussed below +@@ -2132,7 +2132,7 @@ the authority. + For these stupid tricks, \*(We needs \*(FM. + .\" ( apparently AM static was a potential concern ) + +-.jBu ++.IP \(bu 3 + The user interface, through prompts and help, intentionally implies + that the delay interval is limited to tenths of a second. + However, you're free to set any desired delay. +@@ -2155,7 +2155,7 @@ Then do the following: + What you'll see is a very busy Linux doing what he's always done for you, + but there was no program available to illustrate this. + +-.jBu ++.IP \(bu 3 + Under an xterm using 'white-on-black' colors, on \*(We's Color Mapping screen + set the task color to black and be sure that task highlighting is set to bold, + not reverse. +@@ -2164,7 +2164,7 @@ Then set the delay interval to around .3 seconds. + After bringing the most active processes into view, what you'll see are + the ghostly images of just the currently running tasks. + +-.jBu ++.IP \(bu 3 + Delete the existing rcfile, or create a new symlink. + Start this new version then type 'T' (a secret key, + \*(Xt 4c. Task Area Commands, SORTING) followed by 'W' and 'q'. +@@ -2180,19 +2180,19 @@ on whether or not \*(We will ever reach the \*(We. + .\" ---------------------------------------------------------------------- + For these stupid tricks, \*(We needs \*(AM. + +-.jBu ++.IP \(bu 3 + With 3 or 4 \*(TDs visible, pick any window other than the last + and turn idle processes \*F using the 'i' \*(CT. + Depending on where you applied 'i', sometimes several \*(TDs are bouncing and + sometimes it's like an accordion, as \*(We tries his best to allocate space. + +-.jBu ++.IP \(bu 3 + Set each window's summary lines differently: one with no memory ('m'); another + with no states ('t'); maybe one with nothing at all, just the message line. + Then hold down 'a' or 'w' and watch a variation on bouncing windows \*(Em + hopping windows. + +-.jBu ++.IP \(bu 3 + Display all 4 windows and for each, in turn, set idle processes to \*F using + the 'i' \*(CT. + You've just entered the "extreme bounce" zone. +@@ -2202,7 +2202,7 @@ You've just entered the "extreme bounce" zone. + .\" ---------------------------------------------------------------------- + This stupid trick also requires \*(AM. + +-.jBu ++.IP \(bu 3 + Display all 4 windows and make sure that 1:Def is the \*(CW. + Then, keep increasing window size with the 'n' \*(CI until all the other + \*(TDs are "pushed out of the nest". +@@ -2219,7 +2219,7 @@ Then ponder this: + This stupid trick works best without \*(AM, since justification is active + on a per window basis. + +-.jBu ++.IP \(bu 3 + Start \*(We and make COMMAND the last (rightmost) column displayed. + If necessary, use the 'c' \*(CT to display command lines and ensure + that forest view mode is active with the 'V' \*(CT. +-- +1.7.9.2 + diff --git a/0053-top-minimize-the-usage-of-apostrophes-in-man-documen.patch b/0053-top-minimize-the-usage-of-apostrophes-in-man-documen.patch new file mode 100644 index 0000000..4daf7b4 --- /dev/null +++ b/0053-top-minimize-the-usage-of-apostrophes-in-man-documen.patch @@ -0,0 +1,614 @@ +From c9f7cc70251f9496c4dc908e26c273eb3a480e11 Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Wed, 23 Apr 2014 00:00:02 -0500 +Subject: [PATCH] top: minimize the usage of apostrophes in man document + +In addition to eliminating numerous single quote usage +this commit also escaped '\' a few overlooked hyphens. + +And some 'unformatted' spacings were adjusted as well. + +Signed-off-by: Jim Warner +--- + top/top.1 | 216 +++++++++++++++++++++++++++++++------------------------------ + 1 file changed, 109 insertions(+), 107 deletions(-) + +diff --git top/top.1 top/top.1 +index 644ae46..d5df21c 100644 +--- top/top.1 ++++ top/top.1 +@@ -149,9 +149,9 @@ The remaining Table of Contents + .\" ...................................................................... + .SS Operation + .\" ---------------------------------------------------------------------- +-When operating \*(We, the two most important keys are the help ('h' or '?') ++When operating \*(We, the two most important keys are the help (h or ?) + key and quit ('q') key. +-Alternatively, you could simply use the traditional interrupt key ('^C') ++Alternatively, you could simply use the traditional interrupt key (^C) + when you're done. + + When started for the first time, you'll be presented with these traditional +@@ -237,31 +237,31 @@ All are explained in detail in the sections that follow. + + .nf + \fIGlobal-defaults\fR +- 'A' - Alt display Off (full-screen) +- * 'd' - Delay time 3.0 seconds +- * 'H' - Threads mode Off (summarize as tasks) +- 'I' - Irix mode On\ \ (no, 'solaris' smp) +- * 'p' - PID monitoring Off (show all processes) +- * 's' - Secure mode Off (unsecured) +- 'B' - Bold enable On\ \ (yes, bold globally) ++ A \- Alt display Off (full-screen) ++ * d \- Delay time 3.0 seconds ++ * H \- Threads mode Off (summarize as tasks) ++ I \- Irix mode On (no, 'solaris' smp) ++ * p \- PID monitoring Off (show all processes) ++ * s \- Secure mode Off (unsecured) ++ B \- Bold enable On (yes, bold globally) + \fISummary-Area-defaults\fR +- 'l' - Load Avg/Uptime On\ \ (thus program name) +- 't' - Task/Cpu states On\ \ (1+1 lines, see '1') +- 'm' - Mem/Swap usage On\ \ (2 lines worth) +- '1' - Single Cpu On\ \ (thus 1 line if smp) ++ l \- Load Avg/Uptime On (thus program name) ++ t \- Task/Cpu states On (1+1 lines, see '1') ++ m \- Mem/Swap usage On (2 lines worth) ++ 1 \- Single Cpu On (thus 1 line if smp) + \fITask-Area-defaults\fR +- 'b' - Bold hilite On\ \ (not 'reverse') +- * 'c' - Command line Off (name, not cmdline) +- * 'i' - Idle tasks On\ \ (show all tasks) +- 'J' - Num align right On\ \ (not left justify) +- 'j' - Str align right Off (not right justify) +- 'R' - Reverse sort On\ \ (pids high-to-low) +- * 'S' - Cumulative time Off (no, dead children) +- * 'u' - User filter Off (show euid only) +- * 'U' - User filter Off (show any uid) +- 'x' - Column hilite Off (no, sort field) +- 'y' - Row hilite On\ \ (yes, running tasks) +- 'z' - color/mono Off (no, colors) ++ b \- Bold hilite On (not 'reverse') ++ * c \- Command line Off (name, not cmdline) ++ * i \- Idle tasks On (show all tasks) ++ J \- Num align right On (not left justify) ++ j \- Str align right Off (not right justify) ++ R \- Reverse sort On (pids high-to-low) ++ * S \- Cumulative time Off (no, dead children) ++ * u \- User filter Off (show euid only) ++ * U \- User filter Off (show any uid) ++ x \- Column hilite Off (no, sort field) ++ y \- Row hilite On (yes, running tasks) ++ z \- color/mono Off (no, colors) + .fi + + .\" ---------------------------------------------------------------------- +@@ -271,7 +271,7 @@ The command-line syntax for \*(We consists of: + + \*(CL + +-The typically mandatory switches ('\-') and even whitespace are completely ++The typically mandatory switch ('\-') and even whitespace are completely + optional. + + .TP 5 +@@ -280,7 +280,7 @@ Show library version and the usage prompt, then quit. + + .TP 5 + \-\fBb\fR\ \ :\fIBatch-mode\fR operation \fR +-Starts \*(We in 'Batch' mode, which could be useful for sending output ++Starts \*(We in Batch mode, which could be useful for sending output + from \*(We to other programs or to a file. + In this mode, \*(We will not accept input and runs until the iterations + limit you've set with the '\-n' \*(CO or until killed. +@@ -300,8 +300,8 @@ Later this can be changed with the 'd' or 's' \*(CIs. + + Fractional seconds are honored, but a negative number is not allowed. + In all cases, however, such changes are prohibited if \*(We is running +-in 'Secure mode', except for root (unless the 's' \*(CO was used). +-For additional information on 'Secure mode' \*(Xt 6a. SYSTEM Configuration File. ++in Secure mode, except for root (unless the 's' \*(CO was used). ++For additional information on Secure mode \*(Xt 6a. SYSTEM Configuration File. + + .TP 5 + \-\fBH\fR\ \ :\fIThreads-mode\fR operation \fR +@@ -365,7 +365,7 @@ This mode is far better controlled through the system \*(CF + .TP 5 + \-\fBS\fR\ \ :\fICumulative-time\fR toggle \fR + Starts \*(We with the last remembered 'S' state reversed. +-When 'Cumulative time' mode is \*O, each process is listed with the \*(Pu ++When Cumulative time mode is \*O, each process is listed with the \*(Pu + time that it and its dead children have used. + \*(XC 'S' \*(CI for additional information regarding this mode. + +@@ -382,7 +382,7 @@ The 'p', 'u' and 'U' \*(COs are mutually exclusive. + + .TP 5 + \-\fBw\fR\ \ :\fIOutput-width-override\fR as:\ \ \fB-w\fR [\fB number\fR ] \fR +-In 'Batch' mode, when used without an argument \*(We will format ++In Batch mode, when used without an argument \*(We will format + output using the COLUMNS= and LINES= environment variables, if set. + Otherwise, width will be fixed at the maximum \*(WX columns. + With an argument, output width can be decreased or increased (up to \*(WX) +@@ -392,10 +392,10 @@ In normal display mode, when used without an argument \*(We will\fI attempt\fR + to format output using the COLUMNS= and LINES= environment variables, if set. + With an argument, output width can only be decreased, not increased. + Whether using environment variables or an argument with \-w, when\fI not\fR +-in 'Batch' mode actual terminal dimensions can never be exceeded. ++in Batch mode actual terminal dimensions can never be exceeded. + + \*(NT Without the use of this \*(CO, output width is always based on the +-terminal at which \*(We was invoked whether or not in 'Batch' mode. ++terminal at which \*(We was invoked whether or not in Batch mode. + + .\" ---------------------------------------------------------------------- + .SH 2. SUMMARY Display +@@ -500,10 +500,10 @@ In a true SMP environment, if a process is multi-threaded and \*(We is + reported. + You toggle Threads mode with the 'H' \*(CI. + +-Also for multi-processor environments, if 'Irix mode' is \*F, \*(We +-will operate in 'Solaris mode' where a task's \*(Pu usage will be ++Also for multi-processor environments, if Irix mode is \*F, \*(We ++will operate in Solaris mode where a task's \*(Pu usage will be + divided by the total number of \*(PUs. +-You toggle 'Irix/Solaris' modes with the 'I' \*(CI. ++You toggle Irix/Solaris modes with the 'I' \*(CI. + + .TP 4 + 2.\fB %MEM \*(Em Memory Usage (RES) \fR +@@ -523,7 +523,7 @@ Many different hierarchies of cgroups can exist simultaneously on a system + and each hierarchy is attached to one or more subsystems. + A subsystem represents a single resource. + +-\*(NT The 'CGROUPS' field, unlike most columns, is not fixed-width. ++\*(NT The CGROUPS field, unlike most columns, is not fixed-width. + When displayed, it plus any other variable width columns will be allocated + all remaining screen width (up to the maximum \*(WX characters). + Even so, such variable width fields could still suffer truncation. +@@ -533,7 +533,7 @@ any truncated data. + .TP 4 + 4.\fB CODE \*(Em Code Size (KiB) \fR + The amount of \*(MP devoted to executable code, also known as +-the 'text resident set' size or TRS. ++the Text Resident Set size or TRS. + + .TP 4 + 5.\fB COMMAND \*(Em Command\fB Name\fR or Command\fB Line \fR +@@ -547,10 +547,10 @@ line (like kernel threads) will be shown with only the program name in + brackets, as in this example: + \fR[kthreadd] + +-This field may also be impacted by the 'forest view' display mode. ++This field may also be impacted by the forest view display mode. + \*(XC 'V' \*(CI for additional information regarding that mode. + +-\*(NT The 'COMMAND' field, unlike most columns, is not fixed-width. ++\*(NT The COMMAND field, unlike most columns, is not fixed-width. + When displayed, it plus any other variable width columns will be allocated + all remaining screen width (up to the maximum \*(WX characters). + Even so, such variable width fields could still suffer truncation. +@@ -562,7 +562,7 @@ any truncated data. + .TP 4 + 6.\fB DATA \*(Em Data + Stack Size (KiB) \fR + The amount of \*(MP devoted to other than executable code, also known as +-the 'data resident set' size or DRS. ++the Data Resident Set size or DRS. + + .TP 4 + 7.\fB ENVIRON \*(Em Environment variables \fR +@@ -571,7 +571,7 @@ respective processes. + These variables will be displayed in their raw native order, not the + sorted order you are accustomed to seeing with an unqualified 'set'. + +-\*(NT The 'ENVIRON' field, unlike most columns, is not fixed-width. ++\*(NT The ENVIRON field, unlike most columns, is not fixed-width. + When displayed, it plus any other variable width columns will be allocated + all remaining screen width (up to the maximum \*(WX characters). + Even so, such variable width fields could still suffer truncation. +@@ -624,7 +624,7 @@ member of a process group, called the process group leader. + 14.\fB PID \*(Em Process Id \fR + The task's unique process ID, which periodically wraps, though never + restarting at zero. +-In kernel terms, it is a dispatchable entity defined by a 'task_struct'. ++In kernel terms, it is a dispatchable entity defined by a task_struct. + + This value may also be used as: a process group ID (\*(Xa PGRP); + a session ID for the session leader (\*(Xa SID); +@@ -639,7 +639,7 @@ The process ID (pid) of a task's parent. + 16.\fB PR \*(Em Priority \fR + The scheduling priority of the task. + If you see 'rt' in this field, it means the task is running +-under 'real time' scheduling priority. ++under real time scheduling priority. + + Under linux, real time priority is somewhat misleading since traditionally + the operating itself was not preemptible. +@@ -666,7 +666,7 @@ The status of the task which can be one of: + \fBT\fR = traced or stopped + \fBZ\fR = zombie + +-Tasks shown as running should be more properly thought of as 'ready to run' ++Tasks shown as running should be more properly thought of as ready to run + \*(Em their task_struct is simply represented on the Linux run-queue. + Even without a true SMP machine, you may see numerous tasks in this state + depending on \*(We's delay interval and nice value. +@@ -697,7 +697,7 @@ The IDs of any supplementary group(s) established at login or + inherited from a task's parent. + They are displayed in a comma delimited list. + +-\*(NT The 'SUPGIDS' field, unlike most columns, is not fixed-width. ++\*(NT The SUPGIDS field, unlike most columns, is not fixed-width. + When displayed, it plus any other variable width columns will be allocated + all remaining screen width (up to the maximum \*(WX characters). + Even so, such variable width fields could still suffer truncation. +@@ -710,7 +710,7 @@ The names of any supplementary group(s) established at login or + inherited from a task's parent. + They are displayed in a comma delimited list. + +-\*(NT The 'SUPGRPS' field, unlike most columns, is not fixed-width. ++\*(NT The SUPGRPS field, unlike most columns, is not fixed-width. + When displayed, it plus any other variable width columns will be allocated + all remaining screen width (up to the maximum \*(WX characters). + Even so, such variable width fields could still suffer truncation. +@@ -729,19 +729,19 @@ The non-resident portion of a task's address space. + 28.\fB TGID \*(Em Thread Group Id \fR + The ID of the thread group to which a task belongs. + It is the PID of the thread group leader. +-In kernel terms, it represents those tasks that share an 'mm_struct'. ++In kernel terms, it represents those tasks that share an mm_struct. + + .TP 4 + 29.\fB TIME \*(Em \*(PU Time \fR + Total \*(PU time the task has used since it started. +-When 'Cumulative mode' is \*O, each process is listed with the \*(Pu ++When Cumulative mode is \*O, each process is listed with the \*(Pu + time that it and its dead children have used. +-You toggle 'Cumulative mode' with 'S', which is both a \*(CO and an \*(CI. ++You toggle Cumulative mode with 'S', which is both a \*(CO and an \*(CI. + \*(XC 'S' \*(CI for additional information regarding this mode. + + .TP 4 + 30.\fB TIME+ \*(Em \*(PU Time, hundredths \fR +-The same as 'TIME', but reflecting more granularity through hundredths ++The same as TIME, but reflecting more granularity through hundredths + of a second. + + .TP 4 +@@ -780,7 +780,7 @@ swapped out and pages that have been mapped but not used. + + .TP 4 + 37.\fB WCHAN \*(Em Sleeping in Function \fR +-Depending on the availability of the kernel link map ('System.map'), this ++Depending on the availability of the kernel link map (System.map), this + field will show the name or the address of the kernel function in which the + task is currently sleeping. + Running tasks will display a dash ('\-') in this column. +@@ -931,9 +931,9 @@ depending on the context in which they are issued. + Size: #, i, n + Sorting: <, >, f, F, R + 4d.\fI Color-Mapping \fR +- , a, B, b, H, M, q, S, T, w, z, 0 - 7 ++ , a, B, b, H, M, q, S, T, w, z, 0 \- 7 + 5b.\fI Commands-for-Windows \fR +- -, _, =, +, A, a, g, G, w ++ \-, _, =, +, A, a, g, G, w + 5c.\fI Scrolling-a-Window \fR + C, Up, Dn, Left, Right, PgUp, PgDn, Home, End + 5d.\fI Searching-in-a-Window \fR +@@ -945,7 +945,7 @@ depending on the context in which they are issued. + .\" ---------------------------------------------------------------------- + The global \*(CIs are\fB always\fR available\fR in both \*(FM and \*(AM. + However, some of these \*(CIs are\fB not available\fR when running +-in 'Secure mode'. ++in Secure mode. + + If you wish to know in advance whether or not your \*(We has been + secured, simply ask for help and view the system summary on the second +@@ -974,10 +974,10 @@ those \*(CIs applicable to \*(AM. + Removes restrictions on which tasks are shown. + This command will reverse any 'i' (idle tasks) and 'n' (max tasks) + commands that might be active. +-It also provides for an exit from pid monitoring, 'user' filtering +-and 'other' filtering. ++It also provides for an exit from PID monitoring, User filtering ++and Other filtering. + See the '\-p' \*(CO for a discussion of PID monitoring, the 'U' or 'u' +-\*(CIs for user filtering and the 'O' or 'o' \*(CIs for 'other' filtering. ++\*(CIs for User filtering and the 'O' or 'o' \*(CIs for Other filtering. + + Additionally, any window that has been scrolled will be reset with + this command. +@@ -1000,7 +1000,7 @@ into \*(CWs and \*(FGs. + + .TP 7 + \ \ \ \fBB\fR\ \ :\fIBold-Disable/Enable\fR toggle \fR +-This command will influence use of the 'bold' terminfo capability and ++This command will influence use of the bold terminfo capability and + alters\fB both\fR the \*(SA and \*(TA for the \*(CW. + While it is intended primarily for use with dumb terminals, it can be + applied anytime. +@@ -1062,7 +1062,7 @@ Otherwise, \*(We displays a summation of all threads in each process. + + .TP 7 + \ \ \ \fBI\fR\ \ :\fIIrix/Solaris-Mode\fR toggle \fR +-When operating in 'Solaris mode' ('I' toggled \*F), a task's \*(Pu usage ++When operating in Solaris mode ('I' toggled \*F), a task's \*(Pu usage + will be divided by the total number of \*(PUs. + After issuing this command, you'll be told the new state of this toggle. + +@@ -1167,13 +1167,13 @@ summarized here for future reference. + + .nf + \fI key function \fR +- '=' alternate status\-line, file or pipeline +- '/' find, equivalent to 'L' locate +- 'n' find next, equivalent to '&' locate next ++ = alternate status\-line, file or pipeline ++ / find, equivalent to 'L' locate ++ n find next, equivalent to '&' locate next + scroll down, equivalent to +- 'b' scroll up, equivalent to +- 'g' first line, equivalent to +- 'G' last line, equivalent to ++ b scroll up, equivalent to ++ g first line, equivalent to ++ G last line, equivalent to + .fi + + .TP 7 +@@ -1183,7 +1183,7 @@ colors for the \*(CW, or for all windows. + For details regarding this \*(CI \*(Xt 4d. COLOR Mapping. + + .IP "*" 3 +-The commands shown with an \*(AK are not available in 'Secure mode', ++The commands shown with an \*(AK are not available in Secure mode, + nor will they be shown on the level-1 help screen. + + .\" ...................................................................... +@@ -1215,7 +1215,7 @@ of the '1', '2' or '3' \*(CTs and whether or not \*(We is running under + true SMP. + + This portion of the \*(SA is also influenced by the 'H' \*(CI toggle, +-as reflected in the total label which shows either 'Tasks' or 'Threads'. ++as reflected in the total label which shows either Tasks or Threads. + + .TP 7 + \ \ \ \fBm\fR\ \ :\fIMemory/Swap-Usage\fR toggle \fR +@@ -1298,7 +1298,7 @@ The sort field might\fI not\fR be visible because: + 1) there is insufficient\fI Screen Width \fR + 2) the 'f' \*(CI turned it \*F + +-\*(NT Whenever 'Searching' and/or 'Other Filtering' is active in a window, ++\*(NT Whenever Searching and/or Other Filtering is active in a window, + column highlighting is temporarily disabled. + \*(XC notes at the end of topics 5d. SEARCHING and 5e. FILTERING for an + explanation why. +@@ -1325,7 +1325,7 @@ the state of the 'x', 'y' or 'b' toggles. + + .TP 7 + \ \ \ \fBc\fR\ \ :\fICommand-Line/Program-Name\fR toggle \fR +-This command will be honored whether or not the 'COMMAND' column ++This command will be honored whether or not the COMMAND column + is currently visible. + Later, should that field come into view, the change you applied will be seen. + +@@ -1348,7 +1348,7 @@ related \*(CIs. + + .TP 7 + \ \ \ \fBS\fR\ \ :\fICumulative-Time-Mode\fR toggle \fR +-When 'Cumulative mode' is \*O, each process is listed with the \*(Pu ++When Cumulative mode is \*O, each process is listed with the \*(Pu + time that it and its dead children have used. + + When \*F, programs that fork into many separate tasks will appear +@@ -1359,13 +1359,13 @@ Experiment with two \*(TWs sharing the same sort field but with different 'S' + states and see which representation you prefer. + + After issuing this command, you'll be informed of the new state of this toggle. +-If you wish to know in advance whether or not 'Cumulative mode' is in ++If you wish to know in advance whether or not Cumulative mode is in + effect, simply ask for help and view the window summary on the second line. + + .TP 7 + \ \ \ \fBu\fR | \fBU\fR\ \ :\fIShow-Specific-User-Only \fR + You will be prompted for the\fB uid\fR or\fB name\fR of the user to display. +-The '\-u' option matches on \fB effective\fR user whereas the '\-U' option ++The \-u option matches on \fB effective\fR user whereas the \-U option + matches on\fB any\fR user (real, effective, saved, or filesystem). + + Thereafter, in that \*(TW only matching users will be shown, or possibly +@@ -1427,12 +1427,12 @@ For compatibility, this \*(We supports most of the former \*(We sort keys. + Since this is primarily a service to former \*(We users, these commands do + not appear on any help screen. + .nf +- \fI command sorted-field supported \fR +- A start time (non-display) \fB No \fR +- M %MEM Yes +- N PID Yes +- P %CPU Yes +- T TIME+ Yes ++ \fI command sorted-field supported \fR ++ A start time (non-display) \fB No \fR ++ M %MEM Yes ++ N PID Yes ++ P %CPU Yes ++ T TIME+ Yes + .fi + + Before using any of the following sort provisions, \*(We suggests that you +@@ -1442,8 +1442,8 @@ That will help ensure that the actual sort environment matches your intent. + The following \*(CIs will\fB only\fR be honored when the current sort field + is\fB visible\fR. + The sort field might\fI not\fR be visible because: +- 1) there is insufficient\fI Screen Width \fR +- 2) the 'f' \*(CI turned it \*F ++ 1) there is insufficient\fI Screen Width \fR ++ 2) the 'f' \*(CI turned it \*F + + .TP 7 + \ \ \ \fB<\fR\ \ :\fIMove-Sort-Field-Left \fR +@@ -1488,13 +1488,13 @@ The following \*(CIs are available. + \fB4\fR upper case letters to select a\fB target \fR + \fB8\fR numbers to select a\fB color \fR + normal toggles available \fR +- 'B' :bold disable/enable +- 'b' :running tasks "bold"/reverse +- 'z' :color/mono ++ B :bold disable/enable ++ b :running tasks "bold"/reverse ++ z :color/mono + other commands available \fR +- 'a'/'w' :apply, then go to next/prior ++ a/w :apply, then go to next/prior + :apply and exit +- 'q' :abandon current changes and exit ++ q :abandon current changes and exit + .fi + + If you use 'a' or 'w' to cycle the targeted window, you will +@@ -1563,8 +1563,8 @@ as the only display element. + .TP 7 + *\ \ \fB=\fR | \fB+\fR\ \ :\fIEqualize-(reinitialize)-Window(s) \fR + The '=' key forces the \*(CW's \*(TD to be visible. +-It also reverses any 'i' (idle tasks), 'n' (max tasks), 'u'/'U' (user filter) +-and 'o'/'O' (other filter) commands that might be active. ++It also reverses any 'i' (idle tasks), 'n' (max tasks), 'u/U' (user filter) ++and 'o/O' (other filter) commands that might be active. + Also, if the window had been scrolled, it will be reset with this command. + \*(XT 5c. SCROLLING a Window for additional information regarding vertical + and horizontal scrolling. +@@ -1572,8 +1572,8 @@ and horizontal scrolling. + The '+' key does the same for all windows. + The four \*(TDs will reappear, evenly balanced. + They will also have retained any customizations you had previously +-applied, except for the 'i' (idle tasks), 'n' (max tasks), 'u'/'U' +-(user filter), 'o'/'O' (other filter) and scrolling \*(CIs. ++applied, except for the 'i' (idle tasks), 'n' (max tasks), 'u/U' ++(user filter), 'o/O' (other filter) and scrolling \*(CIs. + + .TP 7 + *\ \ \fBA\fR\ \ :\fIAlternate-Display-Mode\fR toggle \fR +@@ -1587,7 +1587,7 @@ chosen to make visible. + *\ \ \fBa\fR | \fBw\fR\ \ :\fINext-Window-Forward/Backward \fR + This will change the \*(CW, which in turn changes the window to which + commands are directed. +-These keys act in a circular fashion so you can reach any desired \*(CW ++These keys act in a circular fashion so you can reach any desired window + using either key. + + Assuming the window name is visible (you have not toggled 'l' \*F), +@@ -1612,9 +1612,9 @@ It does not require that the window name be visible + .IP "*" 3 + The \*(CIs shown with an \*(AK have use beyond \*(AM. + .nf +- '=', 'A', 'g' are always available +- 'a', 'w' act the same with color mapping +- and fields management ++ =, A, g are always available ++ a, w act the same with color mapping ++ and fields management + .fi + + .\" ...................................................................... +@@ -1765,15 +1765,16 @@ could yet produce a successful '&' search. + The above \*(CIs are\fB always\fR available in \*(FM but\fB never\fR + available in \*(AM if the \*(CW's \*(TD has been toggled \*F. + +-\*(NT Whenever a search key is typed, \*(We will turn column highlighting +-\*F to prevent false matches on internal non-display escape sequences. ++\*(NT Whenever a Search is active in a window, \*(We will turn ++column highlighting \*F to prevent false matches on internal non-display ++escape sequences. + Such highlighting will be restored when a window's search string is empty. + \*(XC 'x' \*(CI for additional information on sort column highlighting. + + .\" ...................................................................... + .SS 5e. FILTERING in a Window + .\" ---------------------------------------------------------------------- +-You can use the 'Other Filter' feature to establish selection criteria which ++You can use this Other Filter feature to establish selection criteria which + will then determine which tasks are shown in the \*(CW. + + Establishing a filter requires: 1) a field name; 2) an operator; and +@@ -1865,7 +1866,7 @@ When some field's numeric amounts have been subjected to \fIscaling\fR + while others have not, that data is no longer homogeneous. + + If you establish a relational filter and you \fBhave\fR changed the +-default 'Numeric' or 'Character' \fIjustification\fR, that filter is likely to fail. ++default Numeric or Character \fIjustification\fR, that filter is likely to fail. + When a relational filter is applied to a memory field and you \fBhave not\fR + changed the \fIscaling\fR, it may produce misleading results. + This happens, for example, because '100.0m' (MiB) would appear greater +@@ -1908,7 +1909,7 @@ So while amounts greater than 9999 exist, they will appear as 2.6m, 197k, etc. + .B Potential Solutions + .RS +3 + .P +-These examples illustrate how 'Other Filtering' can be creatively ++These examples illustrate how Other Filtering can be creatively + applied to achieve almost any desired result. + Single quotes are sometimes shown to delimit the spaces which are part of + a filter or to represent a request for status (^O) accurately. +@@ -1941,8 +1942,9 @@ achieve the failed '9999' objective discussed above. + .fi + .RS -3 + +-\*(NT When 'Other Filtering' is active, \*(We turns column highlighting +-\*F to prevent false matches on internal non-display escape sequences. ++\*(NT Whenever Other Filtering is active in a window, \*(We will turn ++column highlighting \*F to prevent false matches on internal non-display ++escape sequences. + Such highlighting will be restored when a window is no longer subject + to filtering. + \*(XC 'x' \*(CI for additional information on sort column highlighting. +@@ -1954,7 +1956,7 @@ to filtering. + .\" ...................................................................... + .SS 6a. SYSTEM Configuration File + .\" ---------------------------------------------------------------------- +-The presence of this file will influence which version of the 'help' screen ++The presence of this file will influence which version of the help screen + is shown to an ordinary user. + More importantly, it will limit what ordinary users are allowed + to do when \*(We is running. +@@ -1973,8 +1975,8 @@ It must have only two lines. + + Here is an example of the contents of\fI /etc/toprc\fR: + .nf +- s # line 1: 'secure' mode switch +- 5.0 # line 2: 'delay'\ \ interval in seconds ++ s # line 1: secure mode switch ++ 5.0 # line 2: delay interval in seconds + .fi + + .\" ...................................................................... +@@ -1992,7 +1994,7 @@ Here is the general layout: + " # line c: summclr,msgsclr,headclr,taskclr + global # line 15: width, memory scaling & zeroes overrides + " # any remaining lines are devoted to the +- " # generalized 'inspect' provisions ++ " # generalized inspect provisions + " # discussed below + .fi + +@@ -2087,7 +2089,7 @@ If you want a truer representation, any embedded tabs should be expanded. + # next would have contained '\\t' ... + # file ^I ^I /proc/%d/status + # but this will eliminate embedded '\\t' ... +- pipe ^I ^I cat /proc/%d/status | expand - ++ pipe ^I ^I cat /proc/%d/status | expand \- + .fi + + The above example takes what could have been a 'file' entry but employs +@@ -2121,7 +2123,7 @@ In that way, many more choices can be made visible. + .\" ---------------------------------------------------------------------- + .SH 7. STUPID TRICKS Sampler + .\" ---------------------------------------------------------------------- +-Many of these 'tricks' work best when you give \*(We a scheduling boost. ++Many of these tricks work best when you give \*(We a scheduling boost. + So plan on starting him with a nice value of \-10, assuming you've got + the authority. + +-- +1.7.9.2 + diff --git a/0054-top-swap-opening-quotes-for-back-tics-in-man-documen.patch b/0054-top-swap-opening-quotes-for-back-tics-in-man-documen.patch new file mode 100644 index 0000000..dc35503 --- /dev/null +++ b/0054-top-swap-opening-quotes-for-back-tics-in-man-documen.patch @@ -0,0 +1,1056 @@ +From 2f4f175c59bfa3989d4f40d549a5be808bc5ceca Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Wed, 23 Apr 2014 00:00:03 -0500 +Subject: [PATCH] top: swap opening quotes for back-tics in man document + +Signed-off-by: Jim Warner +--- + top/top.1 | 312 ++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 156 insertions(+), 156 deletions(-) + +diff --git top/top.1 top/top.1 +index d5df21c..c15a871 100644 +--- top/top.1 ++++ top/top.1 +@@ -82,7 +82,7 @@ top \- display Linux processes + \*(WE \*(CL + + +-The traditional switches '\-' and whitespace are optional. ++The traditional switches `\-' and whitespace are optional. + + .\" ---------------------------------------------------------------------- + .SH DESCRIPTION +@@ -240,17 +240,17 @@ All are explained in detail in the sections that follow. + A \- Alt display Off (full-screen) + * d \- Delay time 3.0 seconds + * H \- Threads mode Off (summarize as tasks) +- I \- Irix mode On (no, 'solaris' smp) ++ I \- Irix mode On (no, `solaris' smp) + * p \- PID monitoring Off (show all processes) + * s \- Secure mode Off (unsecured) + B \- Bold enable On (yes, bold globally) + \fISummary-Area-defaults\fR + l \- Load Avg/Uptime On (thus program name) +- t \- Task/Cpu states On (1+1 lines, see '1') ++ t \- Task/Cpu states On (1+1 lines, see `1') + m \- Mem/Swap usage On (2 lines worth) + 1 \- Single Cpu On (thus 1 line if smp) + \fITask-Area-defaults\fR +- b \- Bold hilite On (not 'reverse') ++ b \- Bold hilite On (not `reverse') + * c \- Command line Off (name, not cmdline) + * i \- Idle tasks On (show all tasks) + J \- Num align right On (not left justify) +@@ -283,35 +283,35 @@ Show library version and the usage prompt, then quit. + Starts \*(We in Batch mode, which could be useful for sending output + from \*(We to other programs or to a file. + In this mode, \*(We will not accept input and runs until the iterations +-limit you've set with the '\-n' \*(CO or until killed. ++limit you've set with the `\-n' \*(CO or until killed. + + .TP 5 + \-\fBc\fR\ \ :\fICommand-line/Program-name\fR toggle \fR +-Starts \*(We with the last remembered 'c' state reversed. ++Starts \*(We with the last remembered `c' state reversed. + Thus, if \*(We was displaying command lines, now that field will show program + names, and visa versa. +-\*(XC 'c' \*(CI for additional information. ++\*(XC `c' \*(CI for additional information. + + .TP 5 + \-\fBd\fR\ \ :\fIDelay-time\fR interval as:\ \ \fB-d ss.t\fR (\fIsecs\fR.\fItenths\fR) \fR + Specifies the delay between screen updates, and overrides the corresponding + value in one's personal \*(CF or the startup default. +-Later this can be changed with the 'd' or 's' \*(CIs. ++Later this can be changed with the `d' or `s' \*(CIs. + + Fractional seconds are honored, but a negative number is not allowed. + In all cases, however, such changes are prohibited if \*(We is running +-in Secure mode, except for root (unless the 's' \*(CO was used). ++in Secure mode, except for root (unless the `s' \*(CO was used). + For additional information on Secure mode \*(Xt 6a. SYSTEM Configuration File. + + .TP 5 + \-\fBH\fR\ \ :\fIThreads-mode\fR operation \fR + Instructs \*(We to display individual threads. + Without this \*(CO a summation of all threads in each process is shown. +-Later this can be changed with the 'H' \*(CI. ++Later this can be changed with the `H' \*(CI. + + .TP 5 + \-\fBi\fR\ \ :\fIIdle-process\fR toggle \fR +-Starts \*(We with the last remembered 'i' state reversed. ++Starts \*(We with the last remembered `i' state reversed. + When this toggle is \*F, tasks that have not used any \*(PU since the + last update will not be displayed. + For additional information regarding this toggle +@@ -326,8 +326,8 @@ produce before ending. + \-\fBo\fR\ \ :\fIOverride-sort-field\fR as:\fB\ \ \-o fieldname \fR + Specifies the name of the field on which tasks will be sorted, independent + of what is reflected in the configuration file. +-You can prepend a '+' or '\-' to the field name to also override the sort direction. +-A leading '+' will force sorting high to low, whereas a '\-' will ensure a low to high ++You can prepend a `+' or `\-' to the field name to also override the sort direction. ++A leading `+' will force sorting high to low, whereas a `\-' will ensure a low to high + ordering. + + This option exists primarily to support automated/scripted batch mode +@@ -352,9 +352,9 @@ itself once it is running. + + This is a \*(CO only and should you wish to return to normal operation, + it is not necessary to quit and restart \*(We \*(Em just issue any +-of these \*(CIs: '=', 'u' or 'U'. ++of these \*(CIs: `=', `u' or `U'. + +-The 'p', 'u' and 'U' \*(COs are mutually exclusive. ++The `p', `u' and `U' \*(COs are mutually exclusive. + + .TP 5 + \-\fBs\fR\ \ :\fISecure-mode\fR operation \fR +@@ -364,21 +364,21 @@ This mode is far better controlled through the system \*(CF + + .TP 5 + \-\fBS\fR\ \ :\fICumulative-time\fR toggle \fR +-Starts \*(We with the last remembered 'S' state reversed. ++Starts \*(We with the last remembered `S' state reversed. + When Cumulative time mode is \*O, each process is listed with the \*(Pu + time that it and its dead children have used. +-\*(XC 'S' \*(CI for additional information regarding this mode. ++\*(XC `S' \*(CI for additional information regarding this mode. + + .TP 5 + \-\fBu\fR | \-\fBU\fR\ \ :\fIUser-filter-mode\fR as:\ \ \fB-u\fR | \fB-U number\fR or\fB name \fR + Display only processes with a user id or user name matching that given. +-The '\-u' option matches on \fI effective\fR user whereas the '\-U' option ++The `\-u' option matches on \fI effective\fR user whereas the `\-U' option + matches on\fI any\fR user (real, effective, saved, or filesystem). + + Prepending an exclamation point ('!') to the user id or name instructs top + to display only processes with users not matching the one provided. + +-The 'p', 'u' and 'U' \*(COs are mutually exclusive. ++The `p', `u' and `U' \*(COs are mutually exclusive. + + .TP 5 + \-\fBw\fR\ \ :\fIOutput-width-override\fR as:\ \ \fB-w\fR [\fB number\fR ] \fR +@@ -448,7 +448,7 @@ kernel versions are shown first. + .\" ---------------------------------------------------------------------- + This portion consists of two lines which may express values in kibibytes (KiB) + through exbibytes (EiB) depending on the scaling factor enforced +-with the 'E' \*(CI. ++with the `E' \*(CI. + + Line 1 reflects \*(MP, classified as: + .nf +@@ -479,16 +479,16 @@ This table may help in interpreting the scaled values displayed: + Listed below are \*(We's available process fields (columns). + They are shown in strict ascii alphabetical order. + You may customize their position and whether or not they are displayable +-with the 'f' or 'F' (Fields Management) \*(CIs. ++with the `f' or `F' (Fields Management) \*(CIs. + + Any field is selectable as the sort field, and you control whether they + are sorted high-to-low or low-to-high. + For additional information on sort provisions + \*(Xt 4c. TASK AREA Commands, SORTING. + +-The fields related to \*(MP or \*(MV reference '(KiB)' as the default, ++The fields related to \*(MP or \*(MV reference `(KiB)' as the default, + unsuffixed display mode. +-Such fields can, however, be scaled differently via the 'e' \*(CI. ++Such fields can, however, be scaled differently via the `e' \*(CI. + + .TP 4 + 1.\fB %CPU \*(Em \*(PU Usage \fR +@@ -498,12 +498,12 @@ expressed as a percentage of total \*(PU time. + In a true SMP environment, if a process is multi-threaded and \*(We is + \fInot\fR operating in Threads mode, amounts greater than 100% may be + reported. +-You toggle Threads mode with the 'H' \*(CI. ++You toggle Threads mode with the `H' \*(CI. + + Also for multi-processor environments, if Irix mode is \*F, \*(We + will operate in Solaris mode where a task's \*(Pu usage will be + divided by the total number of \*(PUs. +-You toggle Irix/Solaris modes with the 'I' \*(CI. ++You toggle Irix/Solaris modes with the `I' \*(CI. + + .TP 4 + 2.\fB %MEM \*(Em Memory Usage (RES) \fR +@@ -512,7 +512,7 @@ A task's currently used share of available \*(MP. + .TP 4 + 3.\fB CGROUPS \*(Em Control Groups \fR + The names of the control group(s) to which a process belongs, +-or '\-' if not applicable for that process. ++or `\-' if not applicable for that process. + + Control Groups provide for allocating resources (cpu, memory, network + bandwidth, etc.) among installation-defined groups of processes. +@@ -539,7 +539,7 @@ the Text Resident Set size or TRS. + 5.\fB COMMAND \*(Em Command\fB Name\fR or Command\fB Line \fR + Display the command line used to start a task or the name of the associated + program. +-You toggle between command\fI line\fR and\fI name\fR with 'c', which is both ++You toggle between command\fI line\fR and\fI name\fR with `c', which is both + a \*(CO and an \*(CI. + + When you've chosen to display command lines, processes without a command +@@ -548,14 +548,14 @@ brackets, as in this example: + \fR[kthreadd] + + This field may also be impacted by the forest view display mode. +-\*(XC 'V' \*(CI for additional information regarding that mode. ++\*(XC `V' \*(CI for additional information regarding that mode. + + \*(NT The COMMAND field, unlike most columns, is not fixed-width. + When displayed, it plus any other variable width columns will be allocated + all remaining screen width (up to the maximum \*(WX characters). + Even so, such variable width fields could still suffer truncation. + This is especially true for this field when command lines are being +-displayed (the 'c' \*(CI.) ++displayed (the `c' \*(CI.) + \*(XT 5c. SCROLLING a Window for additional information on accessing + any truncated data. + +@@ -569,7 +569,7 @@ the Data Resident Set size or DRS. + Display all of the environment variables, if any, as seen by the + respective processes. + These variables will be displayed in their raw native order, not the +-sorted order you are accustomed to seeing with an unqualified 'set'. ++sorted order you are accustomed to seeing with an unqualified `set'. + + \*(NT The ENVIRON field, unlike most columns, is not fixed-width. + When displayed, it plus any other variable width columns will be allocated +@@ -638,7 +638,7 @@ The process ID (pid) of a task's parent. + .TP 4 + 16.\fB PR \*(Em Priority \fR + The scheduling priority of the task. +-If you see 'rt' in this field, it means the task is running ++If you see `rt' in this field, it means the task is running + under real time scheduling priority. + + Under linux, real time priority is somewhat misleading since traditionally +@@ -736,8 +736,8 @@ In kernel terms, it represents those tasks that share an mm_struct. + Total \*(PU time the task has used since it started. + When Cumulative mode is \*O, each process is listed with the \*(Pu + time that it and its dead children have used. +-You toggle Cumulative mode with 'S', which is both a \*(CO and an \*(CI. +-\*(XC 'S' \*(CI for additional information regarding this mode. ++You toggle Cumulative mode with `S', which is both a \*(CO and an \*(CI. ++\*(XC `S' \*(CI for additional information regarding this mode. + + .TP 4 + 30.\fB TIME+ \*(Em \*(PU Time, hundredths \fR +@@ -757,7 +757,7 @@ The name of the controlling terminal. + This is usually the device (serial port, pty, etc.) from which the + process was started, and which it uses for input or output. + However, a task need not be associated with a terminal, in which case +-you'll see '?' displayed. ++you'll see `?' displayed. + + .TP 4 + 33.\fB UID \*(Em User Id \fR +@@ -836,7 +836,7 @@ IP addresses, IP routing, port numbers, etc. + 45.\fB nsPID \*(Em PID namespace \fR + The Inode of the namespace used to isolate process ID numbers + meaning they need not remain unique. +-Thus, each such namespace could have its own 'init' (PID #1) to ++Thus, each such namespace could have its own `init' (PID #1) to + manage various initialization tasks and reap orphaned child processes. + + .TP 4 +@@ -865,7 +865,7 @@ last update (see nMin). + .\" ...................................................................... + .SS 3b. MANAGING Fields + .\" ---------------------------------------------------------------------- +-After pressing the \*(CI 'f' or 'F' (Fields Management) you will be presented ++After pressing the \*(CI `f' or `F' (Fields Management) you will be presented + with a screen showing: 1) the \*(CW name; 2) the designated sort field; + 3) all fields in their current order along with descriptions. + Entries marked with an asterisk are the currently displayed fields, +@@ -884,25 +884,25 @@ the\fB Left\fR \*(KA or the <\fBEnter\fR> key commits that field's + placement. + + .IP \(bu 3 +-The '\fBd\fR' key or the <\fBSpace\fR> bar toggles a field's display ++The `\fBd\fR' key or the <\fBSpace\fR> bar toggles a field's display + status, and thus the presence or absence of the asterisk. + + .IP \(bu 3 +-The '\fBs\fR' key designates a field as the sort field. ++The `\fBs\fR' key designates a field as the sort field. + \*(XT 4c. TASK AREA Commands, SORTING for additional information regarding + your selection of a sort field. + + .IP \(bu 3 +-The '\fBa\fR' and '\fBw\fR' keys can be used to cycle through all available +-windows and the '\fBq\fR' or <\fBEsc\fR> keys exit Fields Management. ++The `\fBa\fR' and `\fBw\fR' keys can be used to cycle through all available ++windows and the `\fBq\fR' or <\fBEsc\fR> keys exit Fields Management. + .RS -4 + + .PP + The Fields Management screen can also be used to change the \*(CG in + either \*(FM or \*(AM. +-Whatever was targeted when 'q' or was pressed will be made current ++Whatever was targeted when `q' or was pressed will be made current + as you return to the \*(We display. +-\*(XT 5. ALTERNATE\-DISPLAY Provisions and the 'g' \*(CI for insight ++\*(XT 5. ALTERNATE\-DISPLAY Provisions and the `g' \*(CI for insight + into \*(CWs and \*(FGs. + + .PP +@@ -966,18 +966,18 @@ There are two help levels available. + The first will provide a reminder of all the basic \*(CIs. + If \*(We is\fI secured\fR, that screen will be abbreviated. + +-Typing 'h' or '?' on that help screen will take you to help for ++Typing `h' or `?' on that help screen will take you to help for + those \*(CIs applicable to \*(AM. + + .TP 7 + \ \ \ \fB=\fR\ \ :\fIExit-Task-Limits \fR + Removes restrictions on which tasks are shown. +-This command will reverse any 'i' (idle tasks) and 'n' (max tasks) ++This command will reverse any `i' (idle tasks) and `n' (max tasks) + commands that might be active. + It also provides for an exit from PID monitoring, User filtering + and Other filtering. +-See the '\-p' \*(CO for a discussion of PID monitoring, the 'U' or 'u' +-\*(CIs for User filtering and the 'O' or 'o' \*(CIs for Other filtering. ++See the `\-p' \*(CO for a discussion of PID monitoring, the `U' or `u' ++\*(CIs for User filtering and the `O' or `o' \*(CIs for Other filtering. + + Additionally, any window that has been scrolled will be reset with + this command. +@@ -995,7 +995,7 @@ Fields like UID, GID, NI, PR or P are not affected by this toggle. + .TP 7 + \ \ \ \fBA\fR\ \ :\fIAlternate-Display-Mode\fR toggle \fR + This command will switch between \*(FM and \*(AM. +-\*(XT 5. ALTERNATE\-DISPLAY Provisions and the 'g' \*(CI for insight ++\*(XT 5. ALTERNATE\-DISPLAY Provisions and the `g' \*(CI for insight + into \*(CWs and \*(FGs. + + .TP 7 +@@ -1007,7 +1007,7 @@ applied anytime. + + \*(NT When this toggle is \*O and \*(We is operating in monochrome mode, + the\fB entire display\fR will appear as normal text. +-Thus, unless the 'x' and/or 'y' toggles are using reverse for emphasis, ++Thus, unless the `x' and/or `y' toggles are using reverse for emphasis, + there will be no visual confirmation that they are even on. + + .TP 7 +@@ -1030,7 +1030,7 @@ With this command you can cycle through the available \*(SA memory scaling + which ranges from KiB (kibibytes or 1,024 bytes) through EiB (exbibytes or + 1,152,921,504,606,846,976 bytes). + +-If you see a '+' between a displayed number and the following label, it ++If you see a `+' between a displayed number and the following label, it + means that \*(We was forced to truncate some portion of that number. + By raising the scaling factor, such truncation can be avoided. + +@@ -1045,7 +1045,7 @@ scaling might still be necessary in order to accommodate current values. + If you wish to see a more homogeneous result in the memory columns, + raising the scaling range will usually accomplish that goal. + Raising it too high, however, is likely to produce an all zero result +-which cannot be suppressed with the '0' \*(CI. ++which cannot be suppressed with the `0' \*(CI. + + .TP 7 + \ \ \ \fBg\fR\ \ :\fIChoose-Another-Window/Field-Group \fR +@@ -1119,7 +1119,7 @@ restart later in exactly that same state. + \ \ \ \fBX\fR\ \ :\fIExtra-Fixed-Width \fR + Some fields are fixed width and not scalable. + As such, they are subject to truncation which would be indicated +-by a '+' in the last position. ++by a `+' in the last position. + + This \*(CI can be used to alter the widths of the following fields: + +@@ -1149,7 +1149,7 @@ To narrow them you must specify a smaller number or restore the defaults. + + .TP 7 + \ \ \ \fBY\fR\ \ :\fIInspect-Other-Output \fR +-After issuing the 'Y' \*(CI, you will be prompted for a target PID. ++After issuing the `Y' \*(CI, you will be prompted for a target PID. + Typing a value or accepting the default results in a separate screen. + That screen can be used to view a variety of files or piped command output + while the normal \*(We iterative display is paused. +@@ -1162,14 +1162,14 @@ Most of the keys used to navigate the Inspect feature are reflected in + its header prologue. + There are, however, additional keys available once you have selected a + particular file or command. +-They are familiar to anyone who has used the pager 'less' and are ++They are familiar to anyone who has used the pager `less' and are + summarized here for future reference. + + .nf + \fI key function \fR + = alternate status\-line, file or pipeline +- / find, equivalent to 'L' locate +- n find next, equivalent to '&' locate next ++ / find, equivalent to `L' locate ++ n find next, equivalent to `&' locate next + scroll down, equivalent to + b scroll up, equivalent to + g first line, equivalent to +@@ -1194,7 +1194,7 @@ They affect the beginning lines of your display and will determine the + position of messages and prompts. + + These commands always impact just the \*(CG. +-\*(XT 5. ALTERNATE\-DISPLAY Provisions and the 'g' \*(CI for insight into ++\*(XT 5. ALTERNATE\-DISPLAY Provisions and the `g' \*(CI for insight into + \*(CWs and \*(FGs. + + .TP 7 +@@ -1211,7 +1211,7 @@ when operating in \*(FM or the \*(CW name when operating in \*(AM. + .TP 7 + \ \ \ \fBt\fR\ \ :\fITask/Cpu-States\fR toggle \fR + This command affects from 2 to many \*(SA lines, depending on the state +-of the '1', '2' or '3' \*(CTs and whether or not \*(We is running under ++of the `1', `2' or `3' \*(CTs and whether or not \*(We is running under + true SMP. + + This portion of the \*(SA is also influenced by the 'H' \*(CI toggle, +@@ -1224,18 +1224,18 @@ and virtual memory. + + .TP 7 + \ \ \ \fB1\fR\ \ :\fISingle/Separate-Cpu-States\fR toggle \fR +-This command affects how the 't' command's Cpu States portion is shown. ++This command affects how the `t' command's Cpu States portion is shown. + Although this toggle exists primarily to serve massively-parallel SMP + machines, it is not restricted to solely SMP environments. + +-When you see '%Cpu(s):' in the \*(SA, the '1' toggle is \*O and all ++When you see `%Cpu(s):' in the \*(SA, the `1' toggle is \*O and all + \*(Pu information is gathered in a single line. +-Otherwise, each \*(Pu is displayed separately as: '%Cpu0, %Cpu1, ...' ++Otherwise, each \*(Pu is displayed separately as: `%Cpu0, %Cpu1, ...' + up to available screen height. + + .TP 7 + \ \ \ \fB2\fR\ \ :\fINUMA-Nodes/Cpu-Summary\fR toggle \fR +-This command toggles between the '1' command cpu summary display (only) ++This command toggles between the `1' command cpu summary display (only) + or a summary display plus the cpu usage statistics for each NUMA Node. + It is only available if a system has the requisite NUMA support. + +@@ -1243,7 +1243,7 @@ It is only available if a system has the requisite NUMA support. + \ \ \ \fB3\fR\ \ :\fIExpand-NUMA-Node \fR + You will be invited to enter a number representing a NUMA Node. + Thereafter, a node summary plus the statistics for each cpu in that +-node will be shown until either the '1' or '2' \*(CT is pressed. ++node will be shown until either the `1' or `2' \*(CT is pressed. + This \*(CI is only available if a system has the requisite NUMA support. + + .PP +@@ -1281,12 +1281,12 @@ If the character data completely fills the available column, this + .PP + .RS +2 + The following commands will also be influenced by the state of the +-global 'B' (bold enable) toggle. ++global `B' (bold enable) toggle. + .RS -2 + + .TP 7 + \ \ \ \fBb\fR\ \ :\fIBold/Reverse\fR toggle \fR +-This command will impact how the 'x' and 'y' toggles are displayed. ++This command will impact how the `x' and `y' toggles are displayed. + Further, it will only be available when at least one of those toggles is \*O. + + .TP 7 +@@ -1296,7 +1296,7 @@ If you forget which field is being sorted this command can serve as a quick + visual reminder, providing the sort field is being displayed. + The sort field might\fI not\fR be visible because: + 1) there is insufficient\fI Screen Width \fR +- 2) the 'f' \*(CI turned it \*F ++ 2) the `f' \*(CI turned it \*F + + \*(NT Whenever Searching and/or Other Filtering is active in a window, + column highlighting is temporarily disabled. +@@ -1307,7 +1307,7 @@ explanation why. + \ \ \ \fBy\fR\ \ :\fIRow-Highlight\fR toggle \fR + Changes highlighting for "running" tasks. + For additional insight into this task state, +-\*(Xt 3a. DESCRIPTIONS of Fields, the 'S' field (Process Status). ++\*(Xt 3a. DESCRIPTIONS of Fields, the `S' field (Process Status). + + Use of this provision provides important insight into your system's health. + The only costs will be a few additional tty escape sequences. +@@ -1317,7 +1317,7 @@ The only costs will be a few additional tty escape sequences. + Switches the \*(CW between your last used color scheme and the older form + of black-on-white or white-on-black. + This command will alter\fB both\fR the \*(SA and \*(TA but does not affect +-the state of the 'x', 'y' or 'b' toggles. ++the state of the `x', `y' or `b' toggles. + + .PP + .\" .................................................. +@@ -1353,9 +1353,9 @@ time that it and its dead children have used. + + When \*F, programs that fork into many separate tasks will appear + less demanding. +-For programs like 'init' or a shell this is appropriate but for others, ++For programs like `init' or a shell this is appropriate but for others, + like compilers, perhaps not. +-Experiment with two \*(TWs sharing the same sort field but with different 'S' ++Experiment with two \*(TWs sharing the same sort field but with different `S' + states and see which representation you prefer. + + After issuing this command, you'll be informed of the new state of this toggle. +@@ -1382,8 +1382,8 @@ command but just press at the prompt. + In this mode, processes are reordered according to their parents and + the layout of the COMMAND column resembles that of a tree. + In forest view mode it is still possible to toggle between program +-name and command line (\*(Xc 'c' \*(CI) or between processes and +-threads (\*(Xc 'H' \*(CI). ++name and command line (\*(Xc `c' \*(CI) or between processes and ++threads (\*(Xc `H' \*(CI). + + \*(NT Typing any key affecting the sort order will exit forest view + mode in the \*(CW. +@@ -1436,14 +1436,14 @@ not appear on any help screen. + .fi + + Before using any of the following sort provisions, \*(We suggests that you +-temporarily turn on column highlighting using the 'x' \*(CI. ++temporarily turn on column highlighting using the `x' \*(CI. + That will help ensure that the actual sort environment matches your intent. + + The following \*(CIs will\fB only\fR be honored when the current sort field + is\fB visible\fR. + The sort field might\fI not\fR be visible because: + 1) there is insufficient\fI Screen Width \fR +- 2) the 'f' \*(CI turned it \*F ++ 2) the `f' \*(CI turned it \*F + + .TP 7 + \ \ \ \fB<\fR\ \ :\fIMove-Sort-Field-Left \fR +@@ -1478,7 +1478,7 @@ Thus, the TTY and WCHAN fields will violate strict ASCII collating sequence. + .\" ...................................................................... + .SS 4d. COLOR Mapping + .\" ---------------------------------------------------------------------- +-When you issue the 'Z' \*(CI, you will be presented with a separate screen. ++When you issue the `Z' \*(CI, you will be presented with a separate screen. + That screen can be used to change the colors in just the \*(CW or + in all four windows before returning to the \*(We display. + +@@ -1497,14 +1497,14 @@ The following \*(CIs are available. + q :abandon current changes and exit + .fi + +-If you use 'a' or 'w' to cycle the targeted window, you will ++If you use `a' or `w' to cycle the targeted window, you will + have applied the color scheme that was displayed when you left that window. + You can, of course, easily return to any window and reapply different +-colors or turn colors \*F completely with the 'z' toggle. ++colors or turn colors \*F completely with the `z' toggle. + + The Color Mapping screen can also be used to change the \*(CG in + either \*(FM or \*(AM. +-Whatever was targeted when 'q' or was pressed will be made current ++Whatever was targeted when `q' or was pressed will be made current + as you return to the \*(We display. + .PP + +@@ -1518,7 +1518,7 @@ as you return to the \*(We display. + .B Field Groups/Windows\fR: + In \*(FM there is a single window represented by the entire screen. + That single window can still be changed to display 1 of 4 different\fB field +-groups\fR (\*(Xc 'g' \*(CI, repeated below). ++groups\fR (\*(Xc `g' \*(CI, repeated below). + Each of the 4 \*(FGs has a unique separately configurable\fB \*(SA \fR + and its own configurable\fB \*(TA\fR. + +@@ -1540,7 +1540,7 @@ restricted for the \*(CW. + + A further complication arises when you have toggled the first \*(SA + line \*F. +-With the loss of the window name (the 'l' toggled line), you'll not easily ++With the loss of the window name (the `l' toggled line), you'll not easily + know what window is the \*(CW. + + .\" ...................................................................... +@@ -1548,13 +1548,13 @@ know what window is the \*(CW. + .\" ---------------------------------------------------------------------- + .TP 7 + \ \ \ \fB-\fR | \fB_\fR\ \ :\fIShow/Hide-Window(s)\fR toggles \fR +-The '\-' key turns the \*(CW's \*(TD \*O and \*F. ++The `\-' key turns the \*(CW's \*(TD \*O and \*F. + When \*O, that \*(TA will show a minimum of the columns header you've +-established with the 'f' \*(CI. ++established with the `f' \*(CI. + It will also reflect any other \*(TA options/toggles you've applied + yielding zero or more tasks. + +-The '_' key does the same for all \*(TDs. ++The `_' key does the same for all \*(TDs. + In other words, it switches between the currently visible \*(TD(s) and any + \*(TD(s) you had toggled \*F. + If all 4 \*(TDs are currently visible, this \*(CI will leave the \*(SA +@@ -1562,18 +1562,18 @@ as the only display element. + + .TP 7 + *\ \ \fB=\fR | \fB+\fR\ \ :\fIEqualize-(reinitialize)-Window(s) \fR +-The '=' key forces the \*(CW's \*(TD to be visible. +-It also reverses any 'i' (idle tasks), 'n' (max tasks), 'u/U' (user filter) +-and 'o/O' (other filter) commands that might be active. ++The `=' key forces the \*(CW's \*(TD to be visible. ++It also reverses any `i' (idle tasks), `n' (max tasks), `u/U' (user filter) ++and `o/O' (other filter) commands that might be active. + Also, if the window had been scrolled, it will be reset with this command. + \*(XT 5c. SCROLLING a Window for additional information regarding vertical + and horizontal scrolling. + +-The '+' key does the same for all windows. ++The `+' key does the same for all windows. + The four \*(TDs will reappear, evenly balanced. + They will also have retained any customizations you had previously +-applied, except for the 'i' (idle tasks), 'n' (max tasks), 'u/U' +-(user filter), 'o/O' (other filter) and scrolling \*(CIs. ++applied, except for the `i' (idle tasks), `n' (max tasks), `u/U' ++(user filter), `o/O' (other filter) and scrolling \*(CIs. + + .TP 7 + *\ \ \fBA\fR\ \ :\fIAlternate-Display-Mode\fR toggle \fR +@@ -1590,7 +1590,7 @@ commands are directed. + These keys act in a circular fashion so you can reach any desired window + using either key. + +-Assuming the window name is visible (you have not toggled 'l' \*F), ++Assuming the window name is visible (you have not toggled `l' \*F), + whenever the \*(CW name loses its emphasis/color, that's a reminder + the \*(TD is \*F and many commands will be restricted. + +@@ -1600,14 +1600,14 @@ You will be prompted to enter a number between 1 and 4 designating the + \*(FG which should be made the \*(CW. + + In \*(FM, this command is necessary to alter the \*(CW. +-In \*(AM, it is simply a less convenient alternative to the 'a' and 'w' ++In \*(AM, it is simply a less convenient alternative to the `a' and `w' + commands. + + .TP 7 + \ \ \ \fBG\fR\ \ :\fIChange-Window/Field-Group-Name \fR + You will be prompted for a new name to be applied to the \*(CW. + It does not require that the window name be visible +-(the 'l' toggle to be \*O). ++(the `l' toggle to be \*O). + + .IP "*" 3 + The \*(CIs shown with an \*(AK have use beyond \*(AM. +@@ -1652,7 +1652,7 @@ Additionally, there are special provisions for any variable width field + when positioned as the last displayed field. + Once that field is reached via the right arrow key, and is thus the only + column shown, you can continue scrolling horizontally within such a field. +-\*(XC 'C' \*(CI below for additional information. ++\*(XC `C' \*(CI below for additional information. + + .TP 4 + \fBHome\fR\ \ :\fIJump-to-Home-Position \fR +@@ -1682,7 +1682,7 @@ variable width column has also been scrolled. + + The coordinates shown as \fBn\fR/\fBn\fR are relative to the upper left + corner of the \*(CW. +-The additional '\fB+\ nn\fR' represents the displacement into a variable ++The additional `\fB+\ nn\fR' represents the displacement into a variable + width column when it has been scrolled horizontally. + Such displacement occurs in normal 8 character tab stop amounts via + the right and left arrow keys. +@@ -1699,7 +1699,7 @@ The second \fBn\fR is updated automatically to reflect total tasks. + The first \fBn\fR represents the leftmost displayed column and is + controlled by \*(KSs. + The second \fBn\fR is the total number of displayable fields and is +-established with the '\fBf\fR' \*(CI. ++established with the `\fBf\fR' \*(CI. + .RS -4 + + .PP +@@ -1725,7 +1725,7 @@ Searches are not limited to values from a single field or column. + All of the values displayed in a task row are allowed in a search string. + You may include spaces, numbers, symbols and even forest view artwork. + +-Keying with no input will effectively disable the '&' key until ++Keying with no input will effectively disable the `&' key until + a new search string is entered. + + .TP 4 +@@ -1737,7 +1737,7 @@ the next occurrence. + When a match is found, the current window is repositioned vertically so the + task row containing that string is first. + The scroll coordinates message can provide confirmation of such vertical +-repositioning (\*(Xc 'C' \*(CI). ++repositioning (\*(Xc `C' \*(CI). + Horizontal scrolling, however, is never altered via searching. + + The availability of a matching string will be influenced by the following +@@ -1751,7 +1751,7 @@ b. Scrolling a window vertically and/or horizontally, + \*(Xt 5c. SCROLLING a Window. + .TP 3 + c. The state of the command/command-line toggle, +-\*(Xc 'c' \*(CI. ++\*(Xc `c' \*(CI. + .TP 3 + d. The stability of the chosen sort column, + for example PID is good but %CPU bad. +@@ -1760,7 +1760,7 @@ for example PID is good but %CPU bad. + .PP + If a search fails, restoring the \*(CW home (unscrolled) position, scrolling + horizontally, displaying command-lines or choosing a more stable sort field +-could yet produce a successful '&' search. ++could yet produce a successful `&' search. + + The above \*(CIs are\fB always\fR available in \*(FM but\fB never\fR + available in \*(AM if the \*(CW's \*(TD has been toggled \*F. +@@ -1769,7 +1769,7 @@ available in \*(AM if the \*(CW's \*(TD has been toggled \*F. + column highlighting \*F to prevent false matches on internal non-display + escape sequences. + Such highlighting will be restored when a window's search string is empty. +-\*(XC 'x' \*(CI for additional information on sort column highlighting. ++\*(XC `x' \*(CI for additional information on sort column highlighting. + + .\" ...................................................................... + .SS 5e. FILTERING in a Window +@@ -1792,7 +1792,7 @@ Remember the Up/Down \*(KAs or their aliases when prompted for input. + .TP 3 + 3. a selection is either case insensitive or sensitive to case + .TP 3 +-4. the default is inclusion, prepending '!' denotes exclusions ++4. the default is inclusion, prepending `!' denotes exclusions + .TP 3 + 5. multiple selection criteria can be applied to a \*(TW + .TP 3 +@@ -1821,7 +1821,7 @@ matching. + You will be prompted to establish a \fBcase sensitive\fR filter. + + .TP 6 +-\ \fB^O\fR\ \ :\fIShow-Active-Filters\fR (Ctrl key + 'o') ++\ \fB^O\fR\ \ :\fIShow-Active-Filters\fR (Ctrl key + `o') + This can serve as a reminder of which filters are active in the \*(CW. + A summary will be shown on the message line until you press the key. + +@@ -1833,7 +1833,7 @@ It also has additional impact so please \*(Xt 4a. GLOBAL Commands. + .TP 6 + \ \ \fB+\fR\ \ :\fIReset-Filtering\fR in all windows + This clears the selection criteria in all windows, assuming you are in \*(AM. +-As with the '=' \*(CI, it too has additional consequences so you might wish to ++As with the `=' \*(CI, it too has additional consequences so you might wish to + \*(Xt 5b. COMMANDS for Windows. + .PP + .RE +@@ -1854,11 +1854,11 @@ These examples use spaces for clarity but your input generally would not. + + Items #1, #3 and #4 should be self\-explanatory. + Item \fB#2\fR represents both a required \fIdelimiter\fR and the \fIoperator\fR +-which must be one of either equality ('=') or relation ('<' or '>'). ++which must be one of either equality ('=') or relation ('<' or `>'). + +-The '=' equality operator requires only a partial match and that +-can reduce your 'if\-value' input requirements. +-The '>' or '<' relational operators always employ string comparisons, ++The `=' equality operator requires only a partial match and that ++can reduce your `if\-value' input requirements. ++The `>' or `<' relational operators always employ string comparisons, + even with numeric fields. + They are designed to work with a field's default \fIjustification\fR and + with homogeneous data. +@@ -1869,12 +1869,12 @@ If you establish a relational filter and you \fBhave\fR changed the + default Numeric or Character \fIjustification\fR, that filter is likely to fail. + When a relational filter is applied to a memory field and you \fBhave not\fR + changed the \fIscaling\fR, it may produce misleading results. +-This happens, for example, because '100.0m' (MiB) would appear greater +-than '1.000g' (GiB) when compared as strings. ++This happens, for example, because `100.0m' (MiB) would appear greater ++than `1.000g' (GiB) when compared as strings. + + If your filtered results appear suspect, simply altering justification or + scaling may yet achieve the desired objective. +-See the 'j', 'J' and 'e' \*(CIs for additional information. ++See the `j', `J' and `e' \*(CIs for additional information. + .PP + .RE + +@@ -1885,7 +1885,7 @@ These \fBGROUP\fR filters could produce the exact same results or the + second one might not display anything at all, just a blank \*(TW. + .nf + GROUP=root ( only the same results when ) +- GROUP=ROOT ( invoked via lower case 'o' ) ++ GROUP=ROOT ( invoked via lower case `o' ) + .fi + + Either of these \fBRES\fR filters might yield inconsistent and/or +@@ -1893,7 +1893,7 @@ misleading results, depending on the current memory scaling factor. + Or both filters could produce the exact same results. + .nf + RES>9999 ( only the same results when ) +- !RES<10000 ( memory scaling is at 'KiB' ) ++ !RES<10000 ( memory scaling is at `KiB' ) + .fi + + This \fBnMin\fR filter illustrates a problem unique to scalable fields. +@@ -1920,14 +1920,14 @@ only multi-threaded processes being shown. + It also reminds us that a trailing space is part of every displayed field. + The second filter achieves the exact same results with less typing. + .nf +- !nTH=' 1 ' ( ' for clarity only ) ++ !nTH=` 1 ' ( ' for clarity only ) + nTH>1 ( same with less i/p ) + .fi + + With Forest View mode active and the \fBCOMMAND\fR column in view, this + filter effectively collapses child processes so that just 3 levels are shown. + .nf +- !COMMAND=' `- ' ( ' for clarity only ) ++ !COMMAND=` `- ' ( ' for clarity only ) + .fi + + The final two filters appear as in response to the status request key (^O). +@@ -1935,10 +1935,10 @@ In reality, each filter would have required separate input. + The \fBPR\fR example shows the two concurrent filters necessary to display + tasks with priorities of 20 or more, since some might be negative. + Then by exploiting trailing spaces, the \fBnMin\fR series of filters could +-achieve the failed '9999' objective discussed above. ++achieve the failed `9999' objective discussed above. + .nf +- 'PR>20' + '!PR=-' ( 2 for right result ) +- '!nMin=0 ' + '!nMin=1 ' + '!nMin=2 ' + '!nMin=3 ' ... ++ `PR>20' + `!PR=-' ( 2 for right result ) ++ `!nMin=0 ' + `!nMin=1 ' + `!nMin=2 ' + `!nMin=3 ' ... + .fi + .RS -3 + +@@ -1947,7 +1947,7 @@ column highlighting \*F to prevent false matches on internal non-display + escape sequences. + Such highlighting will be restored when a window is no longer subject + to filtering. +-\*(XC 'x' \*(CI for additional information on sort column highlighting. ++\*(XC `x' \*(CI for additional information on sort column highlighting. + .RE + + .\" ---------------------------------------------------------------------- +@@ -1970,7 +1970,7 @@ They will not be able to issue the following commands. + The system \*(CF is\fB not\fR created by \*(We. + Rather, you create this file manually and place it in the \fI/etc \fR + directory. +-Its name must be 'toprc' and must have no leading '.' (period). ++Its name must be `toprc' and must have no leading `.' (period). + It must have only two lines. + + Here is an example of the contents of\fI /etc/toprc\fR: +@@ -1982,8 +1982,8 @@ Here is an example of the contents of\fI /etc/toprc\fR: + .\" ...................................................................... + .SS 6b. PERSONAL Configuration File + .\" ---------------------------------------------------------------------- +-This file is written as '$HOME/.your\-name\-4\-\*(We' + 'rc'. +-Use the 'W' \*(CI to create it or update it. ++This file is written as `$HOME/.your\-name\-4\-\*(We' + `rc'. ++Use the `W' \*(CI to create it or update it. + + Here is the general layout: + .nf +@@ -2004,13 +2004,13 @@ personal \*(CF to the current directory, subject to permissions. + .\" ...................................................................... + .SS 6c. ADDING INSPECT Entries + .\" ---------------------------------------------------------------------- +-To exploit the 'Y' \*(CI, you must add entries at the\fB end\fR of the ++To exploit the `Y' \*(CI, you must add entries at the\fB end\fR of the + \*(We personal \*(CF. + Such entries simply reflect a file to be read or command/pipeline to be + executed whose results will then be displayed in a separate scrollable, + searchable window. + +-If you don't know the location or name of your \*(We rcfile, use the 'W' ++If you don't know the location or name of your \*(We rcfile, use the `W' + \*(CI to rewrite it and note those details. + + Inspect entries can be added with a redirected echo or by editing the \*(CF. +@@ -2019,33 +2019,33 @@ rather than append (>>) to that file. + Conversely, when using an editor care must be taken not to corrupt existing + lines, some of which will contain unprintable data or unusual characters. + +-Those Inspect entries beginning with a '#' character are ignored, regardless ++Those Inspect entries beginning with a `#' character are ignored, regardless + of content. + Otherwise they consist of the following 3 elements, each of which\fI must\fR +-be separated by a tab character (thus 2 '\\t' total): ++be separated by a tab character (thus 2 `\\t' total): + + .nf +- .type: literal 'file' or 'pipe' ++ .type: literal `file' or `pipe' + .name: selection shown on the Inspect screen + .fmts: string representing a path or command + .fi + + The two types of Inspect entries are\fI not\fR interchangeable. +-Those designated '\fBfile\fR' will be accessed using fopen and +-must reference a single file in the '.fmts' element. +-Entries specifying '\fBpipe\fR' will employ popen, their '.fmts' element ++Those designated `\fBfile\fR' will be accessed using fopen and ++must reference a single file in the `.fmts' element. ++Entries specifying `\fBpipe\fR' will employ popen, their `.fmts' element + could contain many pipelined commands and, none can be interactive. + +-If the file or pipeline represented in your '.fmts' deals with the specific PID ++If the file or pipeline represented in your `.fmts' deals with the specific PID + input or accepted when prompted, then the format string must also contain +-the '\fB%d\fR' specifier, as these examples illustrate. ++the `\fB%d\fR' specifier, as these examples illustrate. + + .nf + .fmts= /proc/\fI%d\fR/numa_maps + .fmts= lsof -P -p\fI %d\fR + .fi + +-For '\fBpipe\fR' type entries only, you may also wish to redirect stderr to ++For `\fBpipe\fR' type entries only, you may also wish to redirect stderr to + stdout for a more comprehensive result. + Thus the format string becomes: + +@@ -2055,7 +2055,7 @@ Thus the format string becomes: + + Here are examples of both types of Inspect entries as they might appear + in the rcfile. +-The first entry will be ignored due to the initial '#' character. ++The first entry will be ignored due to the initial `#' character. + For clarity, the pseudo tab depictions (^I) are surrounded by an + extra space but the actual tabs would not be. + .nf +@@ -2067,9 +2067,9 @@ extra space but the actual tabs would not be. + .fi + + Except for the commented entry above, these next examples show what could +-be echoed to achieve similar results, assuming the rcfile name was '.toprc'. ++be echoed to achieve similar results, assuming the rcfile name was `.toprc'. + However, due to the embedded tab characters, each of these lines should be +-preceded by '\fB/bin/echo \-e\fR', not just a simple an 'echo', to ++preceded by `\fB/bin/echo \-e\fR', not just a simple an `echo', to + enable backslash interpretation regardless of which shell you use. + + .nf +@@ -2082,25 +2082,25 @@ enable backslash interpretation regardless of which shell you use. + If any inspect entry you create produces output with unprintable characters + they will be displayed in either the ^C notation or hexadecimal form, + depending on their value. +-This applies to tab characters as well, which will show as '^I'. ++This applies to tab characters as well, which will show as `^I'. + If you want a truer representation, any embedded tabs should be expanded. + + .nf +- # next would have contained '\\t' ... ++ # next would have contained `\\t' ... + # file ^I ^I /proc/%d/status +- # but this will eliminate embedded '\\t' ... ++ # but this will eliminate embedded `\\t' ... + pipe ^I ^I cat /proc/%d/status | expand \- + .fi + +-The above example takes what could have been a 'file' entry but employs +-a 'pipe' instead so as to expand the embedded tabs. ++The above example takes what could have been a `file' entry but employs ++a `pipe' instead so as to expand the embedded tabs. + +-\*(NT While '\fBpipe\fR' type entries have been discussed in terms of pipelines ++\*(NT While `\fBpipe\fR' type entries have been discussed in terms of pipelines + and commands, there is nothing to prevent you from including \fI shell scripts\fR + as well. +-Perhaps even newly created scripts designed specifically for the 'Y' \*(CI. ++Perhaps even newly created scripts designed specifically for the `Y' \*(CI. + +-Lastly, as the number of your Inspect entries grows over time, the 'Options:' ++Lastly, as the number of your Inspect entries grows over time, the `Options:' + row will be truncated when screen width is exceeded. + That does not affect operation other than to make some selections invisible. + +@@ -2113,8 +2113,8 @@ there is an easy solution hinted at below. + Options: help 1 2 3 4 5 6 7 8 9 10 11 ... + .fi + +-The entries in the \*(We rcfile would have a number for the '.name' element and +-the 'help' entry would identify a shell script you've written explaining what ++The entries in the \*(We rcfile would have a number for the `.name' element and ++the `help' entry would identify a shell script you've written explaining what + those numbered selections actually mean. + In that way, many more choices can be made visible. + +@@ -2158,7 +2158,7 @@ What you'll see is a very busy Linux doing what he's always done for you, + but there was no program available to illustrate this. + + .IP \(bu 3 +-Under an xterm using 'white-on-black' colors, on \*(We's Color Mapping screen ++Under an xterm using `white-on-black' colors, on \*(We's Color Mapping screen + set the task color to black and be sure that task highlighting is set to bold, + not reverse. + Then set the delay interval to around .3 seconds. +@@ -2168,8 +2168,8 @@ the ghostly images of just the currently running tasks. + + .IP \(bu 3 + Delete the existing rcfile, or create a new symlink. +-Start this new version then type 'T' (a secret key, +-\*(Xt 4c. Task Area Commands, SORTING) followed by 'W' and 'q'. ++Start this new version then type `T' (a secret key, ++\*(Xt 4c. Task Area Commands, SORTING) followed by `W' and `q'. + Finally, restart the program with \-d0 (zero delay). + + Your display will be refreshed at three times the rate of the former \*(We, +@@ -2184,19 +2184,19 @@ For these stupid tricks, \*(We needs \*(AM. + + .IP \(bu 3 + With 3 or 4 \*(TDs visible, pick any window other than the last +-and turn idle processes \*F using the 'i' \*(CT. +-Depending on where you applied 'i', sometimes several \*(TDs are bouncing and ++and turn idle processes \*F using the `i' \*(CT. ++Depending on where you applied `i', sometimes several \*(TDs are bouncing and + sometimes it's like an accordion, as \*(We tries his best to allocate space. + + .IP \(bu 3 + Set each window's summary lines differently: one with no memory ('m'); another + with no states ('t'); maybe one with nothing at all, just the message line. +-Then hold down 'a' or 'w' and watch a variation on bouncing windows \*(Em ++Then hold down `a' or `w' and watch a variation on bouncing windows \*(Em + hopping windows. + + .IP \(bu 3 + Display all 4 windows and for each, in turn, set idle processes to \*F using +-the 'i' \*(CT. ++the `i' \*(CT. + You've just entered the "extreme bounce" zone. + + .\" ...................................................................... +@@ -2206,11 +2206,11 @@ This stupid trick also requires \*(AM. + + .IP \(bu 3 + Display all 4 windows and make sure that 1:Def is the \*(CW. +-Then, keep increasing window size with the 'n' \*(CI until all the other ++Then, keep increasing window size with the `n' \*(CI until all the other + \*(TDs are "pushed out of the nest". + + When they've all been displaced, toggle between all visible/invisible windows +-using the '_' \*(CT. ++using the `_' \*(CT. + Then ponder this: + .br + is \*(We fibbing or telling honestly your imposed truth? +@@ -2223,14 +2223,14 @@ on a per window basis. + + .IP \(bu 3 + Start \*(We and make COMMAND the last (rightmost) column displayed. +-If necessary, use the 'c' \*(CT to display command lines and ensure +-that forest view mode is active with the 'V' \*(CT. ++If necessary, use the `c' \*(CT to display command lines and ensure ++that forest view mode is active with the `V' \*(CT. + + Then use the up/down arrow keys to position the display so that some + truncated command lines are shown ('+' in last position). + You may have to resize your xterm to produce truncation. + +-Lastly, use the 'j' \*(CT to make the COMMAND column right justified. ++Lastly, use the `j' \*(CT to make the COMMAND column right justified. + + Now use the right arrow key to reach the COMMAND column. + Continuing with the right arrow key, watch closely the direction +-- +1.7.9.2 + diff --git a/0055-misc-fix-man-doc-spelling-and-grammar-for-translatio.patch b/0055-misc-fix-man-doc-spelling-and-grammar-for-translatio.patch new file mode 100644 index 0000000..1014b12 --- /dev/null +++ b/0055-misc-fix-man-doc-spelling-and-grammar-for-translatio.patch @@ -0,0 +1,55 @@ +From ada443268e7f8c4526e6b048c98457679665b727 Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Wed, 23 Apr 2014 00:00:04 -0500 +Subject: [PATCH] misc: fix man doc spelling and grammar for translation + +Signed-off-by: Jim Warner +--- + ps/ps.1 | 2 +- + sysctl.8 | 8 ++++---- + 2 files changed, 5 insertions(+), 5 deletions(-) + +diff --git ps/ps.1 ps/ps.1 +index cdb7536..90f12ac 100644 +--- ps/ps.1 ++++ ps/ps.1 +@@ -1683,7 +1683,7 @@ number of kernel threads owned by the process. + T} + + tid TID T{ +-the unique number representing a dispatacable entity (alias ++the unique number representing a dispatchable entity (alias + .BR lwp , \ spid ). + This value may also appear as: a process ID (pid); a process group ID (pgrp); + a session ID for the session leader (sid); a thread group ID for the thread +diff --git sysctl.8 sysctl.8 +index faf2255..a74b2d7 100644 +--- sysctl.8 ++++ sysctl.8 +@@ -63,8 +63,8 @@ Load in sysctl settings from the file specified or /etc/sysctl.conf if none + given. Specifying \- as filename means reading data from standard input. + Using this option will mean arguments to + .B sysctl +-are files, which are read in order they are specified. The file argument can +-may be specified as reqular expression. ++are files, which are read in the order they are specified. ++The file argument may be specified as reqular expression. + .TP + \fB\-a\fR, \fB\-\-all\fR + Display all values currently available. +@@ -112,10 +112,10 @@ Alias of \fB\-p\fR + Alias of \fB\-a\fR + .TP + \fB\-o\fR +-Does nothing in favour of BSD compatibility. ++Does nothing, exists for BSD compatibility. + .TP + \fB\-x\fR +-Does nothing in favour of BSD compatibility. ++Does nothing, exists for BSD compatibility. + .TP + \fB\-h\fR, \fB\-\-help\fR + Display help text and exit. +-- +1.7.9.2 + diff --git a/0058-library-reverting-tmpfs-subtraction-from-cached-18-F.patch b/0058-library-reverting-tmpfs-subtraction-from-cached-18-F.patch new file mode 100644 index 0000000..975d8bb --- /dev/null +++ b/0058-library-reverting-tmpfs-subtraction-from-cached-18-F.patch @@ -0,0 +1,62 @@ +Based on 2f96eef7f86a12b81badef1c91ec2d503ae4029d Mon Sep 17 00:00:00 2001 +From: Jaromir Capik +Date: Wed, 30 Apr 2014 13:59:34 +0200 +Subject: [PATCH] library: reverting tmpfs subtraction from cached + (18-FEB-2014) + +The subtraction was marked as reinforcing the misconception, +that memory in the page cache can be considered free. +The Cached value is not a sum of page cache and tmpfs, +as the tmpfs memory lives in the page cache and therefore +it's an inseparable part of it. +--- + free.1 | 4 +--- + proc/sysinfo.c | 2 -- + vmstat.8 | 3 +-- + 3 files changed, 2 insertions(+), 7 deletions(-) + +diff --git free.1 free.1 +index 21cce28..85efef8 100644 +--- free.1 ++++ free.1 +@@ -32,9 +32,7 @@ kernels 2.6.32, displayed as zero if not available) + Memory used by kernel buffers (Buffers in /proc/meminfo) + .TP + \fBcached\fR +-Memory used by the page cache (calculated as Cached - Shmem in +-/proc/meminfo - the Cached value is actually the sum of page cache and +-tmpfs memory) ++Memory used by the page cache (Cached in /proc/meminfo) + .SH OPTIONS + .TP + \fB\-b\fR, \fB\-\-bytes\fR +diff --git proc/sysinfo.c proc/sysinfo.c +index e07ca86..85fb0a4 100644 +--- proc/sysinfo.c ++++ proc/sysinfo.c +@@ -688,8 +688,6 @@ nextline: + kb_main_used = 0; + } + kb_main_cached += kb_swap_reclaimable + kb_swap_cached + kb_nfs_unstable; +- /* "Cached" includes "Shmem" - we want only the page cache here */ +- kb_main_cached -= kb_main_shared; + } + + /*****************************************************************/ +diff --git vmstat.8 vmstat.8 +index 2782a42..420d9f3 100644 +--- vmstat.8 ++++ vmstat.8 +@@ -102,8 +102,7 @@ b: The number of processes in uninterruptible sleep. + swpd: the amount of virtual memory used. + free: the amount of idle memory. + buff: the amount of memory used as buffers. +-cache: the amount of memory used as cache (excluding tmpfs memory for +-kernels 2.6.32+) ++cache: the amount of memory used as cache. + inact: the amount of inactive memory. (\-a option) + active: the amount of active memory. (\-a option) + .fi +-- +1.7.9.2 + diff --git a/0060-top-miscellaneous-accumulated-changes-to-man-documen.patch b/0060-top-miscellaneous-accumulated-changes-to-man-documen.patch new file mode 100644 index 0000000..a2dc89a --- /dev/null +++ b/0060-top-miscellaneous-accumulated-changes-to-man-documen.patch @@ -0,0 +1,53 @@ +From 444fa7102b7f130734e35b45ce86fcc15d307a71 Mon Sep 17 00:00:00 2001 +From: Jim Warner +Date: Wed, 7 May 2014 00:00:00 -0500 +Subject: [PATCH] top: miscellaneous accumulated changes to man document + +Signed-off-by: Jim Warner +--- + top/top.1 | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git top/top.1 top/top.1 +index 67b8b35..5ce405e 100644 +--- top/top.1 ++++ top/top.1 +@@ -1062,7 +1062,7 @@ Otherwise, \*(We displays a summation of all threads in each process. + + .TP 7 + \ \ \ \fBI\fR\ \ :\fIIrix/Solaris-Mode\fR toggle \fR +-When operating in Solaris mode ('I' toggled \*F), a task's \*(Pu usage ++When operating in Solaris mode (`I' toggled \*F), a task's \*(Pu usage + will be divided by the total number of \*(PUs. + After issuing this command, you'll be told the new state of this toggle. + +@@ -1216,7 +1216,7 @@ This command affects from 2 to many \*(SA lines, depending on the state + of the `1', `2' or `3' \*(CTs and whether or not \*(We is running under + true SMP. + +-This portion of the \*(SA is also influenced by the 'H' \*(CI toggle, ++This portion of the \*(SA is also influenced by the `H' \*(CI toggle, + as reflected in the total label which shows either Tasks or Threads. + + .TP 7 +@@ -1856,7 +1856,7 @@ These examples use spaces for clarity but your input generally would not. + + Items #1, #3 and #4 should be self\-explanatory. + Item \fB#2\fR represents both a required \fIdelimiter\fR and the \fIoperator\fR +-which must be one of either equality ('=') or relation ('<' or `>'). ++which must be one of either equality (`=') or relation (`<' or `>'). + + The `=' equality operator requires only a partial match and that + can reduce your `if\-value' input requirements. +@@ -2229,7 +2229,7 @@ If necessary, use the `c' \*(CT to display command lines and ensure + that forest view mode is active with the `V' \*(CT. + + Then use the up/down arrow keys to position the display so that some +-truncated command lines are shown ('+' in last position). ++truncated command lines are shown (`+' in last position). + You may have to resize your xterm to produce truncation. + + Lastly, use the `j' \*(CT to make the COMMAND column right justified. +-- +1.7.9.2 + diff --git a/procps-ng-3.3.8-bnc634071_procstat2.diff b/procps-ng-3.3.8-bnc634071_procstat2.diff index 58d6f74..598ee0e 100644 --- a/procps-ng-3.3.8-bnc634071_procstat2.diff +++ b/procps-ng-3.3.8-bnc634071_procstat2.diff @@ -1,232 +1,62 @@ ---- proc/ksym.c -+++ proc/ksym.c 2012-06-04 10:06:03.792202072 +0000 -@@ -41,7 +41,7 @@ - #define KSYMS_FILENAME "/would/be/nice/to/have/this/file" - #define SYSMAP_FILENAME "/home/albert/ps/45621/System.map-hacked" - #define linux_version_code 131598 /* ? */ --#define smp_num_cpus 2 -+#define smp_num_cpus() 2 - #endif - - #if 0 -@@ -49,7 +49,7 @@ - #define KSYMS_FILENAME "/home/albert/ps/45621/ksyms-2.3.12" - #define SYSMAP_FILENAME "/home/albert/ps/45621/System.map-2.3.12" - #define linux_version_code 131852 /* 2.3.12 */ --#define smp_num_cpus 2 -+#define smp_num_cpus() 2 - #endif - - #if 0 -@@ -57,7 +57,7 @@ - #define KSYMS_FILENAME "/home/albert/ps/45621/ksyms-2.3.18ac8-MODVERS" - #define SYSMAP_FILENAME "/home/albert/ps/45621/System.map-2.3.18ac8-MODVERS" - #define linux_version_code 131858 /* 2.3.18ac8 */ --#define smp_num_cpus 2 -+#define smp_num_cpus() 2 - #endif - - #if 0 -@@ -65,7 +65,7 @@ - #define KSYMS_FILENAME "/home/albert/ps/45621/ksyms-2.3.18ac8-NOMODVERS" - #define SYSMAP_FILENAME "/home/albert/ps/45621/System.map-2.3.18ac8-NOMODVERS" - #define linux_version_code 131858 /* 2.3.18ac8 */ --#define smp_num_cpus 2 -+#define smp_num_cpus() 2 - #endif - - /* These are the symbol types, with relative popularity: +--- proc/libprocps.sym ++++ proc/libprocps.sym 2014-05-16 10:01:38.446310070 +0000 +@@ -57,6 +57,7 @@ global: + signal_name_to_number; + signal_number_to_name; + smp_num_cpus; ++ __smp_num_cpus; + sprint_uptime; + strtosig; + tty_to_dev; --- proc/sysinfo.c +++ proc/sysinfo.c 2013-05-29 11:26:47.797640941 +0000 -@@ -37,8 +37,6 @@ +@@ -37,7 +37,8 @@ #include /* htons */ #endif -long smp_num_cpus; /* number of CPUs */ -- ++#undef smp_num_cpus ++long smp_num_cpus = -1; /* number of CPUs */ + #define BAD_OPEN_MESSAGE \ "Error: /proc must be mounted\n" \ - " To mount /proc at boot you need an /etc/fstab line like:\n" \ -@@ -200,7 +198,7 @@ static void old_Hertz_hack(void){ - free(savelocale); - jiffies = user_j + nice_j + sys_j + other_j + wait_j + hirq_j + sirq_j + stol_j ; - seconds = (up_1 + up_2) / 2; -- h = (unsigned)( (double)jiffies/seconds/smp_num_cpus ); -+ h = (unsigned)( (double)jiffies/seconds/smp_num_cpus() ); - /* actual values used by 2.4 kernels: 32 64 100 128 1000 1024 1200 */ - switch(h){ - case 9 ... 11 : Hertz = 10; break; /* S/390 (sometimes) */ -@@ -271,8 +269,6 @@ static void init_libproc(void){ - have_privs = check_for_privs(); - init_Linux_version(); /* Must be called before we check code */ - -- cpuinfo(); -- - #ifdef __linux__ - if(linux_version_code > LINUX_VERSION(2, 4, 0)){ - Hertz = find_elf_note(AT_CLKTCK); -@@ -1012,7 +1008,12 @@ out: +@@ -1012,7 +1012,11 @@ out: /////////////////////////////////////////////////////////////////////////// -void cpuinfo (void) { -+long smp_num_cpus (void) { -+ static long _smp_num_cpus=-1; ++long __smp_num_cpus (void) { + -+ if (_smp_num_cpus != -1) -+ return(_smp_num_cpus); ++ if (smp_num_cpus != -1) ++ return(smp_num_cpus); + // ought to count CPUs in /proc/stat instead of relying // on glibc, which foolishly tries to parse /proc/cpuinfo // note: that may have been the case but now /proc/stat -@@ -1024,7 +1025,9 @@ void cpuinfo (void) { +@@ -1024,7 +1029,11 @@ void cpuinfo (void) { // _SC_NPROCESSORS_CONF returns 2, resulting in HZ=512 // _SC_NPROCESSORS_ONLN returns 1, which should work OK - smp_num_cpus = sysconf(_SC_NPROCESSORS_ONLN); - if (smp_num_cpus<1) /* SPARC glibc is buggy */ - smp_num_cpus=1; -+ _smp_num_cpus = sysconf(_SC_NPROCESSORS_ONLN); -+ if (_smp_num_cpus<1) /* SPARC glibc is buggy */ -+ _smp_num_cpus=1; ++ smp_num_cpus = sysconf(_SC_NPROCESSORS_ONLN); ++ if (smp_num_cpus<1) /* SPARC glibc is buggy */ ++ smp_num_cpus=1; + -+ return _smp_num_cpus; ++ return smp_num_cpus; } ++ ++void cpuinfo (void) { (void)__smp_num_cpus(); } --- proc/sysinfo.h +++ proc/sysinfo.h 2012-06-04 10:04:15.812509959 +0000 -@@ -7,7 +7,7 @@ +@@ -7,7 +7,8 @@ EXTERN_C_BEGIN extern unsigned long long Hertz; /* clock tick frequency */ -extern long smp_num_cpus; /* number of CPUs */ -+extern long smp_num_cpus(void); /* number of CPUs */ ++extern long __smp_num_cpus(void); /* number of CPUs */ ++#define smp_num_cpus __smp_num_cpus() extern int have_privs; /* boolean, true if setuid or similar */ #if 0 -@@ -137,7 +137,5 @@ extern unsigned int getslabinfo (struct - - extern unsigned get_pid_digits(void) FUNCTION; - --extern void cpuinfo (void); -- - EXTERN_C_END - #endif /* SYSINFO_H */ ---- top/top.c -+++ top/top.c 2013-05-29 11:28:34.945439635 +0000 -@@ -411,7 +411,7 @@ static void bye_bye (const char *str) { - , LINUX_VERSION_PATCH(linux_version_code) - , procps_version - , (unsigned)Hertz, (unsigned)sizeof(Hertz), (unsigned)sizeof(Hertz) * 8 -- , Page_size, Cpu_faux_tot, (int)smp_num_cpus, (unsigned)sizeof(CPU_t) -+ , Page_size, Cpu_faux_tot, (int)smp_num_cpus(), (unsigned)sizeof(CPU_t) - , (unsigned)sizeof(HST_t), Page_size / (unsigned)sizeof(HST_t), HHist_siz - , (unsigned)sizeof(proc_t), (unsigned)sizeof(p->cmd), (unsigned)sizeof(proc_t*) - , (long)Frames_libflags -@@ -2230,7 +2230,7 @@ static void zap_fieldstab (void) { - /*** hotplug_acclimated ***/ - - Fieldstab[P_CPN].width = 1; -- if (1 < (digits = (unsigned)snprintf(buf, sizeof(buf), "%u", (unsigned)smp_num_cpus))) { -+ if (1 < (digits = (unsigned)snprintf(buf, sizeof(buf), "%u", (unsigned)smp_num_cpus()))) { - if (5 < digits) error_exit(N_txt(FAIL_widecpu_txt)); - Fieldstab[P_CPN].width = digits; - } -@@ -2238,9 +2238,9 @@ static void zap_fieldstab (void) { - #ifdef BOOST_PERCNT - Cpu_pmax = 99.9; - Fieldstab[P_CPU].width = 5; -- if (Rc.mode_irixps && smp_num_cpus > 1 && !Thread_mode) { -- Cpu_pmax = 100.0 * smp_num_cpus; -- if (smp_num_cpus > 10) { -+ if (Rc.mode_irixps && smp_num_cpus() > 1 && !Thread_mode) { -+ Cpu_pmax = 100.0 * smp_num_cpus(); -+ if (smp_num_cpus() > 10) { - if (Cpu_pmax > 99999.0) Cpu_pmax = 99999.0; - } else { - if (Cpu_pmax > 999.9) Cpu_pmax = 999.9; -@@ -2249,9 +2249,9 @@ static void zap_fieldstab (void) { - #else - Cpu_pmax = 99.9; - Fieldstab[P_CPU].width = 4; -- if (Rc.mode_irixps && smp_num_cpus > 1 && !Thread_mode) { -- Cpu_pmax = 100.0 * smp_num_cpus; -- if (smp_num_cpus > 10) { -+ if (Rc.mode_irixps && smp_num_cpus() > 1 && !Thread_mode) { -+ Cpu_pmax = 100.0 * smp_num_cpus(); -+ if (smp_num_cpus() > 10) { - if (Cpu_pmax > 99999.0) Cpu_pmax = 99999.0; - } else { - if (Cpu_pmax > 999.9) Cpu_pmax = 999.9; -@@ -2294,8 +2294,8 @@ static void zap_fieldstab (void) { - * cpus[sumSLOT] == tics from the 1st /proc/stat line - * [ and beyond sumSLOT == tics for each cpu NUMA node ] */ - static CPU_t *cpus_refresh (CPU_t *cpus) { -- #define sumSLOT ( smp_num_cpus ) -- #define totSLOT ( 1 + smp_num_cpus + Numa_node_tot) -+ #define sumSLOT ( smp_num_cpus() ) -+ #define totSLOT ( 1 + smp_num_cpus() + Numa_node_tot) - static FILE *fp = NULL; - static int siz, sav_slot = -1; - static char *buf; -@@ -2358,7 +2358,7 @@ static CPU_t *cpus_refresh (CPU_t *cpus) - we'll force it to be treated as 'idle' so as not to present misleading - percentages. */ - cpus[sumSLOT].edge = -- ((cpus[sumSLOT].cur.tot - cpus[sumSLOT].sav.tot) / smp_num_cpus) / (100 / TICS_EDGE); -+ ((cpus[sumSLOT].cur.tot - cpus[sumSLOT].sav.tot) / smp_num_cpus()) / (100 / TICS_EDGE); - #endif - - #ifndef NUMA_DISABLE -@@ -2496,7 +2496,7 @@ static void procs_hlp (proc_t *this) { - oldtimev.tv_usec = timev.tv_usec; - - // if in Solaris mode, adjust our scaling for all cpus -- Frame_etscale = 100.0f / ((float)Hertz * (float)et * (Rc.mode_irixps ? 1 : smp_num_cpus)); -+ Frame_etscale = 100.0f / ((float)Hertz * (float)et * (Rc.mode_irixps ? 1 : smp_num_cpus())); - #ifdef OFF_HST_HASH - maxt_sav = Frame_maxtask; - #endif -@@ -2649,8 +2649,7 @@ static void sysinfo_refresh (int forced) - #ifndef PRETEND8CPUS - /*** hotplug_acclimated ***/ - if (300 <= cur_secs - cpu_secs) { -- cpuinfo(); -- Cpu_faux_tot = smp_num_cpus; -+ Cpu_faux_tot = smp_num_cpus(); - cpu_secs = cur_secs; - #ifndef NUMA_DISABLE - if (Libnuma_handle) -@@ -3219,9 +3219,8 @@ static void before (char *me) { - - // establish cpu particulars - #ifdef PRETEND8CPUS -- smp_num_cpus = 8; -+ Cpu_faux_tot = 8; - #endif -- Cpu_faux_tot = smp_num_cpus; - Cpu_States_fmts = N_unq(STATE_lin2x4_fmt); - if (linux_version_code > LINUX_VERSION(2, 5, 41)) - Cpu_States_fmts = N_unq(STATE_lin2x5_fmt); -@@ -5020,19 +5019,19 @@ static void summary_show (void) { - if (CHKw(w, View_CPUNOD)) { - if (Numa_node_sel < 0) { - // display the 1st /proc/stat line, then the nodes (if room) -- summary_hlp(&smpcpu[smp_num_cpus], N_txt(WORD_allcpus_txt)); -+ summary_hlp(&smpcpu[smp_num_cpus()], N_txt(WORD_allcpus_txt)); - Msg_row += 1; - // display each cpu node's states - for (i = 0; i < Numa_node_tot; i++) { - if (!isROOM(anyFLG, 1)) break; - snprintf(tmp, sizeof(tmp), N_fmt(NUMA_nodenam_fmt), i); -- summary_hlp(&smpcpu[1 + smp_num_cpus + i], tmp); -+ summary_hlp(&smpcpu[1 + smp_num_cpus() + i], tmp); - Msg_row += 1; - } - } else { - // display the node summary, then the associated cpus (if room) - snprintf(tmp, sizeof(tmp), N_fmt(NUMA_nodenam_fmt), Numa_node_sel); -- summary_hlp(&smpcpu[1 + smp_num_cpus + Numa_node_sel], tmp); -+ summary_hlp(&smpcpu[1 + smp_num_cpus() + Numa_node_sel], tmp); - Msg_row += 1; - for (i = 0; i < Cpu_faux_tot; i++) { - if (Numa_node_sel == smpcpu[i].node) { diff --git a/procps-ng-3.3.8-libselinux.patch b/procps-ng-3.3.8-libselinux.patch deleted file mode 100644 index ce95755..0000000 --- a/procps-ng-3.3.8-libselinux.patch +++ /dev/null @@ -1,52 +0,0 @@ -| From: Jaromir Capik -| To: procps-ng -| Subject: [procps] Re: --enable-libselinux switch -| -diff -Naur procps-ng-3.3.8.orig/configure.ac procps-ng-3.3.8/configure.ac ---- procps-ng-3.3.8.orig/configure.ac 2013-05-25 23:39:39.000000000 +0200 -+++ procps-ng-3.3.8/configure.ac 2013-08-06 19:53:49.595654086 +0200 -@@ -111,6 +111,14 @@ - AC_DEFINE([WITH_WATCH8BIT], [1], [Enable 8 bit clean watch]) - fi - -+AC_ARG_ENABLE([libselinux], -+ AS_HELP_STRING([--enable-libselinux], [enable libselinux]), -+ [enable_libselinux=$enableval], -+ [enable_libselinux="no"]) -+if test "$enable_libselinux" = "yes"; then -+ AC_DEFINE([ENABLE_LIBSELINUX], [1], [Enable libselinux]) -+fi -+ - # Optional packages - AC_ARG_WITH - AC_ARG_WITH([ncurses], - AS_HELP_STRING([--without-ncurses], [build only applications not needing ncurses]), -diff -Naur procps-ng-3.3.8.orig/ps/output.c procps-ng-3.3.8/ps/output.c ---- procps-ng-3.3.8.orig/ps/output.c 2013-05-25 23:39:40.000000000 +0200 -+++ procps-ng-3.3.8/ps/output.c 2013-08-06 19:55:32.477650664 +0200 -@@ -1282,6 +1282,8 @@ - /****************** FLASK & seLinux security stuff **********************/ - // move the bulk of this to libproc sometime - -+#if !ENABLE_LIBSELINUX -+ - static int pr_context(char *restrict const outbuf, const proc_t *restrict const pp){ - char filename[48]; - size_t len; -@@ -1310,7 +1312,8 @@ - return 1; - } - --#if 0 -+#else -+ - // This needs more study, considering: - // 1. the static linking option (maybe disable this in that case) - // 2. the -z and -Z option issue -@@ -1345,6 +1348,7 @@ - } - return len; - } -+ - #endif - - diff --git a/procps-ng-3.3.8-shmem.patch b/procps-ng-3.3.8-shmem.patch deleted file mode 100644 index e4eed1d..0000000 --- a/procps-ng-3.3.8-shmem.patch +++ /dev/null @@ -1,24 +0,0 @@ -| From: Jaromir Capik -| To: procps-ng -| Subject: [procps] shared memory in 'free' -| -diff --git a/proc/sysinfo.c b/proc/sysinfo.c -index 15cdb83..8e4aca2 100644 ---- a/proc/sysinfo.c -+++ b/proc/sysinfo.c -@@ -629,13 +629,14 @@ void meminfo(void){ - {"LowTotal", &kb_low_total}, - {"Mapped", &kb_mapped}, // kB version of vmstat nr_mapped - {"MemFree", &kb_main_free}, // important -- {"MemShared", &kb_main_shared}, // important, but now gone! -+ {"MemShared", &kb_main_shared}, // obsolete since kernel 2.6! (sharing the variable with Shmem replacement) - {"MemTotal", &kb_main_total}, // important - {"NFS_Unstable", &kb_nfs_unstable}, - {"PageTables", &kb_pagetables}, // kB version of vmstat nr_page_table_pages - {"ReverseMaps", &nr_reversemaps}, // same as vmstat nr_page_table_pages - {"SReclaimable", &kb_swap_reclaimable}, // "swap reclaimable" (dentry and inode structures) - {"SUnreclaim", &kb_swap_unreclaimable}, -+ {"Shmem", &kb_main_shared}, // sharing the output variable with obsolete MemShared (kernel 2.6 and later) - {"Slab", &kb_slab}, // kB version of vmstat nr_slab - {"SwapCached", &kb_swap_cached}, - {"SwapFree", &kb_swap_free}, // important diff --git a/procps-ng-3.3.8-top.1.diff b/procps-ng-3.3.8-top.1.diff index b8a003a..c0bc945 100644 --- a/procps-ng-3.3.8-top.1.diff +++ b/procps-ng-3.3.8-top.1.diff @@ -9,37 +9,3 @@ . .ll +(\n[half_xtra] + \n[half_xtra]) . -@@ -32,11 +32,11 @@ - .ds F \fIOff\fR - .ds O \fIOn\fR - . --.ds AK asterisk (\'*\') -+.ds AK asterisk ('*') - .ds AM alternate\-display mode - .ds AS auxiliary storage - .ds CF configuration file --.ds CG \'current\' window/field group -+.ds CG 'current' window/field group - .ds CI interactive command - \# - Note: our 'Command Line' used in 2 places - \# ( and managed to fit in an 80x24 terminal ) -@@ -44,7 +44,7 @@ - \-\fBu\fR|\fBU\fR user \-\fBp\fR pid \-\fBo\fR fld \-\fBw\fR [cols] \fR - .ds CO command\-line option - .ds CT command toggle --.ds CW \'current\' window -+.ds CW 'current' window - .ds FG field group - .ds FM full\-screen mode - .ds KA arrow key -@@ -1578,8 +1578,8 @@ It does not require that the window name - .IP "*" 3 - The \*(CIs shown with an \*(AK have use beyond \*(AM. - .Bd -literal -compact -- \'=', 'A', 'g' are always available -- \'a', 'w' act the same with color mapping -+ '=', 'A', 'g' are always available -+ 'a', 'w' act the same with color mapping - \ and fields management - .Ed - diff --git a/procps-ng-3.3.8.tar.xz b/procps-ng-3.3.8.tar.xz deleted file mode 100644 index ce1d7ef..0000000 --- a/procps-ng-3.3.8.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a4109cfb6fe3bcfb5a0efb37efe04d0c8ce858bff3820d48cc258bad41bed46b -size 553056 diff --git a/procps-ng-3.3.9-w-notruncate.diff b/procps-ng-3.3.9-w-notruncate.diff new file mode 100644 index 0000000..eaa5ee2 --- /dev/null +++ b/procps-ng-3.3.9-w-notruncate.diff @@ -0,0 +1,18 @@ +--- w.c ++++ w.c 2014-05-15 13:26:57.162238550 +0000 +@@ -451,6 +451,7 @@ static void __attribute__ ((__noreturn__ + fputs(_(" -h, --no-header do not print header\n"),out); + fputs(_(" -u, --no-current ignore current process username\n"),out); + fputs(_(" -s, --short short format\n"),out); ++ fputs(_(" -n, --no-truncat non truncated listing (large)\n"),out); + fputs(_(" -f, --from show remote hostname field\n"),out); + fputs(_(" -o, --old-style old style output\n"),out); + fputs(_(" -i, --ip-addr display IP address instead of hostname (if possible)\n"), out); +@@ -487,6 +488,7 @@ int main(int argc, char **argv) + {"no-header", no_argument, NULL, 'h'}, + {"no-current", no_argument, NULL, 'u'}, + {"short", no_argument, NULL, 's'}, ++ {"no-truncat", no_argument, NULL, 'n'}, + {"from", no_argument, NULL, 'f'}, + {"old-style", no_argument, NULL, 'o'}, + {"ip-addr", no_argument, NULL, 'i'}, diff --git a/procps-ng-3.3.8-watch.patch b/procps-ng-3.3.9-watch.patch similarity index 59% rename from procps-ng-3.3.8-watch.patch rename to procps-ng-3.3.9-watch.patch index 5c6ba7a..ef64355 100644 --- a/procps-ng-3.3.8-watch.patch +++ b/procps-ng-3.3.9-watch.patch @@ -1,6 +1,6 @@ --- configure.ac -+++ configure.ac 2013-05-29 10:45:47.473939111 +0000 -@@ -69,7 +69,7 @@ AC_FUNC_MMAP ++++ configure.ac 2013-05-29 10:45:47.000000000 +0000 +@@ -70,7 +70,7 @@ AC_FUNC_MMAP AC_FUNC_REALLOC AC_FUNC_STRTOD @@ -10,10 +10,10 @@ AM_GNU_GETTEXT_VERSION([0.14.1]) --- proc/libprocps.sym -+++ proc/libprocps.sym 2013-05-29 10:46:13.165439719 +0000 -@@ -12,6 +12,7 @@ global: - free_slabinfo; - freeproc; ++++ proc/libprocps.sym 2014-05-15 13:16:40.950235845 +0000 +@@ -14,6 +14,7 @@ global: + get_ns_id; + get_ns_name; get_pid_digits; + get_proc_stats; get_slabinfo; diff --git a/procps-ng-3.3.9.tar.xz b/procps-ng-3.3.9.tar.xz new file mode 100644 index 0000000..50026f1 --- /dev/null +++ b/procps-ng-3.3.9.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00f0cb0fadf968ddf605b0ef119846af07386629244d4f3da711a2cecf4e8663 +size 560812 diff --git a/procps-v3.3.4-large_pcpu.patch b/procps-v3.3.4-large_pcpu.patch index 51b0a28..320f710 100644 --- a/procps-v3.3.4-large_pcpu.patch +++ b/procps-v3.3.4-large_pcpu.patch @@ -2,16 +2,16 @@ +++ top/top.c 2012-10-30 11:34:42.634844811 +0000 @@ -1910,8 +1910,15 @@ static void zap_fieldstab (void) { Fieldstab[P_CPU].width = 5; - if (Rc.mode_irixps && smp_num_cpus() > 1 && !Thread_mode) { - Cpu_pmax = 100.0 * smp_num_cpus(); -- if (smp_num_cpus() > 10) { -+ if (smp_num_cpus() > 1000) { + if (Rc.mode_irixps && smp_num_cpus > 1 && !Thread_mode) { + Cpu_pmax = 100.0 * smp_num_cpus; +- if (smp_num_cpus > 10) { ++ if (smp_num_cpus > 1000) { + if (Cpu_pmax > 9999999.0) Cpu_pmax = 9999999.0; + Fieldstab[P_CPU].width = 8; -+ } else if (smp_num_cpus() > 100) { ++ } else if (smp_num_cpus > 100) { + if (Cpu_pmax > 999999.0) Cpu_pmax = 999999.0; + Fieldstab[P_CPU].width = 7; -+ } else if (smp_num_cpus() > 10) { ++ } else if (smp_num_cpus > 10) { if (Cpu_pmax > 99999.0) Cpu_pmax = 99999.0; + Fieldstab[P_CPU].width = 6; } else { @@ -19,16 +19,16 @@ } @@ -1921,12 +1928,18 @@ static void zap_fieldstab (void) { Fieldstab[P_CPU].width = 4; - if (Rc.mode_irixps && smp_num_cpus() > 1 && !Thread_mode) { - Cpu_pmax = 100.0 * smp_num_cpus(); -- if (smp_num_cpus() > 10) { -+ if (smp_num_cpus() > 1000) { + if (Rc.mode_irixps && smp_num_cpus > 1 && !Thread_mode) { + Cpu_pmax = 100.0 * smp_num_cpus; +- if (smp_num_cpus > 10) { ++ if (smp_num_cpus > 1000) { + if (Cpu_pmax > 9999999.0) Cpu_pmax = 9999999.0; + Fieldstab[P_CPU].width = 7; -+ } else if (smp_num_cpus() > 100) { ++ } else if (smp_num_cpus > 100) { + if (Cpu_pmax > 999999.0) Cpu_pmax = 999999.0; + Fieldstab[P_CPU].width = 6; -+ } else if (smp_num_cpus() > 10) { ++ } else if (smp_num_cpus > 10) { if (Cpu_pmax > 99999.0) Cpu_pmax = 99999.0; + Fieldstab[P_CPU].width = 5; } else { diff --git a/procps-v3.3.4-stealtime.patch b/procps-v3.3.4-stealtime.patch deleted file mode 100644 index 438f357..0000000 --- a/procps-v3.3.4-stealtime.patch +++ /dev/null @@ -1,58 +0,0 @@ ---- vmstat.c -+++ vmstat.c 2012-06-01 13:41:09.844010232 +0000 -@@ -179,9 +179,9 @@ static void new_header(void) - /* Translation Hint: Translating folloging header & fields - * that follow (marked with max x chars) might not work, - * unless manual page is translated as well. */ -- printf(_("procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----\n")); -+ printf(_("procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------\n")); - printf -- ("%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %4s %2s %2s %2s %2s\n", -+ ("%2s %2s %6s %6s %6s %6s %4s %4s %5s %5s %4s %4s %2s %2s %2s %2s %2s\n", - /* Translation Hint: max 2 chars */ - _("r"), - /* Translation Hint: max 2 chars */ -@@ -217,7 +217,9 @@ static void new_header(void) - /* Translation Hint: max 2 chars */ - _("id"), - /* Translation Hint: max 2 chars */ -- _("wa")); -+ _("wa"), -+ /* Translation Hint: max 2 chars */ -+ _("st")); - } - - static unsigned long unitConvert(unsigned long size) -@@ -230,7 +232,7 @@ static unsigned long unitConvert(unsigne - static void new_format(void) - { - const char format[] = -- "%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %4u %2u %2u %2u %2u\n"; -+ "%2u %2u %6lu %6lu %6lu %6lu %4u %4u %5u %5u %4u %4u %2u %2u %2u %2u %2u\n"; - unsigned int tog = 0; /* toggle switch for cleaner code */ - unsigned int i; - unsigned int hz = Hertz; -@@ -273,8 +275,8 @@ static void new_format(void) - (unsigned)( (100*duse + divo2) / Div ), - (unsigned)( (100*dsys + divo2) / Div ), - (unsigned)( (100*didl + divo2) / Div ), -- (unsigned)( (100*diow + divo2) / Div )/*, -- (unsigned)( (100*dstl + divo2) / Div ) */ -+ (unsigned)( (100*diow + divo2) / Div ), -+ (unsigned)( (100*dstl + divo2) / Div ) - ); - - /* main loop */ -@@ -338,9 +342,9 @@ static void new_format(void) - /* id */ - (unsigned)( (100*didl+divo2)/Div ), - /* wa */ -- (unsigned)( (100*diow+divo2)/Div )/*, -- / * st * / -- (unsigned)( (100*dstl+divo2)/Div ) */ -+ (unsigned)( (100*diow+divo2)/Div ), -+ /* st */ -+ (unsigned)( (100*dstl+divo2)/Div ) - ); - } - } diff --git a/procps-v3.3.4-w-notruncate.diff b/procps-v3.3.4-w-notruncate.diff deleted file mode 100644 index b57f0cd..0000000 --- a/procps-v3.3.4-w-notruncate.diff +++ /dev/null @@ -1,62 +0,0 @@ ---- w.c -+++ w.c 2012-10-30 10:58:51.547461515 +0000 -@@ -360,7 +360,7 @@ static const proc_t *getproc(const utmp_ - } - - static void showinfo(utmp_t * u, int formtype, int maxcmd, int from, -- const int userlen, const int fromlen, const int ip_addresses) -+ int userlen, int fromlen, const int ip_addresses) - { - unsigned long long jcpu; - int ut_pid_found; -@@ -390,7 +390,13 @@ static void showinfo(utmp_t * u, int for - strncpy(uname, u->ut_user, UT_NAMESIZE); - - if (formtype) { -- printf("%-*.*s%-9.8s", userlen + 1, userlen, uname, u->ut_line); -+ int utlnlen = 8; -+ if (formtype > 1) { -+ userlen = strnlen(uname, UT_NAMESIZE); -+ fromlen = strnlen(u->ut_host, UT_HOSTSIZE); -+ utlnlen = strnlen(u->ut_line, UT_LINESIZE); -+ } -+ printf("%-*.*s%-*.*s", userlen + 1, userlen, uname, utlnlen + 1, utlnlen, u->ut_line); - if (from) - print_from(u, ip_addresses, fromlen); - print_logintime(u->ut_time, stdout); -@@ -440,6 +446,7 @@ static void __attribute__ ((__noreturn__ - fputs(_(" -h, --no-header do not print header\n" - " -u, --no-current ignore current process username\n" - " -s, --short short format\n" -+ " -n, --no-truncat non truncated listing (large)\n" - " -f, --from show remote hostname field\n" - " -o, --old-style old style output\n" - " -i, --ip-addr display IP address instead of hostname (if possible)\n"), out); -@@ -476,6 +483,7 @@ int main(int argc, char **argv) - {"no-header", no_argument, NULL, 'h'}, - {"no-current", no_argument, NULL, 'u'}, - {"sort", no_argument, NULL, 's'}, -+ {"no-truncat", no_argument, NULL, 'n'}, - {"from", no_argument, NULL, 'f'}, - {"old-style", no_argument, NULL, 'o'}, - {"help", no_argument, NULL, HELP_OPTION}, -@@ -494,7 +502,7 @@ int main(int argc, char **argv) - #endif - - while ((ch = -- getopt_long(argc, argv, "husfoVi", longopts, NULL)) != -1) -+ getopt_long(argc, argv, "husnfoVi", longopts, NULL)) != -1) - switch (ch) { - case 'h': - header = 0; -@@ -505,6 +513,10 @@ int main(int argc, char **argv) - case 's': - longform = 0; - break; -+ case 'n': -+ longform = 2; -+ header = 0; -+ break; - case 'f': - from = !from; - break; diff --git a/procps.changes b/procps.changes index 7225dcd..717006b 100644 --- a/procps.changes +++ b/procps.changes @@ -1,3 +1,88 @@ +------------------------------------------------------------------- +Fri May 16 09:44:19 UTC 2014 - werner@suse.de + +- Update to procps-ng-3.3.9 + * kernel namespaces support added to skill, pgrep, ps and top + * pidof was reimplemented from scratch (replacing sysvinit pidof) + * ps has configurable libselinux support (--enable-libselinux) + * ps provides for display of systemd slice unit (--with-systemd) + * free can once again report non-zero 'shared' memory + * sysctl provides '--system' to ignore missing /etc/sysctl.conf + * watch interval capacity was increased - debian #720445 + * pwdx no longer fails in a nonexistent locale - debian #718766 + * top clarified summary area Mem/Swap stats - debian #718670 + * top batch mode -w (width) abend fixed - debian #721204 + * top man page removed 'Bd/Ed' mdoc macros - debian #725713 + * top no longer clears screen at exit - redhat #977561 + * top adapted to potential libnuma stderr message - redhat #998678 + * top added missing batch mode newline - redhat #1008674 +- Modify patches + procps-ng-3.3.8-watch.patch becomes procps-ng-3.3.9-watch.patch + procps-v3.3.4-w-notruncate.diff becomes procps-ng-3.3.9-w-notruncate.diff + procps-ng-3.3.8-top.1.diff + procps-ng-3.3.8-top.1.diff + procps-v3.3.4-large_pcpu.patch + procps-ng-3.3.8-bnc634071_procstat2.diff +- Remove patches now upstream + procps-v3.3.4-stealtime.patch is upstream + procps-ng-3.3.8-libselinux.patch + procps-ng-3.3.8-shmem.patch + 0001-top-add-the-major-version-to-dlopen-of-libnuma-sonam.patch + 0002-top-trade-two-groff_mdoc-macros-for-groff-equivalent.patch + 0003-library-for-atexit-support-fix-fileutils-for-EPIPE.patch + 0004-top-enable-screen-contents-preservation-at-end-of-jo.patch + 0005-top-refine-some-miscellaneous-signals-interrupt-stuf.patch + 0006-top-cursor-repositioning-includes-line-oriented-inpu.patch + 0007-top-correct-improve-or-otherwise-tweak-some-comments.patch + 0008-top-tweak-cursor-state-code-to-swat-an-obscure-bugle.patch + 0009-top-correct-cursor-positioning-for-all-Z-or-C-cases.patch + 0010-ps-address-a-potential-newline-quirk-the-libselinux.patch + 0012-top-hint-that-Summary-Area-cached-is-Mem-not-Swap.patch + 0013-top-modest-efficiency-change-to-message-line-handlin.patch + 0014-top-correct-improve-and-otherwise-tweak-configs_read.patch + 0015-top-swat-bug-affecting-batch-mode-and-width-provisio.patch + 0018-top-restore-the-lost-final-newline-when-in-Batch-mod.patch + 0019-top-swat-bug-impacting-idle-mode-user-filtering.patch + 0021-top-address-some-potential-libnuma-display-corruptio.patch + 0022-top-fix-miscellaneous-spelling-errors-in-man-documen.patch + 0023-top-expand-on-column-highlight-quirks-in-man-documen.patch + 0024-top-add-some-flexibility-to-dlopen-for-numa-support.patch + 0025-top-minimize-the-statistics-overhead-for-numa-suppor.patch + 0026-top-eliminate-yet-more-gcc-subscript-resolution-bloa.patch + 0032-top-do-not-lie-about-purported-alphabetical-ordering.patch + 0033-top-follow-usual-name-conventions-for-global-variabl.patch +- Add patches from upstream + 0023-top-do-not-forget-the-fscanf-s-terminating-null-byte.patch + 0024-sysctl-system-loads-default-config-file.patch + 0025-Split-help-lines-to-help-translators.patch + 0026-library-fixing-uninitialized-variable-pos-in-whattim.patch + 0027-pgrep-Fixing-memory-leak-in-do_regcomp.patch + 0028-sysctl-Fixing-memory-leaks-in-PreloadSystem.patch + 0029-ps-ignore-SIGCONT.patch + 0031-vmstat-wide-output-still-not-wide-enough.patch + 0032-library-skip-replacement-of-trailing-0-in-read_unvec.patch + 0033-kill-for-PID-1-restored.patch + 0034-Check-for-presence-of-disks-in-vmstat.patch + 0035-PID-2-to-9-for-kill-too.patch + 0036-pgrep-fails-to-show-full-command-line-with-au.patch + 0037-fail-on-null-string-for-arguments.patch + 0038-Update-help-files.patch + 0039-vmstat-Support-for-timestamps-with-t-fix-for-wd.patch + 0040-watch-Don-t-leak-extra-fds-to-the-child.patch + 0041-vmstat-Fixing-format-security-flaws.patch + 0043-Added-get-trans-target-to-Makefile.patch + 0045-library-properly-handle-memory-used-by-tmpfs.patch + 0046-Minor-i18n-fixes.patch + 0047-sysctl-increase-max-supported-line-length-of-the-con.patch + 0049-fix-url-for-rsync.patch + 0051-top-update-copyright-dates-plus-1-preprocessor-chang.patch + 0052-top-refactor-man-document-so-as-to-allow-translation.patch + 0053-top-minimize-the-usage-of-apostrophes-in-man-documen.patch + 0054-top-swap-opening-quotes-for-back-tics-in-man-documen.patch + 0055-misc-fix-man-doc-spelling-and-grammar-for-translatio.patch + 0058-library-reverting-tmpfs-subtraction-from-cached-18-F.patch + 0060-top-miscellaneous-accumulated-changes-to-man-documen.patch + ------------------------------------------------------------------- Thu May 15 11:50:39 UTC 2014 - werner@suse.de diff --git a/procps.spec b/procps.spec index 2a0e558..a5ecd85 100644 --- a/procps.spec +++ b/procps.spec @@ -17,7 +17,8 @@ %bcond_with bin2usr -%define somajor 1 +%bcond_with pidof +%define somajor 3 %define libname libprocps%{somajor} Name: procps @@ -35,7 +36,7 @@ BuildRequires: pkg-config BuildRequires: pkgconfig(systemd) %endif BuildRequires: xz -Version: 3.3.8 +Version: 3.3.9 Release: 0 Provides: ps = %version-%release Obsoletes: ps < %version-%release @@ -45,14 +46,13 @@ Requires(postun): %insserv_prereq Summary: The ps utilities for /proc License: GPL-2.0+ and LGPL-2.1+ Group: System/Monitoring -Source: http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.8.tar.xz +Source: http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.9.tar.xz Source1: procps-pmap-legacy.tar.bz2 Source2: boot.sysctl Source3: systat.xinetd -Patch0: procps-ng-3.3.8-watch.patch +Patch0: procps-ng-3.3.9-watch.patch Patch1: procps-v3.3.3-ia64.diff -Patch2: procps-v3.3.4-stealtime.patch -Patch3: procps-v3.3.4-w-notruncate.diff +Patch3: procps-ng-3.3.9-w-notruncate.diff Patch4: procps-v3.3.4-w-simply-work.diff Patch5: procps-ng-3.3.8-top.1.diff Patch6: procps-v3.3.3-buffersize.diff @@ -71,64 +71,39 @@ Patch18: procps-ng-3.3.8-petabytes.patch Patch19: procps-v3.3.4-large_pcpu.patch Patch20: procps-ng-3.3.8-tinfo.dif Patch21: procps-v3.3.3-pwdx.patch -# PATCH-FIX-UPSTREAM -- Let libproc support EPIPE in close_stream -Patch22: 0003-library-for-atexit-support-fix-fileutils-for-EPIPE.patch -# PATCH-FIX-UPSTREAM -- Add enable-libselinux switch -Patch23: procps-ng-3.3.8-libselinux.patch # PATCH-FIX-OPENSUSE -- trifle rest of the old terabyte patch Patch28: procps-ng-3.3.8-vmstat-terabyte.dif -# PATCH-FIX-UPSTREAM -- Show shared memory in 'free' again -Patch29: procps-ng-3.3.8-shmem.patch -# PATCH-FIX-UPSTREAM -- Add enable-libselinux switch -Patch30: 0010-ps-address-a-potential-newline-quirk-the-libselinux.patch # PATCH-FIX-SUSE -- Ignore scan_unevictable_pages in sysctl Patch31: procps-ng-3.3.8-ignore-scan_unevictable_pages.patch +Patch60: 0024-sysctl-system-loads-default-config-file.patch +Patch61: 0025-Split-help-lines-to-help-translators.patch +Patch62: 0026-library-fixing-uninitialized-variable-pos-in-whattim.patch +Patch63: 0027-pgrep-Fixing-memory-leak-in-do_regcomp.patch +Patch64: 0028-sysctl-Fixing-memory-leaks-in-PreloadSystem.patch +Patch65: 0029-ps-ignore-SIGCONT.patch +Patch66: 0031-vmstat-wide-output-still-not-wide-enough.patch +Patch67: 0032-library-skip-replacement-of-trailing-0-in-read_unvec.patch +Patch68: 0033-kill-for-PID-1-restored.patch +Patch69: 0034-Check-for-presence-of-disks-in-vmstat.patch +Patch70: 0035-PID-2-to-9-for-kill-too.patch +Patch71: 0036-pgrep-fails-to-show-full-command-line-with-au.patch +Patch72: 0037-fail-on-null-string-for-arguments.patch +Patch73: 0038-Update-help-files.patch +Patch74: 0039-vmstat-Support-for-timestamps-with-t-fix-for-wd.patch +Patch75: 0040-watch-Don-t-leak-extra-fds-to-the-child.patch +Patch76: 0041-vmstat-Fixing-format-security-flaws.patch +Patch77: 0043-Added-get-trans-target-to-Makefile.patch +Patch78: 0045-library-properly-handle-memory-used-by-tmpfs.patch +Patch79: 0046-Minor-i18n-fixes.patch +Patch80: 0047-sysctl-increase-max-supported-line-length-of-the-con.patch +Patch81: 0049-fix-url-for-rsync.patch +Patch82: 0055-misc-fix-man-doc-spelling-and-grammar-for-translatio.patch +Patch83: 0058-library-reverting-tmpfs-subtraction-from-cached-18-F.patch + # Top patches -# PATCH-FIX-UPSTREAM -- Add the major version to dlopen of libnuma -Patch100: 0001-top-add-the-major-version-to-dlopen-of-libnuma-sonam.patch -# PATCH-FIX-UPSTREAM -- Use common mdoc nroff macros -Patch101: 0002-top-trade-two-groff_mdoc-macros-for-groff-equivalent.patch -# PATCH-FIX-UPSTREAM -- Do not clear screen after end-of-job -Patch102: 0004-top-enable-screen-contents-preservation-at-end-of-jo.patch -# PATCH-FIX-UPSTREAM -- Suppress end-of-job report if top if not ended with 'q' key -Patch103: 0005-top-refine-some-miscellaneous-signals-interrupt-stuf.patch -# PATCH-FIX-UPSTREAM -- Cursor repositioning includes line oriented input -Patch104: 0006-top-cursor-repositioning-includes-line-oriented-inpu.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch105: 0007-top-correct-improve-or-otherwise-tweak-some-comments.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch106: 0008-top-tweak-cursor-state-code-to-swat-an-obscure-bugle.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch107: 0009-top-correct-cursor-positioning-for-all-Z-or-C-cases.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch108: 0012-top-hint-that-Summary-Area-cached-is-Mem-not-Swap.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch109: 0013-top-modest-efficiency-change-to-message-line-handlin.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch110: 0014-top-correct-improve-and-otherwise-tweak-configs_read.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch111: 0015-top-swat-bug-affecting-batch-mode-and-width-provisio.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch112: 0018-top-restore-the-lost-final-newline-when-in-Batch-mod.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch113: 0019-top-swat-bug-impacting-idle-mode-user-filtering.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch114: 0021-top-address-some-potential-libnuma-display-corruptio.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch115: 0022-top-fix-miscellaneous-spelling-errors-in-man-documen.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch116: 0023-top-expand-on-column-highlight-quirks-in-man-documen.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch117: 0024-top-add-some-flexibility-to-dlopen-for-numa-support.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch118: 0025-top-minimize-the-statistics-overhead-for-numa-suppor.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch119: 0026-top-eliminate-yet-more-gcc-subscript-resolution-bloa.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch120: 0032-top-do-not-lie-about-purported-alphabetical-ordering.patch -# PATCH-FIX-UPSTREAM added at 2014/05/15 -Patch121: 0033-top-follow-usual-name-conventions-for-global-variabl.patch +# PATCH-FIX-UPSTREAM added at 2014/05/16 +Patch121: 0023-top-do-not-forget-the-fscanf-s-terminating-null-byte.patch # PATCH-FIX-UPSTREAM added at 2014/05/15 Patch122: 0035-top-provide-for-discontinuous-not-active-NUMA-nodes.patch # PATCH-FIX-UPSTREAM added at 2014/05/15 @@ -143,6 +118,17 @@ Patch126: 0044-top-avoid-a-nan-when-the-delay-interval-is-very-low.patch Patch127: 0045-top-standardize-Esc-key-support-with-prompted-input.patch # PATCH-FIX-UPSTREAM added at 2014/05/15 Patch128: 0046-top-miscellaneous-accumulated-changes-to-program-cod.patch +# PATCH-FIX-UPSTREAM added at 2014/05/16 +Patch129: 0051-top-update-copyright-dates-plus-1-preprocessor-chang.patch +# PATCH-FIX-UPSTREAM added at 2014/05/16 +Patch130: 0052-top-refactor-man-document-so-as-to-allow-translation.patch +# PATCH-FIX-UPSTREAM added at 2014/05/16 +Patch131: 0053-top-minimize-the-usage-of-apostrophes-in-man-documen.patch +# PATCH-FIX-UPSTREAM added at 2014/05/16 +Patch132: 0054-top-swap-opening-quotes-for-back-tics-in-man-documen.patch +# PATCH-FIX-UPSTREAM added at 2014/05/16 +Patch133: 0060-top-miscellaneous-accumulated-changes-to-man-documen.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -188,7 +174,6 @@ the process information pseudo-file system, %setup -q -n %{name}-ng-%{version} %patch0 %patch1 -%patch2 %patch3 %patch4 %patch5 @@ -208,34 +193,33 @@ the process information pseudo-file system, %patch19 %patch20 %patch21 -%patch22 -%patch23 -p1 %patch28 -%patch29 -p1 -%patch30 %patch31 -p1 +%patch60 +%patch61 +%patch62 +%patch63 +%patch64 +%patch65 +%patch66 +%patch67 +%patch68 +%patch69 +%patch70 +%patch71 +%patch72 +%patch73 +%patch74 +%patch75 +%patch76 +%patch77 +%patch78 +%patch79 +%patch80 +%patch81 +%patch82 +%patch83 -b .xyz # Patches for top -%patch100 -%patch101 -%patch102 -%patch103 -%patch104 -%patch105 -%patch106 -%patch107 -%patch108 -%patch109 -%patch110 -%patch111 -%patch112 -%patch113 -%patch114 -%patch115 -%patch116 -%patch117 -%patch118 -%patch119 -%patch120 %patch121 %patch122 %patch123 @@ -244,6 +228,11 @@ the process information pseudo-file system, %patch126 %patch127 %patch128 +%patch129 +%patch130 +%patch131 +%patch132 +%patch133 %build tar --strip-components=1 -xf %{S:1} @@ -259,6 +248,9 @@ export LFS_CFLAGS="$(getconf LFS_CFLAGS)" --disable-nls \ --disable-rpath \ --disable-kill \ +%if !%{with pidof} + --disable-pidof \ +%endif --enable-watch8bit \ --enable-shared \ --enable-skill \ @@ -364,6 +356,9 @@ make check %verify(link) %{_sbindir}/sysctl %endif %{_bindir}/free +%if %{with pidof} +%{_bindir}/pidof +%endif %{_bindir}/pmap %{_bindir}/pwdx %{_bindir}/skill @@ -376,6 +371,9 @@ make check %{_bindir}/watch %_mandir/man1/free.1.gz %_mandir/man1/pgrep.1.gz +%if %{with pidof} +%_mandir/man1/pidof.1.gz +%endif %_mandir/man1/pkill.1.gz %_mandir/man1/pmap.1.gz %_mandir/man1/ps.1.gz