sig_ctx *dbus_handle_new_signal_ctx(void);
void dbus_handle_free_signal_ctx(sig_ctx *ctx);
guint subscribe_dbus_signal_ctx(dbus_handle_h handle, sig_ctx *ctx, const char *sender, const char *path, const char *iface, const char *name, GDBusSignalCallback cb);
+int dbus_handle_signal_ctx_wait(sig_ctx *ctx);
int dbus_handle_signal_ctx_add_timeout(sig_ctx *ctx, int timeout);
GVariant *dbus_handle_make_simple_array(const char *sig, int *param);
#define UNIT_NAME_MAX 256
typedef struct {
- char *job_id;
- char *unit_name;
+ const char *job_id;
+ const char *unit_name;
} unitinfo;
static void _cb_JobRemoved(GDBusConnection *conn,
gchar *objpath = NULL;
int ret = 0;
sig_ctx *ctx = NULL;
- gchar *unit_name = NULL;
unitinfo uinfo;
int quit_reason;
_I("Starting: %s %s", method, name);
- /* synchronous siganl subscriptsion */
+ /* synchronous signal subscription */
ret = subscribe_dbus_signal_ctx(NULL, ctx, SYSTEMD_DBUS_SERVICE, SYSTEMD_DBUS_PATH, SYSTEMD_DBUS_IFACE_MANAGER, "JobRemoved", _cb_JobRemoved);
if (ret == 0) {
ret = -1;
_I("Finished: %s %s", method, name);
finish:
- if (unit_name)
- g_free(unit_name);
-
if (reply)
g_variant_unref(reply);
g_free(objpath);
return ret;
}
-static int _has_suffix(const char *service_name, const char *suffix)
-{
- int index = 0;
-
- if (!service_name || !suffix)
- return FALSE;
-
- index = strlen(service_name) - strlen(suffix);
- if (index <= 0)
- return FALSE;
-
- if (strcmp(service_name + index, suffix) == 0)
- return TRUE;
- return FALSE;
-}
-
static int _change_suffix(const char *name, const char *suffix, char **new_name)
{
char *buf = NULL;
static int _systemd_start_unit_internal(const char *name, const char *suffix,
int timeout_msec, const char *method, int sync)
{
- unsigned int len = 0;
char *new_name = NULL;
int ret = 0;