From 5cc31b79dda16cdbd44586adf09ea0f1e80a4b0c Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 11 May 2022 17:37:03 +0200 Subject: [PATCH] libnm: avoid duplicate typedefs for NMClient/NMDevice clang 3.4.2-9.el7 does not like this: $ clang -DHAVE_CONFIG_H -I. -I.. -I../src/libnm-core-public -I./src/libnm-core-public -I../src/libnm-client-public -I./src/libnm-client-public -pthread -I/usr/include/gio-unix-2.0/ -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_40 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_40 -Wall -Werror -Wextra -Wdeclaration-after-statement -Wfloat-equal -Wformat-nonliteral -Wformat-security -Wimplicit-function-declaration -Winit-self -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wpointer-arith -Wshadow -Wstrict-prototypes -Wundef -Wvla -Wno-duplicate-decl-specifier -Wno-format-y2k -Wno-missing-field-initializers -Wno-sign-compare -Wno-tautological-constant-out-of-range-compare -Wno-unknown-pragmas -Wno-unused-parameter -Qunused-arguments -Wunknown-warning-option -Wtypedef-redefinition -Warray-bounds -Wparentheses-equality -Wunused-value -Wimplicit-fallthrough -fno-strict-aliasing -fdata-sections -ffunction-sections -Wl,--gc-sections -g -O2 -MT examples/C/glib/examples_C_glib_add_connection_libnm-add-connection-libnm.o -MD -MP -MF examples/C/glib/.deps/examples_C_glib_add_connection_libnm-add-connection-libnm.Tpo -c -o examples/C/glib/examples_C_glib_add_connection_libnm-add-connection-libnm.o `test -f 'examples/C/glib/add-connection-libnm.c' || echo '../'`examples/C/glib/add-connection-libnm.c ... ../src/libnm-client-public/nm-client.h:149:31: error: redefinition of typedef 'NMClient' is a C11 feature [-Werror,-Wtypedef-redefinition] typedef struct _NMClient NMClient; ^ Our code base is C11 internally (actually "-std=gnu11"), but this problem happens when we build the example. The warning is actually correct, because our public headers should be more liberal (and possibly be C99 or even C89, this is undefined). Fixes: 649314ddaa4c ('libnm: replace nm-types.h by defining the types in respective headers') --- .../nm-active-connection.h | 22 ++++++++++--------- src/libnm-client-public/nm-object.h | 6 ++--- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/libnm-client-public/nm-active-connection.h b/src/libnm-client-public/nm-active-connection.h index 5aba2fff7..5c3148269 100644 --- a/src/libnm-client-public/nm-active-connection.h +++ b/src/libnm-client-public/nm-active-connection.h @@ -43,8 +43,6 @@ G_BEGIN_DECLS #define NM_ACTIVE_CONNECTION_VPN "vpn" #define NM_ACTIVE_CONNECTION_MASTER "master" -typedef struct _NMDevice NMDevice; - /** * NMActiveConnection: */ @@ -64,14 +62,18 @@ NM_AVAILABLE_IN_1_10 NMActivationStateFlags nm_active_connection_get_state_flags(NMActiveConnection *connection); NM_AVAILABLE_IN_1_8 NMActiveConnectionStateReason nm_active_connection_get_state_reason(NMActiveConnection *connection); -NMDevice *nm_active_connection_get_master(NMActiveConnection *connection); -gboolean nm_active_connection_get_default(NMActiveConnection *connection); -NMIPConfig *nm_active_connection_get_ip4_config(NMActiveConnection *connection); -NMDhcpConfig *nm_active_connection_get_dhcp4_config(NMActiveConnection *connection); -gboolean nm_active_connection_get_default6(NMActiveConnection *connection); -NMIPConfig *nm_active_connection_get_ip6_config(NMActiveConnection *connection); -NMDhcpConfig *nm_active_connection_get_dhcp6_config(NMActiveConnection *connection); -gboolean nm_active_connection_get_vpn(NMActiveConnection *connection); + +struct _NMDevice; + +struct _NMDevice *nm_active_connection_get_master(NMActiveConnection *connection); + +gboolean nm_active_connection_get_default(NMActiveConnection *connection); +NMIPConfig *nm_active_connection_get_ip4_config(NMActiveConnection *connection); +NMDhcpConfig *nm_active_connection_get_dhcp4_config(NMActiveConnection *connection); +gboolean nm_active_connection_get_default6(NMActiveConnection *connection); +NMIPConfig *nm_active_connection_get_ip6_config(NMActiveConnection *connection); +NMDhcpConfig *nm_active_connection_get_dhcp6_config(NMActiveConnection *connection); +gboolean nm_active_connection_get_vpn(NMActiveConnection *connection); G_END_DECLS diff --git a/src/libnm-client-public/nm-object.h b/src/libnm-client-public/nm-object.h index 5b3b8b135..c6daf1e6c 100644 --- a/src/libnm-client-public/nm-object.h +++ b/src/libnm-client-public/nm-object.h @@ -23,8 +23,6 @@ G_BEGIN_DECLS #define NM_OBJECT_PATH "path" #define NM_OBJECT_CLIENT "client" -typedef struct _NMClient NMClient; - /** * NMObject: */ @@ -35,8 +33,10 @@ GType nm_object_get_type(void); const char *nm_object_get_path(NMObject *object); +struct _NMClient; + NM_AVAILABLE_IN_1_24 -NMClient *nm_object_get_client(NMObject *object); +struct _NMClient *nm_object_get_client(NMObject *object); G_END_DECLS