-static struct sd_bus *sdbusopen(struct sd_bus **p, int (*f)(struct sd_bus **))
-{
- if (*p == NULL) {
- int rc = f(p);
- if (rc < 0) {
- errno = -rc;
- *p = NULL;
- } else {
- rc = sd_bus_attach_event(*p, afb_common_get_event_loop(), 0);
- if (rc < 0) {
- sd_bus_unref(*p);
- errno = -rc;
- *p = NULL;
- }
- }
- }
- return *p;
-}
-
-struct sd_event *afb_common_get_event_loop()
-{
- return jobs_get_sd_event();
-}
-
-struct sd_bus *afb_common_get_user_bus()
-{
- static struct sd_bus *result = NULL;
- return sdbusopen((void*)&result, (void*)sd_bus_open_user);
-}
-
-struct sd_bus *afb_common_get_system_bus()
-{
- static struct sd_bus *result = NULL;
- return sdbusopen((void*)&result, (void*)sd_bus_open_system);
-}
-