]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
discover-image: introduce bus_property_get_image_is_read_only() with BUS_DEFINE_PROPE...
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 31 Oct 2025 11:33:34 +0000 (20:33 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 1 Nov 2025 09:11:18 +0000 (18:11 +0900)
This also makes image_is_read_only() return bool.

Follow-up for ee327e086e0534645d1c8cb9daa49cd8d7d68d51.

src/machine/image-dbus.c
src/portable/portabled-image-bus.c
src/shared/discover-image.c
src/shared/discover-image.h

index 7fe7cad77ef60587a6d05582ce1f772372ab2917..0b6a1691302a1e08b1152d0a85d4367dcfad2dac 100644 (file)
 
 static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_type, image_type, ImageType);
 
-static int property_get_read_only(
-                sd_bus *bus,
-                const char *path,
-                const char *interface,
-                const char *property,
-                sd_bus_message *reply,
-                void *userdata,
-                sd_bus_error *error) {
-
-        Image *image = ASSERT_PTR(userdata);
-
-        return sd_bus_message_append(ASSERT_PTR(reply), "b", image_is_read_only(image));
-}
-
 int bus_image_method_remove(
                 sd_bus_message *message,
                 void *userdata,
@@ -462,7 +448,7 @@ const sd_bus_vtable image_vtable[] = {
         SD_BUS_PROPERTY("Name", "s", NULL, offsetof(Image, name), 0),
         SD_BUS_PROPERTY("Path", "s", NULL, offsetof(Image, path), 0),
         SD_BUS_PROPERTY("Type", "s", property_get_type,  offsetof(Image, type), 0),
-        SD_BUS_PROPERTY("ReadOnly", "b", property_get_read_only, 0, 0),
+        SD_BUS_PROPERTY("ReadOnly", "b", bus_property_get_image_is_read_only, 0, 0),
         SD_BUS_PROPERTY("CreationTimestamp", "t", NULL, offsetof(Image, crtime), 0),
         SD_BUS_PROPERTY("ModificationTimestamp", "t", NULL, offsetof(Image, mtime), 0),
         SD_BUS_PROPERTY("Usage", "t", NULL, offsetof(Image, usage), 0),
index 17032c5dde29c4157cc368ed0bdb7183fcbd2365..21d7bab262c4bd41ec1cbef8a82fd9694bfbca3a 100644 (file)
 
 static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_type, image_type, ImageType);
 
-static int property_get_read_only(
-                sd_bus *bus,
-                const char *path,
-                const char *interface,
-                const char *property,
-                sd_bus_message *reply,
-                void *userdata,
-                sd_bus_error *error) {
-
-        Image *image = ASSERT_PTR(userdata);
-
-        return sd_bus_message_append(ASSERT_PTR(reply), "b", image_is_read_only(image));
-}
-
 int bus_image_common_get_os_release(
                 Manager *m,
                 sd_bus_message *message,
@@ -879,7 +865,7 @@ const sd_bus_vtable image_vtable[] = {
         SD_BUS_PROPERTY("Name", "s", NULL, offsetof(Image, name), 0),
         SD_BUS_PROPERTY("Path", "s", NULL, offsetof(Image, path), 0),
         SD_BUS_PROPERTY("Type", "s", property_get_type,  offsetof(Image, type), 0),
-        SD_BUS_PROPERTY("ReadOnly", "b", property_get_read_only, 0, 0),
+        SD_BUS_PROPERTY("ReadOnly", "b", bus_property_get_image_is_read_only, 0, 0),
         SD_BUS_PROPERTY("CreationTimestamp", "t", NULL, offsetof(Image, crtime), 0),
         SD_BUS_PROPERTY("ModificationTimestamp", "t", NULL, offsetof(Image, mtime), 0),
         SD_BUS_PROPERTY("Usage", "t", NULL, offsetof(Image, usage), 0),
index f7552f3bcd649b15331fe58ab6104f7cc524d21c..27ca861b53b295594f3f7ba23d0097389b5462a9 100644 (file)
@@ -16,6 +16,7 @@
 #include "alloc-util.h"
 #include "blockdev-util.h"
 #include "btrfs-util.h"
+#include "bus-get-properties.h"
 #include "chase.h"
 #include "chattr-util.h"
 #include "copy.h"
@@ -2220,3 +2221,5 @@ int image_root_pick(
         *ret = TAKE_PTR(s);
         return 0;
 }
+
+BUS_DEFINE_PROPERTY_GET(bus_property_get_image_is_read_only, "b", Image, (int) image_is_read_only);
index 1322a26b25f87e43b1cb953d5b10a616ef6909ea..3d7291a8a0dc19abc3cb8dc2081d4e855de2afb8 100644 (file)
@@ -91,7 +91,7 @@ static inline bool image_is_hidden(const Image *i) {
         return i->name && i->name[0] == '.';
 }
 
-static inline int image_is_read_only(const Image *i) {
+static inline bool image_is_read_only(const Image *i) {
         assert(i);
 
         /* We enforce the rule that hidden images are always read-only too. If people want to change hidden
@@ -102,6 +102,7 @@ static inline int image_is_read_only(const Image *i) {
 
         return i->read_only;
 }
+int bus_property_get_image_is_read_only(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, void *userdata, sd_bus_error *reterr_error);
 
 bool image_is_vendor(const Image *i);
 bool image_is_host(const Image *i);