This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Define _POSIX_SOURCE in cygwin's features.h?


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Christopher Faylor wrote:
> Someone on the cygwin irc channel had a problem building a package which
> would have been solved if Cygwin defined _POSIX_SOURCE.
> 
> I know that Cygwin is not fully POSIX compliant (I really really do) but
> I'm wondering if setting _POSIX_SOURCE in the cygwin headers wouldn't
> solve more porting problems than it creates.

I think it would be the opposite.

1) In glibc, _POSIX_SOURCE is defined by features.h based on a number of
conditions[1].  The newlib/Cygwin features.h isn't nearly so thorough.

[1]
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/include/features.h?cvsroot=glibc

2) After running a grep of /usr/include, it looks like arbitrarily
defining _POSIX_SOURCE in Cygwin would cause a significant number of
constants and functions to never be defined (and AFAICS there would be
no simple way to undef it within code), without actually adding
anything, for example:

/usr/include/dirent.h:#if !defined(MAXNAMLEN) && !defined(_POSIX_SOURCE)
/usr/include/fnmatch.h:#ifndef _POSIX_SOURCE
/usr/include/glob.h:#ifndef _POSIX_SOURCE
/usr/include/grp.h:#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)
/usr/include/grp.h:#ifndef _POSIX_SOURCE
/usr/include/pwd.h:#ifndef _POSIX_SOURCE
/usr/include/pwd.h:#ifndef _POSIX_SOURCE
/usr/include/sys/dirent.h:#ifndef _POSIX_SOURCE
/usr/include/sys/fcntl.h:#ifndef        _POSIX_SOURCE
/usr/include/sys/fcntl.h:#ifndef        _POSIX_SOURCE
/usr/include/sys/fcntl.h:#ifndef        _POSIX_SOURCE
/usr/include/sys/fcntl.h:#ifndef        _POSIX_SOURCE
/usr/include/sys/fcntl.h:#ifndef        _POSIX_SOURCE
/usr/include/sys/select.h:#if !defined (_POSIX_SOURCE) && !defined
(__INSIDE_CYGWIN_NET__)
/usr/include/sys/stat.h:#ifndef _POSIX_SOURCE
/usr/include/sys/types.h:# ifndef       _POSIX_SOURCE
/usr/include/sys/types.h:# if !(defined (_POSIX_SOURCE) || defined
(_WINSOCK_H) || defined (__USE_W32_SOCKETS))
/usr/include/sys/unistd.h:#ifndef        _POSIX_SOURCE

3) I think that, in many cases, _POSIX_SOURCE is defined in code if
desired (and that would have been the best solution in the
aforementioned case).

4) I'm sure I remember a few times that, even when _POSIX_SOURCE was
defined in code, I had to #ifndef __CYGWIN__ that define due to compile
errors; I can't remember having to manually add such a define, however.

My $0.02, YMMV.


Yaakov

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Cygwin)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDxpt3piWmPGlmQSMRAp2sAJ0TxKcHtdl7UCIk1+V3hvF121CRiQCgwnF5
JwyP3gsv3xzBvADntvAgyfo=
=CWnC
-----END PGP SIGNATURE-----

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]