+static int get_timedate_property_usec(sd_bus *bus, const char *name, usec_t *target) {
+ _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
+ _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
+ int r;
+
+ assert(name);
+
+ r = sd_bus_get_property(bus,
+ "org.freedesktop.timedate1",
+ "/org/freedesktop/timedate1",
+ "org.freedesktop.timedate1",
+ name,
+ &error,
+ &reply,
+ "t");
+ if (r < 0) {
+ log_error("Failed to get property: %s %s", name, bus_error_message(&error, -r));
+ return r;
+ }
+
+ r = sd_bus_message_read(reply, "t", target);
+ if (r < 0) {
+ log_error("Failed to parse reply.");
+ return r;
+ }
+
+ return 0;
+}
+