Now that Minix is free software, it's higher priority for autoconf to
support it more accurately.  Minix is small so this should be easy to
do.  I just downloaded Minix 2.0 (the free version) and discovered the
following:

 * The macro _POSIX_1_SOURCE is no longer used.  So we don't need to
   worry about it any more, except perhaps as part of the obsolescent
   AC_MINIX macro (and if we retain it, we should document it as being
   irrelevant for Minix 2.0 and later).

 * Defining _MINIX causes <stdio.h> to declare popen and pclose.
   So if the suggestion in my previous message is used, _MINIX
   will be defined properly.

 * Defining _POSIX_SOURCE causes the following changes.

     <limits.h> defines symbols like _POSIX_ARG_MAX and ARG_MAX.
     <setjmp.h> defines sigjmp_buf, siglongjmp, and sigsetjmp.
     <signal.h> defines sigset_t, sighandler_t, struct sigaction, kill,
           and related macros and functions.
     <stdio.h> defines fileno, fdopen, L_ctermid, and L_cuserid.
     <time.h> defines tzset and the obsolecent name CLK_TCK.

   These changes are enabled only by defining _POSIX_SOURCE; they
   aren't enabled by defining _MINIX.

The last bullet is the problematic one.

It looks like it would be better after all to follow my initial
suggestion and define _POSIX_SOURCE if <stdio.h> does not define
fileno.  This would be done by trying to compile the fileno test
program with -D_POSIX_C_SOURCE=2147483647 (the modern way to do it),
and if that doesn't help to try again with -D_POSIX_SOURCE (the
old-fashioned way, which Minix 2.0 uses).

Sorry that my suggestions waffled about _POSIX_SOURCE, but it is a
problematic area.  You can't define _POSIX_SOURCE or _POSIX_C_SOURCE
unconditionally, as that causes possibly-undesirable changes on
Solaris and many other platforms.  On the other hand, if you don't
define thes macros up-front on hosts like Minix, you either need hacks
like AC_MINIX and AC_ISC_POSIX, or you need to have a separate
autoconf macro for fileno, tzset, etc.; and both these alternatives
are more unpleasant than simply defining one of those feature-test
macros if <stdio.h> doesn't define fileno.

Reply via email to