static void adapter_appeared(void *data, const char *path) { struct context *ctx = data; int r; if (ctx->adapter_path) return; ctx->adapter_path = strdup(path); SOL_NULL_CHECK(ctx->adapter_path); r = sol_bus_map_cached_properties(ctx->bluez, path, "org.bluez.Adapter1", adapter_properties, adapter_property_changed, ctx); SOL_INT_CHECK_GOTO(r, < 0, error_map); if (sol_ptr_vector_get_len(&ctx->sessions) > 0) { r = adapter_set_powered(ctx, ctx->adapter_path, true); SOL_INT_CHECK(r, < 0); }
static void _bus_initialized(sd_bus *bus) { sd_bus_message *m = NULL; int r; _ctx.properties.system_state = SOL_PLATFORM_STATE_UNKNOWN; r = sd_bus_message_new_method_call(bus, &m, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "Subscribe"); SOL_INT_CHECK_GOTO(r, < 0, fail_new_method); r = sd_bus_call_async(bus, NULL, m, sol_bus_log_callback, NULL, 0); SOL_INT_CHECK_GOTO(r, < 0, fail_call); sd_bus_message_unref(m); r = sol_bus_map_cached_properties(bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", _manager_properties, _manager_properties_changed, &_ctx); SOL_INT_CHECK_GOTO(r, < 0, fail_map_properties); return; fail_call: sd_bus_message_unref(m); fail_map_properties: fail_new_method: sol_bus_close(); }