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] |
I was actually just reading in the C99 standard that the function synopsis for fwide() calls for stdio.h to be included before fwide.h: #include <stdio.h> #include <wchar.h> int fwide(FILE *stream, int mode); POSIX calls for the same thing. In fact, for all fwide.h funtions that contain FILE in the function protoype, the C99 standard shows #include <stdio.h> first. So I was wondering if the synopsis in the new fwide.c ought to have the #include <stdio.h> just to match what both C99 and POSIX say. That would actually address the problem that you are addressing in a different manner in this last email, but it doesn't help a compile bombing on the prototype when using wchar.h with one of the functions that didn't tell you to use stdio.h also, so the fix described here is needed, anyway. Two other comments related to the new fwide.c. 1) The comments in the start of the file say C99 and POSIX.1-2001. POSIX adds (with respect to C99) setting errno to EBADF if the stream argument is invalid. However, this is not done. So either setting errno should be added or the POSIX note should be deleted. What is the better approach? 2) Another comment at the start of the file says "Once a stream has an orientation, it cannot be changed and persists until the stream is closed." Actually, C99 allows it to be changed by freopen() (end of the paragraph at the top of the page on page 264, which is paragraph 4 in section 7.19.2). A proposed modification is: "Once a stream has an orientation, it cannot be changed and persists until the stream is closed, unless the stream is re-opened with freopen, which removes the orientation of the stream." I've attached a patch file as an alternative new fwide.c that adds the stdio.h include that the standards call for (even though they are not really needed) and that has an alternate wording for my second comment. I did not do anything to address my #1, as there's a question as to the approach to take. Of course, it is a question as to whether the spurious stdio include should be there or not, but I tossed it in so that it matches the letter of the standards. Craig Howland -----Original Message----- From: newlib-owner@sourceware.org [mailto:newlib-owner@sourceware.org] On Behalf Of Corinna Vinschen Sent: Friday, November 07, 2008 10:18 AM To: newlib@sourceware.org Subject: Re: [PATCH]: Implement fwide (was Re: swprintf() and friends?) On Nov 7 15:11, Corinna Vinschen wrote: > Index: libc/include/wchar.h > =================================================================== > RCS file: /cvs/src/src/newlib/libc/include/wchar.h,v > retrieving revision 1.16 > diff -u -p -r1.16 wchar.h > --- libc/include/wchar.h 19 Dec 2007 17:33:11 -0000 1.16 > +++ libc/include/wchar.h 7 Nov 2008 14:07:05 -0000 > @@ -90,6 +90,9 @@ long long _EXFUN(_wcstoll_r, (struct _re > unsigned long _EXFUN(_wcstoul_r, (struct _reent *, const wchar_t *, wchar_t **, int)); > unsigned long long _EXFUN(_wcstoull_r, (struct _reent *, const wchar_t *, wchar_t **, int)); > > +int _EXFUN (fwide, (FILE *, int)); > +int _EXFUN (_fwide_r, (struct _reent *, FILE *, int)); > + > _END_STD_C > > #endif /* _WCHAR_H_ */ Make that int _EXFUN (fwide, (__FILE *, int)); int _EXFUN (_fwide_r, (struct _reent *, __FILE *, int)); otherwise we would have to include stdio.h from wchar.h. Corinna -- Corinna Vinschen Cygwin Project Co-Leader Red Hat
Attachment:
altfwide_c.patch
Description: altfwide_c.patch
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |