This is the mail archive of the newlib@sourceware.org mailing list for the newlib 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: [patch] Include some c99 functions in __STRICT_ANSI__ for cygwin c99.


Yes, I should of thought of that. I'll add the setting of the flag under Cygwin's portion of sys/config.h.

Does the __STDC_VERSION__ level need to be checked as you've implied below or as I would expect, should it just be set all the time for Cygwin?

-- Jeff J.

On 16/10/09 01:16 PM, Corinna Vinschen wrote:
On Oct 16 12:55, Jeff Johnston wrote:
I think the better solution is to emulate glibc which uses the flag
__USE_XOPEN2K to determine if fseeko and ftello are to be used.

So I made the following patch which sets the __USE_XOPEN2K flag for Cygwin
and uses to check for fseeko, ftello when __STRICT_ANSI__ is set.

The remainder of the I/O functions in that chunk are included if C99.

A patch is attached.  Let me know if you have any concerns, otherwise I'll
check it in.

I don't think this patch is correct. It sets the __USE_XOPEN2K flag only when building newlib. However, this is a header file and we need the right definition at compile time of any subsequent application, not only when building newlib.

So, I assume what we need is a definition in config.h, similar to
what Dave suggested:

   #if __STDC_VERSION__>= 199901L
   #define __USE_XOPEN2K 1
   #endif


Corinna



Index: configure.host
===================================================================
RCS file: /cvs/src/src/newlib/configure.host,v
retrieving revision 1.110
diff -u -p -r1.110 configure.host
--- configure.host	8 Oct 2009 16:44:09 -0000	1.110
+++ configure.host	16 Oct 2009 16:50:08 -0000
@@ -536,7 +536,7 @@ case "${host}" in
  	default_newlib_io_long_double="yes"
  	default_newlib_io_pos_args="yes"
  	CC="${CC} -I${cygwin_srcdir}/include"
-	newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DSIGNAL_PROVIDED -D_COMPILING_NEWLIB -DHAVE_BLKSIZE -DHAVE_FCNTL -DMALLOC_PROVIDED"
+	newlib_cflags="${newlib_cflags} -DHAVE_OPENDIR -DHAVE_RENAME -DSIGNAL_PROVIDED -D_COMPILING_NEWLIB -DHAVE_BLKSIZE -DHAVE_FCNTL -DMALLOC_PROVIDED -D__USE_XOPEN2K"
  	syscall_dir=syscalls
  	;;
  # RTEMS supplies its own versions of some routines:
Index: libc/include/stdio.h
===================================================================
RCS file: /cvs/src/src/newlib/libc/include/stdio.h,v
retrieving revision 1.58
diff -u -p -r1.58 stdio.h
--- libc/include/stdio.h	3 Jul 2009 11:58:04 -0000	1.58
+++ libc/include/stdio.h	16 Oct 2009 16:50:08 -0000
@@ -232,7 +232,7 @@ int	_EXFUN(sprintf, (char *, const char
  int	_EXFUN(remove, (const char *));
  int	_EXFUN(rename, (const char *, const char *));
  #endif
-#ifndef __STRICT_ANSI__
+#if !defined(__STRICT_ANSI__) || defined(__USE_XOPEN2K)
  #ifdef _COMPILING_NEWLIB
  int	_EXFUN(fseeko, (FILE *, _off_t, int));
  _off_t	_EXFUN(ftello, ( FILE *));
@@ -240,6 +240,7 @@ _off_t	_EXFUN(ftello, ( FILE *));
  int	_EXFUN(fseeko, (FILE *, off_t, int));
  off_t	_EXFUN(ftello, ( FILE *));
  #endif
+#if !defined(__STRICT_ANSI__) || __STDC_VERSION__>= 199901L)
  #ifndef _REENT_ONLY
  int	_EXFUN(asiprintf, (char **, const char *, ...)
                 _ATTRIBUTE ((__format__ (__printf__, 2, 3))));




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