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;