bus: make it easy to serialize C99 bools and uids/gids/pids via vtable properties
This commit is contained in:
@@ -789,3 +789,33 @@ int bus_open_transport(BusTransport transport, const char *host, bool user, sd_b
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
int bus_property_get_bool(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
sd_bus_error *error,
|
||||
void *userdata) {
|
||||
|
||||
int b = *(bool*) userdata;
|
||||
|
||||
return sd_bus_message_append_basic(reply, 'b', &b);
|
||||
}
|
||||
|
||||
int bus_property_get_uid(
|
||||
sd_bus *bus,
|
||||
const char *path,
|
||||
const char *interface,
|
||||
const char *property,
|
||||
sd_bus_message *reply,
|
||||
sd_bus_error *error,
|
||||
void *userdata) {
|
||||
|
||||
assert_cc(sizeof(uint32_t) == sizeof(uid_t));
|
||||
assert_cc(sizeof(uint32_t) == sizeof(gid_t));
|
||||
assert_cc(sizeof(uint32_t) == sizeof(pid_t));
|
||||
|
||||
return sd_bus_message_append_basic(reply, 'u', userdata);
|
||||
}
|
||||
|
||||
@@ -62,6 +62,12 @@ int bus_open_transport(BusTransport transport, const char *host, bool user, sd_b
|
||||
|
||||
int bus_generic_print_property(const char *name, sd_bus_message *property, bool all);
|
||||
|
||||
int bus_property_get_bool(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, sd_bus_error *error, void *userdata);
|
||||
int bus_property_get_uid(sd_bus *bus, const char *path, const char *interface, const char *property, sd_bus_message *reply, sd_bus_error *error, void *userdata);
|
||||
|
||||
#define bus_property_get_gid bus_property_get_uid
|
||||
#define bus_property_get_pid bus_property_get_uid
|
||||
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus*, sd_bus_unref);
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(sd_bus_message*, sd_bus_message_unref);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user