This is the mail archive of the cygwin-xfree@cygwin.com mailing list for the Cygwin XFree86 project.


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

FW: __STRICT_ANSI__


Alan,

Here is what I wrote the Newlib list back in May, 2001 and the response that
I received.

I couldn't justify why XFree86 uses the -ansi flag, nor did I feel like
pointing out that they were not declaring entire classes of functions when
__STRICT_ANSI__ was defined, rather than allowing a finer-grained approach
using additional defines like __USE_POSIX.  Maybe that's all we'd have to
mention to them to get them to accept patches, but I felt like it was going
to be an uphill battle, so I gave up without replying.  You'll probably have
better luck.

Harold

-----Original Message-----
From: newlib-owner@sources.redhat.com
[mailto:newlib-owner@sources.redhat.com]On Behalf Of Harold Hunt
Sent: Wednesday, May 16, 2001 3:38 PM
To: newlib
Subject: __STRICT_ANSI__


I can't seem to understand the conditional prototyping of some functions in
Newlib's headers.

When compiling Cygwin/XFree86, which uses -ansi, which in turn defines
__STRICT_ANSI__, we get warnings about references implicitly declared
functions.

Below I have included the simplified prototyping of each offending function;
I have removed other functions declared within the same #ifndef scope for
simplicity.

It looks to me like __STRICT_ANSI__ might not be being used correctly.  Any
ideas?

Harold

Cygwin's stdio.h:
#ifndef __STRICT_ANSI__
#ifndef _REENT_ONLY
FILE *	_EXFUN(fdopen, (int, const char *));
#endif
int	_EXFUN(fileno, (FILE *));
int	_EXFUN(pclose, (FILE *));
FILE *  _EXFUN(popen, (const char *, const char *));
#endif

GNU/Linux stdio.h:
#ifdef __USE_POSIX
extern FILE *fdopen (int __fd, __const char *__modes) __THROW;
#endif

#ifdef __USE_POSIX
extern int fileno (FILE *__stream) __THROW;
#endif

#if defined __USE_POSIX2
extern FILE *popen (__const char *__command, __const char *__modes) __THROW;
extern int pclose (FILE *__stream) __THROW;
#endif


Cygwin's stdlib.h:
#ifndef __STRICT_ANSI__
#ifndef _REENT_ONLY
int     _EXFUN(mkstemp,(char *));
char *  _EXFUN(mktemp,(char *));
#endif
#endif

GNU/Linux stdlib.h:
#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
extern int mkstemp (char *__template) __THROW;
#endif


-----Original Message-----
From: newlib-owner@sources.redhat.com
[mailto:newlib-owner@sources.redhat.com]On Behalf Of Jeff Johnston
Sent: Wednesday, May 16, 2001 6:13 PM
To: Harold Hunt
Cc: newlib
Subject: Re: __STRICT_ANSI__


Harold,

  From the gcc info files:

    The macro `__STRICT_ANSI__' is predefined when the `-ansi' option
     is used.  Some header files may notice this macro and refrain from
     declaring certain functions or defining certain macros that the
     ANSI standard doesn't call for; this is to avoid interfering with
     any programs that might use these names for other things.

 fdopen, fileno, popen, etc.. are not ANSI functions, they are POSIX.
Newlib
has a variety of functions from ANSI, POSIX, SVID, etc..

  Any ideas why XFree86 uses the flag?

-- Jeff J..


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