procps/proc
Jim Warner 649e45482f library: refactor 'escape' logic for newlib (2nd time)
Much of what was represented in the commit message for
the reference shown below was revisited in this patch.
It also means that the assertion in the last paragraph
of that message will only now be true with LANG unset.

[ and forget all the bullshit about not altering any ]
[ kernel supplied data. sometimes we must to avoid a ]
[ corrupt display due to a string we can not decode. ]

And while this commit still avoids the overhead of the
'mbrtowc', 'wcwidth' 'isprint, & 'iswprint' functions,
we achieve all the benefits with simple table lookups.
Plus such benefits are extended to additional strings.

For example, both PIDS_EXE and PIDS_CMD fields are now
also subject to being 'escaped'. If a program name did
contain multibyte characters, potential truncation may
corrupt it when it's squeezed into a 15/63 byte array.

Now, all future users of this new library only need to
deal with the disparities between string and printable
lengths. Such strings themselves are always printable.

[ the ps program now contains some unnecessary costs ]
[ with the duplicated former 'escape' functions. But ]
[ we retain that copied escape.c code for posterity. ]
[ besides, in a one-shot guy it's of little concern. ]

Note: Proper display of some multibyte strings was not
possible at the linux console. It would seem a concept
of zero length chars (like a 'combining acute accent')
is not recognized. Thus the display becomes corrupted.
But if utf8 decoding is disabled (via LANG=), then all
callers will now see '?', restoring correct alignment.

Reference(s):
. Dec 2020, newlib 'escape' logic refactored
commit a221b9084a

Signed-off-by: Jim Warner <james.warner@comcast.net>
2021-01-02 15:42:10 +11:00
..
.gitignore
COPYING
devname.c
devname.h
diskstats.c
diskstats.h
escape.c library: refactor 'escape' logic for newlib (2nd time) 2021-01-02 15:42:10 +11:00
escape.h library: refactor 'escape' logic for newlib essentials 2020-12-29 08:48:23 +11:00
libprocps.pc.in
libprocps.sym
meminfo.c
meminfo.h
namespace.c
namespace.h
numa.c
numa.h
pids.c library: extend ITEMTABLE_DEBUG just a tad, <PIDS> api 2020-12-29 08:48:23 +11:00
pids.h
procps-private.h
pwcache.c
pwcache.h
readproc.c library: refactor 'escape' logic for newlib (2nd time) 2021-01-02 15:42:10 +11:00
readproc.h library: refactor 'escape' logic for newlib essentials 2020-12-29 08:48:23 +11:00
slabinfo.c
slabinfo.h
stat.c
stat.h
sysinfo.c
sysinfo.h
test_Itemtables.c
test_namespace.c
test_pids.c
test_sysinfo.c
test_uptime.c
test_version.c
uptime.c
uptime.h
version.c
version.h
vmstat.c
vmstat.h
wchan.c
wchan.h
xtra-procps-debug.h