Re: [PATCH v2 1/3] compat/posix.h: track SA_RESTART fallback
On Wed, Jun 25, 2025 at 05:33:29PM -0800, Junio C Hamano wrote:
Show 37 quoted lines
> Carlo Marcelo Arenas Belón <carenas@gmail.com> writes:
>
> > On Wed, Jun 25, 2025 at 09:07:15AM -0800, Junio C Hamano wrote:
> >> "Carlo Marcelo Arenas Belón via GitGitGadget"
> >> <gitgitgadget@gmail.com> writes:
> >>
> >> > +# Define USE_NON_POSIX_SIGNAL if don't have support for SA_RESTART or
> >> > +# prefer using ANSI C signal() over POSIX sigaction()
> >> > +
> >> > +AC_CACHE_CHECK([whether SA_RESTART is supported], [ac_cv_siginterrupt], [
> >> > + AC_COMPILE_IFELSE(
> >> > + [AC_LANG_PROGRAM([#include <signal.h>], [[
> >> > + #ifdef SA_RESTART
> >> > + #endif
> >> > + siginterrupt(SIGCHLD, 1)
> >>
> >> This is curious. What is this #ifdef/#endif doing that does not
> >> have anything in it?
> >
> > It checks that `SA_RESTART` is defined in `signal.h`, which should
> > fail at least in QNX, NonStop and Windows.
>
> The above roughly expands to
>
> #include <signal.h>
> int main(void)
> {
> #ifdef SA_RESTART
> #endif
> siginterrupt(SIGCHLD, 1);
> return 0;
> }
>
> Are you saying that a preprocessor macro SA_RESTART, which may or
> may not be defined, when asked by "#ifdef", causes what is left in
> the preprocessed source change in any meaningful way to cause the
> compilation to fail?Lack of judgement on my part; I apologize and will correct it.
Carlo