X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-util.c;h=65323d008103b5a2db28177f71e82482e4433328;hb=718db96199eb307751264e4163555662c9a389fa;hp=d277e1e0f08ad73380124c367876f999f83ddbe1;hpb=c49b30a23583ff39daaa26696bcab478d2fee0bb;p=elogind.git diff --git a/src/libsystemd-bus/bus-util.c b/src/libsystemd-bus/bus-util.c index d277e1e0f..65323d008 100644 --- a/src/libsystemd-bus/bus-util.c +++ b/src/libsystemd-bus/bus-util.c @@ -383,7 +383,7 @@ void bus_verify_polkit_async_registry_free(sd_bus *bus, Hashmap *registry) { #endif } -static int bus_check_peercred(sd_bus *c) { +int bus_check_peercred(sd_bus *c) { struct ucred ucred; socklen_t l; int fd; @@ -919,7 +919,7 @@ int bus_map_all_properties(sd_bus *bus, } else { r = sd_bus_message_skip(m, "v"); if (r < 0) - return -r; + return r; } r = sd_bus_message_exit_container(m); @@ -944,9 +944,9 @@ int bus_open_transport(BusTransport transport, const char *host, bool user, sd_b case BUS_TRANSPORT_LOCAL: if (user) - r = sd_bus_open_user(bus); + r = sd_bus_default_user(bus); else - r = sd_bus_open_system(bus); + r = sd_bus_default_system(bus); break; @@ -1014,7 +1014,24 @@ int bus_property_get_bool( return sd_bus_message_append_basic(reply, 'b', &b); } -int bus_property_get_uid( +#if __SIZEOF_SIZE_T__ != 8 +int bus_property_get_size( + sd_bus *bus, + const char *path, + const char *interface, + const char *property, + sd_bus_message *reply, + sd_bus_error *error, + void *userdata) { + + uint64_t sz = *(size_t*) userdata; + + return sd_bus_message_append_basic(reply, 't', &sz); +} +#endif + +#if __SIZEOF_LONG__ != 8 +int bus_property_get_long( sd_bus *bus, const char *path, const char *interface, @@ -1023,13 +1040,26 @@ int bus_property_get_uid( 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)); + int64_t l = *(long*) userdata; - return sd_bus_message_append_basic(reply, 'u', userdata); + return sd_bus_message_append_basic(reply, 'x', &l); } +int bus_property_get_ulong( + sd_bus *bus, + const char *path, + const char *interface, + const char *property, + sd_bus_message *reply, + sd_bus_error *error, + void *userdata) { + + uint64_t ul = *(unsigned long*) userdata; + + return sd_bus_message_append_basic(reply, 't', &ul); +} +#endif + int bus_log_parse_error(int r) { log_error("Failed to parse message: %s", strerror(-r)); return r;