library: tweak that lxc container support a final time

Since the patch referenced below traded a compile-time
'sizeof' directive for a run-time 'strlen' call, there
is no need to declare lxc patterns as explicit arrays.

We'll also use the actual lxc patterns by omitting the
beginning slashes ('/') for both of those definitions.

And, looking to the future when most/all lxc users are
using the most recent lxc release, we will make things
slightly more efficient by reversing those two pattern
literals so the most recent pattern was checked first.

Of course, such a change only benefits tasks which are
running in a container. For the majority of processes,
both literals will be compared in that 'if' statement,
assuming the 'LXC' field is currently being displayed.

[ plus, a leftover parenthesis pair has been removed ]

Reference(s):
commit 288d759b8b

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner 2019-02-13 00:00:00 -06:00 committed by Craig Small
parent a4da552d4e
commit 32f93b56b7

View File

@ -928,8 +928,8 @@ static char *lxc_containers (const char *path) {
if (file2str(path, "cgroup", &ub) > 0) { if (file2str(path, "cgroup", &ub) > 0) {
/* ouch, next two defaults could be changed at lxc ./configure time /* ouch, next two defaults could be changed at lxc ./configure time
( and a changed 'lxc.cgroup.pattern' is only available to root ) */ ( and a changed 'lxc.cgroup.pattern' is only available to root ) */
static const char lxc_delm1[] = "/lxc/"; // thru lxc-3.0.3 static const char *lxc_delm1 = "lxc.payload/"; // with lxc-3.1.0
static const char lxc_delm2[] = "/lxc.payload/"; // with lxc-3.1.0 static const char *lxc_delm2 = "lxc/"; // thru lxc-3.0.3
const char *delim; const char *delim;
char *p1; char *p1;
@ -946,7 +946,7 @@ static char *lxc_containers (const char *path) {
if ((p2 = strchr(p1, '\n'))) // isolate a controller's line if ((p2 = strchr(p1, '\n'))) // isolate a controller's line
*p2 = '\0'; *p2 = '\0';
do { // deal with nested containers do { // deal with nested containers
p2 = p1 + (delim_len); p2 = p1 + delim_len;
p1 = strstr(p2, delim); p1 = strstr(p2, delim);
} while (p1); } while (p1);
if ((p1 = strchr(p2, '/'))) // isolate name only substring if ((p1 = strchr(p2, '/'))) // isolate name only substring