static int get_service_name(const char *dbus_path, char **service_name)
{
- GVariant *reply = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1",
+ int ret;
+ GVariant *reply = NULL;
+ ret = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1",
dbus_path,
"org.freedesktop.DBus.Properties",
"Get",
- g_variant_new("ss", "org.freedesktop.systemd1.Unit", "Id"));
-
+ g_variant_new("ss", "org.freedesktop.systemd1.Unit", "Id"),
+ &reply);
- if (!reply) {
+ if (ret < 0) {
log_error("Failed to get \"Id\" property of %s", dbus_path);
- return -ENOMEM;
+ return -EAGAIN;
}
g_variant_get(reply, "(s)", service_name);
int systemd_get_unit_by_pid(pid_t pid, const char **name)
{
- GVariant *reply;
+ int ret;
+ GVariant *reply = NULL;
assert(name);
- reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_SERVICE,
+ ret = dbus_handle_method_sync_with_reply_var(SYSTEMD_SERVICE,
SYSTEMD_OBJ,
SYSTEMD_MANAGER_INTERFACE,
"GetUnitByPID",
- g_variant_new("u", pid));
+ g_variant_new("u", pid),
+ &reply);
- if (!reply) {
+ if (ret < 0) {
log_error("Failed to issue \"GetUnitByPID\" method call.");
return -1;
}
{
assert(pattern);
- GVariant *result;
+ int ret;
+ GVariant *result = NULL;
char *patterns[2] = {};
char *unit_states[] = {
"loaded",
};
patterns[0] = (char *)pattern;
- result = dbus_handle_method_sync_with_reply_var(
+ ret = dbus_handle_method_sync_with_reply_var(
SYSTEMD_SERVICE,
SYSTEMD_OBJ,
SYSTEMD_MANAGER_INTERFACE,
"ListUnitsByPatterns",
- g_variant_new("(asas)", (char **)unit_states, (char **)patterns));
+ g_variant_new("(asas)", (char **)unit_states, (char **)patterns),
+ &result);
- if (!result) {
+ if (ret < 0) {
log_error("Failed to issue ListUnitsByPatterns() call.");
return -1;
}
int epc_dbus_call(char *service, char *obj, char *interface, char *method,
char *types, ...)
{
+ int ret, reply = 0;
dbus_handle_h bus = NULL;
GVariant *var = NULL;
va_end(args);
}
- return dbus_handle_method_sync_var(service, obj, interface, method, var);
+ ret = dbus_handle_method_sync_var(service, obj, interface, method, var, &reply);
+ if (ret < 0)
+ return -EAGAIN;
+ else
+ return 0;
}