Commit graph

15 commits

Author SHA1 Message Date
Thomas Haller
ae14caf05d
std-aux: add NM_ENSURE_IS_TYPE() macro 2021-06-10 11:08:57 +02:00
Thomas Haller
cf1b7d43df
std-aux: add _nm_warn_unused_result define 2021-06-10 10:36:58 +02:00
Thomas Haller
0ed95698fd
std-aux: implement NM_IN_SET()/NM_IN_STRSET() via NM_VA_ARGS_FOREACH() 2021-06-08 08:24:11 +02:00
Thomas Haller
34a521e2d6
std-aux: add NM_VA_ARGS_JOIN() helper macro
We have variadic macros like NM_UTILS_ENUM2STR() that create a switch
statement. Their implementation relies on the way how __VA_ARGS__
gets expanded to a comma separated list. But that implementation is
not great. Let's instead add (and later use) NM_VA_ARGS_JOIN() which
can join variadic arguments by a configurable separator.
2021-06-08 08:24:11 +02:00
Thomas Haller
dadaba9ab6
std-aux: add NM_VA_ARGS_FOREACH() helper macro 2021-06-08 08:24:10 +02:00
Thomas Haller
9823ae75e5
std-aux: add _NM_MACRO_IDENTITY(), _NM_MACRO_CALL2(), _NM_MACRO_SELECT_FIRST()
_NM_MACRO_CALL2() is needed, because we cannot call _NM_MACRO_CALL() inside
_NM_MACRO_CALL().
2021-06-08 08:24:10 +02:00
Thomas Haller
2c3abc7bcb
std-aux,glib-aux: move NM_NARG() and _NM_MACRO_CALL() to lib-std-aux 2021-06-08 08:24:10 +02:00
Thomas Haller
89a10ddf89
std-aux: add NM_BIT() macro 2021-06-08 08:24:10 +02:00
Thomas Haller
21321ac736
clang-format: reformat code with clang 12
The format depends on the version of the tool. Now that Fedora 34 is
released, update to clang 12 (clang-tools-extra-12.0.0-0.3.rc1.fc34.x86_64).
2021-05-04 13:56:26 +02:00
Thomas Haller
5de552893d
glib-aux: fix compile error for g_steal_pointer() macro
Some compiler versions don't like to dereference and opaque
pointer for typeof:

gcc 8.3.1-5.1.el8 on RHEL:

    In file included from ./src/libnm-glib-aux/nm-macros-internal.h:41,
                     from ./src/libnm-glib-aux/nm-default-glib.h:68,
                     from ./src/libnm-glib-aux/nm-default-glib-i18n-lib.h:13,
                     from ./src/libnm-core-impl/nm-default-libnm-core.h:11,
                     from src/libnm-core-impl/nm-setting-8021x.c:7:
    src/libnm-core-impl/nm-setting-8021x.c: In function '_nm_setting_802_1x_cert_value_to_bytes':
    ./src/libnm-glib-aux/nm-glib.h:417:16: error: dereferencing pointer to incomplete type 'GBytes' {aka 'struct _GBytes'}
             typeof(**_pp) *const         _p            = *_pp; \
                    ^~~~~
    src/libnm-core-impl/nm-setting-8021x.c:361:12: note: in expansion of macro 'g_steal_pointer'
         return g_steal_pointer(&bytes);
                ^~~~~~~~~~~~~~~
    ./src/libnm-glib-aux/nm-glib.h:417:54: error: initialization of 'int * const' from incompatible pointer type 'GBytes *' {aka 'struct _GBytes *'} [-Werror=incompatible-pointer-types]
             typeof(**_pp) *const         _p            = *_pp; \
                                                          ^
    src/libnm-core-impl/nm-setting-8021x.c:361:12: note: in expansion of macro 'g_steal_pointer'
         return g_steal_pointer(&bytes);
                ^~~~~~~~~~~~~~~
    ./src/libnm-glib-aux/nm-glib.h:415:6: error: returning 'int * const' from a function with incompatible return type 'GBytes *' {aka 'struct _GBytes *'} [-Werror=incompatible-pointer-types]
         ({                                                     \
         ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             typeof(*(pp)) *const         _pp           = (pp); \
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             typeof(**_pp) *const         _p            = *_pp; \
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             _nm_unused const void *const _p_type_check = _p;   \
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                                                \
                                                                ~
             *_pp = NULL;                                       \
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             _p;                                                \
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         })
         ~~
    src/libnm-core-impl/nm-setting-8021x.c:361:12: note: in expansion of macro 'g_steal_pointer'
         return g_steal_pointer(&bytes);
                ^~~~~~~~~~~~~~~

Fixes: 5bc511203e ('all: make nm_steal_pointer() and g_steal_pointer() more typesafe using typeof()')
2021-04-14 15:24:47 +02:00
Thomas Haller
5bc511203e
all: make nm_steal_pointer() and g_steal_pointer() more typesafe using typeof()
The previous code would always cast the argument to "void *", and thus
loose some type information.

For example,

  gulong variable = 0;

  g_steal_pointer(&variable);

would compile, when it shouldn't.

In general, we try to avoid redefining glib macros and headers. But we
really want those extra compile time checks that we can get, so let's do
it.
2021-04-13 15:01:38 +02:00
Thomas Haller
6107a94085
std-aux: add NM_UTILS_GET_NEXT_REALLOC_SIZE_232 define 2021-04-12 16:46:00 +02:00
Thomas Haller
db773fd54e
dispatcher: set G_LOG_DOMAIN to "nm-dispatcher"
Originally, we would define G_LOG_DOMAIN via CFLAGS arguments.
Since commit 341b6e0704 ('all: change G_LOG_DOMAIN to "nm"') we would
instead set it in source and uniformly define it as "nm".

The reasons are that most parts of our source should not use g_log() directly,
and there is an aim to avoid special CFLAGS to simplify the build setup.

However, dispatcher indeed uses g_log() for logging, so the value there
is important.

Fix that, but this time by setting the define in source not via
CFLAGS.

Fixes: 341b6e0704 ('all: change G_LOG_DOMAIN to "nm"')
2021-03-18 16:54:00 +01:00
Thomas Haller
635d84b896
build: remove "shared/" from include search path
There is nothing left there.
2021-02-24 12:49:06 +01:00
Thomas Haller
a8c34b9dcf
build: move "shared/nm-std-aux" to "src/libnm-std-aux" 2021-02-24 12:48:24 +01:00