Convert %s to %ls and %c to %lc in printf and scanf etc.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2002-08-17 12:09:48 +00:00
parent 06bb3c60d1
commit 6d60815d74
3 changed files with 40 additions and 38 deletions

View File

@@ -165,33 +165,6 @@ inline int Stricmp(const char *psz1, const char *psz2)
#endif // OS/compiler #endif // OS/compiler
} }
#ifndef wxSnprintf
// wxSnprintf() is like snprintf() if it's available and sprintf() (always
// available, but dangerous!) if not.
extern int WXDLLEXPORT wxSnprintf(wxChar *buf, size_t len,
const wxChar *format,
...) ATTRIBUTE_PRINTF_3;
#else
// GNU libc 2.2 only has for wxSnprintf for Unicode called swprintf
// so we imitate wxSprintf using it.
extern int WXDLLEXPORT wxSprintf(wxChar *buf,
const wxChar *format,
...) ATTRIBUTE_PRINTF_2;
#endif
#ifndef wxVsnprintf
// and wxVsnprintf() is like vsnprintf() or vsprintf()
extern int WXDLLEXPORT wxVsnprintf(wxChar *buf, size_t len,
const wxChar *format,
va_list argptr);
#else
// GNU libc 2.2 only has for wxVsnprintf for Unicode called vswprintf
// so we imitate wxVsprintf using it.
extern int WXDLLEXPORT wxVsprintf(wxChar *buf,
const wxChar *format,
va_list argptr);
#endif
// return an empty wxString // return an empty wxString
class WXDLLEXPORT wxString; // not yet defined class WXDLLEXPORT wxString; // not yet defined
inline const wxString& wxGetEmptyString() { return *(wxString *)&wxEmptyString; } inline const wxString& wxGetEmptyString() { return *(wxString *)&wxEmptyString; }

View File

@@ -52,6 +52,9 @@
# define wxUSE_WCHAR_T 1 # define wxUSE_WCHAR_T 1
#endif // Unicode #endif // Unicode
// Required for wxPrintf() etc
#include <stdarg.h>
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// define wxHAVE_TCHAR_FUNCTIONS for the compilers which support the // define wxHAVE_TCHAR_FUNCTIONS for the compilers which support the
// wide-character functions // wide-character functions
@@ -395,23 +398,18 @@ typedef _TUCHAR wxUChar;
# define wxFgets fgetws # define wxFgets fgetws
# define wxFputc fputwc # define wxFputc fputwc
# define wxFputchar fputwchar # define wxFputchar fputwchar
# define wxFprintf fwprintf
# define wxFscanf fwscanf
# define wxGetc getwc # define wxGetc getwc
# define wxGetchar getwchar # define wxGetchar getwchar
# define wxGets getws # define wxGets getws
# define wxPrintf wprintf
# define wxPutc wputc # define wxPutc wputc
# define wxPutchar wputchar # define wxPutchar wputchar
# define wxPuts putws # define wxPuts putws
# define wxScanf wscanf
# define wxSnprintf swprintf
# define wxSscanf swscanf
# define wxUngetc ungetwc # define wxUngetc ungetwc
# define wxVfprint vfwprintf
# define wxVprintf vwprintf // we need %s to %ls conversion for printf and scanf etc
# define wxVsscanf vswscanf # define wxNEED_PRINTF_CONVERSION
# define wxVsnprintf vswprintf # define wxHAS_VSNPRINTF
# define wxHAS_SNPRINTF
// glibc doesn't have wc equivalents of the other stuff // glibc doesn't have wc equivalents of the other stuff
# define wxNEED_WX_STDIO_H # define wxNEED_WX_STDIO_H
@@ -609,6 +607,37 @@ WXDLLEXPORT size_t wxWC2MB(char *buf, const wchar_t *psz, size_t n);
WXDLLEXPORT bool wxOKlibc(); // for internal use WXDLLEXPORT bool wxOKlibc(); // for internal use
// We need conversion from %s to %ls in Unicode mode under Unix
#ifdef wxNEED_PRINTF_CONVERSION
int wxScanf( const wxChar *format, ... ) ATTRIBUTE_PRINTF_2;
int wxSscanf( const wxChar *str, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3;
int wxFscanf( FILE *stream, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3;
int wxVsscanf( const wxChar *str, const wxChar *format, va_list ap );
int wxPrintf( const wxChar *format, ... ) ATTRIBUTE_PRINTF_2;
int wxSnprintf( wxChar *str, size_t size, const wxChar *format, ... ) ATTRIBUTE_PRINTF_4;
int wxSprintf( wxChar *str, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3;
int wxFprintf( FILE *stream, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3;
int wxVfprint( const wxChar *format, va_list ap );
int wxVprintf( const wxChar *format, va_list ap );
int wxVsnprintf( wxChar *str, size_t size, const wxChar *format, va_list ap );
int wxVsprintf( wxChar *str, const wxChar *format, va_list ap );
#endif
#if !defined(wxSnprintf) && !defined(wxHAS_SNPRINTF)
// wxSnprintf() is like snprintf() if it's available and sprintf() (always
// available, but dangerous!) if not.
WXDLLEXPORT int wxSnprintf(wxChar *buf, size_t len,
const wxChar *format,
...) ATTRIBUTE_PRINTF_3;
#endif
#if !defined(wxVsnprintf) && !defined(wxHAS_VSNPRINTF)
// and wxVsnprintf() is like vsnprintf() or vsprintf()
WXDLLEXPORT int wxVsnprintf(wxChar *buf, size_t len,
const wxChar *format,
va_list argptr);
#endif
// if libc versions are not available, use replacements defined in wxchar.cpp // if libc versions are not available, use replacements defined in wxchar.cpp
#ifndef wxStrdup #ifndef wxStrdup
WXDLLEXPORT wxChar * wxStrdup(const wxChar *psz); WXDLLEXPORT wxChar * wxStrdup(const wxChar *psz);