From 2e7f38707a1fa5949ccf3655fa33a90c8b8a2ffc Mon Sep 17 00:00:00 2001 From: Jim Warner Date: Wed, 13 Feb 2019 00:00:00 -0600 Subject: [PATCH] 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 f67127e7288879d54448ffbb63c7319835c02e91 Signed-off-by: Jim Warner --- proc/readproc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/proc/readproc.c b/proc/readproc.c index 7652cd18..9b4d9950 100644 --- a/proc/readproc.c +++ b/proc/readproc.c @@ -912,8 +912,8 @@ static const char *lxc_containers (const char *path) { if (file2str(path, "cgroup", &ub) > 0) { /* ouch, next two defaults could be changed at lxc ./configure time ( 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_delm2[] = "/lxc.payload/"; // with lxc-3.1.0 + static const char *lxc_delm1 = "lxc.payload/"; // with lxc-3.1.0 + static const char *lxc_delm2 = "lxc/"; // thru lxc-3.0.3 const char *delim; char *p1; @@ -930,7 +930,7 @@ static const char *lxc_containers (const char *path) { if ((p2 = strchr(p1, '\n'))) // isolate a controller's line *p2 = '\0'; do { // deal with nested containers - p2 = p1 + (delim_len); + p2 = p1 + delim_len; p1 = strstr(p2, delim); } while (p1); if ((p1 = strchr(p2, '/'))) // isolate name only substring