Re: [PATCH] HP-UX does not have select.h
From: H.Merijn Brand <hidden>
Date: 2016-06-15 22:44:00
On Wed, 19 Dec 2007 13:31:58 -0800, Junio C Hamano [off-list ref] wrote:
"H.Merijn Brand" [off-list ref] writes:quoted
On Wed, 19 Dec 2007 11:57:21 -0800, Junio C Hamano [off-list ref] wrote:quoted
"H.Merijn Brand" [off-list ref] writes:quoted
On Tue, 18 Dec 2007 01:47:53 -0800, Junio C Hamano [off-list ref] wrote: ...quoted
Merijn, discarding the earlier patch I did to configure it out for HP-UX, does the following patch based on Andreas's idea work for you?Probably not: HP-UX 10.20, 11.00, 11.11, 11.23/PA, and 11.23/IPF all have: /usr/include 103 > grep -r POSIX_VERSION * sys/unistd.h:# define _POSIX_VERSION _POSIX1_VERSION_88 sys/unistd.h:# define _POSIX_VERSION _POSIX1_VERSION_90 sys/unistd.h:# define _POSIX_VERSION _POSIX1_VERSION_93 sys/unistd.h:# define _SC_1_VERSION_88 7 /* _POSIX_VERSION: Date of POSIX.1-1988 */ sys/unistd.h:# define _SC_1_VERSION_90 102 /* _POSIX_VERSION: Date of POSIX.1-1990 */ sys/unistd.h:# define _SC_1_VERSION_93 103 /* _POSIX_VERSION: Date of POSIX.1b-1993 */ sys/unistd.h:# if (_POSIX_VERSION == _POSIX1_VERSION_88) sys/unistd.h:# if (_POSIX_VERSION == _POSIX1_VERSION_90) and the two 11.23 do have select.hDoes that prove anything? unistd.h seem to define _POSIX_VERSION to various values but we do not see surrounding "#ifdef WE_DO_NOT_KNOW" from the grep output above unfortunately.What I tried to demonstrate is that I have no clue about the actual value of this define, and if values like 88, 90, and 93 (7, 102, and 103) do have any relation with the higher value of 200112L that you use. Also because these are the *only* _POSIX_VERSION defines in the entire include tree, and 11.23 does have a select.h, which makes the patch below to be not OK on 11.23. I'm not stating that HP follows the rules in any correct way, but if this is to be sure that select.h gets included if the OS supports it, it will fail.quoted
If the folllowing actually works I think that is the cleanest fix for this issue (note that I added defined(_POSIX_VERSION) there just to be safe if it is not defined at all).But your grep did not catch their definition of _POSIX1_VERSION_$YEAR which are used to define the actual value of _POSIX_VERSION.
If it is used to *define* _POSIX_VERSION, it should have come up too, wouldn't it? The only define that comes close to something like YYYYMM is: X11/Xosdefs.h:#define X_POSIX_C_SOURCE 199300L usr/include 111 > grep -r POSIX.*YEAR . Exit 1 /usr/include 112 > grep -P -r 'POSIX.*\b(19\d\d|200\d)' . ./sys/buf.h:#if (_POSIX_C_SOURCE >= 199309) ./sys/buf.h:#endif /* (_POSIX_C_SOURCE >= 199309) */ ./sys/stdsyms.h:/* XPG3 semantics gets POSIX.1-1988 semantics by default */ ./sys/stdsyms.h: * This usage is obsolescent, "-D_POSIX_C_SOURCE=199506" is preferred */ ./sys/stdsyms.h:# if (_POSIX_C_SOURCE >= 199506) && !defined(_INCLUDE_POSIX1C_SOURCE) ./sys/stdsyms.h:# endif /* _POSIX_C_SOURCE >= 199506 && !_INCLUDE_POSIX1C_SOURCE */ ./sys/stdsyms.h:# if (_POSIX_C_SOURCE >= 199506) && !defined(_REENTRANT) ./sys/stdsyms.h:# endif /* _POSIX_C_SOURCE >= 199506 && !_REENTRANT */ ./sys/stdsyms.h:# if (_POSIX_C_SOURCE >= 199309) && !defined(_INCLUDE_POSIX4_SOURCE) ./sys/stdsyms.h:# endif /* _POSIX_C_SOURCE >= 199309 && !_INCLUDE_POSIX4_SOURCE */ ./sys/unistd.h:# define _POSIX1_VERSION_88 198808L /* We support POSIX.1-1988 */ ./sys/unistd.h:# define _POSIX1_VERSION_90 199009L /* We support POSIX.1-1990 */ ./sys/unistd.h:# define _POSIX1_VERSION_93 199309L /* We support POSIX.1b-1993 */ ./sys/unistd.h:# if !defined(_POSIX_C_SOURCE) || (_POSIX_C_SOURCE < 199309L) ./sys/unistd.h:# else /* _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 199309L */ ./sys/unistd.h:# endif /* _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 199309L */ ./sys/unistd.h:/* Symbolic constants for sysconf() variables defined by POSIX.1-1988: 0-7 */ ./sys/unistd.h:# define _SC_1_VERSION_88 7 /* _POSIX_VERSION: Date of POSIX.1-1988 */ ./sys/unistd.h:/* Symbolic constants for sysconf() variables added by POSIX.1-1990: 100-199 */ ./sys/unistd.h:# define _SC_1_VERSION_90 102 /* _POSIX_VERSION: Date of POSIX.1-1990 */ ./sys/unistd.h:# define _SC_1_VERSION_93 103 /* _POSIX_VERSION: Date of POSIX.1b-1993 */ ./sys/unistd.h:# define _POSIX2_VERSION 199209L /* IEEE POSIX.2-1992 base standard */ ./sys/unistd.h:# define _POSIX2_C_VERSION 199209L /* IEEE POSIX.2-1992 C language binding */ ./limits.h:# define _POSIX_CLOCKRES_MIN 20000000 /* The CLOCK_REALTIME clock ./X11/Xosdefs.h:#define X_POSIX_C_SOURCE 199300L ./dce/cdsclerk.h:#if _POSIX_C_SOURCE >= 199506L ./dce/rpcexc.h:#if _POSIX_C_SOURCE >= 199506L ./dce/stubbase.h:#if _POSIX_C_SOURCE >= 199506L -- H.Merijn Brand Amsterdam Perl Mongers (http://amsterdam.pm.org/) using & porting perl 5.6.2, 5.8.x, 5.10.x on HP-UX 10.20, 11.00, 11.11, & 11.23, SuSE 10.1 & 10.2, AIX 5.2, and Cygwin. http://qa.perl.org http://mirrors.develooper.com/hpux/ http://www.test-smoke.org http://www.goldmark.org/jeff/stupid-disclaimers/