From: Yu Watanabe Date: Fri, 31 Oct 2025 11:33:34 +0000 (+0900) Subject: discover-image: introduce bus_property_get_image_is_read_only() with BUS_DEFINE_PROPE... X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7829c9cc486099019b26a5f2f78824ef1d406640;p=thirdparty%2Fsystemd.git discover-image: introduce bus_property_get_image_is_read_only() with BUS_DEFINE_PROPERTY_GET() macro This also makes image_is_read_only() return bool. Follow-up for ee327e086e0534645d1c8cb9daa49cd8d7d68d51. --- diff --git a/src/machine/image-dbus.c b/src/machine/image-dbus.c index 7fe7cad77ef..0b6a1691302 100644 --- a/src/machine/image-dbus.c +++ b/src/machine/image-dbus.c @@ -24,20 +24,6 @@ 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), diff --git a/src/portable/portabled-image-bus.c b/src/portable/portabled-image-bus.c index 17032c5dde2..21d7bab262c 100644 --- a/src/portable/portabled-image-bus.c +++ b/src/portable/portabled-image-bus.c @@ -30,20 +30,6 @@ 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), diff --git a/src/shared/discover-image.c b/src/shared/discover-image.c index f7552f3bcd6..27ca861b53b 100644 --- a/src/shared/discover-image.c +++ b/src/shared/discover-image.c @@ -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); diff --git a/src/shared/discover-image.h b/src/shared/discover-image.h index 1322a26b25f..3d7291a8a0d 100644 --- a/src/shared/discover-image.h +++ b/src/shared/discover-image.h @@ -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);