about summary refs log tree commit diff
path: root/libnm-core/nm-dbus-utils.c
diff options
context:
space:
mode:
authorSebastien Bacher <seb128@ubuntu.com>2021-01-11 18:07:03 +0100
committerSebastien Bacher <seb128@ubuntu.com>2021-01-11 18:15:57 +0100
commit2567f558da3eb9911678227d4aeb15162e707d89 (patch)
tree13c80b0e091c8ba585b14b966cda998f95f1936d /libnm-core/nm-dbus-utils.c
parent02d99ffd62ede29cffcb45fcbe33d044b7406d3a (diff)
parentf54032b30e1ddd84f10a339e0caf493772e049a7 (diff)
Merge branch 'debian/master' into ubuntu/master
Diffstat (limited to 'libnm-core/nm-dbus-utils.c')
-rw-r--r--libnm-core/nm-dbus-utils.c281
1 files changed, 136 insertions, 145 deletions
diff --git a/libnm-core/nm-dbus-utils.c b/libnm-core/nm-dbus-utils.c
index 72b9fe1f..02cca67d 100644
--- a/libnm-core/nm-dbus-utils.c
+++ b/libnm-core/nm-dbus-utils.c
@@ -1,4 +1,4 @@
-// SPDX-License-Identifier: LGPL-2.1+
+/* SPDX-License-Identifier: LGPL-2.1+ */
 /*
  * Copyright (C) 2015 Red Hat, Inc.
  */
@@ -8,80 +8,76 @@
 #include "nm-core-internal.h"
 
 typedef struct {
-	char *signal_name;
-	const GVariantType *signature;
+    char *              signal_name;
+    const GVariantType *signature;
 } NMDBusSignalData;
 
 static void
-dbus_signal_data_free (gpointer data, GClosure *closure)
+dbus_signal_data_free(gpointer data, GClosure *closure)
 {
-	NMDBusSignalData *sd = data;
+    NMDBusSignalData *sd = data;
 
-	g_free (sd->signal_name);
-	g_slice_free (NMDBusSignalData, sd);
+    g_free(sd->signal_name);
+    g_slice_free(NMDBusSignalData, sd);
 }
 
 static void
-dbus_signal_meta_marshal (GClosure     *closure,
-                          GValue       *return_value,
-                          guint         n_param_values,
-                          const GValue *param_values,
-                          gpointer      invocation_hint,
-                          gpointer      marshal_data)
+dbus_signal_meta_marshal(GClosure *    closure,
+                         GValue *      return_value,
+                         guint         n_param_values,
+                         const GValue *param_values,
+                         gpointer      invocation_hint,
+                         gpointer      marshal_data)
 {
-	NMDBusSignalData *sd = marshal_data;
-	const char *signal_name;
-	GVariant *parameters, *param;
-	GValue *closure_params;
-	gsize n_params, i;
-
-	g_return_if_fail (n_param_values == 4);
-
-	signal_name = g_value_get_string (&param_values[2]);
-	parameters = g_value_get_variant (&param_values[3]);
-
-	if (strcmp (signal_name, sd->signal_name) != 0)
-		return;
-
-	if (sd->signature) {
-		if (!g_variant_is_of_type (parameters, sd->signature)) {
-			g_warning ("%p: got signal '%s' but parameters were of type '%s', not '%s'",
-			           g_value_get_object (&param_values[0]),
-			           signal_name, g_variant_get_type_string (parameters),
-			           g_variant_type_peek_string (sd->signature));
-			return;
-		}
-
-		n_params = g_variant_n_children (parameters) + 1;
-	} else
-		n_params = 1;
-
-	closure_params = g_new0 (GValue, n_params);
-	g_value_init (&closure_params[0], G_TYPE_OBJECT);
-	g_value_copy (&param_values[0], &closure_params[0]);
-
-	for (i = 1; i < n_params; i++) {
-		param = g_variant_get_child_value (parameters, i - 1);
-		if (   g_variant_is_of_type (param, G_VARIANT_TYPE ("ay"))
-		    || g_variant_is_of_type (param, G_VARIANT_TYPE ("aay"))) {
-			/* g_dbus_gvariant_to_gvalue() thinks 'ay' means "non-UTF-8 NUL-terminated string" */
-			g_value_init (&closure_params[i], G_TYPE_VARIANT);
-			g_value_set_variant (&closure_params[i], param);
-		} else
-			g_dbus_gvariant_to_gvalue (param, &closure_params[i]);
-		g_variant_unref (param);
-	}
-
-	g_cclosure_marshal_generic (closure,
-	                            NULL,
-	                            n_params,
-	                            closure_params,
-	                            invocation_hint,
-	                            NULL);
-
-	for (i = 0; i < n_params; i++)
-		g_value_unset (&closure_params[i]);
-	g_free (closure_params);
+    NMDBusSignalData *sd = marshal_data;
+    const char *      signal_name;
+    GVariant *        parameters, *param;
+    GValue *          closure_params;
+    gsize             n_params, i;
+
+    g_return_if_fail(n_param_values == 4);
+
+    signal_name = g_value_get_string(&param_values[2]);
+    parameters  = g_value_get_variant(&param_values[3]);
+
+    if (strcmp(signal_name, sd->signal_name) != 0)
+        return;
+
+    if (sd->signature) {
+        if (!g_variant_is_of_type(parameters, sd->signature)) {
+            g_warning("%p: got signal '%s' but parameters were of type '%s', not '%s'",
+                      g_value_get_object(&param_values[0]),
+                      signal_name,
+                      g_variant_get_type_string(parameters),
+                      g_variant_type_peek_string(sd->signature));
+            return;
+        }
+
+        n_params = g_variant_n_children(parameters) + 1;
+    } else
+        n_params = 1;
+
+    closure_params = g_new0(GValue, n_params);
+    g_value_init(&closure_params[0], G_TYPE_OBJECT);
+    g_value_copy(&param_values[0], &closure_params[0]);
+
+    for (i = 1; i < n_params; i++) {
+        param = g_variant_get_child_value(parameters, i - 1);
+        if (g_variant_is_of_type(param, G_VARIANT_TYPE("ay"))
+            || g_variant_is_of_type(param, G_VARIANT_TYPE("aay"))) {
+            /* g_dbus_gvariant_to_gvalue() thinks 'ay' means "non-UTF-8 NUL-terminated string" */
+            g_value_init(&closure_params[i], G_TYPE_VARIANT);
+            g_value_set_variant(&closure_params[i], param);
+        } else
+            g_dbus_gvariant_to_gvalue(param, &closure_params[i]);
+        g_variant_unref(param);
+    }
+
+    g_cclosure_marshal_generic(closure, NULL, n_params, closure_params, invocation_hint, NULL);
+
+    for (i = 0; i < n_params; i++)
+        g_value_unset(&closure_params[i]);
+    g_free(closure_params);
 }
 
 /**
@@ -114,34 +110,34 @@ dbus_signal_meta_marshal (GClosure     *closure,
  *   g_signal_handlers_disconnect_by_data() will work correctly.
  */
 gulong
-_nm_dbus_signal_connect_data (GDBusProxy *proxy,
-                              const char *signal_name,
-                              const GVariantType *signature,
-                              GCallback c_handler,
-                              gpointer data,
-                              GClosureNotify destroy_data,
-                              GConnectFlags connect_flags)
+_nm_dbus_signal_connect_data(GDBusProxy *        proxy,
+                             const char *        signal_name,
+                             const GVariantType *signature,
+                             GCallback           c_handler,
+                             gpointer            data,
+                             GClosureNotify      destroy_data,
+                             GConnectFlags       connect_flags)
 {
-	NMDBusSignalData *sd;
-	GClosure *closure;
-	gboolean swapped = !!(connect_flags & G_CONNECT_SWAPPED);
-	gboolean after = !!(connect_flags & G_CONNECT_AFTER);
-
-	g_return_val_if_fail (G_IS_DBUS_PROXY (proxy), 0);
-	g_return_val_if_fail (signal_name != NULL, 0);
-	g_return_val_if_fail (signature == NULL || g_variant_type_is_tuple (signature), 0);
-	g_return_val_if_fail (c_handler != NULL, 0);
-
-	sd = g_slice_new (NMDBusSignalData);
-	sd->signal_name = g_strdup (signal_name);
-	sd->signature = signature;
-
-	closure = (swapped ? g_cclosure_new_swap : g_cclosure_new) (c_handler, data, destroy_data);
-	g_closure_set_marshal (closure, g_cclosure_marshal_generic);
-	g_closure_set_meta_marshal (closure, sd, dbus_signal_meta_marshal);
-	g_closure_add_finalize_notifier (closure, sd, dbus_signal_data_free);
-
-	return g_signal_connect_closure (proxy, "g-signal", closure, after);
+    NMDBusSignalData *sd;
+    GClosure *        closure;
+    gboolean          swapped = !!(connect_flags & G_CONNECT_SWAPPED);
+    gboolean          after   = !!(connect_flags & G_CONNECT_AFTER);
+
+    g_return_val_if_fail(G_IS_DBUS_PROXY(proxy), 0);
+    g_return_val_if_fail(signal_name != NULL, 0);
+    g_return_val_if_fail(signature == NULL || g_variant_type_is_tuple(signature), 0);
+    g_return_val_if_fail(c_handler != NULL, 0);
+
+    sd              = g_slice_new(NMDBusSignalData);
+    sd->signal_name = g_strdup(signal_name);
+    sd->signature   = signature;
+
+    closure = (swapped ? g_cclosure_new_swap : g_cclosure_new)(c_handler, data, destroy_data);
+    g_closure_set_marshal(closure, g_cclosure_marshal_generic);
+    g_closure_set_meta_marshal(closure, sd, dbus_signal_meta_marshal);
+    g_closure_add_finalize_notifier(closure, sd, dbus_signal_data_free);
+
+    return g_signal_connect_closure(proxy, "g-signal", closure, after);
 }
 
 /**
@@ -167,25 +163,25 @@ _nm_dbus_signal_connect_data (GDBusProxy *proxy,
  * Returns: %TRUE, if @response is of the expected @reply_type.
  */
 gboolean
-_nm_dbus_typecheck_response (GVariant *response,
-                             const GVariantType *reply_type,
-                             GError **error)
+_nm_dbus_typecheck_response(GVariant *response, const GVariantType *reply_type, GError **error)
 {
-	g_return_val_if_fail (response, FALSE);
-
-	if (!reply_type)
-		return TRUE;
-	if (g_variant_is_of_type (response, reply_type))
-		return TRUE;
-
-	/* This is the same error code that g_dbus_connection_call() returns if
-	 * @reply_type doesn't match.
-	 */
-	g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
-	             _("Method returned type '%s', but expected '%s'"),
-	             g_variant_get_type_string (response),
-	             g_variant_type_peek_string (reply_type));
-	return FALSE;
+    g_return_val_if_fail(response, FALSE);
+
+    if (!reply_type)
+        return TRUE;
+    if (g_variant_is_of_type(response, reply_type))
+        return TRUE;
+
+    /* This is the same error code that g_dbus_connection_call() returns if
+     * @reply_type doesn't match.
+     */
+    g_set_error(error,
+                G_IO_ERROR,
+                G_IO_ERROR_INVALID_ARGUMENT,
+                _("Method returned type '%s', but expected '%s'"),
+                g_variant_get_type_string(response),
+                g_variant_type_peek_string(reply_type));
+    return FALSE;
 }
 
 /**
@@ -201,39 +197,35 @@ _nm_dbus_typecheck_response (GVariant *response,
  * will also check that the response matches that type signature, and return
  * an error if not.
  *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ * Returns: %NULL if @error is set. Otherwise, a #GVariant tuple with
  * return values. Free with g_variant_unref().
  */
 GVariant *
-_nm_dbus_proxy_call_finish (GDBusProxy          *proxy,
-                            GAsyncResult        *res,
-                            const GVariantType  *reply_type,
-                            GError             **error)
+_nm_dbus_proxy_call_finish(GDBusProxy *        proxy,
+                           GAsyncResult *      res,
+                           const GVariantType *reply_type,
+                           GError **           error)
 {
-	GVariant *variant;
-
-	variant = g_dbus_proxy_call_finish (proxy,
-	                                    res,
-	                                    error);
-	if (   variant
-	    && !_nm_dbus_typecheck_response (variant, reply_type, error))
-		nm_clear_pointer (&variant, g_variant_unref);
-	return variant;
+    GVariant *variant;
+
+    variant = g_dbus_proxy_call_finish(proxy, res, error);
+    if (variant && !_nm_dbus_typecheck_response(variant, reply_type, error))
+        nm_clear_pointer(&variant, g_variant_unref);
+    return variant;
 }
 
 GVariant *
-_nm_dbus_connection_call_finish (GDBusConnection *dbus_connection,
-                                 GAsyncResult *result,
-                                 const GVariantType *reply_type,
-                                 GError **error)
+_nm_dbus_connection_call_finish(GDBusConnection *   dbus_connection,
+                                GAsyncResult *      result,
+                                const GVariantType *reply_type,
+                                GError **           error)
 {
-	GVariant *variant;
+    GVariant *variant;
 
-	variant = g_dbus_connection_call_finish (dbus_connection, result, error);
-	if (   variant
-	    && !_nm_dbus_typecheck_response (variant, reply_type, error))
-		nm_clear_pointer (&variant, g_variant_unref);
-	return variant;
+    variant = g_dbus_connection_call_finish(dbus_connection, result, error);
+    if (variant && !_nm_dbus_typecheck_response(variant, reply_type, error))
+        nm_clear_pointer(&variant, g_variant_unref);
+    return variant;
 }
 
 /**
@@ -251,18 +243,17 @@ _nm_dbus_connection_call_finish (GDBusConnection *dbus_connection,
  * Returns: %TRUE or %FALSE
  */
 gboolean
-_nm_dbus_error_has_name (GError     *error,
-                         const char *dbus_error_name)
+_nm_dbus_error_has_name(GError *error, const char *dbus_error_name)
 {
-	gboolean has_name = FALSE;
+    gboolean has_name = FALSE;
 
-	if (error && g_dbus_error_is_remote_error (error)) {
-		char *error_name;
+    if (error && g_dbus_error_is_remote_error(error)) {
+        char *error_name;
 
-		error_name = g_dbus_error_get_remote_error (error);
-		has_name = !g_strcmp0 (error_name, dbus_error_name);
-		g_free (error_name);
-	}
+        error_name = g_dbus_error_get_remote_error(error);
+        has_name   = !g_strcmp0(error_name, dbus_error_name);
+        g_free(error_name);
+    }
 
-	return has_name;
+    return has_name;
 }