From b548a6396bb10f8de1c15dbe22c9b6e191b2b298 Mon Sep 17 00:00:00 2001 From: Benjamin Jacobs Date: Mon, 6 Jun 2016 11:14:55 -0700 Subject: [PATCH] ecore_signal.c: factoring out the platform test to improve readability. Turns out there is no PRI?SIGATOMIC in the C99 standard. Work around that by deducing the effective integer type by comparing the SIG_ATOMIC_MAX with integers *MAX. Signed-off-by: Cedric BAIL --- src/lib/ecore/ecore_signal.c | 85 +++++++++++++----------------------- 1 file changed, 30 insertions(+), 55 deletions(-) diff --git a/src/lib/ecore/ecore_signal.c b/src/lib/ecore/ecore_signal.c index 6cae0e445c..795dab439f 100644 --- a/src/lib/ecore/ecore_signal.c +++ b/src/lib/ecore/ecore_signal.c @@ -2,6 +2,8 @@ # include #endif +#include +#include #include #include #include @@ -78,6 +80,22 @@ static volatile siginfo_t sigterm_info[MAXSIGQ]; static volatile siginfo_t sigpwr_info[MAXSIGQ]; #endif +#if defined(SIG_ATOMIC_MAX) +# if SIG_ATOMIC_MAX == INT64_MAX +/* Basically FreeBSD on 64bits */ +# define PRIdSIGATOMIC PRId64 +# elif SIG_ATOMIC_MAX == UINT64_MAX +# define PRIdSIGATOMIC PRIu64 +# elif SIG_ATOMIC_MAX == UINT32_MAX +# define PRIdSIGATOMIC PRIu32 +# else +/* everybody else seems to go for int */ +# define PRIdSIGATOMIC PRId32 +# endif +#else +# define PRIdSIGATOMIC "d" +#endif + void _ecore_signal_shutdown(void) { @@ -168,30 +186,22 @@ _ecore_signal_call(void) #endif sigprocmask(SIG_BLOCK, &newset, &oldset); if (sigchld_count > MAXSIGQ) -#ifdef __FreeBSD__ - WRN("%ld SIGCHLD in queue. max queue size %i. losing " + WRN("%"PRIdSIGATOMIC" SIGCHLD in queue. max queue size %i. losing " "siginfo for extra signals.", sigchld_count, MAXSIGQ); -#else - WRN("%i SIGCHLD in queue. max queue size %i. losing " - "siginfo for extra signals.", sigchld_count, MAXSIGQ); -#endif tot = sigchld_count + sigusr1_count + sigusr2_count + sighup_count + sigquit_count + sigint_count + sigterm_count #ifdef SIGPWR + sigpwr_count #endif ; - + if (sig_count != tot) { -#ifdef __FreeBSD__ - ERR("sig_count (%ld) != actual totals (%i) ", sig_count, tot); -#else - ERR("sig_count (%i) != actual totals (%i) ", sig_count, tot); -#endif + ERR("sig_count (%"PRIdSIGATOMIC") != actual totals (%i) ", + sig_count, tot); sig_count = tot; } - + for (n = 0; n < sigchld_count; n++) { pid_t pid; @@ -267,13 +277,8 @@ _ecore_signal_call(void) sigchld_count = 0; if (sigusr1_count > MAXSIGQ) -#ifdef __FreeBSD__ - WRN("%ld SIGUSR1 in queue. max queue size %i. losing " + WRN("%"PRIdSIGATOMIC" SIGUSR1 in queue. max queue size %i. losing " "siginfo for extra signals.", sigusr1_count, MAXSIGQ); -#else - WRN("%i SIGUSR1 in queue. max queue size %i. losing " - "siginfo for extra signals.", sigusr1_count, MAXSIGQ); -#endif for (n = 0; n < sigusr1_count; n++) { Ecore_Event_Signal_User *e; @@ -294,13 +299,8 @@ _ecore_signal_call(void) sigusr1_count = 0; if (sigusr2_count > MAXSIGQ) -#ifdef __FreeBSD__ - WRN("%ld SIGUSR2 in queue. max queue size %i. losing " + WRN("%"PRIdSIGATOMIC" SIGUSR2 in queue. max queue size %i. losing " "siginfo for extra signals.", sigusr2_count, MAXSIGQ); -#else - WRN("%i SIGUSR2 in queue. max queue size %i. losing " - "siginfo for extra signals.", sigusr2_count, MAXSIGQ); -#endif for (n = 0; n < sigusr2_count; n++) { Ecore_Event_Signal_User *e; @@ -321,13 +321,8 @@ _ecore_signal_call(void) sigusr2_count = 0; if (sighup_count > MAXSIGQ) -#ifdef __FreeBSD__ - WRN("%ld SIGHUP in queue. max queue size %i. losing " + WRN("%"PRIdSIGATOMIC" SIGHUP in queue. max queue size %i. losing " "siginfo for extra signals.", sighup_count, MAXSIGQ); -#else - WRN("%i SIGHUP in queue. max queue size %i. losing " - "siginfo for extra signals.", sighup_count, MAXSIGQ); -#endif for (n = 0; n < sighup_count; n++) { Ecore_Event_Signal_Hup *e; @@ -346,13 +341,8 @@ _ecore_signal_call(void) sighup_count = 0; if (sigquit_count > MAXSIGQ) -#ifdef __FreeBSD__ - WRN("%ld SIGQUIT in queue. max queue size %i. losing " + WRN("%"PRIdSIGATOMIC" SIGQUIT in queue. max queue size %i. losing " "siginfo for extra signals.", sigquit_count, MAXSIGQ); -#else - WRN("%i SIGQUIT in queue. max queue size %i. losing " - "siginfo for extra signals.", sigquit_count, MAXSIGQ); -#endif for (n = 0; n < sigquit_count; n++) { Ecore_Event_Signal_Exit *e; @@ -373,13 +363,8 @@ _ecore_signal_call(void) sigquit_count = 0; if (sigint_count > MAXSIGQ) -#ifdef __FreeBSD__ - WRN("%ld SIGINT in queue. max queue size %i. losing " + WRN("%"PRIdSIGATOMIC" SIGINT in queue. max queue size %i. losing " "siginfo for extra signals.", sigint_count, MAXSIGQ); -#else - WRN("%i SIGINT in queue. max queue size %i. losing " - "siginfo for extra signals.", sigint_count, MAXSIGQ); -#endif for (n = 0; n < sigint_count; n++) { Ecore_Event_Signal_Exit *e; @@ -400,13 +385,8 @@ _ecore_signal_call(void) sigint_count = 0; if (sigterm_count > MAXSIGQ) -#ifdef __FreeBSD__ - WRN("%ld SIGTERM in queue. max queue size %i. losing " + WRN("%"PRIdSIGATOMIC" SIGTERM in queue. max queue size %i. losing " "siginfo for extra signals.", sigterm_count, MAXSIGQ); -#else - WRN("%i SIGTERM in queue. max queue size %i. losing " - "siginfo for extra signals.", sigterm_count, MAXSIGQ); -#endif for (n = 0; n < sigterm_count; n++) { Ecore_Event_Signal_Exit *e; @@ -428,13 +408,8 @@ _ecore_signal_call(void) #ifdef SIGPWR if (sigpwr_count > MAXSIGQ) -#ifdef __FreeBSD__ - WRN("%ld SIGPWR in queue. max queue size %i. losing " + WRN("%"PRIdSIGATOMIC" SIGPWR in queue. max queue size %i. losing " "siginfo for extra signals.", sigpwr_count, MAXSIGQ); -#else - WRN("%i SIGPWR in queue. max queue size %i. losing " - "siginfo for extra signals.", sigpwr_count, MAXSIGQ); -#endif for (n = 0; n < sigpwr_count; n++) { Ecore_Event_Signal_Power *e;