Subject: bug#9076: coreutils-8.12 uses SA_RESETHAND and SA_RESTART unconditionally

From: Jim Meyering <[email-masked]>
Date: Wed, 27 Jul 2011 18:49:53 +0200

Pádraig Brady wrote:
> On 16/07/11 01:51, Paul Eggert wrote:
>> On 07/15/11 03:28, Pádraig Brady wrote:
>>> What I was getting was that it's probably better to leave
>>> the following to the app too:
>>>
>>> #ifndef SA_RESETHAND
>>> # define SA_RESETHAND 0
>>> /* Now the app writer knows they need to handle this case */
>>> #endif
>>
>> Yes, you're probably right.  I'll send some patches along
>> those lines shortly (but not to bug-gnulib since that's not
>> relevant to these coreutils-specific patches).
>
> I notice that make syntax-check is now failing in coreutils.
>
>  src/dd.c:# define SA_RESETHAND 0
>  src/ls.c:# define SA_RESTART 0
>  src/timeout.c:# define SA_RESTART 0
>  maint.mk: define the above via some gnulib .h file
>  make: *** [sc_prohibit_always-defined_macros] Error 1
>
> This is because those are defined in signal.h.in which were
> added as part of cfb3906f to add sigaction support to mingw.
>
> Eric do you think we should define those in gnulib?
> My thinking was that the onus should be on the apps
> to #define these, as otherwise it's too easy for
> compiles to just proceed on a platform while ignoring
> requested operations.

Either way it's not a big deal, but I want coreutils' "make syntax-check"
test to pass once again, so I'll probably push this to gnulib later today
and update coreutils to use it:

diff --git a/top/maint.mk b/top/maint.mk
index 9357728..6c1bf44 100644
--- a/top/maint.mk
+++ b/top/maint.mk
@@ -753,6 +753,7 @@ gl_extract_significant_defines_ = \
   /^\# *define ([^_ (][^ (]*)(\s*\(|\s+\w+)/\
     && $$2 !~ /(?:rpl_|_used_without_)/\
     && $$1 !~ /^(?:NSIG)$$/\
+    && $$1 !~ /^(?:SA_RESETHAND|SA_RESTART)$$/\
     and print $$1

 # Create a list of regular expressions matching the names