chiark / gitweb /
core: convert PID 1 to libsystemd-bus
[elogind.git] / src / libsystemd-bus / bus-util.c
index d277e1e0f08ad73380124c367876f999f83ddbe1..65323d008103b5a2db28177f71e82482e4433328 100644 (file)
@@ -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;