include incompatibilities

J. J. Farrell
Thu Jun 29 19:57:00 GMT 2000

> From: Chris Faylor <>
> On Thu, Jun 29, 2000 at 11:22:45PM +0200, wrote:
> >I had lamented about incompatible changes in include files.
> >May I repeat the practical essence of my previous mail which is the 
> >question: How can these things be detected by #ifdef's without 
> >referring to actual system specifics as below?
> >
> >#include <errno.h>
> >#ifdef __CYGWIN__	/* and version > something ... ! */
> >#define sys_nerr _sys_nerr
> >#define sys_errlist _sys_errlist
> >#endif
> >
> >(On "classical" systems, the exported names are without underlines - 
> >why do these name manglings have to be imposed on us?)
> I guess "classical" systems does not include linux.

We went through this one at the beginning of November '99 - all in
the archives, for anyone who's interested. "Classical" does include
Unix SVR4 and all earlier versions of System V which must provide
the non-underscore versions to conform to System V requirements.
(Someone also said back then that it does include linux ...). It
would be more in keeping with the System V tradition (and probably
others) if the non-underscore versions worked, and without requiring
any particular headers to be included.

BUT: these are non-Standard interfaces which have been deprecated
in the Unix Standards world for about 12 years. Different versions
require you to include different headers (or none) to use them, and
non-Unix implementations in particular often have the underscore on
the front of the names. Whatever way Cygwin defines them, you're
going to find some code which needs hacking to work with it.

> You're talking about normal problems with porting software between various
> systems.  This kind of thing is a fact of life that you have to live with.

Especially if the software uses deprecated interfaces which have
been known to be non-portable for over a decade.

> It's the reason for things like autoconf and MetaConfig.  Perhaps using
> one of those two packages is the solution you're straining for.

Either that or change the code to use a Standard interface such as

Want to unsubscribe from this list?
Send a message to

More information about the Cygwin mailing list