diff mbox series

pseudo_client: Add support for PSEUDO_INCLUDE_PATHS

Message ID 20231211173645.2421999-1-richard.purdie@linuxfoundation.org
State New
Headers show
Series pseudo_client: Add support for PSEUDO_INCLUDE_PATHS | expand

Commit Message

Richard Purdie Dec. 11, 2023, 5:36 p.m. UTC
We've often wondered if things would be better with a path include
list instead of an exclusion list. Add support for this so we can
test that theory

If set the include path takes precedence over the ignore path list.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 pseudo_client.c | 22 ++++++++++++++++++++++
 pseudo_util.c   |  1 +
 2 files changed, 23 insertions(+)
diff mbox series

Patch

diff --git a/pseudo_client.c b/pseudo_client.c
index a03d6b1..c55ab9d 100644
--- a/pseudo_client.c
+++ b/pseudo_client.c
@@ -1577,6 +1577,28 @@  int pseudo_client_ignore_path_chroot(const char *path, int ignore_chroot) {
 	if (ignore_chroot && pseudo_chroot && strncmp(path, pseudo_chroot, pseudo_chroot_len) == 0)
 		return 0;
 
+	env = pseudo_get_value("PSEUDO_INCLUDE_PATHS");
+	if (env) {
+		char *p = env;
+		if (*path == '\0') {
+			free(env);
+			return 0;
+		}
+		while (p) {
+			char *next = strchr(p, ',');
+			if (next)
+				*next++ = '\0';
+			if (*p && !strncmp(path, p, strlen(p))) {
+				free(env);
+				return 0;
+			}
+			p = next;
+		}
+		pseudo_debug(PDBGF_PATH | PDBGF_VERBOSE, "ignoring path: '%s'\n", path);
+		free(env);
+		return 1;
+        }
+
 	env = pseudo_get_value("PSEUDO_IGNORE_PATHS");
 	if (!env)
 		return 0;
diff --git a/pseudo_util.c b/pseudo_util.c
index b58036f..77edb9d 100644
--- a/pseudo_util.c
+++ b/pseudo_util.c
@@ -43,6 +43,7 @@  static struct pseudo_variables pseudo_env[] = {
 	{ "PSEUDO_BINDIR", 13, NULL },
 	{ "PSEUDO_LIBDIR", 13, NULL },
 	{ "PSEUDO_LOCALSTATEDIR", 20, NULL },
+	{ "PSEUDO_INCLUDE_PATHS", 20, NULL },
 	{ "PSEUDO_IGNORE_PATHS", 19, NULL },
 	{ "PSEUDO_PASSWD", 13, NULL },
 	{ "PSEUDO_CHROOT", 13, NULL },