From: Sam James Date: Thu, 11 Apr 2024 18:34:04 +0000 (+0100) Subject: xz: signals: suppress -Wsign-conversion on macOS X-Git-Tag: v5.7.1alpha~392 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=863f13d2828b99b0539ce73f9cf85bde32358034;p=thirdparty%2Fxz.git xz: signals: suppress -Wsign-conversion on macOS On macOS, we get: ``` signals.c: In function 'signals_init': signals.c:76:17: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion] 76 | sigaddset(&hooked_signals, sigs[i]); | ^~~~~~~~~ signals.c:81:17: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion] 81 | sigaddset(&hooked_signals, message_progress_sigs[i]); | ^~~~~~~~~ signals.c:86:9: error: conversion to 'sigset_t' {aka 'unsigned int'} from 'int' may change the sign of the result [-Werror=sign-conversion] 86 | sigaddset(&hooked_signals, SIGTSTP); | ^~~~~~~~~ ``` We use `int` for `hooked_signals` but we can't just cast to whatever `sigset_t` is because `sigset_t` is an opaque type. It's an unsigned int on macOS. On macOS, `sigaddset` is implemented as a macro. Just suppress -Wsign-conversion for `signals_init` for macOS given there's no real nice way of fixing this. --- diff --git a/src/xz/signals.c b/src/xz/signals.c index 13cc4c2b..20f03bee 100644 --- a/src/xz/signals.c +++ b/src/xz/signals.c @@ -49,6 +49,10 @@ signal_handler(int sig) } +#ifdef __APPLE__ +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wsign-conversion" +#endif extern void signals_init(void) { @@ -127,6 +131,9 @@ signals_init(void) return; } +#ifdef __APPLE__ +# pragma GCC diagnostic pop +#endif #ifndef __VMS