Bruno Haible <[EMAIL PROTECTED]> writes:

> Warning seen on IRIX 6.5:
>
> "///usr/include/unistd.h", line 43: warning(1047): macro redefined differently
>
> IRIX 6.5 has two definitions of EX_OK:
>   - one in <unistd.h>, protected with "#if _SGIAPI", as a flag that can be
>     passed to the access() function, with value 020,
>   - one in <sysexits.h>, always active, as an exit code, with value 0.
>
> Which definition is active, thus depends on the order of inclusion.
>
> What should we do?
>
>   (a) Do nothing.
>
>   (b) Create a replacement <sysexits.h> that does
>
>          #include <unistd.h>
>          #undef EX_OK
>          #include </usr/include/sysexits.h>
>
>   (c) Create a replacement <unistd.h> that does
>
>          #include </usr/include/unistd.h>
>          #undef EX_OK
>
>       and a replacement <sysexits.h> that does
>
>          #include <unistd.h>
>          #include </usr/include/sysexits.h>

I prefer b) and c) over a), since I think this may cause problems if
anyone is using EX_OK.  I have a mild preference to treat this as a
bug in unistd.h, and thus favor c).

Possibly the bug-workaround for unistd.h should only be enabled if the
sysexits module is present, otherwise the unistd-module would always
touch non-standardized namespaces which seems wrong.  Thus:

e) Create a replacement <unistd.h> that does:

   #include </usr/include/unistd.h>
   #if @GNULIB_SYSEXITS@
   #  undef EX_OK
   #endif

What do you think?

Possibly e) should also add the sysexits.h replacement, as per c).

/Simon


Reply via email to