From f0cef536ffd9c069362dd08f7f29fee9c580f599 Mon Sep 17 00:00:00 2001 From: hippoz <10706925-hippoz@users.noreply.gitlab.com> Date: Mon, 16 Jan 2023 00:39:13 +0200 Subject: [PATCH] be more clear about used gcc extensions --- Makefile | 2 +- server.c | 4 ++-- try.h | 12 ++++++++---- wire.c | 14 +++++++------- wire.h | 14 +++++++------- 5 files changed, 25 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index aeda28c..82d61fb 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC?=gcc -CFLAGS+=-Wall -Wextra -Wshadow -std=c99 -ggdb -fsanitize=address +CFLAGS+=-Wall -Wextra -Wshadow -pedantic -std=c99 -ggdb -fsanitize=address jitterbug: util.c wire.c match.c server.c main.c $(CC) $(CFLAGS) -o $@ $^ diff --git a/server.c b/server.c index 8346738..0daebd7 100644 --- a/server.c +++ b/server.c @@ -373,7 +373,7 @@ int bus_unicast_message(bus_t *s, wire_message_t *msg, wire_context_t *ctx, char .data = signal_reply_data, \ .data_len = 8192, \ }; \ - wire_message_t signal_reply_msg = {}; \ + wire_message_t signal_reply_msg = {0}; \ TRYST(wire_compose_signal(&signal_reply_ctx, &signal_reply_msg, (M_sig), (M_member), &signal_body_length)); \ signal_body_start = signal_reply_ctx.byte_cursor; @@ -788,7 +788,7 @@ int bus_client_drain_messages(bus_t *s, int ci, uint8_t *data, uint32_t data_len return 0; } -#define _client_die(m) ({bus_client_error(s,i,m);continue;}) +#define _client_die(m) do { bus_client_error(s,i,m); continue; } while(0) int bus_turn(bus_t *s) { static const char agree_unix_fd[] = "AGREE_UNIX_FD\r\n"; diff --git a/try.h b/try.h index 2b55122..ce4f959 100644 --- a/try.h +++ b/try.h @@ -2,8 +2,12 @@ printf("trace: %s:%d\n", __FILE__, __LINE__); \ } while(0) \ -#define TRYPTR_NIL(M_expr) ({ void* _result = (void*)(M_expr); if (!_result) { __TRY_TRACE(); return (NULL); } _result; }) -#define TRYPTR(M_expr) ({ void* _result = (void*)(M_expr); if (!_result) { __TRY_TRACE(); return (-1); } _result; }) -#define TRYST_NIL(M_expr) ({ int _result = (int)(M_expr); if (_result < 0) { __TRY_TRACE(); return (NULL); } _result; }) -#define TRYST(M_expr) ({ int _result = (int)(M_expr); if (_result < 0) { __TRY_TRACE(); return (-1); } _result; }) +// NOTE: The macro(s) below make use of a GCC extension called "Statement Exprs", which is nonstandard. +// More info: https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html + +#define TRYPTR_NIL(M_expr) __extension__({ void* _result = (void*)(M_expr); if (!_result) { __TRY_TRACE(); return (NULL); } _result; }) +#define TRYPTR(M_expr) __extension__({ void* _result = (void*)(M_expr); if (!_result) { __TRY_TRACE(); return (-1); } _result; }) + +#define TRYST_NIL(M_expr) __extension__({ int _result = (int)(M_expr); if (_result < 0) { __TRY_TRACE(); return (NULL); } _result; }) +#define TRYST(M_expr) __extension__({ int _result = (int)(M_expr); if (_result < 0) { __TRY_TRACE(); return (-1); } _result; }) diff --git a/wire.c b/wire.c index 19f4882..72d80fc 100644 --- a/wire.c +++ b/wire.c @@ -40,13 +40,13 @@ bool wire_write_align(wire_context_t *c, uint32_t alignment) } // SPEC: https://dbus.freedesktop.org/doc/dbus-specification.html#id-1.4.6 -_WIRE_DEF_BYTE_TYPE(i8, int8_t); -_WIRE_DEF_BYTE_TYPE(u8, uint8_t); -_WIRE_DEF_TYPE(i16, int16_t, 2); -_WIRE_DEF_TYPE(u16, uint16_t, 2); -_WIRE_DEF_TYPE(i32, int32_t, 4); -_WIRE_DEF_TYPE(u32, uint32_t, 4); -_WIRE_DEF_TYPE(boolean, uint32_t, 4); +_WIRE_DEF_BYTE_TYPE(i8, int8_t) +_WIRE_DEF_BYTE_TYPE(u8, uint8_t) +_WIRE_DEF_TYPE(i16, int16_t, 2) +_WIRE_DEF_TYPE(u16, uint16_t, 2) +_WIRE_DEF_TYPE(i32, int32_t, 4) +_WIRE_DEF_TYPE(u32, uint32_t, 4) +_WIRE_DEF_TYPE(boolean, uint32_t, 4) char *wire_get_string_impl(wire_context_t *c, bool as_signature) { diff --git a/wire.h b/wire.h index 9445cab..59c9edd 100644 --- a/wire.h +++ b/wire.h @@ -112,13 +112,13 @@ bool wire_align(wire_context_t *c, uint32_t alignment); bool wire_write_align(wire_context_t *c, uint32_t alignment); // SPEC: https://dbus.freedesktop.org/doc/dbus-specification.html#id-1.4.6 -_WIRE_DECL_BYTE_TYPE(i8, int8_t); -_WIRE_DECL_BYTE_TYPE(u8, uint8_t); -_WIRE_DECL_TYPE(i16, int16_t, 2); -_WIRE_DECL_TYPE(u16, uint16_t, 2); -_WIRE_DECL_TYPE(i32, int32_t, 4); -_WIRE_DECL_TYPE(u32, uint32_t, 4); -_WIRE_DECL_TYPE(boolean, uint32_t, 4); +_WIRE_DECL_BYTE_TYPE(i8, int8_t) +_WIRE_DECL_BYTE_TYPE(u8, uint8_t) +_WIRE_DECL_TYPE(i16, int16_t, 2) +_WIRE_DECL_TYPE(u16, uint16_t, 2) +_WIRE_DECL_TYPE(i32, int32_t, 4) +_WIRE_DECL_TYPE(u32, uint32_t, 4) +_WIRE_DECL_TYPE(boolean, uint32_t, 4) char *wire_get_string_impl(wire_context_t *c, bool as_signature);