Author: theraven
Date: Sun Nov 13 16:18:48 2011
New Revision: 227487
URL: http://svn.freebsd.org/changeset/base/227487

Log:
  The spec says that FILE must be defined in wchar.h, but it wasn't.  It
  is now.  Also hide some macros in C++ mode that will break C++
  namespaced calls.
  
  Approved by:  dim (mentor)

Modified:
  head/include/stdio.h
  head/include/wchar.h

Modified: head/include/stdio.h
==============================================================================
--- head/include/stdio.h        Sun Nov 13 11:53:18 2011        (r227486)
+++ head/include/stdio.h        Sun Nov 13 16:18:48 2011        (r227487)
@@ -107,7 +107,7 @@ struct __sbuf {
  * inline functions.  To preserve ABI compat, these members must not
  * be disturbed.  These members are marked below with (*).
  */
-typedef        struct __sFILE {
+struct __sFILE {
        unsigned char *_p;      /* (*) current position in (some) buffer */
        int     _r;             /* (*) read space left for getc() */
        int     _w;             /* (*) write space left for putc() */
@@ -144,8 +144,11 @@ typedef    struct __sFILE {
        int     _fl_count;      /* recursive lock count */
        int     _orientation;   /* orientation for fwide() */
        __mbstate_t _mbstate;   /* multibyte conversion state */
-} FILE;
-
+};
+#ifndef _STDFILE_DECLARED
+#define _STDFILE_DECLARED
+typedef struct __sFILE FILE;
+#endif
 #ifndef _STDSTREAM_DECLARED
 __BEGIN_DECLS
 extern FILE *__stdinp;
@@ -467,6 +470,7 @@ static __inline int __sputc(int _c, FILE
                        __swbuf((int)(c), p) : \
                (*(p)->_p = (c), (int)*(p)->_p++))
 #endif
+#ifndef __cplusplus
 
 #define        __sfeof(p)      (((p)->_flags & __SEOF) != 0)
 #define        __sferror(p)    (((p)->_flags & __SERR) != 0)
@@ -506,6 +510,7 @@ extern int __isthreaded;
 #define        getchar_unlocked()      getc_unlocked(stdin)
 #define        putchar_unlocked(x)     putc_unlocked(x, stdout)
 #endif
+#endif /* __cplusplus */
 
 __END_DECLS
 #endif /* !_STDIO_H_ */

Modified: head/include/wchar.h
==============================================================================
--- head/include/wchar.h        Sun Nov 13 11:53:18 2011        (r227486)
+++ head/include/wchar.h        Sun Nov 13 16:18:48 2011        (r227487)
@@ -97,20 +97,23 @@ typedef     __wint_t        wint_t;
 #define        WEOF    ((wint_t)-1)
 #endif
 
-struct __sFILE;
+#ifndef _STDFILE_DECLARED
+#define _STDFILE_DECLARED
+typedef struct __sFILE FILE;
+#endif
 struct tm;
 
 __BEGIN_DECLS
 wint_t btowc(int);
-wint_t fgetwc(struct __sFILE *);
+wint_t fgetwc(FILE *);
 wchar_t        *
-       fgetws(wchar_t * __restrict, int, struct __sFILE * __restrict);
-wint_t fputwc(wchar_t, struct __sFILE *);
-int    fputws(const wchar_t * __restrict, struct __sFILE * __restrict);
-int    fwide(struct __sFILE *, int);
-int    fwprintf(struct __sFILE * __restrict, const wchar_t * __restrict, ...);
-int    fwscanf(struct __sFILE * __restrict, const wchar_t * __restrict, ...);
-wint_t getwc(struct __sFILE *);
+       fgetws(wchar_t * __restrict, int, FILE * __restrict);
+wint_t fputwc(wchar_t, FILE *);
+int    fputws(const wchar_t * __restrict, FILE * __restrict);
+int    fwide(FILE *, int);
+int    fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
+int    fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
+wint_t getwc(FILE *);
 wint_t getwchar(void);
 size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
 size_t mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
@@ -118,13 +121,13 @@ size_t    mbrtowc(wchar_t * __restrict, con
 int    mbsinit(const mbstate_t *);
 size_t mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
            mbstate_t * __restrict);
-wint_t putwc(wchar_t, struct __sFILE *);
+wint_t putwc(wchar_t, FILE *);
 wint_t putwchar(wchar_t);
 int    swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
            ...);
 int    swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
-wint_t ungetwc(wint_t, struct __sFILE *);
-int    vfwprintf(struct __sFILE * __restrict, const wchar_t * __restrict,
+wint_t ungetwc(wint_t, FILE *);
+int    vfwprintf(FILE * __restrict, const wchar_t * __restrict,
            __va_list);
 int    vswprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
            __va_list);
@@ -167,9 +170,9 @@ int wprintf(const wchar_t * __restrict, 
 int    wscanf(const wchar_t * __restrict, ...);
 
 #ifndef _STDSTREAM_DECLARED
-extern struct __sFILE *__stdinp;
-extern struct __sFILE *__stdoutp;
-extern struct __sFILE *__stderrp;
+extern FILE *__stdinp;
+extern FILE *__stdoutp;
+extern FILE *__stderrp;
 #define        _STDSTREAM_DECLARED
 #endif
 
@@ -179,7 +182,7 @@ extern struct __sFILE *__stderrp;
 #define        putwchar(wc)    fputwc(wc, __stdoutp)
 
 #if __ISO_C_VISIBLE >= 1999
-int    vfwscanf(struct __sFILE * __restrict, const wchar_t * __restrict,
+int    vfwscanf(FILE * __restrict, const wchar_t * __restrict,
            __va_list);
 int    vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
            __va_list);
@@ -217,7 +220,7 @@ size_t      wcsnrtombs(char * __restrict, con
 #endif
 
 #if __BSD_VISIBLE
-wchar_t        *fgetwln(struct __sFILE * __restrict, size_t * __restrict);
+wchar_t        *fgetwln(FILE * __restrict, size_t * __restrict);
 size_t wcslcat(wchar_t *, const wchar_t *, size_t);
 size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
 #endif
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to