]> granicus.if.org Git - procps-ng/log
procps-ng
2 years agotop: make the new 'Ctrl' bottom window behavior sticky <=== port of newlib 0f2a755b
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
top: make the new 'Ctrl' bottom window behavior sticky <=== port of newlib 0f2a755b

______________________________ original newlib message

After using this new feature for awhile, I encountered
numerous times when that 'Ctrl' window would disappear
as I was studying the contents. This was caused by the
death of the target task but it made me think that the
window could/should persist until dismissed by a user.

Well, now it will persist until that same Ctrl key has
been struck a 2nd time or a different Ctrl key used to
target another process after positioning it on row #1.

So now, instead of that former 'moving target' type of
approach, this window is more of a 'snapshot' in time.

[ even more significant, perhaps, is the fact that a ]
[ Ctrl window will now be drawn exactly 1 time only, ]
[ instead of being repainted after each delay cycle. ]

[ this will remain true no matter how many intervals ]
[ might elapse while its contents were under review. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: add a program name to 'Ctrl' bottom window header <=== port of newlib bad7f2a2
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
top: add a program name to 'Ctrl' bottom window header <=== port of newlib bad7f2a2

______________________________ original newlib message

This minor addition to that new 'Ctrl' feature is more
important than it seems. It's responsible for alerting
yours truly to the 'LIBPROC_HIDE_KERNEL' bug addressed
in the very next commit. All this while, program names <=== not in this branch, cookie
for some tasks would be mysteriously replaced with the
kernel 'kworker' names. However, customary clutter for
the top process display tended to obscure such a fact.

[ and, of course, to notice the problem in the first ]
[ place required one to have the command line toggle ]
[ 'off' or perhaps to toggle its state 'on' & 'off'. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agodoc: add variable width data display without scrolling <=== port of newlib 6b24d11b
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
doc: add variable width data display without scrolling <=== port of newlib 6b24d11b

______________________________ original newlib message
--------------------------------------------- ( none )

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: add variable width data display without scrolling <=== port of newlib fb32021e
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
top: add variable width data display without scrolling <=== port of newlib fb32021e

______________________________ original newlib message

There are times when one might want to see some task's
particular variable width data. However, prior to this
commit, the only way was to first turn on a field then
scroll through it via repeated right arrow keystrokes.

[ this also required that field to be displayed last ]

Needless to say, given the potential length of some of
that variable data this could be extremely cumbersome.

Now with this patch, a Ctrl keystroke combination will
create a separate window at the bottom of the terminal
screen where such variable width data is seen in full.

[ the targeted task is the 1st task displayed, which ]
[ is a convention employed in some existing commands ]

[ the targeted data was determined by these Ctrl key ]
[ combinations: CtrlG = ctrl group; CtrlK = cmdline; ]
[ CtrlU = supplementary groups; plus CtrlV = environ ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: eliminate the 'keys_global' redundant definitions <=== port of newlib 27f5904e
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
top: eliminate the 'keys_global' redundant definitions <=== port of newlib 27f5904e

[ can't implement Ctrl-R with AGNI, it ain't present ]

______________________________ original newlib message
--------------------------------------------- ( none )

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agops: that restored aix behavior gets its ultimate tweak <=== port of newlib 5edeabbd
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
ps: that restored aix behavior gets its ultimate tweak <=== port of newlib 5edeabbd

______________________________ original newlib message

Now that this 'c' variable initial assignment has been
moved outside the looping code, there is no longer any
need to specifically check for space/comma when 'c' is
not '%'. So, let us eliminate those two lines of code.

[ i promise not to change this algorithm ever again! ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: remove those winflags which restricted 'x' toggle <=== port of newlib ef8d1cb6
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
top: remove those winflags which restricted 'x' toggle <=== port of newlib ef8d1cb6

______________________________ original newlib message

On occasion, even as the top author, I wonder why that
'x' toggle has stopped working. Of course, it actually
was working but a locate request ('L') or other filter
('O') operation was active and thus temporarily turned
if off. Such behavior is documented in top's man page.

Well, with this patch that 'x' suppression is no more.

[ the original justification, however, remains true. ]

[ but there's really only one character which causes ]
[ any potential trouble & i'm gonna' keep it secret. ]

[ besides, if a display is corrupted, there's always ]
[ that '=' key which restores things back to normal. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: raise %CPU maximum if large numbers of processors <=== port of newlib 7279cd8e
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
top: raise %CPU maximum if large numbers of processors <=== port of newlib 7279cd8e

______________________________ original newlib message

It would appear that openSUSE was the first to release
procps-ng version 4.0.0 (in the tumbleweed distro). As
a result I checked their source rpm and found a couple
of patches I'm porting to newlib for the next release.

This particulate patch, with some changes, is openSUSE
patch 'procps-ng-3.3.10-large_pcpu.patch'. The changes
were strictly cosmetic. They involved whitespace only.

[ it should be noted that the net effect for raising ]
[ the maximum is to produce a '?' in the %CPU field. ]
[ that's because its width is fixed at five columns. ]
[ but at least the '?' won't distort actual results. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: ignore the SIGHUP signal if running in batch mode <=== port of newlib 6aec3ec9
Jim Warner [Wed, 15 Jun 2022 05:00:00 +0000 (00:00 -0500)]
top: ignore the SIGHUP signal if running in batch mode <=== port of newlib 6aec3ec9

______________________________ original newlib message

It would appear that openSUSE was the first to release
procps-ng version 4.0.0 (in the tumbleweed distro). As
a result I checked their source rpm and found a couple
of patches I'm porting to newlib for the next release.

This particulate commit was a refactor of the openSUSE
patch 'procps-ng-3.3.8-bnc634840.patch'. Unfortunately
their original patch did not have the intended effect.

That was because the amended signal handling logic was
performed well before the command line parameters were
parsed. So the global 'Batch' flag was in its 0 state.

. what follows is the original openSUSE commit message
------------------------------------------------------
Do not setup SIGHUP signal handler if we are in the batch mode

Top enables a signal handler for the SIGHUP signal (loss of terminal).  While
this makes sense for top's default interactive mode, it doesn't make any sense
for batch mode. If you run top in nohup just to collect data over time and
disconnect top finishes which is not what one would expect.
------------------------------------------------------

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agofix NEWS
Craig Small [Mon, 11 Apr 2022 06:39:49 +0000 (16:39 +1000)]
fix NEWS

2 years agosysctl: print dotted keys again
Craig Small [Sat, 9 Apr 2022 04:18:28 +0000 (14:18 +1000)]
sysctl: print dotted keys again

When the globbing update was put into sysctl, you could no longer
simply use the keys because one key could potentially be
multiple paths once the glob expansion occured.  Using the path
instead gave a unique output.

Except certain programs, such as salt, expected the output to use
the dotted path "kernel.hostname" and not "kernel/hostname".

We can no longer use the original key, so now for each path:
  Copy the path
  strip off /proc/
  convert all / to .

The sysctl testsuite was also updated to check for a few different
types of conversion failures.

References:
 commit 6389deca5bf667f5fab5912acde78ba8e0febbc7
 https://www.freelists.org/post/procps/some-procpsn4400-fixes,4
 https://repo.saltproject.io/

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2 years agops: that restored aix behavior is now even more robust
Jim Warner [Mon, 4 Apr 2022 05:00:00 +0000 (00:00 -0500)]
ps: that restored aix behavior is now even more robust

With the commit referenced below a nasty bug affecting
aix parsing was swatted. Beyond the bug, the logic was
enhanced to disallow commas in the format string since
they would otherwise be shown with their field's data.

However, there remained many characters other than ','
that could survive the edits to then be shown adjacent
to the data. Well, with this patch they won't anymore!

[ along the way we will no longer try to forgive the ]
[ use of a double '%%' prefix since that resulted in ]
[ display of one '%' and field code instead of data. ]

Reference(s):
. March, 2022 - restored aix bahavior
commit f0b7fd31db1e82b2a83f40541f8fbe0fe7b98ace

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agops: restore aix behavior while keeping an original fix
Jim Warner [Wed, 30 Mar 2022 19:00:00 +0000 (14:00 -0500)]
ps: restore aix behavior while keeping an original fix

[ since our'master' branch will suffer the same fate ]
[ this was ported from a patch created for 'newlib'. ]

-------------------------- original newlib commit text
-------------------------- (showing our master commit)

The commit shown below broke the aix behavior that Dr.
Fink recently reported. However, in the proposed patch
the old behavior, showing garbage when '%cpu' was used
with an invalid formatting option, would appear again.

So this patch, based on Werner's patch, goes the extra
distance to prevent that. Along the way we'll disallow
commas in the aix format str to prevent their display.

Reference(s):
https://www.freelists.org/post/procps/Procpsng-400-released-with-newlib,2
. Mar, 2022 - where aix bug was introduced
commit 05187e4f17fec226ca60595a7558f9a34750efb0

Prototyped-by: Dr. Werner Fink <werner@suse.de>
Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: add another tiny bit of robustness to rcfile code
Jim Warner [Tue, 15 Mar 2022 05:00:00 +0000 (00:00 -0500)]
top: add another tiny bit of robustness to rcfile code

At this point I don't know if the Rc.id ever carried a
value of 'b', 'c', 'd' or 'e' in a public release. But
I do know that those values ought not to be recognized
in any configuration file. Now they won't be for sure.

[ while the absence of this new check didn't produce ]
[ an error message, it would skip the initialization ]
[ of default values plus possible string extensions. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: do not add an extra line when rcfile is rewritten
Jim Warner [Tue, 15 Mar 2022 05:00:00 +0000 (00:00 -0500)]
top: do not add an extra line when rcfile is rewritten

When the configuration file is first written, there is
just the normal single newline which ends that rcfile.

However, when any existing rcfile was rewritten, there
was one extra newline '\n' character added at the end.
This will happen just once. The file does NOT continue
to grow with the extra blank lines always being added.

Anyway, this patch will put an end to such a practice.

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agodoc: document catch-up of new scalable 'STARTED' field
Jim Warner [Fri, 11 Mar 2022 06:00:00 +0000 (00:00 -0600)]
doc: document catch-up of new scalable 'STARTED' field

[ the original newlib commit message(s) appear below ]
[ but 'cpu utilization' was not implemented to avoid ]
[ any library modifications and thus version impact! ]

------------------------------------- newlib patch ---
doc: updated with new 'start time' & 'cpu utilization'

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: squashed catch-up of new scalable 'STARTED' field
Jim Warner [Fri, 11 Mar 2022 06:00:00 +0000 (00:00 -0600)]
top: squashed catch-up of new scalable 'STARTED' field

[ the original newlib commit message(s) appear below ]
[ but 'cpu utilization' was not implemented to avoid ]
[ any library modifications and thus version impact! ]

--------------------------------- newlib patch #1 ---
top: added fields for 'start time' & 'cpu utilization'

This patch will exploit some new library capabilities.

[ one will raise eyebrows, the other likely will not ]

A new 'STARTED' field was added which shows the time a
process started after system boot. As such the largest
interval represents the most recently started process.

This is the field that will likely be questioned since
it's somewhat counterintuitive. But were we to instead
use TIME_ELAPSED, the value will change with every top
refresh. This will defeat any PUFF macro optimization.

The new '%CUU' field will probably be better received.
It represents the cpu usage over the life of the task.
When a process was showing high %CPU usage, this field
can be used to determine if it's an anomaly or normal.

[ and as with %CPU, %CUU shows a '?' when running in ]
[ a namespace when /proc was mounted with subset=pid ]

---------------------------------- newlib patch #2 ---
top: tweaked the recently introduced 'STARTED' support

When the 'STARTED' field was added, the width was made
the same as the 'TIME+' field. Thus, a full time could
be shown (which then included hundredths of a second).

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

Henceforth it will not include those ol' centiseconds.

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

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agodoc: document 'scale_tics' catch-up for Ctrl-E scaling
Jim Warner [Thu, 10 Mar 2022 06:00:00 +0000 (00:00 -0600)]
doc: document 'scale_tics' catch-up for Ctrl-E scaling

[ the original newlib commit message(s) appear below ]

------------------------------------- newlib patch ---
doc: document 'scale_tics' function for Ctrl-E scaling

[ i also tweaked that 'STARTED' narrative just a bit ]
[ since its original wording implied the value could ]
[ change, whereas it's fixed when a task is started. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: squashed 'scale_tics' catch-up for Ctrl-E scaling
Jim Warner [Thu, 10 Mar 2022 06:00:00 +0000 (00:00 -0600)]
top: squashed 'scale_tics' catch-up for Ctrl-E scaling

[ the original newlib commit message(s) appear below ]

---------------------------------- newlib patch #1 ---
top: refactor 'scale_tics' function for better scaling

This patch refactors the 'scale_tics' function to more
closely parallel uptime shown on the first line of the
summary area. The old logic has been preserved through
the header file's new  #define SCALE_FORMER provision.

However, the former logic was actually a big disaster.
These are some potential problems with that old logic:

1. With respect to our time fields top no longer deals
solely with cpu time. So, the old limits of '68 weeks'
could possibly be insufficient to reflect those times.

2. Given the widths of top's new time fields, the code
never got beyond scaling to hours. For example, with a
ridiculously large span of 19 years, the scaled result
would then be shown as '167832h'. We never reached the
days ('6993d') or even the weeks ('999w') equivalents.

3. Similarly, with that 'TIME+' field and a large tics
value, results would then appear as 'MMMMMM:SS' rather
than the more meaningful 'HH:MM:SS' or days and hours.

So henceforth we will adopt these scaling conventions:

  MMM:SS.hh ... minutes:seconds.hundredths
  MMM:SS ...... minutes:seconds
  HH,MM ....... hours,minutes
  D+H ......... days+hours (with 'd' & 'h' suffixes)
  D ........... days (with 'd' suffix)
  W+D ......... weeks+days (with 'w' & 'd' suffixes)
  W ........... weeks (with 'w' suffix)

Note that, unlike our former scaling logic, that 'MMM'
portion won't be allowed to grow unconditionally. It's
limited (arbitrarily?) to 360 total minutes (6 hours).
Additionally, the 'HH' guy will be limited to 96 hours
(4 days) while that 'D' limit was set at 14 (2 weeks).

Whenever a limit is hit, scaling will advance a level.

---------------------------------- newlib patch #2 ---
top: extended 'scale_tics' function for Ctrl-E scaling

That normalization of the 'scale_tics' function in the
prior commit convinced me that I won't please everyone
with my arbitrary choices for the scaling transitions.

So, this patch will provide the users with a means for
setting their own scaling transition points with a new
toggle. Ctrl-E was chosen since the 'e/E' toggles were
already present as a means of scaling (albeit memory).

[ this toggle will also serve an educational purpose ]
[ by allowing one to see all the scaling conventions ]

The scaling a user establishes is saved in the rcfile.

---------------------------------- newlib patch #3 ---
top: enhanced 'scale_tics' function for Ctrl-E scaling

When scale_tics was refactored and then Ctrl-E support
added to top, the complete range of scaling values was
not visible. Namely, a single 'd' (days) & 'w' (weeks)
was never seen with ^E. With this commit they will be.

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agops: swat insidious bug with the %cpu' format specifier
Jim Warner [Wed, 9 Mar 2022 06:00:00 +0000 (00:00 -0600)]
ps: swat insidious bug with the %cpu' format specifier

[ the original newlib commit message(s) appear below ]

----------------------------------------- newlib patch
ps: swat insidious bug with the %cpu' format specifier

Whoa, my head really hurts but this commit should help
with a speedy recovery hopefully, after it is applied.

If the '%cpu' field is used as a format specifier with
that 'o' option, you will encounter a SIGSEGV if there
is also an invalid argument on that same command line.

For example, try 'ps/pscommand -o %cpu,x' with newlib.
With any format specifier other than the '%cpu', there
is an error message, as would happen with '-o pcpu,x'.

For a 3.3.17 version of ps, there's no abend. Instead,
the program will just display a bunch of gobbledygook.
This boo-boo was found to exist as far back as v3.3.0.

[ ok, i am starting to feel very much better already ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: trade that 'strncpy' for more efficient 'memccpy'
Jim Warner [Tue, 15 Feb 2022 06:00:00 +0000 (00:00 -0600)]
top: trade that 'strncpy' for more efficient 'memccpy'

This patch was prompted by the merge request for pgrep
referenced below. In top's case, any performance gains
will be minimal since the now defunct strncpy was only
employed for termcap rebuilds after interacting with a
user (+ 1 other non-termcap related user interaction).

[ golly, strncpy always calls at least two functions ]
[ but usually calls a total of 3. on the other hand, ]
[ memccpy will only call a maximum of two functions. ]

And thanks to Baruch Siach for these strncpy insights.

Reference(s):
https://gitlab.com/procps-ng/procps/-/merge_requests/148

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: let's eliminate some additional compiler warnings
Jim Warner [Mon, 14 Feb 2022 06:00:00 +0000 (00:00 -0600)]
top: let's eliminate some additional compiler warnings

This patch eliminates those warnings referenced below.

[ the last error shown needed a little extra cleanup ]
[ for when that '#define SCROLLVAR_NO' is activated. ]

Reference(s):
top.c: In function 'adj_geometry':
top.c:1976:20: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
 1976 |    if (Screen_cols < DOUBLE_limit) Curwin->rc.double_up = 0;
      |                    ^
top.c: In function 'zap_fieldstab':
top.c:2436:26: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
 2436 |    if (wtab[EU_CPN].wmin < digits) {
      |                          ^
top.c:2442:26: warning: comparison of integer expressions of different signedness: 'int' and 'unsigned int' [-Wsign-compare]
 2442 |    if (wtab[EU_NMA].wmin < digits) {
      |                          ^
top.c: In function 'keys_summary':
top.c:5382:45: warning: comparison of integer expressions of different signedness: 'int' and 'long unsigned int' [-Wsign-compare]
 5382 |          if (w->rc.double_up && Screen_cols < DOUBLE_limit) {
      |                                             ^
top.c: In function 'task_show':
top.c:6306:13: error: expected ';' before 'else'
 6306 |             else
      |             ^~~~

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: attempt to clarify the 'iokey' parameter meanings
Jim Warner [Sun, 13 Feb 2022 06:00:00 +0000 (00:00 -0600)]
top: attempt to clarify the 'iokey' parameter meanings

The 'iokey' function's parameter 'action' was utilized
with literal numbers in the calling functions. So this
change will replace those literal numbers with #define
constants which, one hopes, will clarify their impact.

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: tweak the heck out of some command line help text
Jim Warner [Wed, 26 Jan 2022 06:00:00 +0000 (00:00 -0600)]
top: tweak the heck out of some command line help text

This patch began as just an attempt to make any option
which also included an argument a little more readable
by adding one space before the '=ARGUMENT' convention.

[ by the way, i don't agree with most of those other ]
[ procps-ng programs that use an '<arg>' convention. ]
[ it's too easily misread as an 'optional' argument. ]

[ top uses a convention like that found in coreutils ]
[ albeit now with one extra space before the equals. ]

In adjusting those arguments it was apparent that many
explanations already lined up nicely at the right hand
margin. So, this commit will force right-justification
with all explanations (as we do with commit messages).

[ and as a final challenge, for those options taking ]
[ an argument, that argument was repeated within the ]
[ explanation and made the rightmost item on a line. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: eliminate the potential warnings '-Wsign-compare'
Jim Warner [Tue, 25 Jan 2022 06:00:00 +0000 (00:00 -0600)]
top: eliminate the potential warnings '-Wsign-compare'

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: avoid a potential warning '-Wmaybe-uninitialized'
Jim Warner [Tue, 25 Jan 2022 06:00:00 +0000 (00:00 -0600)]
top: avoid a potential warning '-Wmaybe-uninitialized'

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: avoid a possible warning '-Wimplicit-fallthrough'
Jim Warner [Tue, 25 Jan 2022 06:00:00 +0000 (00:00 -0600)]
top: avoid a possible warning '-Wimplicit-fallthrough'

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: add visual clue when focus toggle ('F') is active
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: add visual clue when focus toggle ('F') is active

When in forest view mode, that focus toggle ('F') is a
useful tool occasionally. But, if a focused parent has
enough cloned siblings to exceed screen rows, it could
be hard to remember that such a toggle remains active.

So, this patch will provide a subtle visual clue added
to the leftmost position in the COMMAND column. Now if
the focus toggle was active, regardless of total tasks
affected, the users will always know when it's active.

Reference(s):
. 07/28/21, introduced new focus toggle ('F')
commit bdd50fa2fc00edb51f6125334d2329fdce12c4ba
. 09/23/21, ensure focused tasks stay focused
commit d7e6c27a7944fbaa1493f207fd521bd59984c955

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: eliminate warnings for '-Wmisleading-indentation'
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: eliminate warnings for '-Wmisleading-indentation'

Reference(s):
. 01/08/22, newlib branch equivalent commit
commit 68995bee95d145f84c27849c47e4512da3f77a7e

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: eliminate every warning for '-Wformat-truncation'
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: eliminate every warning for '-Wformat-truncation'

Reference(s):
. 01/08/22, newlib branch equivalent commit
commit f05c78d174d3383afc3f71956c23e3e1e75bb2ed

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: repair several inconsistencies in email addresses
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: repair several inconsistencies in email addresses

[ you wouldn't believe how many back-and-forths were ]
[ involved in Craig convincing me there were several ]
[ inconsistencies. i am so dense sometimes (often?). ]

Reference(s):
. 01/2022, newlib branch equivalent commits
commit 91ffe817343a43ac67a1a1ffaf1d02aca2760b11
commit c83cd6e6c01a51c12340472a59e507e835db9de0

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: bust up that overly large 'summary_show' function
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: bust up that overly large 'summary_show' function

Over the years the summary_show function has increased
from around 77 lines of code & comments to its current
size of 195 lines. This is well beyond an ideal length
of available screen rows. So this patch will split it.

We'll take the cpu and memory duties and make separate
functions out of them. Of course, this will incur some
additional call overhead but, given current cpu/memory
logic, any such increase really becomes insignificant.

Now summary_show's a svelte 31 lines of code/comments.

[ this is like what was done to that do_key function ]
[ a decade ago except overhead of new function calls ]
[ plus table lookup was even less of a concern since ]
[ a human was involved, not normal iterative output. ]

Reference(s):
. 01/03/22, newlib branch equivalent commit
commit cbff1d;d10645cb8c7fc55dda08b06fbafed05932

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: provide for avoiding task focus ('F') distortions
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: provide for avoiding task focus ('F') distortions

In the patch referenced below the focus task logic was
improved to ensure that newly cloned tasks 'above' the
focused task did not force an effect like the up arrow
key. That commit also acknowledged that when some task
'above' ended, it *would* act like the down arrow key.

Well, with this commit a task ending 'above' a focused
task no longer distorts the focus. That's assuming the
new '#define FOCUS_HARD_Y' is specified plus the total
focused tasks does not exceed the current screen rows.

Thus, the manual scrolling with up and down arrow keys
is allowed when the total focused exceeds screen rows.

[ but keep in mind that when a focused task has been ]
[ hardened some otherwise useful toggles will not be ]
[ available. keystrokes like 'v' and even 'F' itself ]
[ can not be applied to another task with no scroll. ]

    Reference(s):
. 01/03/22, newlib branch equivalent commit
commit 0e744d3656b1e0299f1083b7f7eabf60fb080f10
. 09/24/21, master branch 'focus' logic improved
commit d7e6c27a7944fbaa1493f207fd521bd59984c955

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: update the man page & source file copyright dates
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: update the man page & source file copyright dates

This just updates the copyright dates in the documents
within the top subdirectory only. Others are unchanged.

Reference(s):
. 01/01/22, newlib branch equivalent commit
commit afdd4690fc3dfa6b5b89ec7795870d8becf416ba

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: justify those header #define description comments
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: justify those header #define description comments

This commit is an example of what can happen when this
author is waiting around for the release of our newlib
& otherwise runs out of legitimate changes to be made.

[ on the other hand, such changes surely make us run ]
[ quite a bit more efficiently, if i am not mistaken ]

Reference(s):
. 09/14/21, newlib branch equivalent commit
commit 6049c13b4d9c26d20fd62899cca4e4525ba1b906

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: enabled arbitrarily large numbers in 'scale' guys
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: enabled arbitrarily large numbers in 'scale' guys

While experimenting with a new feature, wherein select
fields display the total upon request, the capacity of
the 'num' passed to some 'scale' guys became an issue.

So this commit will, with the compiler's help, put the
responsibility for converting the integer into a float
within the calling code (instead of the called logic).

Reference(s):
. 03/08/21, newlib branch equivalent commit
commit 62928cf4614314dfb99adba79240098f49487c6f

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: a silly change forcing right margin justification
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: a silly change forcing right margin justification

Reference(s):
. 01/11/21, newlib branch equivalent commit
commit 0cf6942be70817cc363c4ae4df99d56d3e317b71

Signed-off-by: Jim Warner <james.warner@comcast.net>
2 years agotop: allow setting variable width col scroll (1 vs. 8)
Jim Warner [Thu, 13 Jan 2022 19:13:13 +0000 (13:13 -0600)]
top: allow setting variable width col scroll (1 vs. 8)

The Inspection feature already offered an INSP_SLIDE_1
provision. This patch now offers similar extensions to
variable width column scrolling (assuming SCROLLVAR_NO
isn't defined). Such a provision was useful during the
development of some recent library UTF-8 enhancements.

Reference(s):
. 12/30/20, newlib branch equivalent commit
commit edce9ed61241146939473aaa80b7a469b7442cbf

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agofix uid/gid > 2^31
Todd Lewis [Mon, 25 Oct 2021 23:38:10 +0000 (19:38 -0400)]
fix uid/gid > 2^31

3 years agops: ignore SIGURG
Tommi Rantala [Mon, 11 Oct 2021 10:33:18 +0000 (13:33 +0300)]
ps: ignore SIGURG

Stop registering signal handler for SIGURG, to avoid ps failure if
someone sends such signal. Without the signal handler, SIGURG will
just be ignored.

  Signal 23 (URG) caught by ps (3.3.16).
  ps:ps/display.c:66: please report this bug

https://man7.org/linux/man-pages/man7/signal.7.html
https://www.freebsd.org/cgi/man.cgi?sektion=3&query=signal

3 years agotestsuite: Make test program compile on Hurd
Craig Small [Tue, 12 Oct 2021 20:56:39 +0000 (07:56 +1100)]
testsuite: Make test program compile on Hurd

procps fails to build from source due to usage of field si_int of struct
siginfo_t in lib/test_process.c which does not exist on GNU/Hurd.

Thanks to Svante Signell for the patch.

References:
 https://bugs.debian.org/987557

Signed-off-by: Craig Small <csmall@dropbear.xyz>
3 years agotop: restore ending ']' when summary graphs are scaled
Jim Warner [Mon, 4 Oct 2021 05:00:00 +0000 (00:00 -0500)]
top: restore ending ']' when summary graphs are scaled

When a visual separator was added to 2 abreast summary
items in a recent commit, this bug was introduced. So,
from that earlier patch we'll revert one line of code.

The bug surfaced under an 80/even column terminal only
when that '4' toggle was off. With an an 81/odd column
screen, it existed in both single and 2 abreast modes.

[ this commit also goes the extra distance to ensure ]
[ two abreast mode maximizes available screen width. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: ensure those potential focused tasks stay focused
Jim Warner [Fri, 24 Sep 2021 05:00:00 +0000 (00:00 -0500)]
top: ensure those potential focused tasks stay focused

When that 'F' focus command has been applied to a task
in forest view it should remain as the topmost process
in a particular window. But without this patch that is
not guaranteed. Newly forked/cloned tasks 'above' such
a process result in task(s) appearing which shouldn't.

The effect was as if that up arrow key scrolled beyond
the topmost parent task, which would never be allowed.

[ since scrolling is permitted within a focus range, ]
[ when any task 'above' our focus/topmost task ends, ]
[ we respond as if scrolled with the down arrow key. ]

[ that result is completely appropriate. if the user ]
[ wishes to return to a focused parent, the up arrow ]
[ or home key can be used to accomplish such a goal. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agosysctl: Support systemd glob patterns
Craig Small [Mon, 13 Sep 2021 12:07:37 +0000 (22:07 +1000)]
sysctl: Support systemd glob patterns

systemd-sysctl handles glob patterns along with overrides and
exceptions. Now the procps sysctl does it too.

The return value for sysctl is consistently either 0 or 1.

Added tests to check sysctl functions.

References:
 procps-ng/procps#191

Signed-off-by: Craig Small <csmall@dropbear.xyz>
3 years agotop: some minor tweaks supporting long cmdline options
Jim Warner [Wed, 8 Sep 2021 05:00:00 +0000 (00:00 -0500)]
top: some minor tweaks supporting long cmdline options

This darn patch began as 1 correction to an extraneous
comma in the man document. Then, it grew to include an
adjustment for a couple of additional man page things.

After that, I figured I might as well tighten up logic
dealing with those awful gaps in the getopt_long code.

[ the error_exit mentioned in the associated comment ]
[ will only be taken when '=' ends the argv vectors! ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agoNEWS: update to acknowledge top's long cmdline options
Jim Warner [Sun, 5 Sep 2021 05:00:00 +0000 (00:00 -0500)]
NEWS: update to acknowledge top's long cmdline options

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: update man document with new long cmdline options
Jim Warner [Sun, 5 Sep 2021 05:00:00 +0000 (00:00 -0500)]
top: update man document with new long cmdline options

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: utilize getopt and introduce long cmdline options
Jim Warner [Sun, 5 Sep 2021 05:00:00 +0000 (00:00 -0500)]
top: utilize getopt and introduce long cmdline options

For quite some time now, top has stood out like a sore
thumb regarding the approach to cmdline options & help
text.  Only short options were used and that same help
text was displayed for '-h' (help) plus 'v' (version).

[ also, top 'rolled his own' when it came to parsing ]
[ options while avoiding that getopt implementation. ]

Well, with this commit all of that has changed and top
now has added a long form of his options. Additionally
he employs getopt_long() for the bulk of that parsing.

[ however, top will still avoid separate fputs calls ]
[ characteristic of other procps-ng programs when it ]
[ comes to help. rather all such text is one string. ]

Along the way, the following major getopt deficiencies
were addressed, assuming the absence of a new #define:

* an equals sign ('=') is allowed on both option forms

* whitespace is allowed before & after the equals sign

* optional arguments needn't abut their related option
for short form nor is an '=' required with either form

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: some minor organizational tweaks for man document
Jim Warner [Fri, 3 Sep 2021 05:00:00 +0000 (00:00 -0500)]
top: some minor organizational tweaks for man document

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: and just eliminate a couple of unnecessary braces
Jim Warner [Mon, 23 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: and just eliminate a couple of unnecessary braces

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: reposition call to cpus_refresh() for consistency
Jim Warner [Mon, 23 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: reposition call to cpus_refresh() for consistency

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: corrected some more miscellaneous man page errata
Jim Warner [Mon, 23 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: corrected some more miscellaneous man page errata

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: whack a label & branch in 'summary_show' function
Jim Warner [Mon, 23 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: whack a label & branch in 'summary_show' function

Catch-up with newlib, original commit message follows:
------------------------------------------------------

If there are zero numa nodes then the View_CPUNOD flag
cannot possibly be set. So it was unnecessary to check
both the numa total and View_CPUNOD in 'summary_show'.

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: added a new #define to test absence of numa nodes
Jim Warner [Mon, 23 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: added a new #define to test absence of numa nodes

Catch-up with newlib, original commit message follows:
------------------------------------------------------

This new #define will produce top results identical to
the results achieved for './configure --disable-numa'.

However it keeps the change entirely local to our top.

[ it has been introduced to test the following patch ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: man page reflects '-H' impact for '-p' provisions
Jim Warner [Thu, 12 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: man page reflects '-H' impact for '-p' provisions

Reference(s):
https://www.freelists.org/post/procps/important-extension-to-newlib,4

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: thread mode transitions should remove focus ('F')
Jim Warner [Tue, 10 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: thread mode transitions should remove focus ('F')

The commit referenced below forced a return to row one
whenever there was a thread mode transition. Now, with
our new focus ('F') feature, we should adopt a similar
philosophy so as to avoid potential display anomalies.

Reference(s)
. Jun 2018, force row 1 w/ thread mode transition
commit 9dd7a97c4a6861aa3a6217c8a03fc0d2397b2bef

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: document summary area changes involving 2 abreast
Jim Warner [Thu, 5 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: document summary area changes involving 2 abreast

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: allow the summary memory lines to print 2 abreast
Jim Warner [Thu, 5 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: allow the summary memory lines to print 2 abreast

The commit shown below introduced two abreast printing
for %Cpu statistics. But, the Memory & Swap lines have
always been printed on separate lines when '4' was on.

With this commit, those lines will now be treated just
like %Cpu stats, either separate lines or two abreast.

Reference(s):
. May 2020, added '4' toggle for 2 abreast
commit fca48e7e9947871f280066c01a50ca4812bcc847

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: add a visual separator to lines printed 2 abreast
Jim Warner [Thu, 5 Aug 2021 05:00:00 +0000 (00:00 -0500)]
top: add a visual separator to lines printed 2 abreast

When the '4' toggle is on, and Summary Area %Cpu lines
are shown two abreast, it's not always clear where the
separation is between the two processors. So with this
patch we'll now print a vertical bar separator between
them (looking similar to the existing field headings).

We will also reduce that 'GRAPH_suffix' constant to 1,
reflecting the the trailing ']' bracket only, so as to
maximize top's exploitation of available screen width.

[ plus a superfluous double '+ +' has now been fixed ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: new #define added for focus ('F') toggle tweaking
Jim Warner [Wed, 28 Jul 2021 05:00:00 +0000 (00:00 -0500)]
top: new #define added for focus ('F') toggle tweaking

Just to see if I could, the new #define will force the
indentation of a parent task to be reset to zero while
maintaining the proper child indentation relationship.

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: introduced new focus toggle ('F'), man doc & NEWS
Jim Warner [Wed, 28 Jul 2021 05:00:00 +0000 (00:00 -0500)]
top: introduced new focus toggle ('F'), man doc & NEWS

[ i also corrected an unrelated typographical error! ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: introduced new focus toggle ('F'), program source
Jim Warner [Wed, 28 Jul 2021 05:00:00 +0000 (00:00 -0500)]
top: introduced new focus toggle ('F'), program source

Sometimes, it might be useful to isolate a parent task
and its forked children from other system activity. As
an example, a user might want to examine workload in a
specific lxc container. Or maybe there is some need to
question what's happening under the same tmux session.

Since forest view mode tends to be a relatively stable
display, it will sometimes satisfy the above need. But
that mode can't currently guarantee the target process
always remains as the topmost task or even is visible.

So, this patch will enable focusing on any parent task
and keeping it as the topmost process while displaying
it and its forked children only. It then appears as if
there is no other activity in that system by virtue of
the blank lines which follow that final child process.

To implement this new feature, top's redundant 'F' key
has been repurposed. It made little sense devoting two
keys to the Fields Management screen (especially since
the key we've taken required two separate keystrokes).

[ and while we're at it, i also added punctuation to ]
[ that prologue for 'forest_display' since all other ]
[ forest functions used punctuation. And, instead of ]
[ a pointer to a proc_t he will now get a ppt index. ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: fix a fix for the 'bye_bye' function (merge #127)
Jim Warner [Mon, 21 Jun 2021 05:00:00 +0000 (00:00 -0500)]
top: fix a fix for the 'bye_bye' function (merge #127)

In the merge request shown below, 1 too many bytes are
written to stdout thus including the terminating null.
As the cure, this commit just reduces the length by 1.

[ along the way, we will remove some unneeded braces ]
[ plus add some additional comments with attribution ]

Reference(s):
https://gitlab.com/procps-ng/procps/-/merge_requests/127
. original merged change
commit 0bf15c004db6a3342703a3c420a5692e376c457d

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: refactor 'mkVIZ' support to avoid future problems
Jim Warner [Wed, 16 Jun 2021 05:00:00 +0000 (00:00 -0500)]
top: refactor 'mkVIZ' support to avoid future problems

In the patch referenced below, 2 potential abends were
fixed both of which involved 'alternate display mode'.

The root cause of those abends was a negative value in
the 'begnext' field for other than the current window.

And while that potential is fixed for now the existing
code almost invites such problems again in the future.

So, this patch will remove any temptation to name some
other window in the 'mkVIZrow1' macro. And, since that
macro is not the only source of 'begnext' changes, the
'mkVizrowX' is being added to identify such occasions.

[ and for symmetry i've added a 'mkVIZyes' macro and ]
[ ameliorated an otherwise surreptitious assignment! ]

Reference(s):
commit 84e85611c36d31a478e1b62e5668671d9389265d

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agoMerge branch 'ericonr/procps-error'
Craig Small [Wed, 16 Jun 2021 10:02:18 +0000 (20:02 +1000)]
Merge branch 'ericonr/procps-error'

References:
 procps-ng/procps!137

3 years agoc: print strerror() instead of error code.
Érico Nogueira [Fri, 4 Jun 2021 16:10:28 +0000 (13:10 -0300)]
c: print strerror() instead of error code.

This changes error() behavior to match what glibc already does.

3 years agoMerge branch 'heftig/procps-fix-free-h-si'
Craig Small [Wed, 16 Jun 2021 09:45:31 +0000 (19:45 +1000)]
Merge branch 'heftig/procps-fix-free-h-si'

References:
 procps-ng/procps!140
 procps-ng/procps#133

3 years agofree: Clean up scale_size and fix `free -h --si`
Jan Alexander Steffens (heftig) [Tue, 15 Jun 2021 18:43:36 +0000 (20:43 +0200)]
free: Clean up scale_size and fix `free -h --si`

- Simplify control flow a bit. We don't need two loop variables, either.
- Consistently use %lld for bytes.
- Fix the base handling for human-readable output. The code used to
  calculate *mebibytes* first, then scale that to the required exponent
  with the selected base, which is patently wrong.

Fixes https://gitlab.com/procps-ng/procps/-/issues/133

3 years agotop: fix two potential 'alternate display mode' abends
Jim Warner [Mon, 31 May 2021 05:00:00 +0000 (00:00 -0500)]
top: fix two potential 'alternate display mode' abends

This commit will address potential abends upon leaving
the windows help or color mapping screens and invoking
alternate display mode ('A').  It only happens if that
current window was changed with multiple 'a'/'w' keys.

So now, rather than leaving a trail of negative values
in the 'begtask' field, compliments of that win_select
function, we'll remove the mkVIZrow1 macro. Henceforth
it will be issued just once per user interaction. Thus
a promise of 'Curwin' only being impacted is restored.

[ my thanks to Vladimir Chren for reporting this bug ]

Reference(s):
https://gitlab.com/procps-ng/procps/-/issues/210
https://gitlab.com/procps-ng/procps/-/merge_requests/135

Discovered by:Vladimir Chren <vladimir.chren@gmail.com>
Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: extend end-of-job report to reflect unused fields
Jim Warner [Tue, 27 Apr 2021 05:00:00 +0000 (00:00 -0500)]
top: extend end-of-job report to reflect unused fields

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agotop: eliminate the #define VER_J_RCFILE as superfluous
Jim Warner [Wed, 31 Mar 2021 05:00:00 +0000 (00:00 -0500)]
top: eliminate the #define VER_J_RCFILE as superfluous

With that commit referenced below, which preserved the
'4' and + '!' toggles in the rcfile, this VER_J_RCFILE
macro was made superfluous. But, it was never removed.

Reference(s):
commit f858e563b7e5013352a8c8316a90c702afd0e1a0

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agosysctl man page update for pattern
Bas van der Vlies [Thu, 25 Feb 2021 08:35:33 +0000 (09:35 +0100)]
sysctl  man page update for pattern

pattern must be used before `--system` else it does not work for sysctl
file(s)

```
root# /sbin/sysctl --system --pattern '^net.ipv6'
* Applying /etc/sysctl.d/30-ceph-osd.conf ...
fs.aio-max-nr = 1048576
kernel.pid_max = 4194304
* Applying /etc/sysctl.d/protect-links.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/sara_tweaks.conf ...
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 0
* Applying /etc/sysctl.conf ...
```

vs:
```
root# /sbin/sysctl --pattern '^net.ipv6' --system
* Applying /etc/sysctl.d/30-ceph-osd.conf ...
* Applying /etc/sysctl.d/protect-links.conf ...
* Applying /etc/sysctl.d/sara_tweaks.conf ...
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 0
* Applying /etc/sysctl.conf ...
```

3 years agoconfigure: add macro to check for __PROGNAME
Henrik Grimler [Wed, 26 May 2021 13:45:02 +0000 (15:45 +0200)]
configure: add macro to check for __PROGNAME

in include/c.h we check if HAVE___PROGNAME is defined, but the
corresponding macro for setting (or not setting) it is missing from
the configure script. This commit adds the missing macro, by
copying it from the macro in tmux.

3 years agoCoverity scan findings - memleaks, unused vars, potential nullptr dereferences
Jan Rybar [Thu, 6 May 2021 14:30:54 +0000 (16:30 +0200)]
Coverity scan findings - memleaks, unused vars, potential nullptr dereferences

3 years agoescape.c: Fix missing nl_langinfo on certain configs
Issam E. Maghni [Fri, 23 Apr 2021 20:53:39 +0000 (16:53 -0400)]
escape.c: Fix missing nl_langinfo on certain configs

3 years agoconfigure: Add --disable-w
Issam E. Maghni [Fri, 23 Apr 2021 19:58:36 +0000 (15:58 -0400)]
configure: Add --disable-w

3 years agotop: In the bye_bye function, replace fputs with the write interface.
Shaohua Zhan [Thu, 3 Dec 2020 02:24:09 +0000 (10:24 +0800)]
top: In the bye_bye function, replace fputs with the write interface.

When top calls malloc, if a signal is received, it will
call sig_endpgm to process the signal. In the bye_bye function, if the
-b option is enable, the Batch variable is set, the fputs function
will calls malloc at the same time. The malloc function is not reentrant, so
it will cause the program to crash.

Signed-off-by: Shaohua Zhan <shaohua.zhan@windriver.com>
3 years agopidwait: Rename from pwait
Craig Small [Mon, 15 Feb 2021 10:10:06 +0000 (21:10 +1100)]
pidwait: Rename from pwait

pwait is already in at least Debian in a different package

References:
 https://bugs.debian.org/982391

3 years agoNEWS: tweak wording associated with library versioning v3.3.17
Jim Warner [Mon, 8 Feb 2021 16:10:10 +0000 (10:10 -0600)]
NEWS: tweak wording associated with library versioning

Signed-off-by: Jim Warner <james.warner@comcast.net>
3 years agolibrary: Version has revision incremented
Craig Small [Mon, 8 Feb 2021 10:36:05 +0000 (21:36 +1100)]
library: Version has revision incremented

Library had only its revision incremented to three as there were only
internal changes.

References:
 commit 0d386260b4b007e65172d137924db6e4e4e994cd
 commit eea5626bb144328eb60e9ea8a29bd5b1f100ecd9
 commit 1b9ea61116a625456a89dd7d26b3e4c3d390a599
 commit b0c8e3408b0c0e8e2b41e704083139ab791194a1
 commit e3196502784b11c70d6e3c33159403d2f7c118e1
 commit bb1a79f2c837cad238c2576d2b2705f9cc781c35
 commit b52a26740445904c01233166271817743f2e4b40
 commit 8e0c33be46820c11bb7a911ae0f67fd390864058

Signed-off-by: Craig Small <csmall@dropbear.xyz>
3 years agobuild-sys: Don't require po4a for installation
Craig Small [Mon, 8 Feb 2021 10:23:41 +0000 (21:23 +1100)]
build-sys: Don't require po4a for installation

The build system tested for the presence of po4a binary at the
install step. procps ships with translated man pages so doesn't
need po4a for install/uninstallation.

Works already in psmisc!

References:
 https://gitlab.com/psmisc/psmisc/-/commit/5fab6b7ab385080f1db725d6803136ec1841a15f

Signed-off-by: Craig Small <csmall@dropbear.xyz>
3 years agonls: Fix translation problems
Craig Small [Fri, 29 Jan 2021 23:38:30 +0000 (10:38 +1100)]
nls: Fix translation problems

Some of the translation files did not escape the < properly leading
to po4a aborting.  Also some translators are using old templates
and this merges them to the new ones.

References:
 procps-ng/procps#188

3 years agonls: Update the translation files
Craig Small [Thu, 28 Jan 2021 11:39:49 +0000 (22:39 +1100)]
nls: Update the translation files

Download of the translation files from the translation
project.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
3 years agobuild-sys: Ignore temp directory for POTFILES.in
Craig Small [Thu, 28 Jan 2021 11:35:33 +0000 (22:35 +1100)]
build-sys: Ignore temp directory for POTFILES.in

Sometimes the testing sequence would leave a source tree
under procps-ng-(version) which, if update-potfiles was
run, would include these temporary files in the list, causing issues
later.

The script now explicitly ignores those temporary files.

3 years agomisc: Update NEWS to next version v3.3.17rc1
Craig Small [Fri, 22 Jan 2021 07:21:08 +0000 (18:21 +1100)]
misc: Update NEWS to next version

3 years agonls: Minor update to po files
Craig Small [Fri, 22 Jan 2021 07:19:05 +0000 (18:19 +1100)]
nls: Minor update to po files

3 years agobuild-sys: One more man-po build fix
Craig Small [Thu, 21 Jan 2021 10:58:48 +0000 (21:58 +1100)]
build-sys: One more man-po build fix

3 years agobuild-sys: Update build to install translated manpages
Craig Small [Thu, 21 Jan 2021 10:40:10 +0000 (21:40 +1100)]
build-sys: Update build to install translated manpages

Based on the psmisc build system this now installs the
translated man pages and seems to survive a make distcheck

3 years agobuild-sys: Fix version directory
Craig Small [Thu, 21 Jan 2021 10:01:33 +0000 (21:01 +1100)]
build-sys: Fix version directory

.version needs to be generated into the build directory not the
source directory.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
3 years agodocs: vmstat.8 - swap is not virtual memory
Craig Small [Thu, 21 Jan 2021 06:58:48 +0000 (17:58 +1100)]
docs: vmstat.8 - swap is not virtual memory

Chanson Shen rightly pointed out that vmstat swpd stat is
swap memory used not virtual memory used.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
4 years agotop: tweak cmd/cmdline logic for a possible bad locale
Jim Warner [Fri, 1 Jan 2021 06:00:00 +0000 (00:00 -0600)]
top: tweak cmd/cmdline logic for a possible bad locale

Since this master library isn't quite as sophisticated
as the newlib version, this patch will protect against
the possibility of multibyte characters in a program's
name combined with some locale without UTF-8 encoding.

[ it is better to treat the COMMAND column length as ]
[ more than what's actually printed than to have the ]
[ line overflow & corrupt the remaining screen lines ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
4 years agolibrary: let's make 'escaped_copy' multibyte aware too
Jim Warner [Thu, 31 Dec 2020 06:00:00 +0000 (00:00 -0600)]
library: let's make 'escaped_copy' multibyte aware too

This patch is intended to bring the master branch into
closer alignment with the newlib branch functionality.

The commit shown below replaced that 'escape_str' with
'escaped_copy' so that the ps program wouldn't execute
some code twice. However, it created a problem for the
top program when the UTF-8 encoding was not available.

Unlike ps who calls the escape functions directly, top
outputs those library provided strings unaltered. That
means there is no workaround (like LANG=) when such an
encoding was unavailable. This, in turn, can lead to a
corrupted display (especially with the linux console).

Now, when a UTF-8 encoding is not available, multibyte
chars are converted to '?', reducing display problems.

[ there's still a potential problem concerning 'cmd' ]
[ should program names contain multibyte characters. ]
[ unlike that newlib branch, this string is not ever ]
[ altered with the '?' char under the master branch. ]

Reference(s);
. Dec 2020, escaoed_copy repleced most escape_str
commit eea5626bb144328eb60e9ea8a29bd5b1f100ecd9

Signed-off-by: Jim Warner <james.warner@comcast.net>
4 years agolibrary: help ensure 'escape_str' isn't executed twice
Jim Warner [Sat, 26 Dec 2020 06:00:00 +0000 (00:00 -0600)]
library: help ensure 'escape_str' isn't executed twice

Now that the ps program is using 'escape_str' for most
of the library's returned strings, this patch tries to
lessen the prospects of executing that function twice.

Our newlib branch has achieved such a goal through the
elimination of nearly all escape.c code. However, here
we avoid API change by trading some 'escape_str' calls
(with wide character overhead) for a slightly extended
'escaped_copy' call (which incurs no multibyte costs).

Note: until we migrate to the newlib version, there is
a remaining call to 'escape_str' which we can't avoid.
Such code involves the 'escape_command' function call.

[ As we prepare for this new (final?) release, there ]
[ were already internal library changes that require ]
[ a new 'revision'. This patch won't impact the API! ]

Signed-off-by: Jim Warner <james.warner@comcast.net>
4 years agotop: added utf8 multibyte support to additional fields
Jim Warner [Thu, 24 Dec 2020 06:00:00 +0000 (00:00 -0600)]
top: added utf8 multibyte support to additional fields

When any process' command line contains multibyte utf8
characters, two separate display problems could arise.

1. If that COMMAND column is not displayed as the very
last field, then field(s) to the right are misaligned.

2. Even when last, should utf8 string length (not that
display length) exceed allowable screen width, it will
nonetheless suffer from improper premature truncation.

Number 1 is less of a concern since the cmdline column
is likely to always be the last field to be displayed,
if only to enable right and left scrolling provisions.

Number 2 is much more likely to occur, especially with
additional fields which might be shown before COMMAND.
Or, forest view child tasks can yield the same effect.

So, this commit will permit the correct utf8 multibyte
display regardless of field position or string length.

And, we'll bring top into line with the ps program for
additional fields potentially subject to utf8 display.

Signed-off-by: Jim Warner <james.warner@comcast.net>
4 years agops: extend utf8 multibyte support to additional fields
Jim Warner [Thu, 24 Dec 2020 06:00:00 +0000 (00:00 -0600)]
ps: extend utf8 multibyte support to additional fields

Form its inception (back in May of 2011), escaped_copy
has always been a flawed function. It does not operate
on 'escaped' strings but instead treats all input as a
regular string incapable of containing utf8 sequences.

As such, it should only be used for strings guaranteed
to NOT contain multibyte characters (like supgid). For
all other strings, which could contain utf8 stuff, the
correct function should have been that escape_str guy.

So this commit changes nearly every escaped_copy call.

[ note: unlike the newlib guy, the master ps program ]
[ cannot properly handle utf8 multibyte sequences in ]
[ in the recently introduced 'exe' field shown below ]

Reference(s):
. Jun 2018, introduced 'exe' field
commit b556bf5ba82c7e593eb682bbf836c2bc444b2e7d
. May 2011, original escaped_copy (cmdline, cgroup)
commit 7b0fc19e9d28380dc9790615b93bc3653d6d686e

Signed-off-by: Jim Warner <james.warner@comcast.net>
4 years agotop: correct one spelling oops in a programmer comment
Jim Warner [Tue, 22 Dec 2020 06:00:00 +0000 (00:00 -0600)]
top: correct one spelling oops in a programmer comment

Signed-off-by: Jim Warner <james.warner@comcast.net>
4 years agomisc: Add NEWS for ps sorting
Craig Small [Tue, 22 Dec 2020 05:26:35 +0000 (16:26 +1100)]
misc: Add NEWS for ps sorting

4 years agoMerge branch 'topimiettinen/procps-ps-sort-label'
Craig Small [Tue, 22 Dec 2020 05:24:47 +0000 (16:24 +1100)]
Merge branch 'topimiettinen/procps-ps-sort-label'

References:
 procps-ng/procps!99

4 years agops: add lots of sorting functions
Topi Miettinen [Wed, 11 Mar 2020 09:23:33 +0000 (11:23 +0200)]
ps: add lots of sorting functions

Use NULL in format_array to indicate that the print function shall be
used also for sorting. Change sr_nop() to NULL for all fields which
don't use pr_nop() for printing.

Before the commit (note that '--sort label' has no effect: the rows
are not sorted according to label field):
$ ps -A -o command,label --sort label | grep /lib/systemd
/lib/systemd/systemd-journa system_u:system_r:syslogd_t:s0
/lib/systemd/systemd-udevd  system_u:system_r:udev_t:s0-s0:c0.c1023
/lib/systemd/systemd-networ system_u:system_r:systemd_networkd_t:s0
/lib/systemd/systemd-resolv system_u:system_r:systemd_resolved_t:s0
/lib/systemd/systemd-timesy system_u:system_r:ntpd_t:s0
/lib/systemd/systemd-logind system_u:system_r:systemd_logind_t:s0
/lib/systemd/systemd --user user_u:user_r:user_t:s0
/lib/systemd/systemd --user root:sysadm_r:sysadm_t:s0-s0:c0.c1023
grep /lib/systemd           user_u:user_r:user_t:s0

After the commit, '--sort label' works and the output is sorted:
$ ps -A -o command,label --sort label | grep /lib/systemd
/lib/systemd/systemd --user root:sysadm_r:sysadm_t:s0-s0:c0.c1023
/lib/systemd/systemd-timesy system_u:system_r:ntpd_t:s0
/lib/systemd/systemd-journa system_u:system_r:syslogd_t:s0
/lib/systemd/systemd-logind system_u:system_r:systemd_logind_t:s0
/lib/systemd/systemd-networ system_u:system_r:systemd_networkd_t:s0
/lib/systemd/systemd-resolv system_u:system_r:systemd_resolved_t:s0
/lib/systemd/systemd-udevd  system_u:system_r:udev_t:s0-s0:c0.c1023
/lib/systemd/systemd --user user_u:user_r:user_t:s0
grep /lib/systemd           user_u:user_r:user_t:s0

Signed-off-by: Topi Miettinen <toiwoton@gmail.com>
4 years agopgrep: Remove memory leak
Craig Small [Tue, 22 Dec 2020 05:08:49 +0000 (16:08 +1100)]
pgrep: Remove memory leak

This is part of !118 where @tt.rantala found a memory leak.
The other part of !118 may come later if the performance change
is significant.

References:
 procps-ng/procps!118