]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dissect: show all kinds of images in --discover
authorLennart Poettering <lennart@poettering.net>
Tue, 12 Nov 2024 11:48:39 +0000 (12:48 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 3 Jan 2025 09:12:23 +0000 (10:12 +0100)
Given that systemd-dissect can nowadays operate on plain directories,
let's include directory images in the --discover output too.

Replace the filter with a filter for hidden images instead, as suddenly
the root fs image (which is a directory image ".host") otherwise shows up.

man/systemd-dissect.xml
src/dissect/dissect.c

index fccc61c6d8d79375d72712ed41fc0a114940c5bb..3aaa1744f3ea4b3800ef8747d2c40af71bccca0a 100644 (file)
         <xi:include href="version-info.xml" xpointer="v258"/></listitem>
       </varlistentry>
 
+      <varlistentry>
+        <term><option>--all</option></term>
+
+        <listitem><para>If combined with <option>--discover</option>, also shows images that start with a
+        dot, i.e. hidden images.</para>
+
+        <xi:include href="version-info.xml" xpointer="v258"/></listitem>
+      </varlistentry>
+
       <xi:include href="standard-options.xml" xpointer="image-policy-open" />
       <xi:include href="standard-options.xml" xpointer="no-pager" />
       <xi:include href="standard-options.xml" xpointer="no-legend" />
index 8739e130c38725ca17a8f8e5f748e0e704f2d8b2..cdc4f770159ef4a580245d74121268009cf9357f 100644 (file)
@@ -96,6 +96,7 @@ static ImagePolicy *arg_image_policy = NULL;
 static bool arg_mtree_hash = true;
 static bool arg_via_service = false;
 static RuntimeScope arg_runtime_scope = _RUNTIME_SCOPE_INVALID;
+static bool arg_all = false;
 
 STATIC_DESTRUCTOR_REGISTER(arg_image, freep);
 STATIC_DESTRUCTOR_REGISTER(arg_root, freep);
@@ -154,6 +155,7 @@ static int help(void) {
                "     --mtree-hash=BOOL    Whether to include SHA256 hash in the mtree output\n"
                "     --user               Discover user images\n"
                "     --system             Discover system images\n"
+               "     --all                Show hidden images too\n"
                "\n%3$sCommands:%4$s\n"
                "  -h --help               Show this help\n"
                "     --version            Show package version\n"
@@ -279,6 +281,7 @@ static int parse_argv(int argc, char *argv[]) {
                 ARG_MAKE_ARCHIVE,
                 ARG_SYSTEM,
                 ARG_USER,
+                ARG_ALL,
         };
 
         static const struct option options[] = {
@@ -314,6 +317,7 @@ static int parse_argv(int argc, char *argv[]) {
                 { "make-archive",  no_argument,       NULL, ARG_MAKE_ARCHIVE  },
                 { "system",        no_argument,       NULL, ARG_SYSTEM        },
                 { "user",          no_argument,       NULL, ARG_USER          },
+                { "all",           no_argument,       NULL, ARG_ALL           },
                 {}
         };
 
@@ -554,6 +558,10 @@ static int parse_argv(int argc, char *argv[]) {
                         user_scope_requested = true;
                         break;
 
+                case ARG_ALL:
+                        arg_all = true;
+                        break;
+
                 case '?':
                         return -EINVAL;
 
@@ -1889,7 +1897,7 @@ static int action_discover(void) {
 
         HASHMAP_FOREACH(img, images) {
 
-                if (!IN_SET(img->type, IMAGE_RAW, IMAGE_BLOCK))
+                if (!arg_all && startswith(img->name, "."))
                         continue;
 
                 r = table_add_many(