@@ -1566,6 +1566,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;
@@ -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 },
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(+)