X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flibsystemd-bus%2Fbus-util.c;h=65323d008103b5a2db28177f71e82482e4433328;hb=718db96199e;hp=3dd208d0c1cfb22ddaf76e357e48a1bb9d489547;hpb=41dd15e474accdeb643c8319e257e6414c1c498a;p=elogind.git diff --git a/src/libsystemd-bus/bus-util.c b/src/libsystemd-bus/bus-util.c index 3dd208d0c..65323d008 100644 --- a/src/libsystemd-bus/bus-util.c +++ b/src/libsystemd-bus/bus-util.c @@ -25,6 +25,7 @@ #include "strv.h" #include "macro.h" #include "def.h" +#include "missing.h" #include "sd-event.h" #include "sd-bus.h" @@ -235,7 +236,7 @@ static void async_polkit_query_free(sd_bus *b, AsyncPolkitQuery *q) { return; if (q->serial > 0 && b) - sd_bus_send_with_reply_cancel(b, q->serial); + sd_bus_call_async_cancel(b, q->serial); sd_bus_message_unref(q->request); sd_bus_message_unref(q->reply); @@ -361,7 +362,7 @@ int bus_verify_polkit_async( return r; } - r = sd_bus_send_with_reply(bus, pk, async_polkit_callback, q, 0, &q->serial); + r = sd_bus_call_async(bus, pk, async_polkit_callback, q, 0, &q->serial); if (r < 0) return r; @@ -382,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; @@ -918,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); @@ -943,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; @@ -1013,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, @@ -1022,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;