From: Lennart Poettering Date: Mon, 15 Sep 2025 13:12:40 +0000 (+0200) Subject: conf-files: add flag so that we don't always prefix returned paths with the root... X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=65a6da9c96888cc0ed2af836d69b38bb20003cca;p=thirdparty%2Fsystemd.git conf-files: add flag so that we don't always prefix returned paths with the root dir path used This is useful in tools such as system-repart where we show the definition file paths a lot in our output, but if prefixed with the root path we'd show a temporary mount dir when operating on a image file. Hence, let's drop the prefix here, and show only the path within the image. --- diff --git a/src/basic/conf-files.c b/src/basic/conf-files.c index ff40eb617b2..cd91c5bc1ab 100644 --- a/src/basic/conf-files.c +++ b/src/basic/conf-files.c @@ -539,7 +539,7 @@ static int copy_and_sort_files_from_hashmap( if (FLAGS_SET(flags, CONF_FILES_BASENAME)) add = c->filename; - else if (root) { + else if (root && !FLAGS_SET(flags, CONF_FILES_DONT_PREFIX_ROOT)) { _cleanup_free_ char *p = NULL; r = chaseat_prefix_root(c->result, root, &p); diff --git a/src/basic/conf-files.h b/src/basic/conf-files.h index fa460b9e914..031463172ab 100644 --- a/src/basic/conf-files.h +++ b/src/basic/conf-files.h @@ -15,6 +15,7 @@ typedef enum ConfFilesFlags { CONF_FILES_FILTER_MASKED = CONF_FILES_FILTER_MASKED_BY_SYMLINK | CONF_FILES_FILTER_MASKED_BY_EMPTY, CONF_FILES_TRUNCATE_SUFFIX = 1 << 6, /* truncate specified suffix from return filename or path */ CONF_FILES_WARN = 1 << 7, /* warn on some errors */ + CONF_FILES_DONT_PREFIX_ROOT = 1 << 8, /* don't prefix the specified root path to the resulting paths */ } ConfFilesFlags; typedef struct ConfFile { diff --git a/src/repart/repart.c b/src/repart/repart.c index 97cc60c95b2..3b5a5413689 100644 --- a/src/repart/repart.c +++ b/src/repart/repart.c @@ -3397,7 +3397,7 @@ static int context_read_definitions(Context *context) { &files, ".conf", context->definitions ? NULL : arg_root, - CONF_FILES_REGULAR|CONF_FILES_FILTER_MASKED|CONF_FILES_WARN, + CONF_FILES_REGULAR|CONF_FILES_FILTER_MASKED|CONF_FILES_WARN|CONF_FILES_DONT_PREFIX_ROOT, dirs); if (r < 0) return log_error_errno(r, "Failed to enumerate *.conf files: %m");