int main(int argc, char *argv[]) { sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); log_parse_environment(); log_open(); r = parse_argv(argc, argv); if (r <= 0) goto finish; r = bus_connect_transport(arg_transport, arg_host, false, &bus); if (r < 0) { log_error_errno(r, "Failed to create bus connection: %m"); goto finish; } r = timedatectl_main(bus, argc, argv); finish: sd_bus_flush_close_unref(bus); pager_close(); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }
int main(int argc, char*argv[]) { sd_bus *bus = NULL; int r; setlocale(LC_ALL, ""); log_parse_environment(); log_open(); r = parse_argv(argc, argv); if (r <= 0) goto finish; r = bus_connect_transport(arg_transport, arg_host, false, &bus); if (r < 0) { log_error_errno(r, "Failed to create bus connection: %m"); goto finish; } r = localectl_main(bus, argc, argv); finish: /* make sure we terminate the bus connection first, and then close the * pager, see issue #3543 for the details. */ sd_bus_flush_close_unref(bus); pager_close(); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; }
void lvmnotify_send(struct cmd_context *cmd) { static const char _dbus_notification_failed_msg[] = "D-Bus notification failed"; sd_bus *bus = NULL; sd_bus_message *m = NULL; sd_bus_error error = SD_BUS_ERROR_NULL; const char *cmd_name; int ret; int result = 0; if (!cmd->vg_notify && !cmd->lv_notify && !cmd->pv_notify) return; cmd->vg_notify = 0; cmd->lv_notify = 0; cmd->pv_notify = 0; cmd_name = get_cmd_name(); ret = sd_bus_open_system(&bus); if (ret < 0) { log_debug_dbus("Failed to connect to dbus: %d", ret); return; } log_debug_dbus("Nofify dbus at %s.", LVM_DBUS_DESTINATION); ret = sd_bus_call_method(bus, LVM_DBUS_DESTINATION, LVM_DBUS_PATH, LVM_DBUS_INTERFACE, "ExternalEvent", &error, &m, "s", cmd_name); if (ret < 0) { if (sd_bus_error_has_name(&error, SD_BUS_SYSTEMD_NO_SUCH_UNIT_ERROR) || sd_bus_error_has_name(&error, SD_BUS_DBUS_SERVICE_UNKNOWN_ERROR)) log_debug_dbus("%s: %s", _dbus_notification_failed_msg, error.message); else log_warn("WARNING: %s: %s", _dbus_notification_failed_msg, error.message); goto out; } ret = sd_bus_message_read(m, "i", &result); if (ret < 0) log_debug_dbus("Failed to parse dbus response message: %d", ret); if (result) log_debug_dbus("Bad return value from dbus service: %d", result); out: sd_bus_error_free(&error); sd_bus_message_unref(m); sd_bus_flush_close_unref(bus); }
static void context_clear(Context *c) { assert(c); c->bus = sd_bus_flush_close_unref(c->bus); #if HAVE_AUDIT if (c->audit_fd >= 0) audit_close(c->audit_fd); c->audit_fd = -1; #endif }
static void test_bus_new_signal(void) { sd_bus *bus = NULL; _cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL; assert_se(sd_bus_open_user(&bus) >= 0); assert_se(sd_bus_message_new_signal(bus, &m, "/an/object/path", "an.interface.name", "Name") >= 0); printf("after message_new_signal: refcount %u\n", REFCNT_GET(bus->n_ref)); sd_bus_flush_close_unref(bus); printf("after bus_flush_close_unref: refcount %u\n", m->n_ref); }