re-arrange code 84/212184/2 accepted/tizen_5.5_unified_mobile_hotfix tizen_5.5_mobile_hotfix accepted/tizen/5.5/unified/20191031.023410 accepted/tizen/5.5/unified/mobile/hotfix/20201027.090248 accepted/tizen/unified/20190827.043454 accepted/tizen/unified/20190827.110619 submit/tizen/20190819.232229 submit/tizen/20190820.235609 submit/tizen/20190825.052726 submit/tizen/20190826.105051 submit/tizen/20190826.105652 submit/tizen/20190827.024510 submit/tizen/20190829.010425 submit/tizen_5.5/20191031.000004 submit/tizen_5.5_mobile_hotfix/20201026.185104 tizen_5.5.m2_release
authorsanghyeok.oh <sanghyeok.oh@samsung.com>
Fri, 16 Aug 2019 10:21:31 +0000 (19:21 +0900)
committersanghyeok.oh <sanghyeok.oh@samsung.com>
Fri, 16 Aug 2019 10:22:42 +0000 (19:22 +0900)
Change-Id: Ie2f9dcde57b411bd4b84206db2c91c4cae25e1e2
Signed-off-by: sanghyeok.oh <sanghyeok.oh@samsung.com>
src/libgdbus/dbus-system.c
src/libgdbus/dbus-system.h

index 0653c4f..83672e3 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * deviced
+ * libsyscommon
  *
- * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the License);
  * you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
  * limitations under the License.
  */
 
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdbool.h>
 /* 10 seconds */
 #define DBUS_REPLY_TIMEOUT     (10000)
 
-int check_systemd_active(void)
-{
-       int ret = FALSE;
-       GVariant *msg = NULL;
-       GVariant *var = NULL;
-       char *state;
-
-       _I("%s %s", "org.freedesktop.systemd1.Unit", "ActiveState");
-
-       msg = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1",
-                       "/org/freedesktop/systemd1/unit/default_2etarget",
-                       "org.freedesktop.DBus.Properties",
-                       "Get",
-                       g_variant_new("(ss)", "org.freedesktop.systemd1.Unit", "ActiveState"));
-       if (!msg)
-               return -EBADMSG;
-
-       if (!dh_get_param_from_var(msg, "(v)", &var)) {
-               _E("reply is not variant type");
-               ret = -EBADMSG;
-               goto out;
-       }
-       if (!dh_get_param_from_var(var, "(s)", &state)) {
-               _E("variant doesn't have string (%s)", g_variant_get_type_string(var));
-               ret = -EBADMSG;
-               goto out;
-       }
-
-       if (strncmp(state, "active", 6) == 0)
-               ret = TRUE;
-
-       g_free(state);
-out:
-       if (var)
-               g_variant_unref(var);
-       if (msg)
-               g_variant_unref(msg);
-
-       return ret;
-}
-
 static GBusType g_default_bus_type = G_BUS_TYPE_SYSTEM;
 pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER;
 
@@ -1714,28 +1672,6 @@ int _check_type_string_is_container(const char *signature)
        return TRUE;
 }
 
-GVariant *dbus_handle_make_simple_array(const char *sig, int *param)
-{
-       GVariantBuilder *builder = NULL;
-       GVariant *var = NULL;
-       char format[256];
-       int i = 0;
-
-       builder = g_variant_builder_new(G_VARIANT_TYPE(sig));
-       if (!builder) {
-               _E("failed to g_variant_builder_new");
-               return NULL;
-       }
-
-       while (param[i])
-               g_variant_builder_add(builder, "i", param[i++]);
-
-       snprintf(format, sizeof(format) - 1, "(%s)", sig);
-       var = g_variant_new(format, builder);
-       g_variant_builder_unref(builder);
-       return var;
-}
-
 /* todo: looks like garbage... */
 static GVariant* _append_variant(const char *signature, const char *param[])
 {
@@ -1865,7 +1801,11 @@ GVariant *dbus_handle_method_sync_with_reply_var(const char *dest,
 
        ret = g_dbus_connection_call_sync(dh->conn,
                        dest, path, iface, method,
-                       var, NULL, G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &err);
+                       var, NULL,
+                       G_DBUS_CALL_FLAGS_NONE,
+                       DBUS_REPLY_TIMEOUT,
+                       NULL,
+                       &err);
        if (!ret || err) {
                if (err) {
                        _E("failed to g_dbus_connection_call_sync:%s", err->message);
@@ -1902,8 +1842,12 @@ GVariant *dbus_handle_method_sync_with_reply_var_timeout(const char *dest, const
        }
 
        ret = g_dbus_connection_call_sync(dh->conn,
-                                                                               dest, path, iface, method,
-                                                                               var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout, NULL, &err);
+                                       dest, path, iface, method,
+                                       var, NULL,
+                                       G_DBUS_CALL_FLAGS_NONE,
+                                       timeout,
+                                       NULL,
+                                       &err);
        if (!ret || err) {
                if (err) {
                        _E("failed to g_dbus_connection_call_sync:%s", err->message);
@@ -1988,11 +1932,13 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply(const char *dest,
        }
 
        ret = g_dbus_connection_call_with_unix_fd_list_sync(dh->conn,
-               dest, path, iface, method, var,
-               NULL, G_DBUS_CALL_FLAGS_NONE,
+               dest, path, iface, method,
+               var, NULL,
+               G_DBUS_CALL_FLAGS_NONE,
                -1,
                g_infdlist, &g_outfdlist,
-               NULL, &err);
+               NULL,
+               &err);
        if (!ret || err) {
                if (err) {
                        _E("failed to g_dbus_connection_call_with_unix_fd_list_sync:%s", err->message);
@@ -2067,8 +2013,9 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *d
 
        /* send message */
        ret = g_dbus_connection_call_with_unix_fd_list_sync(dh->conn,
-               dest, path, iface, method, param,
-               NULL, G_DBUS_CALL_FLAGS_NONE,
+               dest, path, iface, method,
+               param, NULL,
+               G_DBUS_CALL_FLAGS_NONE,
                -1,
                g_infdlist, &g_outfdlist,
                NULL, &err);
@@ -2156,10 +2103,10 @@ int dbus_handle_method_sync(const char *dest,
 }
 
 int dbus_handle_method_sync_var(const char *dest,
-                       const char *path,
-                       const char *iface,
-                       const char *method,
-                       GVariant *param)
+                               const char *path,
+                               const char *iface,
+                               const char *method,
+                               GVariant *param)
 {
        int result;
        gboolean result_bool;
@@ -2189,12 +2136,12 @@ int dbus_handle_method_sync_var(const char *dest,
 }
 
 int dbus_handle_method_sync_timeout(const char *dest,
-                               const char *path,
-                               const char *iface,
-                               const char *method,
-                               const char *signature,
-                               const char *param[],
-                               int timeout)
+                                       const char *path,
+                                       const char *iface,
+                                       const char *method,
+                                       const char *signature,
+                                       const char *param[],
+                                       int timeout)
 {
        dbus_handle_s *dh = NULL;
        GError *err = NULL;
@@ -2218,7 +2165,11 @@ int dbus_handle_method_sync_timeout(const char *dest,
 
        reply = g_dbus_connection_call_sync(dh->conn,
                        dest, path, iface, method,
-                       var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout, NULL, &err);
+                       var, NULL,
+                       G_DBUS_CALL_FLAGS_NONE,
+                       timeout,
+                       NULL,
+                       &err);
        if (!reply || err) {
                _E("failed to g_dbus_connection_call_sync:%s", err->message);
                g_error_free(err);
@@ -2236,11 +2187,11 @@ int dbus_handle_method_sync_timeout(const char *dest,
 }
 
 int dbus_handle_method_sync_pairs(const char *dest,
-                               const char *path,
-                               const char *iface,
-                               const char *method,
-                               int num,
-                               va_list args)
+                                       const char *path,
+                                       const char *iface,
+                                       const char *method,
+                                       int num,
+                                       va_list args)
 {
        GError *err = NULL;
        GVariant * reply = NULL;
@@ -2292,11 +2243,11 @@ int dbus_handle_method_sync_pairs(const char *dest,
 }
 
 int dbus_handle_method_async_pairs(const char *dest,
-                               const char *path,
-                               const char *iface,
-                               const char *method,
-                               int num,
-                               va_list args)
+                                       const char *path,
+                                       const char *iface,
+                                       const char *method,
+                                       int num,
+                                       va_list args)
 {
        char *key, *value;
        GVariant *var;
@@ -2327,20 +2278,24 @@ int dbus_handle_method_async_pairs(const char *dest,
        var = g_variant_new("(a{ss})", builder);
        g_variant_builder_unref(builder);
 
-       g_dbus_connection_call(dh->conn, dest, path, iface, method,
-                       var, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL,
-                       NULL,
-                       NULL);
+       g_dbus_connection_call(dh->conn,
+                               dest, path, iface, method,
+                               var, NULL,
+                               G_DBUS_CALL_FLAGS_NONE,
+                               -1,
+                               NULL,
+                               NULL,
+                               NULL);
 
        return 0;
 }
 
 int dbus_handle_method_async(const char *dest,
-                       const char *path,
-                       const char *iface,
-                       const char *method,
-                       const char *signature,
-                       const char *param[])
+                               const char *path,
+                               const char *iface,
+                               const char *method,
+                               const char *signature,
+                               const char *param[])
 {
        GVariant * var = NULL;
        dbus_handle_s *dh = NULL;
@@ -2359,19 +2314,23 @@ int dbus_handle_method_async(const char *dest,
        if (signature && param)
                var = _append_variant(signature, param);
 
-       g_dbus_connection_call(dh->conn, dest, path, iface, method,
-                       var, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL,
-                       NULL,
-                       NULL);
+       g_dbus_connection_call(dh->conn,
+                               dest, path, iface, method,
+                               var, NULL,
+                               G_DBUS_CALL_FLAGS_NONE,
+                               -1,
+                               NULL,
+                               NULL,
+                               NULL);
 
        return 0;
 }
 
 int dbus_handle_method_async_var(const char *dest,
-                               const char *path,
-                               const char *iface,
-                               const char *method,
-                               GVariant *param)
+                                       const char *path,
+                                       const char *iface,
+                                       const char *method,
+                                       GVariant *param)
 {
        dbus_handle_s *dh = NULL;
 
@@ -2386,10 +2345,14 @@ int dbus_handle_method_async_var(const char *dest,
                return -1;
        }
 
-       g_dbus_connection_call(dh->conn, dest, path, iface, method,
-                       param, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL,
-                       NULL,
-                       NULL);
+       g_dbus_connection_call(dh->conn,
+                               dest, path, iface, method,
+                               param, NULL,
+                               G_DBUS_CALL_FLAGS_NONE,
+                               -1,
+                               NULL,
+                               NULL,
+                               NULL);
 
        return 0;
 }
@@ -2424,14 +2387,14 @@ out:
 }
 
 int dbus_handle_method_async_pairs_with_reply(const char *dest,
-                       const char *path,
-                       const char *iface,
-                       const char *method,
-                       int num,
-                       va_list args,
-                       dbus_pending_cb cb,
-                       int timeout_msec,
-                       void *data)
+                                               const char *path,
+                                               const char *iface,
+                                               const char *method,
+                                               int num,
+                                               va_list args,
+                                               dbus_pending_cb cb,
+                                               int timeout_msec,
+                                               void *data)
 {
        dbus_handle_s *dh = NULL;
        pending_call_data *pdata = NULL;
@@ -2479,10 +2442,14 @@ int dbus_handle_method_async_pairs_with_reply(const char *dest,
                pdata->func = cb;
                pdata->data = data;
        }
-       g_dbus_connection_call(dh->conn, dest, path, iface, method,
-                       param, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL,
-                       (GAsyncReadyCallback)_cb_pending,
-                       pdata);
+       g_dbus_connection_call(dh->conn,
+                               dest, path, iface, method,
+                               param, NULL,
+                               G_DBUS_CALL_FLAGS_NONE,
+                               timeout_msec,
+                               NULL,
+                               (GAsyncReadyCallback)_cb_pending,
+                               pdata);
 
        return ret;
 err:
@@ -2492,14 +2459,14 @@ err:
 }
 
 int dbus_handle_method_async_with_reply(const char *dest,
-                               const char *path,
-                               const char *iface,
-                               const char *method,
-                               const char *signature,
-                               const char *param[],
-                               dbus_pending_cb cb,
-                               int timeout_msec,
-                               void *data)
+                                       const char *path,
+                                       const char *iface,
+                                       const char *method,
+                                       const char *signature,
+                                       const char *param[],
+                                       dbus_pending_cb cb,
+                                       int timeout_msec,
+                                       void *data)
 {
        dbus_handle_s *dh = NULL;
        pending_call_data *pdata = NULL;
@@ -2535,10 +2502,14 @@ int dbus_handle_method_async_with_reply(const char *dest,
                pdata->func = cb;
                pdata->data = data;
        }
-       g_dbus_connection_call(dh->conn, dest, path, iface, method,
-                       var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL,
-                       (GAsyncReadyCallback)_cb_pending,
-                       pdata);
+       g_dbus_connection_call(dh->conn,
+                               dest, path, iface, method,
+                               var, NULL,
+                               G_DBUS_CALL_FLAGS_NONE,
+                               timeout_msec,
+                               NULL,
+                               (GAsyncReadyCallback)_cb_pending,
+                               pdata);
 
        return ret;
 err:
@@ -2586,10 +2557,14 @@ int dbus_handle_method_async_with_reply_var(const char *dest,
                pdata->func = cb;
                pdata->data = data;
        }
-       g_dbus_connection_call(dh->conn, dest, path, iface, method,
-                       param, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL,
-                       (GAsyncReadyCallback)_cb_pending,
-                       pdata);
+       g_dbus_connection_call(dh->conn,
+                               dest, path, iface, method,
+                               param, NULL,
+                               G_DBUS_CALL_FLAGS_NONE,
+                               timeout_msec,
+                               NULL,
+                               (GAsyncReadyCallback)_cb_pending,
+                               pdata);
 
        return ret;
 err:
@@ -2615,8 +2590,7 @@ int dbus_connection_get_sender_pid(GDBusConnection *conn, const char * sender)
 
        vret = g_dbus_connection_call_sync(conn,
                        "org.freedesktop.DBus", "/", "org.freedesktop.DBus", "GetConnectionUnixProcessID",
-                       g_variant_new("(s)", sender),
-                       NULL,
+                       g_variant_new("(s)", sender), NULL,
                        G_DBUS_CALL_FLAGS_NONE,
                        DBUS_REPLY_TIMEOUT,
                        NULL,
@@ -2877,3 +2851,66 @@ void dbus_handle_check_owner_name(dbus_handle_h handle, const char *owner_name)
 
        g_strfreev(strv);
 }
+
+int check_systemd_active(void)
+{
+       int ret = FALSE;
+       GVariant *msg = NULL;
+       GVariant *var = NULL;
+       char *state;
+
+       _I("%s %s", "org.freedesktop.systemd1.Unit", "ActiveState");
+
+       msg = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1",
+                       "/org/freedesktop/systemd1/unit/default_2etarget",
+                       "org.freedesktop.DBus.Properties",
+                       "Get",
+                       g_variant_new("(ss)", "org.freedesktop.systemd1.Unit", "ActiveState"));
+       if (!msg)
+               return -EBADMSG;
+
+       if (!dh_get_param_from_var(msg, "(v)", &var)) {
+               _E("reply is not variant type");
+               ret = -EBADMSG;
+               goto out;
+       }
+       if (!dh_get_param_from_var(var, "(s)", &state)) {
+               _E("variant doesn't have string (%s)", g_variant_get_type_string(var));
+               ret = -EBADMSG;
+               goto out;
+       }
+
+       if (strncmp(state, "active", 6) == 0)
+               ret = TRUE;
+
+       g_free(state);
+out:
+       if (var)
+               g_variant_unref(var);
+       if (msg)
+               g_variant_unref(msg);
+
+       return ret;
+}
+
+GVariant *dbus_handle_make_simple_array(const char *sig, int *param)
+{
+       GVariantBuilder *builder = NULL;
+       GVariant *var = NULL;
+       char format[256];
+       int i = 0;
+
+       builder = g_variant_builder_new(G_VARIANT_TYPE(sig));
+       if (!builder) {
+               _E("failed to g_variant_builder_new");
+               return NULL;
+       }
+
+       while (param[i])
+               g_variant_builder_add(builder, "i", param[i++]);
+
+       snprintf(format, sizeof(format) - 1, "(%s)", sig);
+       var = g_variant_new(format, builder);
+       g_variant_builder_unref(builder);
+       return var;
+}
index cce31bb..490419b 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * deviced
+ * libsyscommon
  *
- * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the License);
  * you may not use this file except in compliance with the License.
@@ -16,9 +16,8 @@
  * limitations under the License.
  */
 
-
-#ifndef __DBUS_H__
-#define __DBUS_H__
+#ifndef __DBUS_SYSTEM_H__
+#define __DBUS_SYSTEM_H__
 
 #include <glib.h>
 #include <gio/gio.h>
@@ -34,112 +33,25 @@ typedef struct {
        int size;
 } dbus_byte;
 
-GVariant *dbus_handle_method_sync_with_reply_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *var);
-
-GVariant *dbus_handle_method_sync_with_reply_var_timeout(const char *dest, const char *path, const char *iface, const char *method, GVariant *var, int timeout);
-
-/* fd */
-gint* dbus_handle_get_unix_fd_list(GDBusMethodInvocation *invocation, int *size);
-
-GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply(const char *dest, const char *path,
-               const char *iface, const char *method,
-               const char *signature, const char *param[],
-               int *in_fdlist, int in_size,
-               int **out_fdlist, int *out_size);
-GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, const char *path,
-               const char *iface, const char *method,
-               GVariant *param,
-               int *in_fdlist, int in_size,
-               int **out_fdlist, int *out_size);
-
-int dbus_handle_method_sync(const char *dest, const char *path,
-               const char *interface, const char *method,
-               const char *sig, const char *param[]);
-
-int dbus_handle_method_sync_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *param);
-
-int dbus_handle_method_sync_timeout(const char *dest, const char *path,
-               const char *interface, const char *method,
-               const char *sig, const char *param[], int timeout);
-
-int dbus_handle_method_sync_pairs(const char *dest, const char *path,
-               const char *interface, const char *method,
-               int num, va_list args);
-
-int dbus_handle_method_async_pairs(const char *dest, const char *path,
-               const char *interface, const char *method,
-               int num, va_list args);
-
-int dbus_handle_method_async(const char *dest, const char *path,
-               const char *interface, const char *method,
-               const char *sig, const char *param[]);
-
-int dbus_handle_method_async_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *param);
-
-typedef void (*dbus_pending_cb)(GVariant *var, void *user_data, GError *err);
 
-int dbus_handle_method_async_with_reply(const char *dest,
-               const char *path,
-               const char *iface,
-               const char *method,
-               const char *signature,
-               const char *param[],
-               dbus_pending_cb cb,
-               int timeout_msec,
-               void *data);
-
-
-int dbus_handle_method_async_with_reply_var(const char *dest,
-               const char *path,
-               const char *iface,
-               const char *method,
-               GVariant *param,
-               dbus_pending_cb cb,
-               int timeout_msec,
-               void *data);
-
-int dbus_handle_method_async_pairs_with_reply(const char *dest,
-               const char *path,
-               const char *iface,
-               const char *method,
-               int num,
-               va_list args,
-               dbus_pending_cb cb,
-               int timeout_msec,
-               void *data);
-
-int check_systemd_active(void);
-
-/**
- * @brief   Dbus handler which is used to register and call methods
-
- * @since_tizen 4.0
- */
 typedef void *dbus_handle_h;
 
-/**
- * @brief   Dbus method handler which is used to unregister dbus methods
- * @since_tizen 4.0
- */
 typedef void *dbus_object_handle_h;
 
-/**
- * @brief   Structure which contains the dbus method name and callback function.
- * @since_tizen 4.0
- */
 typedef struct {
        const char *member;
        const char *signature_in;
        const char *signature_out;
-       GVariant *(*func)(GDBusConnection *conn,
-               const gchar *sender, const gchar *path, const gchar *iface, const gchar *name,
-               GVariant *param, GDBusMethodInvocation *invocation, gpointer user_data);
+       GVariant *(*func)       (GDBusConnection *conn,
+                               const gchar *sender,
+                               const gchar *path,
+                               const gchar *iface,
+                               const gchar *name,
+                               GVariant *param,
+                               GDBusMethodInvocation *invocation,
+                               gpointer user_data);
 } dbus_method_s;
 
-/**
- * @brief   Structure which contains the dbus interface information and its methods.i
- * @since_tizen 4.0
- */
 typedef struct {
        dbus_object_handle_h oh;
        const char *name;
@@ -147,33 +59,179 @@ typedef struct {
        int nr_methods;
 } dbus_interface_u;
 
+typedef struct {
+       guint   pid;
+       guint   uid;
+       gchar  *unique_name;
+       gchar  *sec_label;
+} GDBusCredentials;
+
 #define dh_get_param_from_var(gvar, signature, ...) ((g_strcmp0(signature, g_variant_get_type_string(gvar)) == 0) ? g_variant_get(gvar, signature, __VA_ARGS__), TRUE : FALSE)
 
 #define dbus_handle_new_g_variant_tuple() g_variant_new_tuple(NULL, 0)
 
-/**
- * @brief   Callback function which is called when the user data needs to be released.
- * @since_tizen 4.0
- */
 typedef void (*destroy_notified)(void *data);
 
+typedef void (*dbus_pending_cb)(GVariant *var, void *user_data, GError *err);
+
 typedef struct {
        dbus_pending_cb func;
        void *data;
 } pending_call_data;
 
-int dbus_handle_request_bus_name(dbus_handle_h handle, const char *bus_name, GBusNameAcquiredCallback acquired_handler, GBusNameLostCallback lost_handler);
-
-dbus_handle_h dbus_handle_get_connection(GBusType bus_type, gboolean priv);
-
-int dbus_handle_register_dbus_object(dbus_handle_h handle, const char *obj_path, const dbus_interface_u *iface);
-int dbus_handle_unregister_dbus_object(dbus_handle_h handle, const char *obj_path);
-
-int dbus_handle_add_dbus_object(dbus_handle_h handle, const char *obj_path, const dbus_interface_u *iface_u);
-int dbus_handle_register_dbus_object_all(dbus_handle_h handle);
-
-guint subscribe_dbus_signal(dbus_handle_h handle, const char *path, const char *iface, const char *name, GDBusSignalCallback cb, void *data, destroy_notified free_func);
-void unsubscribe_dbus_signal(dbus_handle_h handle, guint id);
+dbus_handle_h dbus_handle_get_connection       (GBusType bus_type,
+                                               gboolean priv);
+
+int dbus_handle_request_bus_name               (dbus_handle_h handle,
+                                               const char *bus_name,
+                                               GBusNameAcquiredCallback acquired_handler,
+                                               GBusNameLostCallback lost_handler);
+
+int dbus_handle_register_dbus_object           (dbus_handle_h handle,
+                                               const char *obj_path,
+                                               const dbus_interface_u *iface);
+
+int dbus_handle_unregister_dbus_object         (dbus_handle_h handle,
+                                               const char *obj_path);
+
+int dbus_handle_add_dbus_object                        (dbus_handle_h handle,
+                                               const char *obj_path,
+                                               const dbus_interface_u *iface_u);
+
+int dbus_handle_register_dbus_object_all       (dbus_handle_h handle);
+
+
+int dbus_handle_method_sync                    (const char *dest,
+                                               const char *path,
+                                               const char *interface,
+                                               const char *method,
+                                               const char *sig,
+                                               const char *param[]);
+
+int dbus_handle_method_sync_var                        (const char *dest,
+                                               const char *path,
+                                               const char *iface,
+                                               const char *method,
+                                               GVariant *param);
+
+int dbus_handle_method_sync_timeout            (const char *dest,
+                                               const char *path,
+                                               const char *interface,
+                                               const char *method,
+                                               const char *sig,
+                                               const char *param[],
+                                               int timeout);
+
+int dbus_handle_method_sync_pairs              (const char *dest,
+                                               const char *path,
+                                               const char *interface,
+                                               const char *method,
+                                               int num,
+                                               va_list args);
+
+int dbus_handle_method_async_pairs             (const char *dest,
+                                               const char *path,
+                                               const char *interface,
+                                               const char *method,
+                                               int num,
+                                               va_list args);
+
+int dbus_handle_method_async                   (const char *dest,
+                                               const char *path,
+                                               const char *interface,
+                                               const char *method,
+                                               const char *sig,
+                                               const char *param[]);
+
+int dbus_handle_method_async_var               (const char *dest,
+                                               const char *path,
+                                               const char *iface,
+                                               const char *method,
+                                               GVariant *param);
+
+int dbus_handle_method_async_with_reply                (const char *dest,
+                                               const char *path,
+                                               const char *iface,
+                                               const char *method,
+                                               const char *signature,
+                                               const char *param[],
+                                               dbus_pending_cb cb,
+                                               int timeout_msec,
+                                               void *data);
+
+int dbus_handle_method_async_with_reply_var    (const char *dest,
+                                               const char *path,
+                                               const char *iface,
+                                               const char *method,
+                                               GVariant *param,
+                                               dbus_pending_cb cb,
+                                               int timeout_msec,
+                                               void *data);
+
+int dbus_handle_method_async_pairs_with_reply  (const char *dest,
+                                               const char *path,
+                                               const char *iface,
+                                               const char *method,
+                                               int num,
+                                               va_list args,
+                                               dbus_pending_cb cb,
+                                               int timeout_msec,
+                                               void *data);
+
+GVariant *dbus_handle_method_sync_with_reply_var               (const char *dest,
+                                                               const char *path,
+                                                               const char *iface,
+                                                               const char *method,
+                                                               GVariant *var);
+
+GVariant *dbus_handle_method_sync_with_reply_var_timeout       (const char *dest,
+                                                               const char *path,
+                                                               const char *iface,
+                                                               const char *method,
+                                                               GVariant *var,
+                                                               int timeout);
+
+gint* dbus_handle_get_unix_fd_list                             (GDBusMethodInvocation *invocation,
+                                                               int *size);
+
+GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply (const char *dest,
+                                                               const char *path,
+                                                               const char *iface,
+                                                               const char *method,
+                                                               const char *signature,
+                                                               const char *param[],
+                                                               int *in_fdlist,
+                                                               int in_size,
+                                                               int **out_fdlist,
+                                                               int *out_size);
+
+GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest,
+                                                               const char *path,
+                                                               const char *iface,
+                                                               const char *method,
+                                                               GVariant *param,
+                                                               int *in_fdlist,
+                                                               int in_size,
+                                                               int **out_fdlist,
+                                                               int *out_size);
+
+
+guint subscribe_dbus_signal                    (dbus_handle_h handle,
+                                               const char *path,
+                                               const char *iface,
+                                               const char *name,
+                                               GDBusSignalCallback cb,
+                                               void *data,
+                                               destroy_notified free_func);
+
+void unsubscribe_dbus_signal                   (dbus_handle_h handle,
+                                               guint id);
+
+int dbus_handle_emit_dbus_signal               (const char *dest,
+                                               const char *path,
+                                               const char *iface,
+                                               const char *name,
+                                               GVariant *param);
 
 enum ctx_quit_reason {CTX_QUIT_UNKNOWN, CTX_QUIT_NORMAL, CTX_QUIT_TIMEOUT};
 
@@ -187,30 +245,54 @@ typedef struct {
        void *user_data;
 } sig_ctx;
 
-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);
+sig_ctx *dbus_handle_new_signal_ctx            (void);
 
-GVariant *dbus_handle_make_simple_array(const char *sig, int *param);
+void dbus_handle_free_signal_ctx               (sig_ctx *ctx);
 
-int dbus_handle_emit_dbus_signal(const char *dest, const char *path, const char *iface, const char *name, GVariant *param);
+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);
 
-typedef struct
-{
-       guint   pid;
-       guint   uid;
-       gchar  *unique_name;
-       gchar  *sec_label;
-} GDBusCredentials;
+int dbus_handle_signal_ctx_wait                        (sig_ctx *ctx);
+
+int dbus_handle_signal_ctx_add_timeout         (sig_ctx *ctx,
+                                               int timeout);
+
+
+
+
+int dbus_connection_get_sender_pid             (GDBusConnection *conn,
+                                               const char * sender);
+
+int dbus_handle_get_sender_pid                 (dbus_handle_h handle,
+                                               const char * sender);
+
+int dbus_handle_get_sender_credentials         (dbus_handle_h handle,
+                                               const char *name,
+                                               GDBusCredentials *creds);
+
+int dbus_handle_watch_name                     (const char *name,
+                                               GBusNameAppearedCallback name_appeared_handler,
+                                               GBusNameVanishedCallback name_vanished_handler,
+                                               void *user_data,
+                                               GDestroyNotify user_data_free_func);
+
+void dbus_handle_unwatch_name                  (guint id);
+
+char** dbus_handle_get_owner_list              (dbus_handle_h handle,
+                                               const char *bus_name);
+
+void dbus_handle_check_owner_name              (dbus_handle_h handle,
+                                               const char *owner_name);
+
+int check_systemd_active                       (void);
+
+GVariant *dbus_handle_make_simple_array                (const char *sig,
+                                               int *param);
 
-int dbus_connection_get_sender_pid(GDBusConnection *conn, const char * sender);
-int dbus_handle_get_sender_pid(dbus_handle_h handle, const char * sender);
-int dbus_handle_get_sender_credentials(dbus_handle_h handle, const char *name, GDBusCredentials *creds);
-int dbus_handle_watch_name(const char *name, GBusNameAppearedCallback name_appeared_handler, GBusNameVanishedCallback name_vanished_handler, void *user_data, GDestroyNotify user_data_free_func);
-void dbus_handle_unwatch_name(guint id);
-char** dbus_handle_get_owner_list(dbus_handle_h handle, const char *bus_name);
-void dbus_handle_check_owner_name(dbus_handle_h handle, const char *owner_name);
 
-#endif
+#endif
\ No newline at end of file