diff options
| author | Michael Biebl <biebl@debian.org> | 2022-02-14 19:23:28 +0100 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2022-02-14 19:23:28 +0100 |
| commit | 2f94dba7385fd0e0ef19a06eb4a2fcf6c43d7946 (patch) | |
| tree | e2222f5577115985dd52044d2991253403cdd952 /src/libnm-glib-aux | |
| parent | 88c227d90a6b7b388c5c85d72802a0ca8f05ed5c (diff) | |
New upstream version 1.35.91 upstream/1.35.91
Diffstat (limited to 'src/libnm-glib-aux')
32 files changed, 969 insertions, 762 deletions
diff --git a/src/libnm-glib-aux/nm-c-list.h b/src/libnm-glib-aux/nm-c-list.h index 6dd3ac72..d89a9223 100644 --- a/src/libnm-glib-aux/nm-c-list.h +++ b/src/libnm-glib-aux/nm-c-list.h @@ -169,7 +169,7 @@ nm_c_list_move_after(CList *lst, CList *elem) G_STMT_START \ { \ CList *const _lst = (lst); \ - type * _elem; \ + type *_elem; \ \ while ((_elem = c_list_first_entry(_lst, type, member))) { \ destroy_fcn(_elem); \ diff --git a/src/libnm-glib-aux/nm-dbus-aux.c b/src/libnm-glib-aux/nm-dbus-aux.c index 454bd2d8..0f43ba8e 100644 --- a/src/libnm-glib-aux/nm-dbus-aux.c +++ b/src/libnm-glib-aux/nm-dbus-aux.c @@ -12,9 +12,9 @@ static void _nm_dbus_connection_call_get_name_owner_cb(GObject *source, GAsyncResult *res, gpointer user_data) { - gs_unref_variant GVariant *ret = NULL; - gs_free_error GError * error = NULL; - const char * owner = NULL; + gs_unref_variant GVariant *ret = NULL; + gs_free_error GError *error = NULL; + const char *owner = NULL; gpointer orig_user_data; NMDBusConnectionCallGetNameOwnerCb callback; @@ -28,10 +28,10 @@ _nm_dbus_connection_call_get_name_owner_cb(GObject *source, GAsyncResult *res, g } void -nm_dbus_connection_call_get_name_owner(GDBusConnection * dbus_connection, - const char * service_name, +nm_dbus_connection_call_get_name_owner(GDBusConnection *dbus_connection, + const char *service_name, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMDBusConnectionCallGetNameOwnerCb callback, gpointer user_data) { @@ -56,8 +56,8 @@ nm_dbus_connection_call_get_name_owner(GDBusConnection * dbus_c static void _nm_dbus_connection_call_default_cb(GObject *source, GAsyncResult *res, gpointer user_data) { - gs_unref_variant GVariant *ret = NULL; - gs_free_error GError * error = NULL; + gs_unref_variant GVariant *ret = NULL; + gs_free_error GError *error = NULL; gpointer orig_user_data; NMDBusConnectionCallDefaultCb callback; @@ -71,12 +71,12 @@ _nm_dbus_connection_call_default_cb(GObject *source, GAsyncResult *res, gpointer } void -nm_dbus_connection_call_get_all(GDBusConnection * dbus_connection, - const char * bus_name, - const char * object_path, - const char * interface_name, +nm_dbus_connection_call_get_all(GDBusConnection *dbus_connection, + const char *bus_name, + const char *object_path, + const char *interface_name, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMDBusConnectionCallDefaultCb callback, gpointer user_data) { @@ -97,14 +97,14 @@ nm_dbus_connection_call_get_all(GDBusConnection * dbus_connection, } void -nm_dbus_connection_call_set(GDBusConnection * dbus_connection, - const char * bus_name, - const char * object_path, - const char * interface_name, - const char * property_name, - GVariant * value, +nm_dbus_connection_call_set(GDBusConnection *dbus_connection, + const char *bus_name, + const char *object_path, + const char *interface_name, + const char *property_name, + GVariant *value, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMDBusConnectionCallDefaultCb callback, gpointer user_data) { @@ -125,13 +125,13 @@ nm_dbus_connection_call_set(GDBusConnection * dbus_connection, /*****************************************************************************/ static void -_nm_dbus_connection_call_get_managed_objects_cb(GObject * source, +_nm_dbus_connection_call_get_managed_objects_cb(GObject *source, GAsyncResult *res, gpointer user_data) { - gs_unref_variant GVariant *ret = NULL; - gs_unref_variant GVariant *arg = NULL; - gs_free_error GError * error = NULL; + gs_unref_variant GVariant *ret = NULL; + gs_unref_variant GVariant *arg = NULL; + gs_free_error GError *error = NULL; gpointer orig_user_data; NMDBusConnectionCallDefaultCb callback; @@ -150,12 +150,12 @@ _nm_dbus_connection_call_get_managed_objects_cb(GObject * source, } void -nm_dbus_connection_call_get_managed_objects(GDBusConnection * dbus_connection, - const char * bus_name, - const char * object_path, +nm_dbus_connection_call_get_managed_objects(GDBusConnection *dbus_connection, + const char *bus_name, + const char *object_path, GDBusCallFlags flags, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMDBusConnectionCallDefaultCb callback, gpointer user_data) { @@ -178,15 +178,15 @@ nm_dbus_connection_call_get_managed_objects(GDBusConnection * dbus_c /*****************************************************************************/ static void -_call_finish_cb(GObject * source, +_call_finish_cb(GObject *source, GAsyncResult *result, gpointer user_data, gboolean return_void, gboolean strip_dbus_error) { - gs_unref_object GTask *task = user_data; + gs_unref_object GTask *task = user_data; gs_unref_variant GVariant *ret = NULL; - GError * error = NULL; + GError *error = NULL; nm_assert(G_IS_DBUS_CONNECTION(source)); nm_assert(G_IS_TASK(user_data)); @@ -230,7 +230,7 @@ nm_dbus_connection_call_finish_void_cb(GObject *source, GAsyncResult *result, gp * is that on error this will first call g_dbus_error_strip_remote_error() on the error. */ void -nm_dbus_connection_call_finish_void_strip_dbus_error_cb(GObject * source, +nm_dbus_connection_call_finish_void_strip_dbus_error_cb(GObject *source, GAsyncResult *result, gpointer user_data) { @@ -259,7 +259,7 @@ nm_dbus_connection_call_finish_variant_cb(GObject *source, GAsyncResult *result, * is that on error this will first call g_dbus_error_strip_remote_error() on the error. */ void -nm_dbus_connection_call_finish_variant_strip_dbus_error_cb(GObject * source, +nm_dbus_connection_call_finish_variant_strip_dbus_error_cb(GObject *source, GAsyncResult *result, gpointer user_data) { @@ -269,12 +269,12 @@ nm_dbus_connection_call_finish_variant_strip_dbus_error_cb(GObject * source, /*****************************************************************************/ typedef struct { - char * bus_name; - char * object_path; - char * interface_name; - char * method_name; - GVariant * parameters; - GDBusConnection * connection; + char *bus_name; + char *object_path; + char *interface_name; + char *method_name; + GVariant *parameters; + GDBusConnection *connection; const GVariantType *reply_type; int timeout_msec; } CallAsyncInfo; @@ -295,8 +295,8 @@ static void call_cb(GObject *source, GAsyncResult *result, gpointer user_data) { gs_unref_object GTask *task = user_data; - GError * error = NULL; - GVariant * ret; + GError *error = NULL; + GVariant *ret; ret = g_dbus_connection_call_finish(G_DBUS_CONNECTION(source), result, &error); if (!ret) { @@ -311,9 +311,9 @@ static void call_bus_get_cb(GObject *source, GAsyncResult *result, gpointer user_data) { gs_unref_object GTask *task = user_data; - GCancellable * cancellable; - CallAsyncInfo * info; - GError * error = NULL; + GCancellable *cancellable; + CallAsyncInfo *info; + GError *error = NULL; info = g_task_get_task_data(task); info->connection = g_bus_get_finish(result, &error); @@ -340,18 +340,18 @@ call_bus_get_cb(GObject *source, GAsyncResult *result, gpointer user_data) void nm_dbus_call(GBusType bus_type, - const char * bus_name, - const char * object_path, - const char * interface_name, - const char * method_name, - GVariant * parameters, + const char *bus_name, + const char *object_path, + const char *interface_name, + const char *method_name, + GVariant *parameters, const GVariantType *reply_type, - GCancellable * cancellable, + GCancellable *cancellable, int timeout_msec, GAsyncReadyCallback callback, gpointer user_data) { - GTask * task; + GTask *task; CallAsyncInfo *info; info = g_new(CallAsyncInfo, 1); @@ -385,7 +385,7 @@ gboolean _nm_dbus_error_is(GError *error, ...) { gs_free char *dbus_error = NULL; - const char * name; + const char *name; va_list ap; dbus_error = g_dbus_error_get_remote_error(error); @@ -408,7 +408,7 @@ _nm_dbus_error_is(GError *error, ...) typedef struct { GDBusConnection **p_dbus_connection; - GError ** p_error; + GError **p_error; } BusGetData; static void @@ -433,12 +433,12 @@ _bus_get_cb(GObject *source, GAsyncResult *result, gpointer user_data) GDBusConnection * nm_g_bus_get_blocking(GCancellable *cancellable, GError **error) { - gs_free_error GError *local_error = NULL; + gs_free_error GError *local_error = NULL; gs_unref_object GDBusConnection *dbus_connection = NULL; - GMainContext * main_context = g_main_context_get_thread_default(); + GMainContext *main_context = g_main_context_get_thread_default(); BusGetData data = { - .p_dbus_connection = &dbus_connection, - .p_error = &local_error, + .p_dbus_connection = &dbus_connection, + .p_error = &local_error, }; g_bus_get(G_BUS_TYPE_SYSTEM, cancellable, _bus_get_cb, &data); @@ -471,9 +471,9 @@ nm_dbus_connection_call_blocking_callback(GObject *source, GAsyncResult *res, gp GVariant * nm_dbus_connection_call_blocking(NMDBusConnectionCallBlockingData *data, GError **error) { - GMainContext *main_context = g_main_context_get_thread_default(); - gs_free_error GError *local_error = NULL; - gs_unref_variant GVariant *result = NULL; + GMainContext *main_context = g_main_context_get_thread_default(); + gs_free_error GError *local_error = NULL; + gs_unref_variant GVariant *result = NULL; nm_assert(data); diff --git a/src/libnm-glib-aux/nm-dbus-aux.h b/src/libnm-glib-aux/nm-dbus-aux.h index 420a0c55..dfba61b0 100644 --- a/src/libnm-glib-aux/nm-dbus-aux.h +++ b/src/libnm-glib-aux/nm-dbus-aux.h @@ -30,10 +30,10 @@ typedef void (*NMDBusConnectionCallDefaultCb)(GVariant *result, GError *error, g /*****************************************************************************/ static inline void -nm_dbus_connection_call_start_service_by_name(GDBusConnection * dbus_connection, - const char * name, +nm_dbus_connection_call_start_service_by_name(GDBusConnection *dbus_connection, + const char *name, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { @@ -54,8 +54,8 @@ nm_dbus_connection_call_start_service_by_name(GDBusConnection * dbus_connectio /*****************************************************************************/ static inline guint -nm_dbus_connection_signal_subscribe_name_owner_changed(GDBusConnection * dbus_connection, - const char * service_name, +nm_dbus_connection_signal_subscribe_name_owner_changed(GDBusConnection *dbus_connection, + const char *service_name, GDBusSignalCallback callback, gpointer user_data, GDestroyNotify user_data_free_func) @@ -74,22 +74,22 @@ nm_dbus_connection_signal_subscribe_name_owner_changed(GDBusConnection * dbus_ } typedef void (*NMDBusConnectionCallGetNameOwnerCb)(const char *name_owner, - GError * error, + GError *error, gpointer user_data); -void nm_dbus_connection_call_get_name_owner(GDBusConnection * dbus_connection, - const char * service_name, +void nm_dbus_connection_call_get_name_owner(GDBusConnection *dbus_connection, + const char *service_name, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMDBusConnectionCallGetNameOwnerCb callback, gpointer user_data); static inline void -nm_dbus_connection_call_request_name(GDBusConnection * dbus_connection, - const char * name, +nm_dbus_connection_call_request_name(GDBusConnection *dbus_connection, + const char *name, guint32 flags, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { @@ -108,10 +108,10 @@ nm_dbus_connection_call_request_name(GDBusConnection * dbus_connection, } static inline guint -nm_dbus_connection_signal_subscribe_properties_changed(GDBusConnection * dbus_connection, - const char * bus_name, - const char * object_path, - const char * interface_name, +nm_dbus_connection_signal_subscribe_properties_changed(GDBusConnection *dbus_connection, + const char *bus_name, + const char *object_path, + const char *interface_name, GDBusSignalCallback callback, gpointer user_data, GDestroyNotify user_data_free_func) @@ -138,33 +138,33 @@ nm_dbus_connection_signal_subscribe_properties_changed(GDBusConnection * dbus_ user_data_free_func); } -void nm_dbus_connection_call_get_all(GDBusConnection * dbus_connection, - const char * bus_name, - const char * object_path, - const char * interface_name, +void nm_dbus_connection_call_get_all(GDBusConnection *dbus_connection, + const char *bus_name, + const char *object_path, + const char *interface_name, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMDBusConnectionCallDefaultCb callback, gpointer user_data); -void nm_dbus_connection_call_set(GDBusConnection * dbus_connection, - const char * bus_name, - const char * object_path, - const char * interface_name, - const char * property_name, - GVariant * value, +void nm_dbus_connection_call_set(GDBusConnection *dbus_connection, + const char *bus_name, + const char *object_path, + const char *interface_name, + const char *property_name, + GVariant *value, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMDBusConnectionCallDefaultCb callback, gpointer user_data); /*****************************************************************************/ static inline guint -nm_dbus_connection_signal_subscribe_object_manager(GDBusConnection * dbus_connection, - const char * service_name, - const char * object_path, - const char * signal_name, +nm_dbus_connection_signal_subscribe_object_manager(GDBusConnection *dbus_connection, + const char *service_name, + const char *object_path, + const char *signal_name, GDBusSignalCallback callback, gpointer user_data, GDestroyNotify user_data_free_func) @@ -181,12 +181,12 @@ nm_dbus_connection_signal_subscribe_object_manager(GDBusConnection * dbus_conn user_data_free_func); } -void nm_dbus_connection_call_get_managed_objects(GDBusConnection * dbus_connection, - const char * bus_name, - const char * object_path, +void nm_dbus_connection_call_get_managed_objects(GDBusConnection *dbus_connection, + const char *bus_name, + const char *object_path, GDBusCallFlags flags, int timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMDBusConnectionCallDefaultCb callback, gpointer user_data); @@ -195,28 +195,28 @@ void nm_dbus_connection_call_get_managed_objects(GDBusConnection * d void nm_dbus_connection_call_finish_void_cb(GObject *source, GAsyncResult *result, gpointer user_data); -void nm_dbus_connection_call_finish_void_strip_dbus_error_cb(GObject * source, +void nm_dbus_connection_call_finish_void_strip_dbus_error_cb(GObject *source, GAsyncResult *result, gpointer user_data); -void nm_dbus_connection_call_finish_variant_cb(GObject * source, +void nm_dbus_connection_call_finish_variant_cb(GObject *source, GAsyncResult *result, gpointer user_data); -void nm_dbus_connection_call_finish_variant_strip_dbus_error_cb(GObject * source, +void nm_dbus_connection_call_finish_variant_strip_dbus_error_cb(GObject *source, GAsyncResult *result, gpointer user_data); /*****************************************************************************/ void nm_dbus_call(GBusType bus_type, - const char * bus_name, - const char * object_path, - const char * interface_name, - const char * method_name, - GVariant * parameters, + const char *bus_name, + const char *object_path, + const char *interface_name, + const char *method_name, + GVariant *parameters, const GVariantType *reply_type, - GCancellable * cancellable, + GCancellable *cancellable, int timeout_msec, GAsyncReadyCallback callback, gpointer user_data); @@ -244,7 +244,7 @@ GDBusConnection *nm_g_bus_get_blocking(GCancellable *cancellable, GError **error typedef struct { GVariant *result; - GError * error; + GError *error; } NMDBusConnectionCallBlockingData; void diff --git a/src/libnm-glib-aux/nm-dedup-multi.c b/src/libnm-glib-aux/nm-dedup-multi.c index f77bb3cd..7d451d0d 100644 --- a/src/libnm-glib-aux/nm-dedup-multi.c +++ b/src/libnm-glib-aux/nm-dedup-multi.c @@ -21,7 +21,7 @@ typedef struct { * always non-NULL. * */ CList lst_entries_sentinel; - const NMDedupMultiObj * obj; + const NMDedupMultiObj *obj; const NMDedupMultiIdxType *idx_type; bool lookup_head; } LookupEntry; @@ -65,9 +65,9 @@ nm_dedup_multi_idx_type_init(NMDedupMultiIdxType *idx_type, const NMDedupMultiId /*****************************************************************************/ static NMDedupMultiEntry * -_entry_lookup_obj(const NMDedupMultiIndex * self, +_entry_lookup_obj(const NMDedupMultiIndex *self, const NMDedupMultiIdxType *idx_type, - const NMDedupMultiObj * obj) + const NMDedupMultiObj *obj) { const LookupEntry stack_entry = { .obj = obj, @@ -80,15 +80,15 @@ _entry_lookup_obj(const NMDedupMultiIndex * self, } static NMDedupMultiHeadEntry * -_entry_lookup_head(const NMDedupMultiIndex * self, +_entry_lookup_head(const NMDedupMultiIndex *self, const NMDedupMultiIdxType *idx_type, - const NMDedupMultiObj * obj) + const NMDedupMultiObj *obj) { NMDedupMultiHeadEntry *head_entry; const LookupEntry stack_entry = { - .obj = obj, - .idx_type = idx_type, - .lookup_head = TRUE, + .obj = obj, + .idx_type = idx_type, + .lookup_head = TRUE, }; ASSERT_idx_type(idx_type); @@ -108,13 +108,13 @@ _entry_lookup_head(const NMDedupMultiIndex * self, } static void -_entry_unpack(const NMDedupMultiEntry * entry, +_entry_unpack(const NMDedupMultiEntry *entry, const NMDedupMultiIdxType **out_idx_type, - const NMDedupMultiObj ** out_obj, - gboolean * out_lookup_head) + const NMDedupMultiObj **out_obj, + gboolean *out_lookup_head) { const NMDedupMultiHeadEntry *head_entry; - const LookupEntry * lookup_entry; + const LookupEntry *lookup_entry; nm_assert(entry); @@ -162,7 +162,7 @@ static guint _dict_idx_entries_hash(const NMDedupMultiEntry *entry) { const NMDedupMultiIdxType *idx_type; - const NMDedupMultiObj * obj; + const NMDedupMultiObj *obj; gboolean lookup_head; NMHashState h; @@ -185,7 +185,7 @@ static gboolean _dict_idx_entries_equal(const NMDedupMultiEntry *entry_a, const NMDedupMultiEntry *entry_b) { const NMDedupMultiIdxType *idx_type_a, *idx_type_b; - const NMDedupMultiObj * obj_a, *obj_b; + const NMDedupMultiObj *obj_a, *obj_b; gboolean lookup_head_a, lookup_head_b; _entry_unpack(entry_a, &idx_type_a, &obj_a, &lookup_head_a); @@ -203,15 +203,15 @@ _dict_idx_entries_equal(const NMDedupMultiEntry *entry_a, const NMDedupMultiEntr /*****************************************************************************/ static gboolean -_add(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, - const NMDedupMultiObj * obj, - NMDedupMultiEntry * entry, +_add(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, + const NMDedupMultiObj *obj, + NMDedupMultiEntry *entry, NMDedupMultiIdxMode mode, - const NMDedupMultiEntry * entry_order, - NMDedupMultiHeadEntry * head_existing, + const NMDedupMultiEntry *entry_order, + NMDedupMultiHeadEntry *head_existing, const NMDedupMultiEntry **out_entry, - const NMDedupMultiObj ** out_obj_old) + const NMDedupMultiObj **out_obj_old) { NMDedupMultiHeadEntry *head_entry; const NMDedupMultiObj *obj_new, *obj_old; @@ -365,11 +365,11 @@ _add(NMDedupMultiIndex * self, } gboolean -nm_dedup_multi_index_add(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_add(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj, NMDedupMultiIdxMode mode, - const NMDedupMultiEntry ** out_entry, + const NMDedupMultiEntry **out_entry, /* const NMDedupMultiObj ** */ gpointer out_obj_old) { NMDedupMultiEntry *entry; @@ -423,14 +423,14 @@ nm_dedup_multi_index_add(NMDedupMultiIndex * self, * Return: %TRUE if anything changed, %FALSE if nothing changed. */ gboolean -nm_dedup_multi_index_add_full(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_add_full(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj, NMDedupMultiIdxMode mode, - const NMDedupMultiEntry * entry_order, - const NMDedupMultiEntry * entry_existing, - const NMDedupMultiHeadEntry * head_existing, - const NMDedupMultiEntry ** out_entry, + const NMDedupMultiEntry *entry_order, + const NMDedupMultiEntry *entry_existing, + const NMDedupMultiHeadEntry *head_existing, + const NMDedupMultiEntry **out_entry, /* const NMDedupMultiObj ** */ gpointer out_obj_old) { NMDedupMultiEntry *entry; @@ -472,7 +472,7 @@ _remove_entry(NMDedupMultiIndex *self, NMDedupMultiEntry *entry, gboolean *out_h { const NMDedupMultiObj *obj; NMDedupMultiHeadEntry *head_entry; - NMDedupMultiIdxType * idx_type; + NMDedupMultiIdxType *idx_type; nm_assert(self); nm_assert(entry); @@ -519,14 +519,14 @@ _remove_entry(NMDedupMultiIndex *self, NMDedupMultiEntry *entry, gboolean *out_h } static guint -_remove_head(NMDedupMultiIndex * self, +_remove_head(NMDedupMultiIndex *self, NMDedupMultiHeadEntry *head_entry, gboolean remove_all /* otherwise just dirty ones */, gboolean mark_survivors_dirty) { guint n; gboolean head_entry_removed; - CList * iter_entry, *iter_entry_safe; + CList *iter_entry, *iter_entry_safe; nm_assert(self); nm_assert(head_entry); @@ -552,7 +552,7 @@ _remove_head(NMDedupMultiIndex * self, } static guint -_remove_idx_entry(NMDedupMultiIndex * self, +_remove_idx_entry(NMDedupMultiIndex *self, NMDedupMultiIdxType *idx_type, gboolean remove_all /* otherwise just dirty ones */, gboolean mark_survivors_dirty) @@ -588,8 +588,8 @@ nm_dedup_multi_index_remove_entry(NMDedupMultiIndex *self, gconstpointer entry) } guint -nm_dedup_multi_index_remove_obj(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_remove_obj(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj, /*const NMDedupMultiObj ** */ gconstpointer *out_obj) { @@ -611,8 +611,8 @@ nm_dedup_multi_index_remove_obj(NMDedupMultiIndex * sel } guint -nm_dedup_multi_index_remove_head(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_remove_head(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj) { const NMDedupMultiHeadEntry *entry; @@ -643,8 +643,8 @@ nm_dedup_multi_index_remove_idx(NMDedupMultiIndex *self, NMDedupMultiIdxType *id * Returns: the cache entry or %NULL if the entry wasn't found. */ const NMDedupMultiEntry * -nm_dedup_multi_index_lookup_obj(const NMDedupMultiIndex * self, - const NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_lookup_obj(const NMDedupMultiIndex *self, + const NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj) { g_return_val_if_fail(self, FALSE); @@ -669,8 +669,8 @@ nm_dedup_multi_index_lookup_obj(const NMDedupMultiIndex * self, * Returns: the cache entry or %NULL if the entry wasn't found. */ const NMDedupMultiHeadEntry * -nm_dedup_multi_index_lookup_head(const NMDedupMultiIndex * self, - const NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_lookup_head(const NMDedupMultiIndex *self, + const NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj) { g_return_val_if_fail(self, FALSE); @@ -682,12 +682,12 @@ nm_dedup_multi_index_lookup_head(const NMDedupMultiIndex * self /*****************************************************************************/ void -nm_dedup_multi_index_dirty_set_head(NMDedupMultiIndex * self, - const NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_dirty_set_head(NMDedupMultiIndex *self, + const NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj) { NMDedupMultiHeadEntry *head_entry; - CList * iter_entry; + CList *iter_entry; g_return_if_fail(self); g_return_if_fail(idx_type); @@ -740,7 +740,7 @@ nm_dedup_multi_index_dirty_set_idx(NMDedupMultiIndex *self, const NMDedupMultiId * Returns: number of deleted entries. */ guint -nm_dedup_multi_index_dirty_remove_idx(NMDedupMultiIndex * self, +nm_dedup_multi_index_dirty_remove_idx(NMDedupMultiIndex *self, NMDedupMultiIdxType *idx_type, gboolean mark_survivors_dirty) { @@ -770,7 +770,7 @@ _dict_idx_objs_equal(const NMDedupMultiObj *obj_a, const NMDedupMultiObj *obj_b) } void -nm_dedup_multi_index_obj_release(NMDedupMultiIndex * self, +nm_dedup_multi_index_obj_release(NMDedupMultiIndex *self, /* const NMDedupMultiObj * */ gconstpointer obj) { nm_assert(self); @@ -784,7 +784,7 @@ nm_dedup_multi_index_obj_release(NMDedupMultiIndex * sel } gconstpointer -nm_dedup_multi_index_obj_find(NMDedupMultiIndex * self, +nm_dedup_multi_index_obj_find(NMDedupMultiIndex *self, /* const NMDedupMultiObj * */ gconstpointer obj) { g_return_val_if_fail(self, NULL); @@ -794,7 +794,7 @@ nm_dedup_multi_index_obj_find(NMDedupMultiIndex * self, } gconstpointer -nm_dedup_multi_index_obj_intern(NMDedupMultiIndex * self, +nm_dedup_multi_index_obj_intern(NMDedupMultiIndex *self, /* const NMDedupMultiObj * */ gconstpointer obj) { const NMDedupMultiObj *obj_new = obj; @@ -885,13 +885,13 @@ nm_dedup_multi_obj_clone(const NMDedupMultiObj *obj) } gconstpointer * -nm_dedup_multi_objs_to_array_head(const NMDedupMultiHeadEntry * head_entry, +nm_dedup_multi_objs_to_array_head(const NMDedupMultiHeadEntry *head_entry, NMDedupMultiFcnSelectPredicate predicate, gpointer user_data, - guint * out_len) + guint *out_len) { gconstpointer *result; - CList * iter; + CList *iter; guint i; if (!head_entry) { @@ -923,12 +923,12 @@ nm_dedup_multi_objs_to_array_head(const NMDedupMultiHeadEntry * head_entry, } GPtrArray * -nm_dedup_multi_objs_to_ptr_array_head(const NMDedupMultiHeadEntry * head_entry, +nm_dedup_multi_objs_to_ptr_array_head(const NMDedupMultiHeadEntry *head_entry, NMDedupMultiFcnSelectPredicate predicate, gpointer user_data) { GPtrArray *result; - CList * iter; + CList *iter; if (!head_entry) return NULL; @@ -1028,8 +1028,8 @@ nm_dedup_multi_index_unref(NMDedupMultiIndex *self) { GHashTableIter iter; const NMDedupMultiIdxType *idx_type; - NMDedupMultiEntry * entry; - const NMDedupMultiObj * obj; + NMDedupMultiEntry *entry; + const NMDedupMultiObj *obj; g_return_val_if_fail(self, NULL); g_return_val_if_fail(self->ref_count > 0, NULL); diff --git a/src/libnm-glib-aux/nm-dedup-multi.h b/src/libnm-glib-aux/nm-dedup-multi.h index fb1cb863..0fa47422 100644 --- a/src/libnm-glib-aux/nm-dedup-multi.h +++ b/src/libnm-glib-aux/nm-dedup-multi.h @@ -83,14 +83,14 @@ void nm_dedup_multi_obj_unref(const NMDedupMultiObj *obj); const NMDedupMultiObj *nm_dedup_multi_obj_clone(const NMDedupMultiObj *obj); gboolean nm_dedup_multi_obj_needs_clone(const NMDedupMultiObj *obj); -gconstpointer nm_dedup_multi_index_obj_intern(NMDedupMultiIndex * self, +gconstpointer nm_dedup_multi_index_obj_intern(NMDedupMultiIndex *self, /* const NMDedupMultiObj * */ gconstpointer obj); -void nm_dedup_multi_index_obj_release(NMDedupMultiIndex * self, +void nm_dedup_multi_index_obj_release(NMDedupMultiIndex *self, /* const NMDedupMultiObj * */ gconstpointer obj); /* const NMDedupMultiObj * */ gconstpointer -nm_dedup_multi_index_obj_find(NMDedupMultiIndex * self, +nm_dedup_multi_index_obj_find(NMDedupMultiIndex *self, /* const NMDedupMultiObj * */ gconstpointer obj); /*****************************************************************************/ @@ -132,18 +132,18 @@ struct _NMDedupMultiIdxType { guint len; }; -void nm_dedup_multi_idx_type_init(NMDedupMultiIdxType * idx_type, +void nm_dedup_multi_idx_type_init(NMDedupMultiIdxType *idx_type, const NMDedupMultiIdxTypeClass *klass); struct _NMDedupMultiIdxTypeClass { NMObjBaseClass parent; void (*idx_obj_id_hash_update)(const NMDedupMultiIdxType *idx_type, - const NMDedupMultiObj * obj, - struct _NMHashState * h); + const NMDedupMultiObj *obj, + struct _NMHashState *h); gboolean (*idx_obj_id_equal)(const NMDedupMultiIdxType *idx_type, - const NMDedupMultiObj * obj_a, - const NMDedupMultiObj * obj_b); + const NMDedupMultiObj *obj_a, + const NMDedupMultiObj *obj_b); /* an NMDedupMultiIdxTypeClass which implements partitioning of the * tracked objects, must implement the idx_obj_partition*() functions. @@ -153,17 +153,17 @@ struct _NMDedupMultiIdxTypeClass { * routes that don't have a valid ifindex. If the idx-type says that the * object is not partitionable, it is never added to the NMDedupMultiIndex. */ gboolean (*idx_obj_partitionable)(const NMDedupMultiIdxType *idx_type, - const NMDedupMultiObj * obj); + const NMDedupMultiObj *obj); void (*idx_obj_partition_hash_update)(const NMDedupMultiIdxType *idx_type, - const NMDedupMultiObj * obj, - struct _NMHashState * h); + const NMDedupMultiObj *obj, + struct _NMHashState *h); gboolean (*idx_obj_partition_equal)(const NMDedupMultiIdxType *idx_type, - const NMDedupMultiObj * obj_a, - const NMDedupMultiObj * obj_b); + const NMDedupMultiObj *obj_a, + const NMDedupMultiObj *obj_b); }; static inline gboolean -nm_dedup_multi_idx_type_id_equal(const NMDedupMultiIdxType * idx_type, +nm_dedup_multi_idx_type_id_equal(const NMDedupMultiIdxType *idx_type, /* const NMDedupMultiObj * */ gconstpointer obj_a, /* const NMDedupMultiObj * */ gconstpointer obj_b) { @@ -172,7 +172,7 @@ nm_dedup_multi_idx_type_id_equal(const NMDedupMultiIdxType * idx } static inline gboolean -nm_dedup_multi_idx_type_partition_equal(const NMDedupMultiIdxType * idx_type, +nm_dedup_multi_idx_type_partition_equal(const NMDedupMultiIdxType *idx_type, /* const NMDedupMultiObj * */ gconstpointer obj_a, /* const NMDedupMultiObj * */ gconstpointer obj_b) { @@ -255,54 +255,54 @@ _nm_auto_unref_dedup_multi_index(NMDedupMultiIndex **v) #define NM_DEDUP_MULTI_ENTRY_MISSING ((const NMDedupMultiEntry *) GUINT_TO_POINTER(1)) #define NM_DEDUP_MULTI_HEAD_ENTRY_MISSING ((const NMDedupMultiHeadEntry *) GUINT_TO_POINTER(1)) -gboolean nm_dedup_multi_index_add_full(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, +gboolean nm_dedup_multi_index_add_full(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj, NMDedupMultiIdxMode mode, - const NMDedupMultiEntry * entry_order, - const NMDedupMultiEntry * entry_existing, - const NMDedupMultiHeadEntry * head_existing, - const NMDedupMultiEntry ** out_entry, + const NMDedupMultiEntry *entry_order, + const NMDedupMultiEntry *entry_existing, + const NMDedupMultiHeadEntry *head_existing, + const NMDedupMultiEntry **out_entry, /* const NMDedupMultiObj ** */ gpointer out_obj_old); -gboolean nm_dedup_multi_index_add(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, +gboolean nm_dedup_multi_index_add(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj, NMDedupMultiIdxMode mode, - const NMDedupMultiEntry ** out_entry, + const NMDedupMultiEntry **out_entry, /* const NMDedupMultiObj ** */ gpointer out_obj_old); const NMDedupMultiEntry * -nm_dedup_multi_index_lookup_obj(const NMDedupMultiIndex * self, - const NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_lookup_obj(const NMDedupMultiIndex *self, + const NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj); const NMDedupMultiHeadEntry * -nm_dedup_multi_index_lookup_head(const NMDedupMultiIndex * self, - const NMDedupMultiIdxType * idx_type, +nm_dedup_multi_index_lookup_head(const NMDedupMultiIndex *self, + const NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj); guint nm_dedup_multi_index_remove_entry(NMDedupMultiIndex *self, gconstpointer entry); -guint nm_dedup_multi_index_remove_obj(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, +guint nm_dedup_multi_index_remove_obj(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj, /*const NMDedupMultiObj ** */ gconstpointer *out_obj); -guint nm_dedup_multi_index_remove_head(NMDedupMultiIndex * self, - NMDedupMultiIdxType * idx_type, +guint nm_dedup_multi_index_remove_head(NMDedupMultiIndex *self, + NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj); guint nm_dedup_multi_index_remove_idx(NMDedupMultiIndex *self, NMDedupMultiIdxType *idx_type); -void nm_dedup_multi_index_dirty_set_head(NMDedupMultiIndex * self, - const NMDedupMultiIdxType * idx_type, +void nm_dedup_multi_index_dirty_set_head(NMDedupMultiIndex *self, + const NMDedupMultiIdxType *idx_type, /*const NMDedupMultiObj * */ gconstpointer obj); -void nm_dedup_multi_index_dirty_set_idx(NMDedupMultiIndex * self, +void nm_dedup_multi_index_dirty_set_idx(NMDedupMultiIndex *self, const NMDedupMultiIdxType *idx_type); -guint nm_dedup_multi_index_dirty_remove_idx(NMDedupMultiIndex * self, +guint nm_dedup_multi_index_dirty_remove_idx(NMDedupMultiIndex *self, NMDedupMultiIdxType *idx_type, gboolean mark_survivors_dirty); @@ -395,11 +395,11 @@ nm_dedup_multi_iter_prev(NMDedupMultiIter *iter) typedef gboolean (*NMDedupMultiFcnSelectPredicate)(/* const NMDedupMultiObj * */ gconstpointer obj, gpointer user_data); -gconstpointer *nm_dedup_multi_objs_to_array_head(const NMDedupMultiHeadEntry * head_entry, +gconstpointer *nm_dedup_multi_objs_to_array_head(const NMDedupMultiHeadEntry *head_entry, NMDedupMultiFcnSelectPredicate predicate, gpointer user_data, - guint * out_len); -GPtrArray * nm_dedup_multi_objs_to_ptr_array_head(const NMDedupMultiHeadEntry * head_entry, + guint *out_len); +GPtrArray *nm_dedup_multi_objs_to_ptr_array_head(const NMDedupMultiHeadEntry *head_entry, NMDedupMultiFcnSelectPredicate predicate, gpointer user_data); diff --git a/src/libnm-glib-aux/nm-enum-utils.c b/src/libnm-glib-aux/nm-enum-utils.c index f97cdfcb..3b9b7e8d 100644 --- a/src/libnm-glib-aux/nm-enum-utils.c +++ b/src/libnm-glib-aux/nm-enum-utils.c @@ -17,7 +17,7 @@ _ASSERT_enum_values_info(GType type, const NMUtilsEnumValueInfo *value_infos) { #if NM_MORE_ASSERTS > 5 nm_auto_unref_gtypeclass GTypeClass *klass = NULL; - gs_unref_hashtable GHashTable *ht = NULL; + gs_unref_hashtable GHashTable *ht = NULL; klass = g_type_class_ref(type); @@ -109,7 +109,7 @@ _enum_is_valid_flags_nick(const char *str) char * _nm_utils_enum_to_str_full(GType type, int value, - const char * flags_separator, + const char *flags_separator, const NMUtilsEnumValueInfo *value_infos) { nm_auto_unref_gtypeclass GTypeClass *klass = NULL; @@ -199,18 +199,18 @@ _find_value_info(const NMUtilsEnumValueInfo *value_infos, const char *needle) gboolean _nm_utils_enum_from_str_full(GType type, - const char * str, - int * out_value, - char ** err_token, + const char *str, + int *out_value, + char **err_token, const NMUtilsEnumValueInfo *value_infos) { nm_auto_unref_gtypeclass GTypeClass *klass = NULL; gboolean ret = FALSE; int value = 0; - gs_free char * str_clone = NULL; - char * s; + gs_free char *str_clone = NULL; + char *s; gint64 v64; - const NMUtilsEnumValueInfo * nick; + const NMUtilsEnumValueInfo *nick; g_return_val_if_fail(str, FALSE); @@ -317,7 +317,7 @@ const char ** _nm_utils_enum_get_values(GType type, int from, int to) { GTypeClass *klass; - GPtrArray * array; + GPtrArray *array; int i; char sbuf[64]; diff --git a/src/libnm-glib-aux/nm-enum-utils.h b/src/libnm-glib-aux/nm-enum-utils.h index 89be54e7..6478cadf 100644 --- a/src/libnm-glib-aux/nm-enum-utils.h +++ b/src/libnm-glib-aux/nm-enum-utils.h @@ -15,14 +15,14 @@ typedef struct _NMUtilsEnumValueInfo { int value; } NMUtilsEnumValueInfo; -char * _nm_utils_enum_to_str_full(GType type, +char *_nm_utils_enum_to_str_full(GType type, int value, - const char * sep, + const char *sep, const NMUtilsEnumValueInfo *value_infos); gboolean _nm_utils_enum_from_str_full(GType type, - const char * str, - int * out_value, - char ** err_token, + const char *str, + int *out_value, + char **err_token, const NMUtilsEnumValueInfo *value_infos); const char **_nm_utils_enum_get_values(GType type, int from, int to); diff --git a/src/libnm-glib-aux/nm-errno.c b/src/libnm-glib-aux/nm-errno.c index 0426a21d..14d93d64 100644 --- a/src/libnm-glib-aux/nm-errno.c +++ b/src/libnm-glib-aux/nm-errno.c @@ -156,7 +156,7 @@ const char * nm_strerror_native(int errsv) { static _nm_thread_local char *buf_static = NULL; - char * buf; + char *buf; buf = buf_static; if (G_UNLIKELY(!buf)) { diff --git a/src/libnm-glib-aux/nm-glib.h b/src/libnm-glib-aux/nm-glib.h index 49470d92..4ab9cbbd 100644 --- a/src/libnm-glib-aux/nm-glib.h +++ b/src/libnm-glib-aux/nm-glib.h @@ -195,7 +195,7 @@ __nmtst_g_test_skip(const char *msg) /* g_test_add_data_func_full() is only available since glib 2.34. Add a compatibility wrapper. */ static inline void -__g_test_add_data_func_full(const char * testpath, +__g_test_add_data_func_full(const char *testpath, gpointer test_data, GTestDataFunc test_func, GDestroyNotify data_free_func) @@ -311,7 +311,7 @@ _nm_g_ptr_array_insert(GPtrArray *array, int index_, gpointer data) static inline gboolean _g_key_file_save_to_file(GKeyFile *key_file, const char *filename, GError **error) { - char * contents; + char *contents; gboolean success; gsize length; @@ -484,7 +484,7 @@ _nm_g_variant_new_take_string(char *string) #if !GLIB_CHECK_VERSION(2, 38, 0) _nm_printf(1, 2) static inline GVariant *_nm_g_variant_new_printf(const char *format_string, ...) { - char * string; + char *string; va_list ap; g_return_val_if_fail(format_string, NULL); @@ -650,10 +650,10 @@ _g_atomic_pointer_compare_and_exchange(void **atomic, void *oldval, void *newval #if !GLIB_CHECK_VERSION(2, 58, 0) static inline gboolean -g_hash_table_steal_extended(GHashTable * hash_table, +g_hash_table_steal_extended(GHashTable *hash_table, gconstpointer lookup_key, - gpointer * stolen_key, - gpointer * stolen_value) + gpointer *stolen_key, + gpointer *stolen_value) { g_assert(stolen_key); g_assert(stolen_value); diff --git a/src/libnm-glib-aux/nm-hash-utils.c b/src/libnm-glib-aux/nm-hash-utils.c index a6949ebd..68b33998 100644 --- a/src/libnm-glib-aux/nm-hash-utils.c +++ b/src/libnm-glib-aux/nm-hash-utils.c @@ -139,12 +139,6 @@ nm_hash_str(const char *str) } guint -nm_str_hash(gconstpointer str) -{ - return nm_hash_str(str); -} - -guint nm_hash_ptr(gconstpointer ptr) { NMHashState h; @@ -156,12 +150,6 @@ nm_hash_ptr(gconstpointer ptr) return nm_hash_complete(&h); } -guint -nm_direct_hash(gconstpointer ptr) -{ - return nm_hash_ptr(ptr); -} - /*****************************************************************************/ guint @@ -257,7 +245,7 @@ nm_ppdirect_equal(gconstpointer a, gconstpointer b) guint nm_g_bytes_hash(gconstpointer p) { - GBytes * ptr = (GBytes *) p; + GBytes *ptr = (GBytes *) p; gconstpointer arr; gsize len; @@ -284,3 +272,31 @@ nm_pg_bytes_equal(gconstpointer a, gconstpointer b) return g_bytes_equal(*ptr_a, *ptr_b); } + +/*****************************************************************************/ + +guint64 +nm_hash_obfuscate_ptr(guint static_seed, gconstpointer val) +{ + NMHashState h; + + if (NM_MORE_ASSERTS > 0) { + static int obfuscate_static = -1; + int obfuscate; + +again: + obfuscate = g_atomic_int_get(&obfuscate_static); + if (G_UNLIKELY(obfuscate == -1)) { + obfuscate = _nm_utils_ascii_str_to_int64(g_getenv("NM_OBFUSCATE_PTR"), 10, 0, 1, 1); + if (!g_atomic_int_compare_and_exchange(&obfuscate_static, -1, obfuscate)) + goto again; + } + + if (!obfuscate) + return (uintptr_t) val; + } + + nm_hash_init(&h, static_seed); + nm_hash_update_val(&h, val); + return nm_hash_complete_u64(&h); +} diff --git a/src/libnm-glib-aux/nm-hash-utils.h b/src/libnm-glib-aux/nm-hash-utils.h index d7de2de4..b7ee4dd1 100644 --- a/src/libnm-glib-aux/nm-hash-utils.h +++ b/src/libnm-glib-aux/nm-hash-utils.h @@ -201,10 +201,10 @@ nm_hash_update_str(NMHashState *state, const char *str) #endif guint nm_hash_ptr(gconstpointer ptr); -guint nm_direct_hash(gconstpointer str); +#define nm_direct_hash nm_hash_ptr guint nm_hash_str(const char *str); -guint nm_str_hash(gconstpointer str); +#define nm_str_hash ((guint(*)(gconstpointer str)) nm_hash_str) #define nm_hash_val(static_seed, val) \ ({ \ @@ -284,15 +284,7 @@ gboolean nm_pg_bytes_equal(gconstpointer a, gconstpointer b); * * Note that there is a chance that two different pointer values hash to the same obfuscated * value. So beware of that when reviewing logs. However, such a collision is very unlikely. */ -static inline guint64 -nm_hash_obfuscate_ptr(guint static_seed, gconstpointer val) -{ - NMHashState h; - - nm_hash_init(&h, static_seed); - nm_hash_update_val(&h, val); - return nm_hash_complete_u64(&h); -} +guint64 nm_hash_obfuscate_ptr(guint static_seed, gconstpointer val); /* if you want to log obfuscated pointer for a certain context (like, NMPRuleManager * logging user-tags), then you are advised to use nm_hash_obfuscate_ptr() with your diff --git a/src/libnm-glib-aux/nm-io-utils.c b/src/libnm-glib-aux/nm-io-utils.c index 85a81f69..503f044f 100644 --- a/src/libnm-glib-aux/nm-io-utils.c +++ b/src/libnm-glib-aux/nm-io-utils.c @@ -20,9 +20,9 @@ /*****************************************************************************/ -_nm_printf(4, 5) static int _get_contents_error(GError ** error, +_nm_printf(4, 5) static int _get_contents_error(GError **error, int errsv, - int * out_errsv, + int *out_errsv, const char *format, ...) { @@ -94,14 +94,14 @@ nm_utils_fd_get_contents(int fd, gboolean close_fd, gsize max_length, NMUtilsFileGetContentsFlags flags, - char ** contents, - gsize * length, - int * out_errsv, - GError ** error) + char **contents, + gsize *length, + int *out_errsv, + GError **error) { nm_auto_close int fd_keeper = close_fd ? fd : -1; struct stat stat_buf; - gs_free char * str = NULL; + gs_free char *str = NULL; const bool do_bzero_mem = NM_FLAGS_HAS(flags, NM_UTILS_FILE_GET_CONTENTS_FLAG_SECRET); int errsv; @@ -288,13 +288,13 @@ nm_utils_fd_get_contents(int fd, */ gboolean nm_utils_file_get_contents(int dirfd, - const char * filename, + const char *filename, gsize max_length, NMUtilsFileGetContentsFlags flags, - char ** contents, - gsize * length, - int * out_errsv, - GError ** error) + char **contents, + gsize *length, + int *out_errsv, + GError **error) { int fd; @@ -338,13 +338,13 @@ nm_utils_file_get_contents(int dirfd, * and last modification times. */ gboolean -nm_utils_file_set_contents(const char * filename, - const char * contents, +nm_utils_file_set_contents(const char *filename, + const char *contents, gssize length, mode_t mode, const struct timespec *times, - int * out_errsv, - GError ** error) + int *out_errsv, + GError **error) { gs_free char *tmp_name = NULL; struct stat statbuf; @@ -498,7 +498,7 @@ nm_utils_fd_read(int fd, NMStrBuf *out_string) typedef struct { GSubprocess *subprocess; - GSource * timeout_source; + GSource *timeout_source; } SubprocessTerminateData; static void @@ -527,7 +527,7 @@ void nm_g_subprocess_terminate_in_background(GSubprocess *subprocess, int timeout_msec_before_kill) { SubprocessTerminateData *term_data; - GMainContext * main_context; + GMainContext *main_context; nm_assert(timeout_msec_before_kill > 0); @@ -573,9 +573,9 @@ char ** nm_utils_find_mkstemp_files(const char *dirname, const char *filename) { static const char letters[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - DIR * dir; - struct dirent * entry; - GPtrArray * arr = NULL; + DIR *dir; + struct dirent *entry; + GPtrArray *arr = NULL; gsize l; /* We write files with g_file_set_contents() and nm_utils_file_set_contents(). @@ -685,12 +685,12 @@ nm_sd_notify(const char *state) struct sockaddr_un sockaddr; struct iovec iovec; struct msghdr msghdr = { - .msg_iov = &iovec, - .msg_iovlen = 1, - .msg_name = &sockaddr, + .msg_iov = &iovec, + .msg_iovlen = 1, + .msg_name = &sockaddr, }; nm_auto_close int fd = -1; - const char * e; + const char *e; int r; if (!state) diff --git a/src/libnm-glib-aux/nm-io-utils.h b/src/libnm-glib-aux/nm-io-utils.h index 479d0e51..a8503986 100644 --- a/src/libnm-glib-aux/nm-io-utils.h +++ b/src/libnm-glib-aux/nm-io-utils.h @@ -26,27 +26,27 @@ gboolean nm_utils_fd_get_contents(int fd, gboolean close_fd, gsize max_length, NMUtilsFileGetContentsFlags flags, - char ** contents, - gsize * length, - int * out_errsv, - GError ** error); + char **contents, + gsize *length, + int *out_errsv, + GError **error); gboolean nm_utils_file_get_contents(int dirfd, - const char * filename, + const char *filename, gsize max_length, NMUtilsFileGetContentsFlags flags, - char ** contents, - gsize * length, - int * out_errsv, - GError ** error); + char **contents, + gsize *length, + int *out_errsv, + GError **error); -gboolean nm_utils_file_set_contents(const char * filename, - const char * contents, +gboolean nm_utils_file_set_contents(const char *filename, + const char *contents, gssize length, mode_t mode, const struct timespec *times, - int * out_errsv, - GError ** error); + int *out_errsv, + GError **error); struct _NMStrBuf; diff --git a/src/libnm-glib-aux/nm-json-aux.c b/src/libnm-glib-aux/nm-json-aux.c index 0a3b25f8..6216d93c 100644 --- a/src/libnm-glib-aux/nm-json-aux.c +++ b/src/libnm-glib-aux/nm-json-aux.c @@ -155,15 +155,15 @@ nm_json_gstr_append_obj_name(GString *gstr, const char *key, char start_containe typedef struct { NMJsonVt vt; - void * dl_handle; + void *dl_handle; } NMJsonVtInternal; static NMJsonVtInternal * _nm_json_vt_internal_load(void) { NMJsonVtInternal *v; - const char * soname; - void * handle; + const char *soname; + void *handle; v = g_new0(NMJsonVtInternal, 1); diff --git a/src/libnm-glib-aux/nm-json-aux.h b/src/libnm-glib-aux/nm-json-aux.h index 088d67a9..275ed770 100644 --- a/src/libnm-glib-aux/nm-json-aux.h +++ b/src/libnm-glib-aux/nm-json-aux.h @@ -399,7 +399,7 @@ nm_value_type_to_json(NMValueType value_type, GString *gstr, gconstpointer p_fie } static inline gboolean -nm_value_type_from_json(const NMJsonVt * vt, +nm_value_type_from_json(const NMJsonVt *vt, NMValueType value_type, const nm_json_t *elem, gpointer out_val) diff --git a/src/libnm-glib-aux/nm-keyfile-aux.c b/src/libnm-glib-aux/nm-keyfile-aux.c index 9cda1cf7..1cae28b4 100644 --- a/src/libnm-glib-aux/nm-keyfile-aux.c +++ b/src/libnm-glib-aux/nm-keyfile-aux.c @@ -19,8 +19,8 @@ struct _NMKeyFileDB { NMKeyFileDBLogFcn log_fcn; NMKeyFileDBGotDirtyFcn got_dirty_fcn; gpointer user_data; - const char * group_name; - GKeyFile * kf; + const char *group_name; + GKeyFile *kf; guint ref_count; bool is_started : 1; @@ -77,8 +77,8 @@ _key_file_new(void) /*****************************************************************************/ NMKeyFileDB * -nm_key_file_db_new(const char * filename, - const char * group_name, +nm_key_file_db_new(const char *filename, + const char *group_name, NMKeyFileDBLogFcn log_fcn, NMKeyFileDBGotDirtyFcn got_dirty_fcn, gpointer user_data) @@ -175,8 +175,8 @@ nm_key_file_db_destroy(NMKeyFileDB *self) void nm_key_file_db_start(NMKeyFileDB *self) { - gs_free char *contents = NULL; - gsize contents_len; + gs_free char *contents = NULL; + gsize contents_len; gs_free_error GError *error = NULL; g_return_if_fail(_IS_KEY_FILE_DB(self, FALSE, FALSE)); @@ -309,7 +309,7 @@ nm_key_file_db_set_value(NMKeyFileDB *self, const char *key, const char *value) if (!self->dirty && !got_dirty) { gs_free_error GError *error = NULL; - gs_free char * new_value = NULL; + gs_free char *new_value = NULL; new_value = g_key_file_get_value(self->kf, self->group_name, key, &error); if (error || !new_value || !nm_streq0(old_value, new_value)) @@ -321,8 +321,8 @@ nm_key_file_db_set_value(NMKeyFileDB *self, const char *key, const char *value) } void -nm_key_file_db_set_string_list(NMKeyFileDB * self, - const char * key, +nm_key_file_db_set_string_list(NMKeyFileDB *self, + const char *key, const char *const *value, gssize len) { @@ -352,7 +352,7 @@ nm_key_file_db_set_string_list(NMKeyFileDB * self, if (!self->dirty && !got_dirty) { gs_free_error GError *error = NULL; - gs_free char * new_value = NULL; + gs_free char *new_value = NULL; new_value = g_key_file_get_value(self->kf, self->group_name, key, &error); if (error || !new_value || !nm_streq0(old_value, new_value)) @@ -388,8 +388,8 @@ nm_key_file_db_to_file(NMKeyFileDB *self, gboolean force) void nm_key_file_db_prune_tmp_files(NMKeyFileDB *self) { - gs_free char * n_file = NULL; - gs_free char * n_dir = NULL; + gs_free char *n_file = NULL; + gs_free char *n_dir = NULL; gs_strfreev char **tmpfiles = NULL; gsize i; @@ -401,7 +401,7 @@ nm_key_file_db_prune_tmp_files(NMKeyFileDB *self) return; for (i = 0; tmpfiles[i]; i++) { - const char * tmpfile = tmpfiles[i]; + const char *tmpfile = tmpfiles[i]; gs_free char *full_file = NULL; int r; @@ -430,10 +430,10 @@ nm_key_file_db_prune(NMKeyFileDB *self, gboolean (*predicate)(const char *key, gpointer user_data), gpointer user_data) { - gs_strfreev char ** keys = NULL; + gs_strfreev char **keys = NULL; nm_auto_unref_keyfile GKeyFile *kf_to_free = NULL; - GKeyFile * kf_src = NULL; - GKeyFile * kf_dst = NULL; + GKeyFile *kf_src = NULL; + GKeyFile *kf_dst = NULL; guint k; g_return_if_fail(_IS_KEY_FILE_DB(self, TRUE, FALSE)); diff --git a/src/libnm-glib-aux/nm-keyfile-aux.h b/src/libnm-glib-aux/nm-keyfile-aux.h index e756c57a..7ada4029 100644 --- a/src/libnm-glib-aux/nm-keyfile-aux.h +++ b/src/libnm-glib-aux/nm-keyfile-aux.h @@ -13,13 +13,13 @@ typedef struct _NMKeyFileDB NMKeyFileDB; typedef void (*NMKeyFileDBLogFcn)(NMKeyFileDB *self, int syslog_level, gpointer user_data, - const char * fmt, + const char *fmt, ...) G_GNUC_PRINTF(4, 5); typedef void (*NMKeyFileDBGotDirtyFcn)(NMKeyFileDB *self, gpointer user_data); -NMKeyFileDB *nm_key_file_db_new(const char * filename, - const char * group, +NMKeyFileDB *nm_key_file_db_new(const char *filename, + const char *group, NMKeyFileDBLogFcn log_fcn, NMKeyFileDBGotDirtyFcn got_dirty_fcn, gpointer user_data); @@ -43,8 +43,8 @@ void nm_key_file_db_remove_key(NMKeyFileDB *self, const char *key); void nm_key_file_db_set_value(NMKeyFileDB *self, const char *key, const char *value); -void nm_key_file_db_set_string_list(NMKeyFileDB * self, - const char * key, +void nm_key_file_db_set_string_list(NMKeyFileDB *self, + const char *key, const char *const *value, gssize len); diff --git a/src/libnm-glib-aux/nm-logging-base.c b/src/libnm-glib-aux/nm-logging-base.c index cc19ef15..5195cbb7 100644 --- a/src/libnm-glib-aux/nm-logging-base.c +++ b/src/libnm-glib-aux/nm-logging-base.c @@ -104,8 +104,8 @@ _nm_log_simple_printf(NMLogLevel level, const char *fmt, ...) { gs_free char *msg_heap = NULL; char msg_stack[700]; - const char * msg; - const char * level_str; + const char *msg; + const char *level_str; gint64 ts; ts = nm_utils_clock_gettime_nsec(CLOCK_BOOTTIME); diff --git a/src/libnm-glib-aux/nm-macros-internal.h b/src/libnm-glib-aux/nm-macros-internal.h index e7ee7f38..14c16020 100644 --- a/src/libnm-glib-aux/nm-macros-internal.h +++ b/src/libnm-glib-aux/nm-macros-internal.h @@ -137,7 +137,7 @@ static inline void _nm_auto_freev(gpointer ptr) { gpointer **p = ptr; - gpointer * _ptr; + gpointer *_ptr; if (*p) { for (_ptr = *p; *_ptr; _ptr++) @@ -552,12 +552,12 @@ nm_str_realloc(char *str) #define NM_GOBJECT_PROPERTIES_DEFINE_NOTIFY(suffix, obj_type) \ static inline void _nm_gobject_notify_together_impl##suffix( \ - obj_type * obj, \ + obj_type *obj, \ guint n, \ const _PropertyEnums##suffix *props) \ { \ GObject *const gobj = (GObject *) obj; \ - GParamSpec * pspec_first = NULL; \ + GParamSpec *pspec_first = NULL; \ gboolean frozen = FALSE; \ \ nm_assert(G_IS_OBJECT(obj)); \ @@ -565,7 +565,7 @@ nm_str_realloc(char *str) \ while (n-- > 0) { \ const _PropertyEnums##suffix prop = *props++; \ - GParamSpec * pspec; \ + GParamSpec *pspec; \ \ if (prop == PROP_0##suffix) \ continue; \ @@ -1040,7 +1040,7 @@ nm_g_variant_equal(GVariant *a, GVariant *b) #define nm_str_skip_leading_spaces(str) \ ({ \ - typeof(*(str)) * _str_sls = (str); \ + typeof(*(str)) *_str_sls = (str); \ _nm_unused const char *const _str_type_check = _str_sls; \ \ if (_str_sls) { \ @@ -1057,6 +1057,27 @@ nm_strstrip(char *str) return str ? g_strstrip(str) : NULL; } +static inline char * +nm_strstrip_dup(const char *str) +{ + gsize l; + char *s; + + if (!str) + return NULL; + + str = nm_str_skip_leading_spaces(str); + l = strlen(str); + + while (l > 0 && g_ascii_isspace(str[l - 1])) + l--; + + s = g_new(char, l + 1); + memcpy(s, str, l); + s[l] = '\0'; + return s; +} + static inline const char * nm_strstrip_avoid_copy(const char *str, char **str_free) { @@ -1085,7 +1106,7 @@ nm_strstrip_avoid_copy(const char *str, char **str_free) #define nm_strstrip_avoid_copy_a(alloca_maxlen, str, out_str_free) \ ({ \ const char *_str_ssac = (str); \ - char ** _out_str_free_ssac = (out_str_free); \ + char **_out_str_free_ssac = (out_str_free); \ \ G_STATIC_ASSERT_EXPR((alloca_maxlen) > 0); \ \ @@ -1315,7 +1336,7 @@ _nm_strndup_a_step(char *s, const char *str, gsize len) const char *const _str_snd = (str); \ const gsize _len_snd = (len); \ char **const _out_str_free_snd = (out_str_free); \ - char * _s_snd; \ + char *_s_snd; \ \ G_STATIC_ASSERT_EXPR((alloca_maxlen) <= 300); \ \ @@ -1423,7 +1444,7 @@ nm_decode_version(guint version, guint *major, guint *minor, guint *micro) (_str ? ({ \ const gsize _trunc_at = (trunc_at); \ const gsize _strlen_trunc = NM_MIN(strlen(_str), _trunc_at); \ - char * _buf; \ + char *_buf; \ \ G_STATIC_ASSERT_EXPR((trunc_at) <= 300); \ \ @@ -1456,7 +1477,7 @@ nm_decode_version(guint version, guint *major, guint *minor, guint *micro) char *const _sbuf_stack = (sbuf_stack); \ char **const _out_sbuf_heap = (out_sbuf_heap); \ gsize *const _out_len = (out_len); \ - const char * _msg; \ + const char *_msg; \ va_list _va_args; \ int _l; \ \ @@ -1470,7 +1491,7 @@ nm_decode_version(guint version, guint *major, guint *minor, guint *micro) \ if ((gsize) _l >= sizeof(sbuf_stack)) { \ const gsize _l2 = ((gsize) _l) + 1u; \ - char * _sbuf_heap; \ + char *_sbuf_heap; \ \ /* Don't use g_strdup_vprintf() here either, because that also needs * to first determine the length (which is commonly does by printing @@ -1503,7 +1524,7 @@ nm_decode_version(guint version, guint *major, guint *minor, guint *micro) * must not be larger than 300 bytes, as this gets stack allocated. */ #define nm_sprintf_buf_unsafe_a(bufsize, format, ...) \ ({ \ - char * _buf; \ + char *_buf; \ int _buf_len; \ typeof(bufsize) _bufsize = (bufsize); \ \ @@ -1531,7 +1552,7 @@ nm_decode_version(guint version, guint *major, guint *minor, guint *micro) const char *const _name = (name); \ char **const _p_val_to_free = (p_val_to_free); \ const gsize _name_len = strlen(_name); \ - char * _buf2; \ + char *_buf2; \ \ nm_assert(_p_val_to_free && !*_p_val_to_free); \ if (NM_STRLEN(format) <= 290 && _name_len < (gsize) (290 - NM_STRLEN(format))) \ diff --git a/src/libnm-glib-aux/nm-random-utils.c b/src/libnm-glib-aux/nm-random-utils.c index 2f42f3f6..3a8ba64f 100644 --- a/src/libnm-glib-aux/nm-random-utils.c +++ b/src/libnm-glib-aux/nm-random-utils.c @@ -80,7 +80,7 @@ _bad_random_init_seed(BadRandSeed *seed) { const guint8 *p_at_random; int seed_idx; - GRand * rand; + GRand *rand; /* g_rand_new() reads /dev/urandom, but we already noticed that * /dev/urandom fails to give us good randomness (which is why @@ -148,7 +148,7 @@ _bad_random_bytes(guint8 *buf, gsize n) { static BadRandState gl_state; - static GRand * gl_rand; + static GRand *gl_rand; static GMutex gl_mutex; NM_G_MUTEX_LOCKED(&gl_mutex); @@ -224,7 +224,7 @@ nm_utils_random_bytes(void *p, size_t n) int fd; int r; gboolean has_high_quality = TRUE; - guint8 * buf = p; + guint8 *buf = p; g_return_val_if_fail(p, FALSE); g_return_val_if_fail(n > 0, FALSE); diff --git a/src/libnm-glib-aux/nm-ref-string.c b/src/libnm-glib-aux/nm-ref-string.c index 93e97c79..fec5d60e 100644 --- a/src/libnm-glib-aux/nm-ref-string.c +++ b/src/libnm-glib-aux/nm-ref-string.c @@ -172,6 +172,48 @@ nm_ref_string_new_len(const char *cstr, gsize len) return rstr; } +/** + * nmtst_ref_string_find_len: + * @cstr: the string to find. + * @len: length of @cstr. + * + * Returns: (transfer none): %NULL, if the string is currently + * not interned. Otherwise a reference to the interned string. + * Beware: this does not return ownership of the reference, + * it is thus not thread safe. Only use this from unit tests + * when you know that your thread holds a reference to the string + * to keep it alive. Otherwise, this might be a dangling pointer. + */ +NMRefString * +nmtst_ref_string_find_len(const char *cstr, gsize len) +{ + NMRefString *rstr = NULL; + + /* @len cannot be close to G_MAXSIZE. For one, that would mean our call + * to malloc() below overflows. Also, we use G_MAXSIZE as special length + * to indicate using _priv_lookup. */ + nm_assert(len < G_MAXSIZE - G_STRUCT_OFFSET(NMRefString, str) - 1u); + + G_LOCK(gl_lock); + + if (G_LIKELY(gl_hash)) { + NMRefString rr_lookup = { + .len = G_MAXSIZE, + ._priv_lookup = + { + .l_len = len, + .l_str = cstr, + }, + }; + + rstr = g_hash_table_lookup(gl_hash, &rr_lookup); + } + + G_UNLOCK(gl_lock); + + return rstr; +} + void _nm_ref_string_unref_slow_path(NMRefString *rstr) { diff --git a/src/libnm-glib-aux/nm-ref-string.h b/src/libnm-glib-aux/nm-ref-string.h index 6950d1b9..3363bce0 100644 --- a/src/libnm-glib-aux/nm-ref-string.h +++ b/src/libnm-glib-aux/nm-ref-string.h @@ -46,6 +46,19 @@ nm_ref_string_new(const char *cstr) /*****************************************************************************/ +NMRefString *nmtst_ref_string_find_len(const char *cstr, gsize len); + +static inline NMRefString * +nmtst_ref_string_find(const char *cstr) +{ + /* WARNING: only use for testing. See nmtst_ref_string_find_len() why. */ + if (!cstr) + return FALSE; + return nmtst_ref_string_find_len(cstr, strlen(cstr)); +} + +/*****************************************************************************/ + static inline NMRefString * nm_ref_string_ref(NMRefString *rstr) { @@ -118,11 +131,14 @@ static inline gboolean nm_ref_string_equal_str(NMRefString *rstr, const char *str) { if (!str) - return (!!rstr); + return !rstr; if (!rstr) return FALSE; + /* We don't use streq() here, because an NMRefString might have embedded NUL characters + * (as the length is tracked separately). The NUL terminated C string @str must not + * compare equal to such a @rstr, thus we first explicitly check strlen(). */ return rstr->len == strlen(str) && (rstr->str == str || memcmp(rstr->str, str, rstr->len) == 0); } @@ -164,24 +180,63 @@ nm_ref_string_unref_upcast(const char *str) nm_ref_string_unref(NM_REF_STRING_UPCAST(str)); } +/** + * nm_ref_string_reset_str_upcast: + * @ptr: the destination pointer that gets updated. + * @str: the new string to be set. + * + * @ptr is a location (destination pointer) of an "upcast" NMRefString. + * That is, it holds either %NULL or some ((NMRefString *) rstr)->str. + * In other words, @ptr holds an NMRefString which you could get via + * NM_REF_STRING_UPCAST(*ptr). + * This function resets @ptr to point to a NMRefString equal to @str. + * + * Returns: %TRUE if the pointer changed and %FALSE if the value was + * already set to a string equal to @str. + */ +static inline gboolean +nm_ref_string_reset_str_upcast(const char **ptr, const char *str) +{ + NMRefString *rstr; + gsize l; + + nm_assert(ptr); + + if (!str) + return nm_clear_pointer(ptr, nm_ref_string_unref_upcast); + + rstr = NM_REF_STRING_UPCAST(*ptr); + + l = strlen(str); + + if (rstr && rstr->len == l && (rstr->str == str || memcmp(rstr->str, str, l) == 0)) + return FALSE; + + *ptr = nm_ref_string_new_len(str, l)->str; + nm_ref_string_unref(rstr); + return TRUE; +} + static inline gboolean nm_ref_string_reset_str(NMRefString **ptr, const char *str) { - nm_auto_ref_string NMRefString *rstr = NULL; - gsize l; + NMRefString *rstr; + gsize l; nm_assert(ptr); if (!str) return nm_clear_pointer(ptr, nm_ref_string_unref); + rstr = *ptr; + l = strlen(str); - if ((*ptr) && (*ptr)->len == l && ((*ptr)->str == str || memcmp((*ptr)->str, str, l) == 0)) + if (rstr && rstr->len == l && (rstr->str == str || memcmp(rstr->str, str, l) == 0)) return FALSE; - rstr = *ptr; *ptr = nm_ref_string_new_len(str, l); + nm_ref_string_unref(rstr); return TRUE; } diff --git a/src/libnm-glib-aux/nm-secret-utils.h b/src/libnm-glib-aux/nm-secret-utils.h index ac279635..513dbca5 100644 --- a/src/libnm-glib-aux/nm-secret-utils.h +++ b/src/libnm-glib-aux/nm-secret-utils.h @@ -20,6 +20,22 @@ char *nm_secret_strchomp(char *secret); void nm_free_secret(char *secret); +static inline gboolean +nm_strdup_reset_secret(char **dst, const char *src) +{ + char *old; + + nm_assert(dst); + + if (nm_streq0(*dst, src)) + return FALSE; + old = *dst; + *dst = src ? g_strdup(src) : NULL; + if (old) + nm_free_secret(old); + return TRUE; +} + NM_AUTO_DEFINE_FCN0(char *, _nm_auto_free_secret, nm_free_secret); /** * nm_auto_free_secret: @@ -46,8 +62,8 @@ typedef struct { /* the data pointer. This pointer must be allocated with malloc (at least * when used with nm_secret_ptr_clear()). */ union { - char * str; - void * ptr; + char *str; + void *ptr; guint8 *bin; }; } NMSecretPtr; diff --git a/src/libnm-glib-aux/nm-shared-utils.c b/src/libnm-glib-aux/nm-shared-utils.c index 9d1a1bf1..6e6fed12 100644 --- a/src/libnm-glib-aux/nm-shared-utils.c +++ b/src/libnm-glib-aux/nm-shared-utils.c @@ -54,7 +54,7 @@ nm_ip_addr_set_from_untrusted(int addr_family, gpointer dst, gconstpointer src, gsize src_len, - int * out_addr_family) + int *out_addr_family) { nm_assert(dst); @@ -177,7 +177,7 @@ nm_utils_ipv6_addr_set_interface_identifier(struct in6_addr *addr, const NMUtils * the interface identifier. */ void -nm_utils_ipv6_interface_identifier_get_from_addr(NMUtilsIPv6IfaceId * iid, +nm_utils_ipv6_interface_identifier_get_from_addr(NMUtilsIPv6IfaceId *iid, const struct in6_addr *addr) { memcpy(iid, addr->s6_addr + 8, 8); @@ -245,40 +245,58 @@ nm_utils_gettid(void) * The main-thread is determined by remembering the thread-id * of when the function was called the first time. * - * When forking, the thread-id is again reset upon first call. */ + * When forking, the thread-id is again reset upon first call. + * + * Note that this is only used for asserting, to check that we don't + * call the function on the wrong thread. As it's difficult to correctly + * cache the tid/pid, we might get this wrong during fork. That is not + * a problem, because we err on the side of pretending all is good. */ gboolean _nm_assert_on_main_thread(void) { - G_LOCK_DEFINE_STATIC(lock); - static pid_t seen_tid; - static pid_t seen_pid; - pid_t tid; - pid_t pid; - gboolean success = FALSE; + static GMutex lock; + static int seen_tid; + pid_t tid; + int t; + gboolean success = FALSE; tid = nm_utils_gettid(); nm_assert(tid != 0); + nm_assert(({ + const int tt = tid; - G_LOCK(lock); + tt == tid; + })); - if (G_LIKELY(tid == seen_tid)) { + t = g_atomic_int_get(&seen_tid); + if (G_LIKELY(t == tid)) { /* we don't care about false positives (when the process forked, and the thread-id * is accidentally re-used) . It's for assertions only. */ + return TRUE; + } + + g_mutex_lock(&lock); + + t = g_atomic_int_get(&seen_tid); + if (G_UNLIKELY(t == tid)) success = TRUE; - } else { + else { + static pid_t seen_pid; + pid_t pid; + pid = getpid(); nm_assert(pid != 0); - if (seen_tid == 0 || seen_pid != pid) { + if (t == 0 || seen_pid != pid) { /* either this is the first time we call the function, or the process - * forked. In both cases, remember the thread-id. */ - seen_tid = tid; + * forked. In both cases, update the thread-id. */ + g_atomic_int_set(&seen_tid, tid); seen_pid = pid; success = TRUE; } } - G_UNLOCK(lock); + g_mutex_unlock(&lock); return success; } @@ -377,7 +395,7 @@ nm_strbuf_append_str(char **buf, gsize *len, const char *str) void nm_strbuf_append(char **buf, gsize *len, const char *format, ...) { - char * p = *buf; + char *p = *buf; va_list args; int retval; @@ -480,7 +498,7 @@ GBytes * nm_g_bytes_get_empty(void) { static GBytes *bytes = NULL; - GBytes * b; + GBytes *b; again: b = g_atomic_pointer_get(&bytes); @@ -566,7 +584,7 @@ nm_g_bytes_to_variant_ay(const GBytes *bytes) #define _variant_singleton_get(create_variant) \ ({ \ static GVariant *_singleton = NULL; \ - GVariant * _v; \ + GVariant *_v; \ \ while (TRUE) { \ _v = g_atomic_pointer_get(&_singleton); \ @@ -629,7 +647,7 @@ _variant_singleton_get_array_init(GVariant **p_singleton, const char *variant_ty #define _variant_singleton_get_array(variant_type) \ ({ \ static GVariant *_singleton = NULL; \ - GVariant * _v; \ + GVariant *_v; \ \ _v = g_atomic_pointer_get(&_singleton); \ if (G_UNLIKELY(!_v)) { \ @@ -708,10 +726,10 @@ nm_g_variant_maybe_singleton_i(gint32 value) GHashTable * nm_strdict_clone(GHashTable *src) { - GHashTable * dst; + GHashTable *dst; GHashTableIter iter; - const char * key; - const char * val; + const char *key; + const char *val; if (!src) return NULL; @@ -732,7 +750,7 @@ nm_strdict_to_variant_ass(GHashTable *strdict) { gs_free NMUtilsNamedValue *values_free = NULL; NMUtilsNamedValue values_prepared[20]; - const NMUtilsNamedValue * values; + const NMUtilsNamedValue *values; GVariantBuilder builder; guint i; guint n; @@ -753,7 +771,7 @@ nm_strdict_to_variant_asv(GHashTable *strdict) { gs_free NMUtilsNamedValue *values_free = NULL; NMUtilsNamedValue values_prepared[20]; - const NMUtilsNamedValue * values; + const NMUtilsNamedValue *values; GVariantBuilder builder; guint i; guint n; @@ -873,7 +891,7 @@ const char * nm_utils_flags2str(const NMUtilsFlags2StrDesc *descs, gsize n_descs, unsigned flags, - char * buf, + char *buf, gsize len) { gsize i; @@ -986,10 +1004,10 @@ nm_utils_ip_is_site_local(int addr_family, const void *address) static gboolean _parse_legacy_addr4(const char *text, in_addr_t *out_addr, GError **error) { - gs_free char * s_free = NULL; + gs_free char *s_free = NULL; struct in_addr a1; guint8 bin[sizeof(a1)]; - char * s; + char *s; int i; if (inet_aton(text, &a1) != 1) { @@ -1024,7 +1042,7 @@ _parse_legacy_addr4(const char *text, in_addr_t *out_addr, GError **error) s = nm_memdup_maybe_a(300, text, strlen(text) + 1, &s_free); for (i = 0; i < G_N_ELEMENTS(bin); i++) { - char * current_token = s; + char *current_token = s; gint32 v; s = strchr(s, '.'); @@ -1088,7 +1106,7 @@ gboolean nm_utils_parse_inaddr_bin_full(int addr_family, gboolean accept_legacy, const char *text, - int * out_addr_family, + int *out_addr_family, gpointer out_addr) { NMIPAddr addrbin; @@ -1160,14 +1178,14 @@ nm_utils_parse_inaddr(int addr_family, const char *text, char **out_addr) gboolean nm_utils_parse_inaddr_prefix_bin(int addr_family, const char *text, - int * out_addr_family, + int *out_addr_family, gpointer out_addr, - int * out_prefix) + int *out_prefix) { gs_free char *addrstr_free = NULL; int prefix = -1; - const char * slash; - const char * addrstr; + const char *slash; + const char *addrstr; NMIPAddr addrbin; g_return_val_if_fail(text, FALSE); @@ -1218,9 +1236,9 @@ nm_utils_parse_inaddr_prefix(int addr_family, const char *text, char **out_addr, gboolean nm_utils_parse_next_line(const char **inout_ptr, - gsize * inout_len, + gsize *inout_len, const char **out_line, - gsize * out_line_len) + gsize *out_line_len) { gboolean eol_is_carriage_return; const char *line_start; @@ -1843,12 +1861,12 @@ _char_lookup_has_all(const CharLookupTable *lookup, const char *candidates) const char ** nm_strsplit_set_full(const char *str, const char *delimiters, NMUtilsStrsplitSetFlags flags) { - const char ** ptr; + const char **ptr; gsize num_tokens; gsize i_token; gsize str_len_p1; - const char * c_str; - char * s; + const char *c_str; + char *s; CharLookupTable ch_lookup; const gboolean f_escaped = NM_FLAGS_HAS(flags, NM_STRSPLIT_SET_FLAGS_ESCAPED); const gboolean f_allow_escaping = @@ -1884,7 +1902,7 @@ nm_strsplit_set_full(const char *str, const char *delimiters, NMUtilsStrsplitSet ({ \ const char *const _str_start = (str_start); \ const char *const _str_cur = (str_cur); \ - const char * _str_i = (_str_cur); \ + const char *_str_i = (_str_cur); \ \ while (_str_i > _str_start && _str_i[-1] == '\\') \ _str_i--; \ @@ -2030,16 +2048,16 @@ done2: /*****************************************************************************/ const char * -nm_utils_escaped_tokens_escape_full(const char * str, - const char * delimiters, - const char * delimiters_as_needed, +nm_utils_escaped_tokens_escape_full(const char *str, + const char *delimiters, + const char *delimiters_as_needed, NMUtilsEscapedTokensEscapeFlags flags, - char ** out_to_free) + char **out_to_free) { CharLookupTable ch_lookup; CharLookupTable ch_lookup_as_needed; gboolean has_ch_lookup_as_needed = FALSE; - char * ret; + char *ret; gsize str_len; gsize alloc_len; gsize n_escapes; @@ -2268,7 +2286,7 @@ char ** nm_utils_strsplit_quoted(const char *str) { gs_unref_ptrarray GPtrArray *arr = NULL; - gs_free char * str_out = NULL; + gs_free char *str_out = NULL; CharLookupTable ch_lookup; nm_assert(str); @@ -2520,7 +2538,7 @@ nm_strv_cleanup(char **strv, gboolean strip_whitespace, gboolean skip_empty, gbo /*****************************************************************************/ GPtrArray * -_nm_g_ptr_array_copy(GPtrArray * array, +_nm_g_ptr_array_copy(GPtrArray *array, GCopyFunc func, gpointer user_data, GDestroyNotify element_free_func) @@ -2624,14 +2642,14 @@ nm_utils_error_is_notfound(GError *error) * Returns: whether the value was successfully set. */ gboolean -nm_g_object_set_property(GObject * object, - const char * property_name, +nm_g_object_set_property(GObject *object, + const char *property_name, const GValue *value, - GError ** error) + GError **error) { - GParamSpec * pspec; + GParamSpec *pspec; nm_auto_unset_gvalue GValue tmp_value = G_VALUE_INIT; - GObjectClass * klass; + GObjectClass *klass; g_return_val_if_fail(G_IS_OBJECT(object), FALSE); g_return_val_if_fail(property_name != NULL, FALSE); @@ -2725,46 +2743,46 @@ nm_g_object_set_property(GObject * object, G_STMT_END gboolean -nm_g_object_set_property_string(GObject * object, +nm_g_object_set_property_string(GObject *object, const char *property_name, const char *value, - GError ** error) + GError **error) { _set_property(object, property_name, G_TYPE_STRING, g_value_set_string, value, error); } gboolean -nm_g_object_set_property_string_static(GObject * object, +nm_g_object_set_property_string_static(GObject *object, const char *property_name, const char *value, - GError ** error) + GError **error) { _set_property(object, property_name, G_TYPE_STRING, g_value_set_static_string, value, error); } gboolean -nm_g_object_set_property_string_take(GObject * object, +nm_g_object_set_property_string_take(GObject *object, const char *property_name, - char * value, - GError ** error) + char *value, + GError **error) { _set_property(object, property_name, G_TYPE_STRING, g_value_take_string, value, error); } gboolean -nm_g_object_set_property_boolean(GObject * object, +nm_g_object_set_property_boolean(GObject *object, const char *property_name, gboolean value, - GError ** error) + GError **error) { _set_property(object, property_name, G_TYPE_BOOLEAN, g_value_set_boolean, !!value, error); } gboolean -nm_g_object_set_property_char(GObject * object, +nm_g_object_set_property_char(GObject *object, const char *property_name, gint8 value, - GError ** error) + GError **error) { /* glib says about G_TYPE_CHAR: * @@ -2775,10 +2793,10 @@ nm_g_object_set_property_char(GObject * object, } gboolean -nm_g_object_set_property_uchar(GObject * object, +nm_g_object_set_property_uchar(GObject *object, const char *property_name, guint8 value, - GError ** error) + GError **error) { _set_property(object, property_name, G_TYPE_UCHAR, g_value_set_uchar, value, error); } @@ -2790,38 +2808,38 @@ nm_g_object_set_property_int(GObject *object, const char *property_name, int val } gboolean -nm_g_object_set_property_int64(GObject * object, +nm_g_object_set_property_int64(GObject *object, const char *property_name, gint64 value, - GError ** error) + GError **error) { _set_property(object, property_name, G_TYPE_INT64, g_value_set_int64, value, error); } gboolean -nm_g_object_set_property_uint(GObject * object, +nm_g_object_set_property_uint(GObject *object, const char *property_name, guint value, - GError ** error) + GError **error) { _set_property(object, property_name, G_TYPE_UINT, g_value_set_uint, value, error); } gboolean -nm_g_object_set_property_uint64(GObject * object, +nm_g_object_set_property_uint64(GObject *object, const char *property_name, guint64 value, - GError ** error) + GError **error) { _set_property(object, property_name, G_TYPE_UINT64, g_value_set_uint64, value, error); } gboolean -nm_g_object_set_property_flags(GObject * object, +nm_g_object_set_property_flags(GObject *object, const char *property_name, GType gtype, guint value, - GError ** error) + GError **error) { nm_assert(({ nm_auto_unref_gtypeclass GTypeClass *gtypeclass = g_type_class_ref(gtype); @@ -2831,11 +2849,11 @@ nm_g_object_set_property_flags(GObject * object, } gboolean -nm_g_object_set_property_enum(GObject * object, +nm_g_object_set_property_enum(GObject *object, const char *property_name, GType gtype, int value, - GError ** error) + GError **error) { nm_assert(({ nm_auto_unref_gtypeclass GTypeClass *gtypeclass = g_type_class_ref(gtype); @@ -2873,7 +2891,7 @@ GType nm_g_type_find_implementing_class_for_property(GType gtype, const char *pname) { nm_auto_unref_gtypeclass GObjectClass *klass = NULL; - GParamSpec * pspec; + GParamSpec *pspec; g_return_val_if_fail(pname, G_TYPE_INVALID); @@ -2949,10 +2967,10 @@ _str_buf_append_c_escape_octal(NMStrBuf *strbuf, char ch) * containing the unescaped string and returned. */ gconstpointer -nm_utils_buf_utf8safe_unescape(const char * str, +nm_utils_buf_utf8safe_unescape(const char *str, NMUtilsStrUtf8SafeFlags flags, - gsize * out_len, - gpointer * to_free) + gsize *out_len, + gpointer *to_free) { gboolean strip_spaces = NM_FLAGS_HAS(flags, NM_UTILS_STR_UTF8_SAFE_UNESCAPE_STRIP_SPACES); NMStrBuf strbuf; @@ -3114,11 +3132,11 @@ const char * nm_utils_buf_utf8safe_escape(gconstpointer buf, gssize buflen, NMUtilsStrUtf8SafeFlags flags, - char ** to_free) + char **to_free) { const char *const str = buf; - const char * p = NULL; - const char * s; + const char *p = NULL; + const char *s; gboolean nul_terminated = FALSE; NMStrBuf strbuf; @@ -3209,7 +3227,7 @@ char * nm_utils_buf_utf8safe_escape_cp(gconstpointer buf, gssize buflen, NMUtilsStrUtf8SafeFlags flags) { const char *s_const; - char * s; + char *s; s_const = nm_utils_buf_utf8safe_escape(buf, buflen, flags, &s); nm_assert(!s || s == s_const); @@ -3419,11 +3437,11 @@ nm_utils_named_value_clear_with_g_free(NMUtilsNamedValue *val) G_STATIC_ASSERT(G_STRUCT_OFFSET(NMUtilsNamedValue, name) == 0); NMUtilsNamedValue * -nm_utils_named_values_from_strdict_full(GHashTable * hash, - guint * out_len, +nm_utils_named_values_from_strdict_full(GHashTable *hash, + guint *out_len, GCompareDataFunc compare_func, gpointer user_data, - NMUtilsNamedValue * provided_buffer, + NMUtilsNamedValue *provided_buffer, guint provided_buffer_len, NMUtilsNamedValue **out_allocated_buffer) { @@ -3466,7 +3484,7 @@ nm_utils_named_values_from_strdict_full(GHashTable * hash, gssize nm_utils_named_value_list_find(const NMUtilsNamedValue *arr, gsize len, - const char * name, + const char *name, gboolean sorted) { gsize i; @@ -3556,10 +3574,10 @@ nm_utils_named_value_list_sort(NMUtilsNamedValue *arr, /*****************************************************************************/ gpointer * -nm_utils_hash_keys_to_array(GHashTable * hash, +nm_utils_hash_keys_to_array(GHashTable *hash, GCompareDataFunc compare_func, gpointer user_data, - guint * out_len) + guint *out_len) { guint len; gpointer *keys; @@ -3580,14 +3598,14 @@ nm_utils_hash_keys_to_array(GHashTable * hash, } gpointer * -nm_utils_hash_values_to_array(GHashTable * hash, +nm_utils_hash_values_to_array(GHashTable *hash, GCompareDataFunc compare_func, gpointer user_data, - guint * out_len) + guint *out_len) { GHashTableIter iter; gpointer value; - gpointer * arr; + gpointer *arr; guint i, len; if (!hash || (len = g_hash_table_size(hash)) == 0u) { @@ -3669,8 +3687,8 @@ nm_utils_hashtable_equal(const GHashTable *a, } static gboolean -_utils_hashtable_equal(GHashTable * hash_a, - GHashTable * hash_b, +_utils_hashtable_equal(GHashTable *hash_a, + GHashTable *hash_b, GCompareDataFunc cmp_values, gpointer user_data) { @@ -3768,8 +3786,8 @@ static int _hashtable_cmp_func(gconstpointer a, gconstpointer b, gpointer user_data) { const HashTableUserData *d = user_data; - const HashTableCmpData * d_a = *((const HashTableCmpData *const *) a); - const HashTableCmpData * d_b = *((const HashTableCmpData *const *) b); + const HashTableCmpData *d_a = *((const HashTableCmpData *const *) a); + const HashTableCmpData *d_b = *((const HashTableCmpData *const *) b); NM_CMP_RETURN(d->cmp_keys(d_a, d_b, d->user_data)); return 0; @@ -3805,11 +3823,11 @@ nm_utils_hashtable_cmp(const GHashTable *a, GCompareDataFunc cmp_values, gpointer user_data) { - GHashTable *hash_a = (GHashTable *) a; - GHashTable *hash_b = (GHashTable *) b; + GHashTable *hash_a = (GHashTable *) a; + GHashTable *hash_b = (GHashTable *) b; gs_free HashTableCmpData *cmp_array_free = NULL; - HashTableCmpData * cmp_array_a; - HashTableCmpData * cmp_array_b; + HashTableCmpData *cmp_array_a; + HashTableCmpData *cmp_array_b; GHashTableIter h; gpointer i_key; gpointer i_val; @@ -4011,12 +4029,12 @@ _nm_strv_dup_packed(const char *const *strv, gssize len) { gs_free gsize *str_len_free = NULL; - gsize * str_len; - const char ** result; + gsize *str_len; + const char **result; gsize mem_len; gsize pre_len; gsize len2; - char * sbuf; + char *sbuf; gsize i; nm_assert(len >= -1); @@ -4113,7 +4131,7 @@ nm_utils_ptrarray_find_first(gconstpointer *list, gssize len, gconstpointer need /*****************************************************************************/ gboolean -nm_utils_ptrarray_is_sorted(gconstpointer * list, +nm_utils_ptrarray_is_sorted(gconstpointer *list, gsize len, gboolean require_strict, GCompareDataFunc cmpfcn, @@ -4135,7 +4153,7 @@ nm_utils_ptrarray_is_sorted(gconstpointer * list, } gssize -nm_utils_ptrarray_find_binary_search(gconstpointer * list, +nm_utils_ptrarray_find_binary_search(gconstpointer *list, gsize len, gconstpointer needle, GCompareDataFunc cmpfcn, @@ -4172,13 +4190,13 @@ nm_utils_ptrarray_find_binary_search(gconstpointer * list, } gssize -nm_utils_ptrarray_find_binary_search_range(gconstpointer * list, +nm_utils_ptrarray_find_binary_search_range(gconstpointer *list, gsize len, gconstpointer needle, GCompareDataFunc cmpfcn, gpointer user_data, - gssize * out_idx_first, - gssize * out_idx_last) + gssize *out_idx_first, + gssize *out_idx_last) { gssize imin, imax, imid, i2min, i2max, i2mid; int cmp; @@ -4336,10 +4354,10 @@ nm_utils_get_start_time_for_pid(pid_t pid, char *out_state, pid_t *out_ppid) { guint64 start_time; char filename[256]; - gs_free char * contents = NULL; + gs_free char *contents = NULL; size_t length; gs_free const char **tokens = NULL; - char * p; + char *p; char state = ' '; gint64 ppid = 0; @@ -4593,8 +4611,8 @@ _nm_utils_user_data_unpack(NMUtilsUserData *user_data, int nargs, ...) typedef struct { gpointer callback_user_data; - GCancellable * cancellable; - GSource * source; + GCancellable *cancellable; + GSource *source; NMUtilsInvokeOnIdleCallback callback; gulong cancelled_id; } InvokeOnIdleData; @@ -4639,12 +4657,12 @@ _nm_utils_invoke_on_idle_cb_cancelled(GCancellable *cancellable, InvokeOnIdleDat static void _nm_utils_invoke_on_idle_start(gboolean use_timeout, guint timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMUtilsInvokeOnIdleCallback callback, gpointer callback_user_data) { InvokeOnIdleData *data; - GSource * source; + GSource *source; g_return_if_fail(callback); @@ -4688,7 +4706,7 @@ _nm_utils_invoke_on_idle_start(gboolean use_timeout, } void -nm_utils_invoke_on_idle(GCancellable * cancellable, +nm_utils_invoke_on_idle(GCancellable *cancellable, NMUtilsInvokeOnIdleCallback callback, gpointer callback_user_data) { @@ -4697,7 +4715,7 @@ nm_utils_invoke_on_idle(GCancellable * cancellable, void nm_utils_invoke_on_timeout(guint timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMUtilsInvokeOnIdleCallback callback, gpointer callback_user_data) { @@ -4787,11 +4805,11 @@ nm_utils_bin2hexstr_full(gconstpointer addr, gsize length, char delimiter, gboolean upper_case, - char * out) + char *out) { const guint8 *in = addr; - const char * LOOKUP = upper_case ? "0123456789ABCDEF" : "0123456789abcdef"; - char * out0; + const char *LOOKUP = upper_case ? "0123456789ABCDEF" : "0123456789abcdef"; + char *out0; if (out) out0 = out; @@ -4829,12 +4847,12 @@ nm_utils_hexstr2bin_full(const char *hexstr, gboolean hexdigit_pairs_required, const char *delimiter_candidates, gsize required_len, - guint8 * buffer, + guint8 *buffer, gsize buffer_len, - gsize * out_len) + gsize *out_len) { const char *in = hexstr; - guint8 * out = buffer; + guint8 *out = buffer; gboolean delimiter_has = TRUE; guint8 delimiter = '\0'; gsize len; @@ -4918,7 +4936,7 @@ nm_utils_hexstr2bin_alloc(const char *hexstr, gboolean delimiter_required, const char *delimiter_candidates, gsize required_len, - gsize * out_len) + gsize *out_len) { guint8 *buffer; gsize buffer_len, len; @@ -4968,16 +4986,16 @@ fail: GVariant * nm_utils_gvariant_vardict_filter(GVariant *src, gboolean (*filter_fcn)(const char *key, - GVariant * val, - char ** out_key, - GVariant ** out_val, + GVariant *val, + char **out_key, + GVariant **out_val, gpointer user_data), gpointer user_data) { GVariantIter iter; GVariantBuilder builder; - const char * key; - GVariant * val; + const char *key; + GVariant *val; g_return_val_if_fail(src && g_variant_is_of_type(src, G_VARIANT_TYPE_VARDICT), NULL); g_return_val_if_fail(filter_fcn, NULL); @@ -4987,8 +5005,8 @@ nm_utils_gvariant_vardict_filter(GVariant *src, g_variant_iter_init(&iter, src); while (g_variant_iter_next(&iter, "{&sv}", &key, &val)) { _nm_unused gs_unref_variant GVariant *val_free = val; - gs_free char * key2 = NULL; - gs_unref_variant GVariant *val2 = NULL; + gs_free char *key2 = NULL; + gs_unref_variant GVariant *val2 = NULL; if (filter_fcn(key, val, &key2, &val2, user_data)) { g_variant_builder_add(&builder, "{sv}", key2 ?: key, val2 ?: val); @@ -5000,9 +5018,9 @@ nm_utils_gvariant_vardict_filter(GVariant *src, static gboolean _gvariant_vardict_filter_drop_one(const char *key, - GVariant * val, - char ** out_key, - GVariant ** out_val, + GVariant *val, + char **out_key, + GVariant **out_val, gpointer user_data) { return !nm_streq(key, user_data); @@ -5231,8 +5249,8 @@ typedef struct { typedef struct { GSource source; GMainContext *context; - GHashTable * fds; - GPollFD * fds_arr; + GHashTable *fds; + GPollFD *fds_arr; guint fds_len; int max_priority; bool acquired : 1; @@ -5272,16 +5290,16 @@ _ctx_integ_source_reacquire(CtxIntegSource *ctx_src) static gboolean _ctx_integ_source_prepare(GSource *source, int *out_timeout) { - CtxIntegSource *ctx_src = ((CtxIntegSource *) source); - int max_priority; - int timeout = -1; - gboolean any_ready; - GHashTableIter h_iter; - PollData * poll_data; - gboolean fds_changed; - GPollFD new_fds_stack[300u / sizeof(GPollFD)]; + CtxIntegSource *ctx_src = ((CtxIntegSource *) source); + int max_priority; + int timeout = -1; + gboolean any_ready; + GHashTableIter h_iter; + PollData *poll_data; + gboolean fds_changed; + GPollFD new_fds_stack[300u / sizeof(GPollFD)]; gs_free GPollFD *new_fds_heap = NULL; - GPollFD * new_fds; + GPollFD *new_fds; guint new_fds_len; guint new_fds_alloc; guint i; @@ -5455,7 +5473,7 @@ _ctx_integ_source_check(GSource *source) CtxIntegSource *ctx_src = ((CtxIntegSource *) source); GHashTableIter h_iter; gboolean some_ready; - PollData * poll_data; + PollData *poll_data; nm_assert(ctx_src->context); @@ -5511,7 +5529,7 @@ _ctx_integ_source_finalize(GSource *source) { CtxIntegSource *ctx_src = ((CtxIntegSource *) source); GHashTableIter h_iter; - PollData * poll_data; + PollData *poll_data; g_return_if_fail(ctx_src->context); @@ -5890,17 +5908,17 @@ attribute_escape(const char *src, char c1, char c2) } void -_nm_utils_format_variant_attributes_full(GString * str, - const NMUtilsNamedValue * values, +_nm_utils_format_variant_attributes_full(GString *str, + const NMUtilsNamedValue *values, guint num_values, const NMVariantAttributeSpec *const *spec, char attr_separator, char key_value_separator) { const NMVariantAttributeSpec *const *s; - const char * name, *value; - GVariant * variant; - char * escaped; + const char *name, *value; + GVariant *variant; + char *escaped; char buf[64]; char sep = 0; guint i; @@ -5960,15 +5978,15 @@ _nm_utils_format_variant_attributes_full(GString * st } char * -_nm_utils_format_variant_attributes(GHashTable * attributes, +_nm_utils_format_variant_attributes(GHashTable *attributes, const NMVariantAttributeSpec *const *spec, char attr_separator, char key_value_separator) { gs_free NMUtilsNamedValue *values_free = NULL; NMUtilsNamedValue values_prepared[20]; - const NMUtilsNamedValue * values; - GString * str = NULL; + const NMUtilsNamedValue *values; + GString *str = NULL; guint len; g_return_val_if_fail(attr_separator, NULL); @@ -6078,7 +6096,7 @@ nm_utils_uid_to_name(uid_t uid) gs_free char *buf_heap = NULL; char buf_stack[4096]; gsize bufsize; - char * buf; + char *buf; bufsize = sizeof(buf_stack); buf = buf_stack; @@ -6112,7 +6130,7 @@ nm_utils_name_to_uid(const char *name, uid_t *out_uid) gs_free char *buf_heap = NULL; char buf_stack[4096]; gsize bufsize; - char * buf; + char *buf; if (!name) return nm_assert_unreachable_val(FALSE); @@ -6210,7 +6228,7 @@ char * _nm_utils_ssid_to_string_arr(const guint8 *ssid, gsize len) { gs_free char *s_copy = NULL; - const char * s_cnst; + const char *s_cnst; if (len == 0) return g_strdup("(empty)"); @@ -6286,7 +6304,7 @@ nm_utils_ip4_address_clear_host_address(in_addr_t addr, guint8 plen) * @dst and @src to the same destination or set @src NULL. */ const struct in6_addr * -nm_utils_ip6_address_clear_host_address(struct in6_addr * dst, +nm_utils_ip6_address_clear_host_address(struct in6_addr *dst, const struct in6_addr *src, guint8 plen) { @@ -6475,10 +6493,10 @@ nm_crypto_md5_hash(const guint8 *salt, gsize salt_len, const guint8 *password, gsize password_len, - guint8 * buffer, + guint8 *buffer, gsize buflen) { - nm_auto_free_checksum GChecksum * ctx = NULL; + nm_auto_free_checksum GChecksum *ctx = NULL; nm_auto_clear_static_secret_ptr const NMSecretPtr digest = NM_SECRET_PTR_STATIC(NM_UTILS_CHECKSUM_LENGTH_MD5); gsize bufidx = 0; @@ -6569,7 +6587,7 @@ static pthread_key_t _tls_reg_key; static void _tls_reg_destroy(gpointer data) { - CList * lst_head = data; + CList *lst_head = data; TlsRegData *entry; if (!lst_head) @@ -6612,8 +6630,8 @@ nm_utils_thread_local_register_destroy(gpointer tls_data, GDestroyNotify destroy { NM_AUTO_PROTECT_ERRNO(errsv); static pthread_once_t key_once = PTHREAD_ONCE_INIT; - CList * lst_head; - TlsRegData * entry; + CList *lst_head; + TlsRegData *entry; nm_assert(destroy_notify); diff --git a/src/libnm-glib-aux/nm-shared-utils.h b/src/libnm-glib-aux/nm-shared-utils.h index 8dd53dcf..54550f27 100644 --- a/src/libnm-glib-aux/nm-shared-utils.h +++ b/src/libnm-glib-aux/nm-shared-utils.h @@ -36,12 +36,7 @@ pid_t nm_utils_gettid(void); gboolean _nm_assert_on_main_thread(void); #if NM_MORE_ASSERTS > 5 -#define NM_ASSERT_ON_MAIN_THREAD() \ - G_STMT_START \ - { \ - nm_assert(_nm_assert_on_main_thread()); \ - } \ - G_STMT_END +#define NM_ASSERT_ON_MAIN_THREAD() nm_assert(_nm_assert_on_main_thread()) #else #define NM_ASSERT_ON_MAIN_THREAD() \ G_STMT_START \ @@ -90,7 +85,7 @@ G_STATIC_ASSERT(sizeof(int) == sizeof(gint32)); #define _NM_INT_LE_MAXINT32(value) \ ({ \ _nm_unused typeof(value) _value = (value); \ - _nm_unused const int * _p_value = &_value; \ + _nm_unused const int *_p_value = &_value; \ \ TRUE; \ }) @@ -248,10 +243,9 @@ extern const NMIPAddr nm_ip_addr_zero; static inline int nm_ip_addr_cmp(int addr_family, gconstpointer a, gconstpointer b) { - nm_assert(a); - nm_assert(b); - - return memcmp(a, b, nm_utils_addr_family_to_size(addr_family)); + NM_CMP_SELF(a, b); + NM_CMP_DIRECT_MEMCMP(a, b, nm_utils_addr_family_to_size(addr_family)); + return 0; } static inline gboolean @@ -313,7 +307,7 @@ gboolean nm_ip_addr_set_from_untrusted(int addr_family, gpointer dst, gconstpointer src, gsize src_len, - int * out_addr_family); + int *out_addr_family); gboolean nm_ip_addr_set_from_variant(int addr_family, gpointer dst, GVariant *variant, int *out_addr_family); @@ -375,20 +369,20 @@ typedef struct _NMUtilsIPv6IfaceId { } \ } -void nm_utils_ipv6_addr_set_interface_identifier(struct in6_addr * addr, +void nm_utils_ipv6_addr_set_interface_identifier(struct in6_addr *addr, const NMUtilsIPv6IfaceId *iid); -void nm_utils_ipv6_interface_identifier_get_from_addr(NMUtilsIPv6IfaceId * iid, +void nm_utils_ipv6_interface_identifier_get_from_addr(NMUtilsIPv6IfaceId *iid, const struct in6_addr *addr); gboolean nm_utils_ipv6_interface_identifier_get_from_token(NMUtilsIPv6IfaceId *iid, - const char * token); + const char *token); const char *nm_utils_inet6_interface_identifier_to_token(const NMUtilsIPv6IfaceId *iid, char buf[static INET6_ADDRSTRLEN]); gboolean nm_utils_get_ipv6_interface_identifier(NMLinkType link_type, - const guint8 * hwaddr, + const guint8 *hwaddr, guint len, guint dev_id, NMUtilsIPv6IfaceId *out_iid); @@ -398,7 +392,7 @@ gboolean nm_utils_get_ipv6_interface_identifier(NMLinkType link_type, gconstpointer nm_utils_ipx_address_clear_host_address(int family, gpointer dst, gconstpointer src, guint8 plen); in_addr_t nm_utils_ip4_address_clear_host_address(in_addr_t addr, guint8 plen); -const struct in6_addr *nm_utils_ip6_address_clear_host_address(struct in6_addr * dst, +const struct in6_addr *nm_utils_ip6_address_clear_host_address(struct in6_addr *dst, const struct in6_addr *src, guint8 plen); @@ -623,9 +617,9 @@ GVariant *nm_strdict_to_variant_asv(GHashTable *strdict); GVariant *nm_utils_gvariant_vardict_filter(GVariant *src, gboolean (*filter_fcn)(const char *key, - GVariant * val, - char ** out_key, - GVariant ** out_val, + GVariant *val, + char **out_key, + GVariant **out_val, gpointer user_data), gpointer user_data); @@ -751,7 +745,7 @@ gboolean nm_strv_has_duplicate(const char *const *list, gssize len, gboolean is_ const char **nm_strv_cleanup_const(const char **strv, gboolean skip_empty, gboolean skip_repeated); -char **nm_strv_cleanup(char ** strv, +char **nm_strv_cleanup(char **strv, gboolean strip_whitespace, gboolean skip_empty, gboolean skip_repeated); @@ -824,7 +818,7 @@ const char *nm_utils_escaped_tokens_escape_full(const char *str, const char *delimiters, const char *delimiters_as_needed, NMUtilsEscapedTokensEscapeFlags flags, - char ** out_to_free); + char **out_to_free); static inline const char * nm_utils_escaped_tokens_escape(const char *str, const char *delimiters, char **out_to_free) @@ -859,7 +853,7 @@ nm_utils_escaped_tokens_escape_unnecessary(const char *str, const char *delimite { gs_free char *str_to_free = NULL; - const char * str0; + const char *str0; str0 = nm_utils_escaped_tokens_escape(str, delimiters, &str_to_free); nm_assert(str0 == str); @@ -873,7 +867,7 @@ nm_utils_escaped_tokens_escape_unnecessary(const char *str, const char *delimite static inline void nm_utils_escaped_tokens_escape_gstr_assert(const char *str, const char *delimiters, - GString * gstring) + GString *gstring) { g_string_append(gstring, nm_utils_escaped_tokens_escape_unnecessary(str, delimiters)); } @@ -987,7 +981,7 @@ guint32 _nm_utils_ip4_get_default_prefix(in_addr_t ip); gconstpointer nm_utils_ipx_address_clear_host_address(int family, gpointer dst, gconstpointer src, guint8 plen); in_addr_t nm_utils_ip4_address_clear_host_address(in_addr_t addr, guint8 plen); -const struct in6_addr *nm_utils_ip6_address_clear_host_address(struct in6_addr * dst, +const struct in6_addr *nm_utils_ip6_address_clear_host_address(struct in6_addr *dst, const struct in6_addr *src, guint8 plen); int nm_utils_ip6_address_same_prefix_cmp(const struct in6_addr *addr_a, @@ -1001,12 +995,12 @@ gboolean nm_utils_ip_is_site_local(int addr_family, const void *address); gboolean nm_utils_parse_inaddr_bin_full(int addr_family, gboolean accept_legacy, const char *text, - int * out_addr_family, + int *out_addr_family, gpointer out_addr); static inline gboolean nm_utils_parse_inaddr_bin(int addr_family, const char *text, - int * out_addr_family, + int *out_addr_family, gpointer out_addr) { return nm_utils_parse_inaddr_bin_full(addr_family, FALSE, text, out_addr_family, out_addr); @@ -1016,17 +1010,17 @@ gboolean nm_utils_parse_inaddr(int addr_family, const char *text, char **out_add gboolean nm_utils_parse_inaddr_prefix_bin(int addr_family, const char *text, - int * out_addr_family, + int *out_addr_family, gpointer out_addr, - int * out_prefix); + int *out_prefix); gboolean nm_utils_parse_inaddr_prefix(int addr_family, const char *text, char **out_addr, int *out_prefix); gboolean nm_utils_parse_next_line(const char **inout_ptr, - gsize * inout_len, + gsize *inout_len, const char **out_line, - gsize * out_line_len); + gsize *out_line_len); gint64 nm_g_ascii_strtoll(const char *nptr, char **endptr, guint base); @@ -1083,7 +1077,7 @@ typedef struct { const char *nm_utils_flags2str(const NMUtilsFlags2StrDesc *descs, gsize n_descs, unsigned flags, - char * buf, + char *buf, gsize len); /*****************************************************************************/ @@ -1373,70 +1367,70 @@ nm_utils_error_set_literal(GError **error, int error_code, const char *literal) /*****************************************************************************/ -gboolean nm_g_object_set_property(GObject * object, - const char * property_name, +gboolean nm_g_object_set_property(GObject *object, + const char *property_name, const GValue *value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_string(GObject * object, +gboolean nm_g_object_set_property_string(GObject *object, const char *property_name, const char *value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_string_static(GObject * object, +gboolean nm_g_object_set_property_string_static(GObject *object, const char *property_name, const char *value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_string_take(GObject * object, +gboolean nm_g_object_set_property_string_take(GObject *object, const char *property_name, - char * value, - GError ** error); + char *value, + GError **error); -gboolean nm_g_object_set_property_boolean(GObject * object, +gboolean nm_g_object_set_property_boolean(GObject *object, const char *property_name, gboolean value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_char(GObject * object, +gboolean nm_g_object_set_property_char(GObject *object, const char *property_name, gint8 value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_uchar(GObject * object, +gboolean nm_g_object_set_property_uchar(GObject *object, const char *property_name, guint8 value, - GError ** error); + GError **error); gboolean nm_g_object_set_property_int(GObject *object, const char *property_name, int value, GError **error); -gboolean nm_g_object_set_property_int64(GObject * object, +gboolean nm_g_object_set_property_int64(GObject *object, const char *property_name, gint64 value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_uint(GObject * object, +gboolean nm_g_object_set_property_uint(GObject *object, const char *property_name, guint value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_uint64(GObject * object, +gboolean nm_g_object_set_property_uint64(GObject *object, const char *property_name, guint64 value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_flags(GObject * object, +gboolean nm_g_object_set_property_flags(GObject *object, const char *property_name, GType gtype, guint value, - GError ** error); + GError **error); -gboolean nm_g_object_set_property_enum(GObject * object, +gboolean nm_g_object_set_property_enum(GObject *object, const char *property_name, GType gtype, int value, - GError ** error); + GError **error); GParamSpec *nm_g_object_class_find_property_from_gtype(GType gtype, const char *property_name); @@ -1464,6 +1458,8 @@ GParamSpec *nm_g_object_class_find_property_from_gtype(GType gtype, const char * _NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_INT, GParamSpecInt) #define NM_G_PARAM_SPEC_CAST_UINT(param_spec) \ _NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_UINT, GParamSpecUInt) +#define NM_G_PARAM_SPEC_CAST_INT64(param_spec) \ + _NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_INT64, GParamSpecInt64) #define NM_G_PARAM_SPEC_CAST_UINT64(param_spec) \ _NM_G_PARAM_SPEC_CAST(param_spec, G_TYPE_UINT64, GParamSpecUInt64) #define NM_G_PARAM_SPEC_CAST_ENUM(param_spec) \ @@ -1479,6 +1475,8 @@ GParamSpec *nm_g_object_class_find_property_from_gtype(GType gtype, const char * (NM_G_PARAM_SPEC_CAST_INT(NM_ENSURE_NOT_NULL(param_spec))->default_value) #define NM_G_PARAM_SPEC_GET_DEFAULT_UINT(param_spec) \ (NM_G_PARAM_SPEC_CAST_UINT(NM_ENSURE_NOT_NULL(param_spec))->default_value) +#define NM_G_PARAM_SPEC_GET_DEFAULT_INT64(param_spec) \ + (NM_G_PARAM_SPEC_CAST_INT64(NM_ENSURE_NOT_NULL(param_spec))->default_value) #define NM_G_PARAM_SPEC_GET_DEFAULT_UINT64(param_spec) \ (NM_G_PARAM_SPEC_CAST_UINT64(NM_ENSURE_NOT_NULL(param_spec))->default_value) #define NM_G_PARAM_SPEC_GET_DEFAULT_ENUM(param_spec) \ @@ -1526,15 +1524,15 @@ typedef enum { const char *nm_utils_buf_utf8safe_escape(gconstpointer buf, gssize buflen, NMUtilsStrUtf8SafeFlags flags, - char ** to_free); + char **to_free); char * nm_utils_buf_utf8safe_escape_cp(gconstpointer buf, gssize buflen, NMUtilsStrUtf8SafeFlags flags); const char * nm_utils_buf_utf8safe_escape_bytes(GBytes *bytes, NMUtilsStrUtf8SafeFlags flags, char **to_free); -gconstpointer nm_utils_buf_utf8safe_unescape(const char * str, +gconstpointer nm_utils_buf_utf8safe_unescape(const char *str, NMUtilsStrUtf8SafeFlags flags, - gsize * out_len, - gpointer * to_free); + gsize *out_len, + gpointer *to_free); const char * nm_utils_str_utf8safe_escape(const char *str, NMUtilsStrUtf8SafeFlags flags, char **to_free); @@ -1634,8 +1632,8 @@ nm_g_variant_builder_add_sv(GVariantBuilder *builder, const char *key, GVariant static inline void nm_g_variant_builder_add_sv_bytearray(GVariantBuilder *builder, - const char * key, - const guint8 * arr, + const char *key, + const guint8 *arr, gsize len) { g_variant_builder_add(builder, "{sv}", key, nm_g_variant_new_ay(arr, len)); @@ -1660,15 +1658,16 @@ nm_g_source_destroy_and_unref(GSource *source) * will destroy the user-data of the callback right away (and not only * during the last g_source_unref()). * - * It also means, that if the user data itself has the reference to the - * source, then this will lead to crash: + * This means for example, if the user data itself has the reference to the + * source, then the following would lead to a crash: * * g_source_destroy(user_data->my_source); * // ups, user_data was destroyed (if source was attached). * g_source_unref(user_data->my_source); * - * nm_g_source_destroy_and_unref() and nm_clear_g_source_inst() does not - * suffer from this problem. */ + * nm_g_source_destroy_and_unref(user_data->my_source) and nm_clear_g_source_inst(&user_data->my_source) + * does not have this problem (of course, afterwards, user_data would be a dangling + * pointer). */ g_source_destroy(source); g_source_unref(source); } @@ -1960,12 +1959,12 @@ typedef struct { typedef struct { union { NMUtilsNamedEntry named_entry; - const char * name; - char * name_mutable; + const char *name; + char *name_mutable; }; union { const char *value_str; - char * value_str_mutable; + char *value_str_mutable; gpointer value_ptr; }; } NMUtilsNamedValue; @@ -1976,11 +1975,11 @@ typedef struct { } NMUtilsNamedValue * -nm_utils_named_values_from_strdict_full(GHashTable * hash, - guint * out_len, +nm_utils_named_values_from_strdict_full(GHashTable *hash, + guint *out_len, GCompareDataFunc compare_func, gpointer user_data, - NMUtilsNamedValue * provided_buffer, + NMUtilsNamedValue *provided_buffer, guint provided_buffer_len, NMUtilsNamedValue **out_allocated_buffer); @@ -1995,7 +1994,7 @@ nm_utils_named_values_from_strdict_full(GHashTable * hash, gssize nm_utils_named_value_list_find(const NMUtilsNamedValue *arr, gsize len, - const char * name, + const char *name, gboolean sorted); gboolean nm_utils_named_value_list_is_sorted(const NMUtilsNamedValue *arr, @@ -2013,15 +2012,15 @@ void nm_utils_named_value_clear_with_g_free(NMUtilsNamedValue *val); /*****************************************************************************/ -gpointer *nm_utils_hash_keys_to_array(GHashTable * hash, +gpointer *nm_utils_hash_keys_to_array(GHashTable *hash, GCompareDataFunc compare_func, gpointer user_data, - guint * out_len); + guint *out_len); -gpointer *nm_utils_hash_values_to_array(GHashTable * hash, +gpointer *nm_utils_hash_values_to_array(GHashTable *hash, GCompareDataFunc compare_func, gpointer user_data, - guint * out_len); + guint *out_len); static inline const char ** nm_strdict_get_keys(const GHashTable *hash, gboolean sorted, guint *out_length) @@ -2078,7 +2077,7 @@ const char **_nm_strv_dup_packed(const char *const *strv, gssize len); ({ \ const char *const *const _strv = NM_CAST_STRV_CC(strv); \ const gssize _len = (len); \ - const char ** _result = NULL; \ + const char **_result = NULL; \ const char ***const _to_free = (to_free); \ \ G_STATIC_ASSERT_EXPR((alloca_maxlen) <= 500u / sizeof(const char *)); \ @@ -2177,7 +2176,7 @@ nm_g_ptr_array_unref(GPtrArray *arr) #define nm_g_ptr_array_set(pdst, val) \ ({ \ GPtrArray **_pdst = (pdst); \ - GPtrArray * _val = (val); \ + GPtrArray *_val = (val); \ gboolean _changed = FALSE; \ \ nm_assert(_pdst); \ @@ -2194,7 +2193,7 @@ nm_g_ptr_array_unref(GPtrArray *arr) #define nm_g_ptr_array_set_take(pdst, val) \ ({ \ GPtrArray **_pdst = (pdst); \ - GPtrArray * _val = (val); \ + GPtrArray *_val = (val); \ gboolean _changed = FALSE; \ \ nm_assert(_pdst); \ @@ -2222,7 +2221,7 @@ nm_g_ptr_array_pdata(const GPtrArray *arr) return arr ? arr->pdata : NULL; } -GPtrArray *_nm_g_ptr_array_copy(GPtrArray * array, +GPtrArray *_nm_g_ptr_array_copy(GPtrArray *array, GCopyFunc func, gpointer user_data, GDestroyNotify element_free_func); @@ -2298,25 +2297,25 @@ nm_g_hash_table_remove(GHashTable *hash, gconstpointer key) /*****************************************************************************/ -gboolean nm_utils_ptrarray_is_sorted(gconstpointer * list, +gboolean nm_utils_ptrarray_is_sorted(gconstpointer *list, gsize len, gboolean require_strict, GCompareDataFunc cmpfcn, gpointer user_data); -gssize nm_utils_ptrarray_find_binary_search(gconstpointer * list, +gssize nm_utils_ptrarray_find_binary_search(gconstpointer *list, gsize len, gconstpointer needle, GCompareDataFunc cmpfcn, gpointer user_data); -gssize nm_utils_ptrarray_find_binary_search_range(gconstpointer * list, +gssize nm_utils_ptrarray_find_binary_search_range(gconstpointer *list, gsize len, gconstpointer needle, GCompareDataFunc cmpfcn, gpointer user_data, - gssize * out_idx_first, - gssize * out_idx_last); + gssize *out_idx_first, + gssize *out_idx_last); #define nm_strv_find_binary_search(strv, len, needle) \ ({ \ @@ -2546,12 +2545,12 @@ void _nm_utils_user_data_unpack(NMUtilsUserData *user_data, int nargs, ...); typedef void (*NMUtilsInvokeOnIdleCallback)(gpointer user_data, GCancellable *cancellable); -void nm_utils_invoke_on_idle(GCancellable * cancellable, +void nm_utils_invoke_on_idle(GCancellable *cancellable, NMUtilsInvokeOnIdleCallback callback, gpointer callback_user_data); void nm_utils_invoke_on_timeout(guint timeout_msec, - GCancellable * cancellable, + GCancellable *cancellable, NMUtilsInvokeOnIdleCallback callback, gpointer callback_user_data); @@ -2707,15 +2706,15 @@ char *nm_utils_bin2hexstr_full(gconstpointer addr, gsize length, char delimiter, gboolean upper_case, - char * out); + char *out); #define nm_utils_bin2hexstr_a(addr, length, delimiter, upper_case, str_to_free) \ ({ \ gconstpointer _addr = (addr); \ gsize _length = (length); \ char _delimiter = (delimiter); \ - char ** _str_to_free = (str_to_free); \ - char * _s; \ + char **_str_to_free = (str_to_free); \ + char *_s; \ gsize _s_len; \ \ nm_assert(_str_to_free); \ @@ -2748,9 +2747,9 @@ guint8 *nm_utils_hexstr2bin_full(const char *hexstr, gboolean hexdigit_pairs_required, const char *delimiter_candidates, gsize required_len, - guint8 * buffer, + guint8 *buffer, gsize buffer_len, - gsize * out_len); + gsize *out_len); #define nm_utils_hexstr2bin_buf(hexstr, \ allow_0x_prefix, \ @@ -2772,7 +2771,7 @@ guint8 *nm_utils_hexstr2bin_alloc(const char *hexstr, gboolean delimiter_required, const char *delimiter_candidates, gsize required_len, - gsize * out_len); + gsize *out_len); /** * _nm_utils_hwaddr_aton: @@ -2834,7 +2833,7 @@ static inline const char * _nm_utils_hwaddr_ntoa(gconstpointer addr, gsize addr_len, gboolean upper_case, - char * buf, + char *buf, gsize buf_len) { g_return_val_if_fail(addr, NULL); @@ -2952,7 +2951,7 @@ _nm_utils_hwaddr_ntoa(gconstpointer addr, static inline GTask * nm_g_task_new(gpointer source_object, - GCancellable * cancellable, + GCancellable *cancellable, gpointer source_tag, GAsyncReadyCallback callback, gpointer callback_data) @@ -3143,25 +3142,31 @@ nm_strvarray_remove_first(GArray *strv, const char *needle) /*****************************************************************************/ struct _NMVariantAttributeSpec { - char * name; + char *name; const GVariantType *type; bool v4 : 1; bool v6 : 1; bool no_value : 1; bool consumes_rest : 1; - char str_type; + + /* This indicates a non-standard parsing behavior. What this is, + * depends on the actual validation and how to handle it. + * + * Note that the entire NMVariantAttributeSpec is internal API, + * so we can change behavior and adjust it as it fits. */ + char type_detail; }; typedef struct _NMVariantAttributeSpec NMVariantAttributeSpec; -void _nm_utils_format_variant_attributes_full(GString * str, - const NMUtilsNamedValue * values, +void _nm_utils_format_variant_attributes_full(GString *str, + const NMUtilsNamedValue *values, guint num_values, const NMVariantAttributeSpec *const *spec, char attr_separator, char key_value_separator); -char *_nm_utils_format_variant_attributes(GHashTable * attributes, +char *_nm_utils_format_variant_attributes(GHashTable *attributes, const NMVariantAttributeSpec *const *spec, char attr_separator, char key_value_separator); @@ -3172,7 +3177,7 @@ gboolean nm_utils_is_localhost(const char *name); gboolean nm_utils_is_specific_hostname(const char *name); -char * nm_utils_uid_to_name(uid_t uid); +char *nm_utils_uid_to_name(uid_t uid); gboolean nm_utils_name_to_uid(const char *name, uid_t *out_uid); /*****************************************************************************/ @@ -3183,8 +3188,8 @@ double nm_utils_exp10(gint16 e); gboolean _nm_utils_is_empty_ssid_arr(const guint8 *ssid, gsize len); gboolean _nm_utils_is_empty_ssid_gbytes(GBytes *ssid); -char * _nm_utils_ssid_to_string_arr(const guint8 *ssid, gsize len); -char * _nm_utils_ssid_to_string_gbytes(GBytes *ssid); +char *_nm_utils_ssid_to_string_arr(const guint8 *ssid, gsize len); +char *_nm_utils_ssid_to_string_gbytes(GBytes *ssid); /*****************************************************************************/ @@ -3207,7 +3212,7 @@ void nm_crypto_md5_hash(const guint8 *salt, gsize salt_len, const guint8 *password, gsize password_len, - guint8 * buffer, + guint8 *buffer, gsize buflen); /*****************************************************************************/ diff --git a/src/libnm-glib-aux/nm-str-buf.h b/src/libnm-glib-aux/nm-str-buf.h index 7a7f580c..47d1f055 100644 --- a/src/libnm-glib-aux/nm-str-buf.h +++ b/src/libnm-glib-aux/nm-str-buf.h @@ -348,7 +348,7 @@ nm_utils_escaped_tokens_escape_strbuf(const char *str, const char *delimiters, N static inline void nm_utils_escaped_tokens_escape_strbuf_assert(const char *str, const char *delimiters, - NMStrBuf * strbuf) + NMStrBuf *strbuf) { nm_str_buf_append(strbuf, nm_utils_escaped_tokens_escape_unnecessary(str, delimiters)); } diff --git a/src/libnm-glib-aux/nm-test-utils.h b/src/libnm-glib-aux/nm-test-utils.h index 253aaf0e..caf43d5f 100644 --- a/src/libnm-glib-aux/nm-test-utils.h +++ b/src/libnm-glib-aux/nm-test-utils.h @@ -104,7 +104,7 @@ #define nmtst_assert_error(error, expect_error_domain, expect_error_code, expect_error_pattern) \ G_STMT_START \ { \ - GError * _error = (error); \ + GError *_error = (error); \ GQuark _expect_error_domain = (expect_error_domain); \ const char *_expect_error_pattern = (expect_error_pattern); \ \ @@ -182,6 +182,23 @@ } \ G_STMT_END +#define nmtst_assert_strv(strv, ...) \ + G_STMT_START \ + { \ + const char *const *const _strv = (strv); \ + const char *const _exp[] = {__VA_ARGS__, NULL}; \ + const gsize _n = G_N_ELEMENTS(_exp) - 1; \ + gsize _i; \ + \ + g_assert(_n == NM_NARG(__VA_ARGS__)); \ + g_assert(_strv); \ + for (_i = 0; _i < _n; _i++) { \ + g_assert(_exp[_i]); \ + g_assert_cmpstr(_strv[_i], ==, _exp[_i]); \ + } \ + } \ + G_STMT_END + /*****************************************************************************/ /* Our nm-error error numbers use negative values to signal failure. @@ -204,16 +221,16 @@ /*****************************************************************************/ struct __nmtst_internal { - GRand * rand0; + GRand *rand0; guint32 rand_seed; - GRand * rand; + GRand *rand; gboolean is_debug; gboolean assert_logging; gboolean no_expect_message; gboolean test_quick; gboolean test_tap_log; - char * sudo_cmd; - char ** orig_argv; + char *sudo_cmd; + char **orig_argv; }; extern struct __nmtst_internal __nmtst_internal; @@ -255,7 +272,7 @@ static inline char ** nmtst_str_split(char *str, const char *delimiters) { const char *d; - GArray * result = g_array_sized_new(TRUE, FALSE, sizeof(char *), 3); + GArray *result = g_array_sized_new(TRUE, FALSE, sizeof(char *), 3); g_assert(str); g_assert(delimiters && !strchr(delimiters, '\\')); @@ -312,35 +329,35 @@ nmtst_free(void) } static inline void -_nmtst_log_handler(const char * log_domain, +_nmtst_log_handler(const char *log_domain, GLogLevelFlags log_level, - const char * message, + const char *message, gpointer user_data) { g_print("%s\n", message); } static inline void -__nmtst_init(int * argc, - char *** argv, +__nmtst_init(int *argc, + char ***argv, gboolean assert_logging, const char *log_level, const char *log_domains, - gboolean * out_set_logging) -{ - const char * nmtst_debug; - gboolean is_debug = FALSE; - char * c_log_level = NULL, *c_log_domains = NULL; - char * sudo_cmd = NULL; - GArray * debug_messages = g_array_new(TRUE, FALSE, sizeof(char *)); - int i; - gboolean no_expect_message = FALSE; - gboolean _out_set_logging; - gboolean test_quick = FALSE; - gboolean test_quick_set = FALSE; - gboolean test_quick_argv = FALSE; - gs_unref_ptrarray GPtrArray *p_tests = NULL; - gs_unref_ptrarray GPtrArray *s_tests = NULL; + gboolean *out_set_logging) +{ + const char *nmtst_debug; + gboolean is_debug = FALSE; + char *c_log_level = NULL, *c_log_domains = NULL; + char *sudo_cmd = NULL; + GArray *debug_messages = g_array_new(TRUE, FALSE, sizeof(char *)); + int i; + gboolean no_expect_message = FALSE; + gboolean _out_set_logging; + gboolean test_quick = FALSE; + gboolean test_quick_set = FALSE; + gboolean test_quick_argv = FALSE; + gs_unref_ptrarray GPtrArray *p_tests = NULL; + gs_unref_ptrarray GPtrArray *s_tests = NULL; if (!out_set_logging) out_set_logging = &_out_set_logging; @@ -471,10 +488,10 @@ __nmtst_init(int * argc, /* g_test_init() sets g_log_set_always_fatal() for G_LOG_LEVEL_WARNING * and G_LOG_LEVEL_CRITICAL. So, beware that the test will fail if you * have any WARN or ERR log messages -- unless you g_test_expect_message(). */ - GPtrArray * arg_array = g_ptr_array_new(); + GPtrArray *arg_array = g_ptr_array_new(); gs_free char **arg_array_c = NULL; int arg_array_n, j; - static char ** s_tests_x, **p_tests_x; + static char **s_tests_x, **p_tests_x; if (*argc) { for (i = 0; i < *argc; i++) @@ -628,7 +645,7 @@ __nmtst_init(int * argc, * add "/bin" and "/sbin" to $PATH for all tests. */ { static char *path_new; - const char * path_old; + const char *path_old; g_assert(!path_new); @@ -692,6 +709,17 @@ nmtst_test_quick(void) return __nmtst_internal.test_quick; } +static inline gboolean +nmtst_test_skip_slow(void) +{ + if (!nmtst_test_quick()) + return FALSE; + + g_print("Skipping test: don't run long running test %s (NMTST_DEBUG=slow)\n", g_get_prgname()); + g_test_skip("Skip long running test"); + return TRUE; +} + #if GLIB_CHECK_VERSION(2, 34, 0) #undef g_test_expect_message #define g_test_expect_message(...) \ @@ -747,10 +775,10 @@ typedef void (*NmtstTestHandler)(const NmtstTestData *test_data); struct _NmtstTestData { union { const char *testpath; - char * _testpath; + char *_testpath; }; gsize n_args; - gpointer * args; + gpointer *args; NmtstTestHandler _func_setup; GTestDataFunc _func_test; NmtstTestHandler _func_teardown; @@ -804,7 +832,7 @@ _nmtst_test_run(gconstpointer data) } static inline void -_nmtst_add_test_func_full(const char * testpath, +_nmtst_add_test_func_full(const char *testpath, GTestDataFunc func_test, NmtstTestHandler func_setup, NmtstTestHandler func_teardown, @@ -874,7 +902,7 @@ nmtst_get_rand(void) g_rand_set_seed(__nmtst_internal.rand, seed); } else { /* NMTST_SEED_RAND is set. Use it as a seed. */ - char * s; + char *s; gint64 i; i = g_ascii_strtoll(str, &s, 0); @@ -1067,7 +1095,7 @@ nmtst_stable_rand(guint64 seed, gpointer buf, gsize len) { const guint64 C = 1442695040888963407llu; const guint64 A = 6364136223846793005llu; - guint8 * b; + guint8 *b; union { guint8 a[sizeof(guint64)]; guint64 n; @@ -1203,7 +1231,7 @@ static inline gboolean nmtst_main_loop_run(GMainLoop *loop, guint timeout_msec) { nm_auto_unref_gsource GSource *source = NULL; - GMainLoop * loopx = loop; + GMainLoop *loopx = loop; if (timeout_msec > 0) { source = g_timeout_source_new(timeout_msec); @@ -1244,7 +1272,7 @@ _nmtst_main_loop_quit_on_notify(GObject *object, GParamSpec *pspec, gpointer use ({ \ nm_auto_destroy_and_unref_gsource GSource *_source_timeout = NULL; \ nm_auto_destroy_and_unref_gsource GSource *_source_poll = NULL; \ - GMainContext * _context = (context); \ + GMainContext *_context = (context); \ gboolean _had_timeout = FALSE; \ typeof(timeout_msec) _timeout_msec0 = (timeout_msec); \ typeof(poll_msec) _poll_msec0 = (poll_msec); \ @@ -1319,7 +1347,7 @@ nmtst_main_context_assert_no_dispatch(GMainContext *context, guint timeout_msec) typedef struct { GMainLoop *_main_loop; union { - GSList * _list; + GSList *_list; const void *const is_waiting; }; } NMTstContextBusyWatcherData; @@ -1328,7 +1356,7 @@ static inline void _nmtst_context_busy_watcher_add_cb(gpointer data, GObject *where_the_object_was) { NMTstContextBusyWatcherData *watcher_data = data; - GSList * l; + GSList *l; g_assert(watcher_data); @@ -1389,7 +1417,7 @@ nmtst_get_sudo_cmd(void) static inline void nmtst_reexec_sudo(void) { - char * str; + char *str; char **argv; int i; int errsv; @@ -1426,7 +1454,7 @@ nmtst_find_all_indexes(gpointer *elements, gsize n_needles, gboolean (*equal_fcn)(gpointer element, gpointer needle, gpointer user_data), gpointer user_data, - gssize * out_idx) + gssize *out_idx) { gsize i, j, k; gsize found = 0; @@ -1489,13 +1517,13 @@ __define_nmtst_static(01, 1024) __define_nmtst_static(02, 1024) __define_nmtst_s #if defined(__NM_UTILS_H__) || defined(NM_UTILS_H) #define NMTST_UUID_INIT(uuid) \ - gs_free char * _nmtst_hidden_##uuid = nm_utils_uuid_generate(); \ + gs_free char *_nmtst_hidden_##uuid = nm_utils_uuid_generate(); \ const char *const uuid = _nmtst_hidden_##uuid static inline const char *nmtst_uuid_generate(void) { static _nm_thread_local char u[37]; - gs_free char * m = NULL; + gs_free char *m = NULL; m = nm_utils_uuid_generate(); g_assert(m && strlen(m) == sizeof(u) - 1); @@ -1609,10 +1637,10 @@ _nmtst_assert_ip4_address(const char *file, int line, in_addr_t addr, const char _nmtst_assert_ip4_address(__FILE__, __LINE__, addr, str_expected) static inline void -_nmtst_assert_ip6_address(const char * file, +_nmtst_assert_ip6_address(const char *file, int line, const struct in6_addr *addr, - const char * str_expected) + const char *str_expected) { struct in6_addr any = in6addr_any; @@ -1650,20 +1678,20 @@ _nmtst_assert_ip6_address(const char * file, ##__VA_ARGS__, \ NULL) static inline int __nmtst_spawn_sync(const char *working_directory, - char ** standard_out, - char ** standard_err, + char **standard_out, + char **standard_err, int assert_exit_status, ...) G_GNUC_NULL_TERMINATED; static inline int __nmtst_spawn_sync(const char *working_directory, - char ** standard_out, - char ** standard_err, + char **standard_out, + char **standard_err, int assert_exit_status, ...) { int exit_status = 0; - GError * error = NULL; - char * arg; + GError *error = NULL; + char *arg; va_list va_args; GPtrArray *argv = g_ptr_array_new(); gboolean success; @@ -1724,9 +1752,9 @@ nmtst_file_resolve_relative_path(const char *rel, const char *cwd) static inline char * nmtst_file_get_contents(const char *filename) { - GError * error = NULL; + GError *error = NULL; gboolean success; - char * contents = NULL; + char *contents = NULL; gsize len; success = g_file_get_contents(filename, &contents, &len, &error); @@ -1738,7 +1766,7 @@ nmtst_file_get_contents(const char *filename) #define nmtst_file_set_contents_size(filename, content, size) \ G_STMT_START \ { \ - GError * _error = NULL; \ + GError *_error = NULL; \ gboolean _success; \ const char *_content = (content); \ gssize _size = (size); \ @@ -1924,9 +1952,9 @@ nmtst_setting_ip_config_add_address(NMSettingIPConfig *s_ip, const char *address static inline void nmtst_setting_ip_config_add_route(NMSettingIPConfig *s_ip, - const char * dest, + const char *dest, guint prefix, - const char * next_hop, + const char *next_hop, gint64 metric) { NMIPRoute *route; @@ -2030,15 +2058,15 @@ nmtst_clone_connection(NMConnection *connection) } static inline NMConnection * -nmtst_create_minimal_connection(const char * id, - const char * uuid, - const char * type, +nmtst_create_minimal_connection(const char *id, + const char *uuid, + const char *type, NMSettingConnection **out_s_con) { - NMConnection * con; - NMSetting * s_base = NULL; + NMConnection *con; + NMSetting *s_base = NULL; NMSettingConnection *s_con; - gs_free char * uuid_free = NULL; + gs_free char *uuid_free = NULL; g_assert(id); @@ -2095,7 +2123,7 @@ nmtst_create_minimal_connection(const char * id, static inline gboolean _nmtst_connection_normalize_v(NMConnection *connection, va_list args) { - GError * error = NULL; + GError *error = NULL; gboolean success; gboolean was_modified = FALSE; GHashTable *parameters = NULL; @@ -2156,10 +2184,10 @@ nmtst_assert_connection_equals(NMConnection *a, NMConnection *b, gboolean normalize_b) { - gboolean compare; + gboolean compare; gs_unref_object NMConnection *a2 = NULL; gs_unref_object NMConnection *b2 = NULL; - GHashTable * out_settings = NULL; + GHashTable *out_settings = NULL; g_assert(NM_IS_CONNECTION(a)); g_assert(NM_IS_CONNECTION(b)); @@ -2171,8 +2199,8 @@ nmtst_assert_connection_equals(NMConnection *a, compare = nm_connection_diff(a, b, NM_SETTING_COMPARE_FLAG_EXACT, &out_settings); if (!compare || out_settings) { - const char * name, *pname; - GHashTable * setting; + const char *name, *pname; + GHashTable *setting; GHashTableIter iter, iter2; __NMTST_LOG(g_message, ">>> ASSERTION nmtst_assert_connection_equals() fails"); @@ -2190,7 +2218,7 @@ nmtst_assert_connection_equals(NMConnection *a, #ifdef __NM_KEYFILE_INTERNAL_H__ { nm_auto_unref_keyfile GKeyFile *kf_a = NULL, *kf_b = NULL; - gs_free char * str_a = NULL, *str_b = NULL; + gs_free char *str_a = NULL, *str_b = NULL; kf_a = nm_keyfile_write(a, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, NULL); kf_b = nm_keyfile_write(b, NM_KEYFILE_HANDLER_FLAGS_NONE, NULL, NULL, NULL); @@ -2222,7 +2250,7 @@ static inline void nmtst_assert_connection_verifies(NMConnection *con) { /* assert that the connection does verify, it might be normaliziable or not */ - GError * error = NULL; + GError *error = NULL; gboolean success; g_assert(NM_IS_CONNECTION(con)); @@ -2236,10 +2264,10 @@ static inline void nmtst_assert_connection_verifies_without_normalization(NMConnection *con) { /* assert that the connection verifies and does not need any normalization */ - GError * error = NULL; - gboolean success; - gboolean was_modified = FALSE; - gs_unref_object NMConnection *clone = NULL; + GError *error = NULL; + gboolean success; + gboolean was_modified = FALSE; + gs_unref_object NMConnection *clone = NULL; clone = nmtst_clone_connection(con); @@ -2256,10 +2284,10 @@ static inline void nmtst_assert_connection_verifies_and_normalizable(NMConnection *con) { /* assert that the connection does verify, but normalization still modifies it */ - GError * error = NULL; - gboolean success; - gboolean was_modified = FALSE; - gs_unref_object NMConnection *clone = NULL; + GError *error = NULL; + gboolean success; + gboolean was_modified = FALSE; + gs_unref_object NMConnection *clone = NULL; clone = nmtst_clone_connection(con); @@ -2280,10 +2308,10 @@ nmtst_assert_connection_verifies_after_normalization(NMConnection *con, int expect_error_code) { /* assert that the connection does not verify, but normalization does fix it */ - GError * error = NULL; - gboolean success; - gboolean was_modified = FALSE; - gs_unref_object NMConnection *clone = NULL; + GError *error = NULL; + gboolean success; + gboolean was_modified = FALSE; + gs_unref_object NMConnection *clone = NULL; clone = nmtst_clone_connection(con); @@ -2308,10 +2336,10 @@ nmtst_assert_connection_unnormalizable(NMConnection *con, { /* assert that the connection does not verify, and it cannot be fixed by normalization */ - GError * error = NULL; - gboolean success; - gboolean was_modified = FALSE; - gs_unref_object NMConnection *clone = NULL; + GError *error = NULL; + gboolean success; + gboolean was_modified = FALSE; + gs_unref_object NMConnection *clone = NULL; clone = nmtst_clone_connection(con); @@ -2333,7 +2361,7 @@ nmtst_assert_setting_verifies(NMSetting *setting) { /* assert that the setting verifies without an error */ - GError * error = NULL; + GError *error = NULL; gboolean success; g_assert(NM_IS_SETTING(setting)); @@ -2351,12 +2379,12 @@ _nmtst_assert_connection_has_settings(NMConnection *connection, gboolean has_at_most, ...) { - gs_unref_hashtable GHashTable *names = NULL; - gs_free NMSetting **settings = NULL; - va_list ap; - const char * name; - guint i, len; - gs_unref_ptrarray GPtrArray *names_arr = NULL; + gs_unref_hashtable GHashTable *names = NULL; + gs_free NMSetting **settings = NULL; + va_list ap; + const char *name; + guint i, len; + gs_unref_ptrarray GPtrArray *names_arr = NULL; g_assert(NM_IS_CONNECTION(connection)); @@ -2382,9 +2410,9 @@ _nmtst_assert_connection_has_settings(NMConnection *connection, } } if (g_hash_table_size(names) > 0 && has_at_least) { - gs_free char * expected_str = g_strjoinv(" ", (char **) names_arr->pdata); + gs_free char *expected_str = g_strjoinv(" ", (char **) names_arr->pdata); gs_free const char **settings_names = NULL; - gs_free char * has_str = NULL; + gs_free char *has_str = NULL; settings_names = g_new0(const char *, len + 1); for (i = 0; i < len; i++) @@ -2413,7 +2441,7 @@ nmtst_assert_setting_verify_fails(NMSetting *setting, { /* assert that the setting verification fails */ - GError * error = NULL; + GError *error = NULL; gboolean success; g_assert(NM_IS_SETTING(setting)); @@ -2452,7 +2480,7 @@ nmtst_assert_setting_is_equal(gconstpointer /* const NMSetting * */ a, static inline NMSetting * nmtst_assert_setting_dbus_new(GType gtype, GVariant *variant) { - NMSetting * setting; + NMSetting *setting; gs_free_error GError *error = NULL; g_assert(g_type_is_a(gtype, NM_TYPE_SETTING)); @@ -2484,8 +2512,8 @@ nmtst_assert_setting_dbus_roundtrip(gconstpointer /* const NMSetting * */ settin static inline void nmtst_assert_hwaddr_equals(gconstpointer hwaddr1, gssize hwaddr1_len, - const char * expected, - const char * file, + const char *expected, + const char *file, int line) { guint8 buf2[NM_UTILS_HWADDR_LEN_MAX]; @@ -2531,11 +2559,11 @@ static inline NMConnection * nmtst_create_connection_from_keyfile(const char *keyfile_str, const char *full_filename) { nm_auto_unref_keyfile GKeyFile *keyfile = NULL; - gs_free_error GError *error = NULL; - gboolean success; - NMConnection * con; - gs_free char * filename = g_path_get_basename(full_filename); - gs_free char * base_dir = g_path_get_dirname(full_filename); + gs_free_error GError *error = NULL; + gboolean success; + NMConnection *con; + gs_free char *filename = g_path_get_basename(full_filename); + gs_free char *base_dir = g_path_get_dirname(full_filename); g_assert(keyfile_str); g_assert(full_filename && full_filename[0] == '/'); @@ -2568,8 +2596,8 @@ _nmtst_variant_new_vardict(int dummy, ...) { GVariantBuilder builder; va_list ap; - const char * name; - GVariant * variant; + const char *name; + GVariant *variant; g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT); @@ -2608,7 +2636,7 @@ _nmtst_variant_new_vardict(int dummy, ...) G_STMT_START \ { \ gsize _l; \ - GVariant * _variant = (variant); \ + GVariant *_variant = (variant); \ const char *_str = (str); \ \ nmtst_assert_variant_is_of_type(_variant, G_VARIANT_TYPE_STRING); \ @@ -2625,8 +2653,8 @@ _nmtst_variant_new_vardict(int dummy, ...) if (memcmp(_ptr2, _ptr, _len) != 0) { \ gs_free char *_x1 = NULL; \ gs_free char *_x2 = NULL; \ - const char * _xx1; \ - const char * _xx2; \ + const char *_xx1; \ + const char *_xx2; \ \ _xx1 = nm_utils_buf_utf8safe_escape(_ptr, \ _len, \ @@ -2650,7 +2678,7 @@ _nmtst_variant_new_vardict(int dummy, ...) #define nmtst_assert_variant_bytestring(variant, ptr, len) \ G_STMT_START \ { \ - GVariant * _variant = (variant); \ + GVariant *_variant = (variant); \ gconstpointer _ptr = (ptr); \ gconstpointer _ptr2; \ gsize _len = (len); \ @@ -2677,8 +2705,8 @@ typedef enum { { \ GVariantIter __connection_iter, *__setting_iter; \ GVariantBuilder __connection_builder, __setting_builder; \ - const char * __cur_setting_name, *__cur_property_name; \ - GVariant * __property_val; \ + const char *__cur_setting_name, *__cur_property_name; \ + GVariant *__property_val; \ NmtstVariantEditorPhase __phase; \ \ g_variant_builder_init(&__connection_builder, NM_VARIANT_TYPE_CONNECTION); \ @@ -2790,7 +2818,7 @@ static inline GVariant * nmtst_variant_from_string(const GVariantType *variant_type, const char *variant_str) { GVariant *variant; - GError * error = NULL; + GError *error = NULL; g_assert(variant_type); g_assert(variant_str); @@ -2805,13 +2833,13 @@ nmtst_variant_from_string(const GVariantType *variant_type, const char *variant_ static inline void nmtst_keyfile_assert_data(GKeyFile *kf, const char *data, gssize data_len) { - nm_auto_unref_keyfile GKeyFile *kf2 = NULL; - gs_free_error GError *error = NULL; - gs_free char * d1 = NULL; - gs_free char * d2 = NULL; - gboolean success; - gsize d1_len; - gsize d2_len; + nm_auto_unref_keyfile GKeyFile *kf2 = NULL; + gs_free_error GError *error = NULL; + gs_free char *d1 = NULL; + gs_free char *d2 = NULL; + gboolean success; + gsize d1_len; + gsize d2_len; g_assert(kf); g_assert(data || data_len == 0); @@ -2843,7 +2871,7 @@ nmtst_keyfile_assert_data(GKeyFile *kf, const char *data, gssize data_len) static inline gssize nmtst_keyfile_get_num_keys(GKeyFile *keyfile, const char *group_name) { - gs_strfreev char **keys = NULL; + gs_strfreev char **keys = NULL; gs_free_error GError *error = NULL; gsize l = 0; @@ -2871,7 +2899,7 @@ nmtst_ip_address_new(int addr_family, const char *str) { NMIPAddr addr; int plen; - GError * error = NULL; + GError *error = NULL; NMIPAddress *a; if (!nm_utils_parse_inaddr_prefix_bin(addr_family, str, &addr_family, &addr, &plen)) diff --git a/src/libnm-glib-aux/nm-uuid.c b/src/libnm-glib-aux/nm-uuid.c index e7f67c70..19b09667 100644 --- a/src/libnm-glib-aux/nm-uuid.c +++ b/src/libnm-glib-aux/nm-uuid.c @@ -45,7 +45,7 @@ gboolean nm_uuid_parse_full(const char *str, NMUuid *out_uuid, gboolean *out_is_normalized) { NMUuid uuid; - guint8 * p; + guint8 *p; int i; gboolean is_normalized = TRUE; @@ -194,8 +194,8 @@ nm_uuid_is_valid_nmlegacy(const char *str) gboolean nm_uuid_is_valid_nm(const char *str, - gboolean * out_normalized, - char * out_normalized_str /* [static 37] */) + gboolean *out_normalized, + char *out_normalized_str /* [static 37] */) { NMUuid uuid; gboolean is_normalized; @@ -310,8 +310,8 @@ nm_uuid_generate_random_str(char buf[static 37]) * Returns: the input @uuid. This function cannot fail. **/ NMUuid * -nm_uuid_generate_from_string(NMUuid * uuid, - const char * s, +nm_uuid_generate_from_string(NMUuid *uuid, + const char *s, gssize slen, NMUuidType uuid_type, const NMUuid *type_args) @@ -382,14 +382,20 @@ nm_uuid_generate_from_string(NMUuid * uuid, * object's #NMSettingConnection:id: property **/ char * -nm_uuid_generate_from_string_str(const char * s, +nm_uuid_generate_from_string_str(const char *s, gssize slen, NMUuidType uuid_type, const NMUuid *type_args) { - NMUuid uuid; + NMUuid uuid; + const NMUuid *u; + + u = nm_uuid_generate_from_string(&uuid, s, slen, uuid_type, type_args); + + if (G_UNLIKELY(!u)) + return nm_assert_unreachable_val(NULL); + nm_assert(u == &uuid); - nm_uuid_generate_from_string(&uuid, s, slen, uuid_type, type_args); return nm_uuid_unparse(&uuid, g_new(char, 37)); } @@ -415,7 +421,7 @@ nm_uuid_generate_from_strings(const char *string1, ...) { nm_auto_str_buf NMStrBuf str = NM_STR_BUF_INIT(NM_UTILS_GET_NEXT_REALLOC_SIZE_104, FALSE); va_list args; - const char * s; + const char *s; nm_str_buf_append_len(&str, string1, strlen(string1) + 1u); diff --git a/src/libnm-glib-aux/nm-uuid.h b/src/libnm-glib-aux/nm-uuid.h index 504ec789..15b03a2d 100644 --- a/src/libnm-glib-aux/nm-uuid.h +++ b/src/libnm-glib-aux/nm-uuid.h @@ -76,8 +76,8 @@ nm_uuid_is_normalized(const char *str) gboolean nm_uuid_is_valid_nmlegacy(const char *str); gboolean nm_uuid_is_valid_nm(const char *str, - gboolean * out_normalized, - char * out_normalized_str /* [static 37] */); + gboolean *out_normalized, + char *out_normalized_str /* [static 37] */); /*****************************************************************************/ @@ -109,13 +109,13 @@ typedef enum { NM_UUID_TYPE_VERSION5 = 5, } NMUuidType; -NMUuid *nm_uuid_generate_from_string(NMUuid * uuid, - const char * s, +NMUuid *nm_uuid_generate_from_string(NMUuid *uuid, + const char *s, gssize slen, NMUuidType uuid_type, const NMUuid *type_args); -char *nm_uuid_generate_from_string_str(const char * s, +char *nm_uuid_generate_from_string_str(const char *s, gssize slen, NMUuidType uuid_type, const NMUuid *type_args); diff --git a/src/libnm-glib-aux/nm-value-type.h b/src/libnm-glib-aux/nm-value-type.h index 0addeec6..d774e120 100644 --- a/src/libnm-glib-aux/nm-value-type.h +++ b/src/libnm-glib-aux/nm-value-type.h @@ -44,7 +44,7 @@ typedef union { /* for convenience, also let the union contain other pointer types. These are * for NM_VALUE_TYPE_UNSPEC. */ - gconstpointer * v_ptr; + gconstpointer *v_ptr; const GPtrArray *v_ptrarray; } NMValueTypUnion; @@ -181,7 +181,7 @@ nm_value_type_copy(NMValueType value_type, gpointer dst, gconstpointer src) static inline void nm_value_type_get_from_variant(NMValueType value_type, gpointer dst, - GVariant * variant, + GVariant *variant, gboolean clone) { switch (value_type) { @@ -230,7 +230,7 @@ nm_value_type_get_from_variant(NMValueType value_type, static inline GVariant * nm_value_type_to_variant(NMValueType value_type, gconstpointer src) { - const char * v_string; + const char *v_string; const GBytes *v_bytes; switch (value_type) { diff --git a/src/libnm-glib-aux/tests/test-json-aux.c b/src/libnm-glib-aux/tests/test-json-aux.c index 5f33f4fe..32462a29 100644 --- a/src/libnm-glib-aux/tests/test-json-aux.c +++ b/src/libnm-glib-aux/tests/test-json-aux.c @@ -13,7 +13,7 @@ static void test_jansson(void) { - const NMJsonVt * vt; + const NMJsonVt *vt; nm_auto_decref_json nm_json_t *js1 = NULL; nm_auto_decref_json nm_json_t *js2 = NULL; diff --git a/src/libnm-glib-aux/tests/test-shared-general.c b/src/libnm-glib-aux/tests/test-shared-general.c index 9674f228..ecba02e0 100644 --- a/src/libnm-glib-aux/tests/test-shared-general.c +++ b/src/libnm-glib-aux/tests/test-shared-general.c @@ -35,7 +35,7 @@ test_nm_static_assert(void) { int v1[NM_STATIC_ASSERT_EXPR_1(1)]; typeof(NM_STATIC_ASSERT_EXPR_1(1)) v_int; - int * p_int; + int *p_int; G_STATIC_ASSERT(sizeof(v1) == sizeof(int)); G_STATIC_ASSERT(NM_STATIC_ASSERT_EXPR_1(1) == 1); @@ -218,7 +218,7 @@ test_nm_strndup_a(void) { gs_free char *dup_free = NULL; - const char * dup; + const char *dup; l = strlen(input) + 1; dup = nm_strndup_a(10, input, l - 1, &dup_free); @@ -231,7 +231,7 @@ test_nm_strndup_a(void) { gs_free char *dup_free = NULL; - const char * dup; + const char *dup; l = nmtst_get_rand_uint32() % 23; dup = nm_strndup_a(10, input, l, &dup_free); @@ -321,10 +321,10 @@ test_unaligned(void) /*****************************************************************************/ static void -_strv_cmp_fuzz_input(const char *const * in, +_strv_cmp_fuzz_input(const char *const *in, gssize l, - const char *** out_strv_free_shallow, - char *** out_strv_free_deep, + const char ***out_strv_free_shallow, + char ***out_strv_free_deep, const char *const **out_s1, const char *const **out_s2) { @@ -402,12 +402,12 @@ test_strv_cmp(void) { \ gssize _l1 = (l1); \ gssize _l2 = (l2); \ - const char *const * _a1; \ - const char *const * _a2; \ - const char *const * _a1x; \ - const char *const * _a2x; \ - char ** _a1_free_deep = NULL; \ - char ** _a2_free_deep = NULL; \ + const char *const *_a1; \ + const char *const *_a2; \ + const char *const *_a1x; \ + const char *const *_a2x; \ + char **_a1_free_deep = NULL; \ + char **_a2_free_deep = NULL; \ gs_free const char **_a1_free_shallow = NULL; \ gs_free const char **_a2_free_shallow = NULL; \ int _c1, _c2; \ @@ -468,8 +468,8 @@ _do_strstrip_avoid_copy(const char *str) gs_free char *str2 = g_strdup(str); gs_free char *str3 = NULL; gs_free char *str4 = NULL; - const char * s3; - const char * s4; + const char *s3; + const char *s4; if (str1) g_strstrip(str1); @@ -528,11 +528,11 @@ test_nm_utils_bin2hexstr(void) gboolean upper_case = nmtst_get_rand_bool(); gboolean hexdigit_pairs_mangled; gsize expected_strlen; - char * str_hex; + char *str_hex; gsize required_len; gboolean outlen_set; gsize outlen; - guint8 * bin2; + guint8 *bin2; guint i, j; nmtst_rand_buf(NULL, buf, len); @@ -647,15 +647,22 @@ static void test_nm_ref_string(void) { nm_auto_ref_string NMRefString *s1 = NULL; - NMRefString * s2; + NMRefString *s2; g_assert(NULL == NM_REF_STRING_UPCAST(NULL)); + g_assert(nm_ref_string_equal_str(NULL, NULL)); + g_assert(!nm_ref_string_equal_str(NULL, "")); + g_assert(!nm_ref_string_equal_str(NULL, "a")); s1 = nm_ref_string_new("hallo"); g_assert(s1); g_assert_cmpstr(s1->str, ==, "hallo"); g_assert_cmpint(s1->len, ==, strlen("hallo")); g_assert(s1 == NM_REF_STRING_UPCAST(s1->str)); + g_assert(nm_ref_string_equal_str(s1, "hallo")); + g_assert(!nm_ref_string_equal_str(s1, "hallox")); + g_assert(!nm_ref_string_equal_str(s1, "hall")); + g_assert(!nm_ref_string_equal_str(s1, NULL)); s2 = nm_ref_string_new("hallo"); g_assert(s2 == s1); @@ -672,6 +679,7 @@ test_nm_ref_string(void) g_assert_cmpint(s2->len, ==, NM_STRLEN(STR_WITH_NUL)); g_assert_cmpint(s2->len, >, strlen(s2->str)); g_assert_cmpmem(s2->str, s2->len, STR_WITH_NUL, NM_STRLEN(STR_WITH_NUL)); + g_assert(!nm_ref_string_equal_str(s2, "hallo")); g_assert(s2->str[s2->len] == '\0'); nm_ref_string_unref(s2); } @@ -909,8 +917,8 @@ test_nm_str_buf(void) guint i_run; for (i_run = 0; TRUE; i_run++) { - nm_auto_str_buf NMStrBuf strbuf = {}; - nm_auto_free_gstring GString *gstr = NULL; + nm_auto_str_buf NMStrBuf strbuf = {}; + nm_auto_free_gstring GString *gstr = NULL; int i, j, k; int c; @@ -1102,7 +1110,7 @@ test_strv_dup_packed(void) for (i_run = 0; i_run < 500; i_run++) { const int strv_len = nmtst_get_rand_word_length(NULL); gs_free const char **strv_cpy = NULL; - const char *const * strv_src; + const char *const *strv_src; int i, j; g_ptr_array_set_size(src, 0); |