2011/11/4 Rafaël Carré <[email protected]>: > * _mingw_print_push.h: Remove wscanf-defines. > * _mingw_print_pop.h: Likewise. > * stdio.h: Replace macro-wscanf override via alias. > --- > trunk/mingw-w64-headers/crt/_mingw_print_pop.h | 18 ----- > trunk/mingw-w64-headers/crt/_mingw_print_push.h | 7 -- > trunk/mingw-w64-headers/crt/stdio.h | 84 > +++++++++++++++++++---- > trunk/mingw-w64-headers/crt/wchar.h | 84 +++++++++++++++++++--- > 4 files changed, 143 insertions(+), 50 deletions(-) > > diff --git a/trunk/mingw-w64-headers/crt/_mingw_print_pop.h > b/trunk/mingw-w64-headers/crt/_mingw_print_pop.h > index 56aa8b0..c40042e 100644 > --- a/trunk/mingw-w64-headers/crt/_mingw_print_pop.h > +++ b/trunk/mingw-w64-headers/crt/_mingw_print_pop.h > @@ -7,24 +7,6 @@ > /* Define __mingw_<printf> macros. */ > #if defined(__USE_MINGW_ANSI_STDIO) && (defined(_INC_STDIO) || > defined(_WSTDIO_DEFINED)) && ((__USE_MINGW_ANSI_STDIO + 0) != 0) > > -#ifdef _WSTDIO_DEFINED > - > -#undef swscanf > -#undef vswscanf > -#undef wscanf > -#undef vwscanf > -#undef fwscanf > -#undef vfwscanf > - > -#define swscanf __mingw_swscanf > -#define vswscanf __mingw_vswscanf > -#define wscanf __mingw_wscanf > -#define vwscanf __mingw_vwscanf > -#define fwscanf __mingw_fwscanf > -#define vfwscanf __mingw_vfwscanf > - > -#endif > - > /* Redefine to GNU specific PRI... and SCN... macros. */ > #if defined(_INTTYPES_H_) && defined(PRId64) > #undef PRId64 > diff --git a/trunk/mingw-w64-headers/crt/_mingw_print_push.h > b/trunk/mingw-w64-headers/crt/_mingw_print_push.h > index 29db3a8..25a229d 100644 > --- a/trunk/mingw-w64-headers/crt/_mingw_print_push.h > +++ b/trunk/mingw-w64-headers/crt/_mingw_print_push.h > @@ -7,13 +7,6 @@ > /* Undefine __mingw_<printf> macros. */ > #if defined(__USE_MINGW_ANSI_STDIO) && ((__USE_MINGW_ANSI_STDIO + 0) != 0) > > -#undef swscanf > -#undef vswscanf > -#undef wscanf > -#undef vwscanf > -#undef fwscanf > -#undef vfwscanf > - > /* Redefine to MS specific PRI... and SCN... macros. */ > #if defined(_INTTYPES_H_) && defined(PRId64) > #undef PRId64 > diff --git a/trunk/mingw-w64-headers/crt/stdio.h > b/trunk/mingw-w64-headers/crt/stdio.h > index 5873b48..3ac21b5 100644 > --- a/trunk/mingw-w64-headers/crt/stdio.h > +++ b/trunk/mingw-w64-headers/crt/stdio.h > @@ -522,6 +522,19 @@ int vsnprintf (char *__stream, size_t __n, const char > *__format, __builtin_va_li > #define _WSTDIO_DEFINED > > __attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > + int __cdecl __mingw_swscanf(const wchar_t * __restrict__ _Src,const > wchar_t * __restrict__ _Format,...); > +__attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > + int __cdecl __mingw_vswscanf (const wchar_t * __restrict__ _Str,const > wchar_t * __restrict__ Format,va_list argp); > +__attribute__((__format__ (gnu_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1) > + int __cdecl __mingw_wscanf(const wchar_t * __restrict__ _Format,...); > +__attribute__((__format__ (gnu_printf, 1, 0))) __MINGW_ATTRIB_NONNULL(1) > + int __cdecl __mingw_vwscanf(const wchar_t * __restrict__ Format, va_list > argp); > +__attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > + int __cdecl __mingw_fwscanf(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,...); > +__attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > + int __cdecl __mingw_vfwscanf (FILE * __restrict__ fp, const wchar_t * > __restrict__ Format,va_list argp); > + > +__attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > int __cdecl __mingw_fwprintf(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,...); > __attribute__((__format__ (gnu_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1) > int __cdecl __mingw_wprintf(const wchar_t * __restrict__ _Format,...); > @@ -544,6 +557,64 @@ __attribute__((__format__ (gnu_printf, 3, 0))) > __MINGW_ATTRIB_NONNULL(3) > */ > __forceinline > __attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > +int swscanf(const wchar_t *__source, const wchar_t *__format, ...) > +{ > + register int __retval; > + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format > ); > + __retval = __mingw_vswscanf( __source, __format, __local_argv ); > + __builtin_va_end( __local_argv ); > + return __retval; > +} > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1) > +int wscanf(const wchar_t *__format, ...) > +{ > + register int __retval; > + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format > ); > + __retval = __mingw_vwscanf( __format, __local_argv ); > + __builtin_va_end( __local_argv ); > + return __retval; > +} > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > +int fwscanf(FILE *__stream, const wchar_t *__format, ...) > +{ > + register int __retval; > + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format > ); > + __retval = __mingw_vfwscanf( __stream, __format, __local_argv ); > + __builtin_va_end( __local_argv ); > + return __retval; > +} > + > +#ifndef __NO_ISOCEXT /* externs in libmingwex.a */ > +__forceinline > +__attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > +int vswscanf (const wchar_t *__source, const wchar_t *__format, > __builtin_va_list __local_argv) > +{ > + return __mingw_vswscanf( __source, __format, __local_argv ); > +} > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 1, 0))) __MINGW_ATTRIB_NONNULL(1) > +int vwscanf(const wchar_t *__format, __builtin_va_list __local_argv) > +{ > + return __mingw_vwscanf( __format, __local_argv ); > +} > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > +int vfwscanf (FILE *__stream, const wchar_t *__format, __builtin_va_list > __local_argv) > +{ > + return __mingw_vfwscanf( __stream, __format, __local_argv ); > +} > +#endif /* __NO_ISOCEXT */ > + > + > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > int fwprintf (FILE *__stream, const wchar_t *__format, ...) > { > register int __retval; > @@ -675,16 +746,6 @@ int vsnwprintf (wchar_t *__stream, size_t __n, const > wchar_t *__format, __builti > #pragma pop_macro ("snwprintf") > #endif > > - int __cdecl __mingw_swscanf(const wchar_t * __restrict__ _Src,const > wchar_t * __restrict__ _Format,...); > - int __cdecl __mingw_vswscanf (const wchar_t * __restrict__ _Str,const > wchar_t * __restrict__ Format,va_list argp); > - int __cdecl __mingw_wscanf(const wchar_t * __restrict__ _Format,...); > - int __cdecl __mingw_vwscanf(const wchar_t * __restrict__ Format, va_list > argp); > - int __cdecl __mingw_fwscanf(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,...); > - int __cdecl __mingw_vfwscanf (FILE * __restrict__ fp, const wchar_t * > __restrict__ Format,va_list argp); > - > - int __cdecl vwscanf (const wchar_t * __restrict__ , va_list); > - int __cdecl vfwscanf (FILE * __restrict__ ,const wchar_t * __restrict__ > ,va_list); > - int __cdecl vswscanf (const wchar_t * __restrict__ ,const wchar_t * > __restrict__ ,va_list); > #endif /* ! __NO_ISOCEXT */ > _CRTIMP int __cdecl _fwprintf_p(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,...); > _CRTIMP int __cdecl _wprintf_p(const wchar_t * __restrict__ _Format,...); > @@ -729,13 +790,10 @@ int vsnwprintf (wchar_t *__stream, size_t __n, const > wchar_t *__format, __builti > _CRTIMP wchar_t *__cdecl _wtempnam(const wchar_t *_Directory,const wchar_t > *_FilePrefix); > _CRTIMP int __cdecl _vscwprintf(const wchar_t * __restrict__ > _Format,va_list _ArgList); > _CRTIMP int __cdecl _vscwprintf_l(const wchar_t * __restrict__ > _Format,_locale_t _Locale,va_list _ArgList); > - int __cdecl fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ > _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP int __cdecl _fwscanf_l(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,_locale_t _Locale,...) > __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > - int __cdecl swscanf(const wchar_t * __restrict__ _Src,const wchar_t * > __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP int __cdecl _swscanf_l(const wchar_t * __restrict__ _Src,const > wchar_t * __restrict__ _Format,_locale_t _Locale,...) > __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP int __cdecl _snwscanf(const wchar_t * __restrict__ _Src,size_t > _MaxCount,const wchar_t * __restrict__ _Format,...); > _CRTIMP int __cdecl _snwscanf_l(const wchar_t * __restrict__ _Src,size_t > _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,...); > - int __cdecl wscanf(const wchar_t * __restrict__ _Format,...) > __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP int __cdecl _wscanf_l(const wchar_t * __restrict__ > _Format,_locale_t _Locale,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP FILE *__cdecl _wfdopen(int _FileHandle ,const wchar_t *_Mode); > _CRTIMP FILE *__cdecl _wfopen(const wchar_t * __restrict__ _Filename,const > wchar_t *__restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > diff --git a/trunk/mingw-w64-headers/crt/wchar.h > b/trunk/mingw-w64-headers/crt/wchar.h > index 8034b6e..9d43399 100644 > --- a/trunk/mingw-w64-headers/crt/wchar.h > +++ b/trunk/mingw-w64-headers/crt/wchar.h > @@ -419,6 +419,20 @@ extern FILE (* __MINGW_IMP_SYMBOL(_iob))[]; /* A > pointer to an array of FILE */ > #define _WSTDIO_DEFINED > > __attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > + int __cdecl __mingw_swscanf(const wchar_t * __restrict__ _Src,const > wchar_t * __restrict__ _Format,...); > +__attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > + int __cdecl __mingw_vswscanf (const wchar_t * __restrict__ _Str,const > wchar_t * __restrict__ Format,va_list argp); > +__attribute__((__format__ (gnu_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1) > + int __cdecl __mingw_wscanf(const wchar_t * __restrict__ _Format,...); > +__attribute__((__format__ (gnu_printf, 1, 0))) __MINGW_ATTRIB_NONNULL(1) > + int __cdecl __mingw_vwscanf(const wchar_t * __restrict__ Format, va_list > argp); > +__attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > + int __cdecl __mingw_fwscanf(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,...); > +__attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > + int __cdecl __mingw_vfwscanf (FILE * __restrict__ fp, const wchar_t * > __restrict__ Format,va_list argp); > + > + > +__attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > int __cdecl __mingw_fwprintf(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,...); > __attribute__((__format__ (gnu_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1) > int __cdecl __mingw_wprintf(const wchar_t * __restrict__ _Format,...); > @@ -441,6 +455,64 @@ __attribute__((__format__ (gnu_printf, 3, 0))) > __MINGW_ATTRIB_NONNULL(3) > */ > __forceinline > __attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > +int swscanf(const wchar_t *__source, const wchar_t *__format, ...) > +{ > + register int __retval; > + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format > ); > + __retval = __mingw_vswscanf( __source, __format, __local_argv ); > + __builtin_va_end( __local_argv ); > + return __retval; > +} > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 1, 2))) __MINGW_ATTRIB_NONNULL(1) > +int wscanf(const wchar_t *__format, ...) > +{ > + register int __retval; > + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format > ); > + __retval = __mingw_vwscanf( __format, __local_argv ); > + __builtin_va_end( __local_argv ); > + return __retval; > +} > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > +int fwscanf(FILE *__stream, const wchar_t *__format, ...) > +{ > + register int __retval; > + __builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format > ); > + __retval = __mingw_vfwscanf( __stream, __format, __local_argv ); > + __builtin_va_end( __local_argv ); > + return __retval; > +} > + > +#ifndef __NO_ISOCEXT /* externs in libmingwex.a */ > +__forceinline > +__attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > +int vswscanf (const wchar_t *__source, const wchar_t *__format, > __builtin_va_list __local_argv) > +{ > + return __mingw_vswscanf( __source, __format, __local_argv ); > +} > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 1, 0))) __MINGW_ATTRIB_NONNULL(1) > +int vwscanf(const wchar_t *__format, __builtin_va_list __local_argv) > +{ > + return __mingw_vwscanf( __format, __local_argv ); > +} > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 2, 0))) __MINGW_ATTRIB_NONNULL(2) > +int vfwscanf (FILE *__stream, const wchar_t *__format, __builtin_va_list > __local_argv) > +{ > + return __mingw_vfwscanf( __stream, __format, __local_argv ); > +} > +#endif /* __NO_ISOCEXT */ > + > + > + > +__forceinline > +__attribute__((__format__ (gnu_printf, 2, 3))) __MINGW_ATTRIB_NONNULL(2) > int fwprintf (FILE *__stream, const wchar_t *__format, ...) > { > register int __retval; > @@ -572,17 +644,8 @@ int vsnwprintf (wchar_t *__stream, size_t __n, const > wchar_t *__format, __builti > #pragma pop_macro ("snwprintf") > #endif > > - int __cdecl vwscanf (const wchar_t * __restrict__ , va_list); > - int __cdecl vfwscanf (FILE * __restrict__ ,const wchar_t * __restrict__ > ,va_list); > - int __cdecl vswscanf (const wchar_t * __restrict__ ,const wchar_t * > __restrict__ ,va_list); > #endif > > - int __cdecl __mingw_swscanf(const wchar_t * __restrict__ _Src,const > wchar_t * __restrict__ _Format,...); > - int __cdecl __mingw_vswscanf (const wchar_t * __restrict__ _Str,const > wchar_t * __restrict__ Format,va_list argp); > - int __cdecl __mingw_wscanf(const wchar_t * __restrict__ _Format,...); > - int __cdecl __mingw_vwscanf(const wchar_t * __restrict__ Format, va_list > argp); > - int __cdecl __mingw_fwscanf(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,...); > - int __cdecl __mingw_vfwscanf (FILE * __restrict__ fp, const wchar_t * > __restrict__ Format,va_list argp); > _CRTIMP int __cdecl _fwprintf_p(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,...); > _CRTIMP int __cdecl _wprintf_p(const wchar_t * __restrict__ _Format,...); > _CRTIMP int __cdecl _vfwprintf_p(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,va_list _ArgList); > @@ -626,13 +689,10 @@ int vsnwprintf (wchar_t *__stream, size_t __n, const > wchar_t *__format, __builti > _CRTIMP wchar_t *__cdecl _wtempnam(const wchar_t *_Directory,const wchar_t > *_FilePrefix); > _CRTIMP int __cdecl _vscwprintf(const wchar_t * __restrict__ > _Format,va_list _ArgList); > _CRTIMP int __cdecl _vscwprintf_l(const wchar_t * __restrict__ > _Format,_locale_t _Locale,va_list _ArgList); > - int __cdecl fwscanf(FILE * __restrict__ _File,const wchar_t * __restrict__ > _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP int __cdecl _fwscanf_l(FILE * __restrict__ _File,const wchar_t * > __restrict__ _Format,_locale_t _Locale,...) > __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > - int __cdecl swscanf(const wchar_t * __restrict__ _Src,const wchar_t * > __restrict__ _Format,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP int __cdecl _swscanf_l(const wchar_t * __restrict__ _Src,const > wchar_t * __restrict__ _Format,_locale_t _Locale,...) > __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP int __cdecl _snwscanf(const wchar_t * __restrict__ _Src,size_t > _MaxCount,const wchar_t * __restrict__ _Format,...); > _CRTIMP int __cdecl _snwscanf_l(const wchar_t * __restrict__ _Src,size_t > _MaxCount,const wchar_t * __restrict__ _Format,_locale_t _Locale,...); > - int __cdecl wscanf(const wchar_t * __restrict__ _Format,...) > __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP int __cdecl _wscanf_l(const wchar_t * __restrict__ > _Format,_locale_t _Locale,...) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > _CRTIMP FILE *__cdecl _wfdopen(int _FileHandle ,const wchar_t *_Mode); > _CRTIMP FILE *__cdecl _wfopen(const wchar_t * __restrict__ _Filename,const > wchar_t * __restrict__ _Mode) __MINGW_ATTRIB_DEPRECATED_SEC_WARN; > -- > 1.7.5.4
Patch is ok. Could you please attach diff to reply and provide a changelog for it. Thanks, Kai ------------------------------------------------------------------------------ RSA(R) Conference 2012 Save $700 by Nov 18 Register now http://p.sf.net/sfu/rsa-sfdev2dev1 _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
