From: Mike Yuan Date: Thu, 19 Sep 2024 21:29:38 +0000 (+0200) Subject: shared/bus-map-properties: modernize map_basic() and bus_map_strv_sort() X-Git-Tag: v257-rc1~378^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b9aef48837cb8977afad9d089ef6f64d53acf3f0;p=thirdparty%2Fsystemd.git shared/bus-map-properties: modernize map_basic() and bus_map_strv_sort() --- diff --git a/src/shared/bus-map-properties.c b/src/shared/bus-map-properties.c index a4833a5c1ee..aa17ded5a31 100644 --- a/src/shared/bus-map-properties.c +++ b/src/shared/bus-map-properties.c @@ -18,15 +18,10 @@ int bus_map_id128(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_err } int bus_map_strv_sort(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus_error *error, void *userdata) { - _cleanup_strv_free_ char **l = NULL; - char ***p = userdata; + char ***p = ASSERT_PTR(userdata); int r; - r = sd_bus_message_read_strv_extend(m, &l); - if (r < 0) - return bus_log_parse_error_debug(r); - - r = strv_extend_strv(p, l, false); + r = sd_bus_message_read_strv_extend(m, p); if (r < 0) return bus_log_parse_error_debug(r); @@ -34,10 +29,13 @@ int bus_map_strv_sort(sd_bus *bus, const char *member, sd_bus_message *m, sd_bus return 0; } -static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigned flags, sd_bus_error *error, void *userdata) { +static int map_basic(sd_bus_message *m, unsigned flags, void *userdata) { char type; int r; + assert(m); + assert(userdata); + r = sd_bus_message_peek_type(m, &type, NULL); if (r < 0) return bus_log_parse_error_debug(r); @@ -46,32 +44,29 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne case SD_BUS_TYPE_STRING: case SD_BUS_TYPE_OBJECT_PATH: { - const char **p = userdata; - const char *s; + const char **p = userdata, *s; r = sd_bus_message_read_basic(m, type, &s); if (r < 0) return bus_log_parse_error_debug(r); - if (isempty(s)) - s = NULL; + s = empty_to_null(s); - if (flags & BUS_MAP_STRDUP) - return free_and_strdup((char **) userdata, s); + if (FLAGS_SET(flags, BUS_MAP_STRDUP)) + return free_and_strdup((char**) p, s); *p = s; return 0; } case SD_BUS_TYPE_ARRAY: { - _cleanup_strv_free_ char **l = NULL; char ***p = userdata; - r = sd_bus_message_read_strv_extend(m, &l); + r = sd_bus_message_read_strv_extend(m, p); if (r < 0) return bus_log_parse_error_debug(r); - return strv_extend_strv(p, l, false); + return 0; } case SD_BUS_TYPE_BOOLEAN: { @@ -91,40 +86,39 @@ static int map_basic(sd_bus *bus, const char *member, sd_bus_message *m, unsigne case SD_BUS_TYPE_INT32: case SD_BUS_TYPE_UINT32: { - uint32_t u, *p = userdata; + uint32_t *p = userdata; - r = sd_bus_message_read_basic(m, type, &u); + r = sd_bus_message_read_basic(m, type, p); if (r < 0) return bus_log_parse_error_debug(r); - *p = u; return 0; } case SD_BUS_TYPE_INT64: case SD_BUS_TYPE_UINT64: { - uint64_t t, *p = userdata; + uint64_t *p = userdata; - r = sd_bus_message_read_basic(m, type, &t); + r = sd_bus_message_read_basic(m, type, p); if (r < 0) return bus_log_parse_error_debug(r); - *p = t; return 0; } case SD_BUS_TYPE_DOUBLE: { - double d, *p = userdata; + double *p = userdata; - r = sd_bus_message_read_basic(m, type, &d); + r = sd_bus_message_read_basic(m, type, p); if (r < 0) return bus_log_parse_error_debug(r); - *p = d; return 0; - }} + } - return -EOPNOTSUPP; + default: + return -EOPNOTSUPP; + } } int bus_message_map_all_properties( @@ -173,7 +167,7 @@ int bus_message_map_all_properties( if (map[i].set) r = prop->set(sd_bus_message_get_bus(m), member, m, error, v); else - r = map_basic(sd_bus_message_get_bus(m), member, m, flags, error, v); + r = map_basic(m, flags, v); if (r < 0) return bus_log_parse_error_debug(r);