From 063d645d95401a7f9c675670f6b28aa26629c3d5 Mon Sep 17 00:00:00 2001 From: Joachim Wiberg Date: Wed, 23 Mar 2022 06:24:44 +0100 Subject: [PATCH] in_container(): cache positive results Signed-off-by: Joachim Wiberg --- src/helpers.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/helpers.c b/src/helpers.c index 716bd16e..83eeec0c 100644 --- a/src/helpers.c +++ b/src/helpers.c @@ -548,29 +548,33 @@ done: */ int in_container(void) { - const char *files[] = { - "/run/.containerenv", - "/.dockerenv" - }; const char *containers[] = { "lxc", "docker", "kubepod" }; + const char *files[] = { + "/run/.containerenv", + "/.dockerenv" + }; + static int incont = -1; size_t i; char *c; + if (incont > 0) + return incont; + c = getenv("container"); if (c) { for (i = 0; i < NELEMS(containers); i++) { if (!strcmp(containers[i], c)) - return 1; + return incont = 1; } } for (i = 0; i < NELEMS(files); i++) { if (!access(files[i], F_OK)) - return 1; + return incont = 1; } return 0;