Dynamically scale the ST_UID size to support 32-bit UIDs

While most Unix-like systems use 16-bit user IDs,
Linux supports 32-bit UIDs since version 2.6.
UIDs above 65535 are used for UID namespacing of containers,
where a container has its own set of 16-bit user IDs.
Processes in such containers will have (much) larger UIDs than 65535.

Because the current format strings for `ST_UID` and `USER`
are `%5d` and `%9d` respectively, processes with such UIDs
lead to misaligned columns.

Dynamically scale the `ST_UID` column and increase the size of `USER`
to 10 characters (length of UINT32_MAX) to ensure that the user ID always fits.

Additionally: clean up how the titlebuffer size calculation and ensure
the PID column has a minimum size of 5.
This commit is contained in:
Silke Hofstra
2021-08-16 22:50:36 +02:00
committed by BenBE
parent 4374a267be
commit 696f79fe50
13 changed files with 71 additions and 29 deletions

View File

@ -138,7 +138,7 @@ const ProcessFieldData Process_fields[LAST_PROCESSFIELD] = {
},
[ST_UID] = {
.name = "ST_UID",
.title = " UID ",
.title = "UID",
.description = "User ID of the process owner",
.flags = 0,
},
@ -165,7 +165,7 @@ const ProcessFieldData Process_fields[LAST_PROCESSFIELD] = {
},
[USER] = {
.name = "USER",
.title = "USER ",
.title = "USER ",
.description = "Username of the process owner (or user ID if name cannot be determined)",
.flags = 0,
},