]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/wxchar.cpp
Defer loading of character sets, and some anti-crash checks related to
[wxWidgets.git] / src / common / wxchar.cpp
index 0057aba2710b72ea295e21d84e959322dea2ecb7..3f70fe66dc397e61c019474d0b3b106c7764a81e 100644 (file)
   #pragma hdrstop
 #endif
 
   #pragma hdrstop
 #endif
 
+#define _ISOC9X_SOURCE 1 // to get vsscanf()
+#define _BSD_SOURCE    1 // to still get strdup()
+
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <locale.h>
 #include <stdlib.h>
 #include <string.h>
 #include <locale.h>
@@ -111,6 +115,44 @@ wxChar * WXDLLEXPORT wxSetlocale(int category, const wxChar *locale)
 #endif
 
 #ifdef wxNEED_WX_STDIO_H
 #endif
 
 #ifdef wxNEED_WX_STDIO_H
+int WXDLLEXPORT wxPrintf(const wxChar *fmt, ...)
+{
+  va_list argptr;
+  int ret;
+
+  va_start(argptr, fmt);
+  ret = wxVprintf(fmt, argptr);
+  va_end(argptr);
+  return ret;
+}
+
+int WXDLLEXPORT wxVprintf(const wxChar *fmt, va_list argptr)
+{
+  wxString str;
+  str.PrintfV(fmt,argptr);
+  printf("%s", (const char*)str.mb_str());
+  return str.Len();
+}
+
+int WXDLLEXPORT wxFprintf(FILE *stream, const wxChar *fmt, ...)
+{
+  va_list argptr;
+  int ret;
+
+  va_start(argptr, fmt);
+  ret = wxVfprintf(stream, fmt, argptr);
+  va_end(argptr);
+  return ret;
+}
+
+int WXDLLEXPORT wxFvprintf(FILE *stream, const wxChar *fmt, va_list argptr)
+{
+  wxString str;
+  str.PrintfV(fmt,argptr);
+  fprintf(stream, "%s", (const char*)str.mb_str());
+  return str.Len();
+}
+
 int WXDLLEXPORT wxSprintf(wxChar *buf, const wxChar *fmt, ...)
 {
   va_list argptr;
 int WXDLLEXPORT wxSprintf(wxChar *buf, const wxChar *fmt, ...)
 {
   va_list argptr;
@@ -131,14 +173,36 @@ int WXDLLEXPORT wxVsprintf(wxChar *buf, const wxChar *fmt, va_list argptr)
   wxStrcpy(buf,str.c_str());
   return str.Len();
 }
   wxStrcpy(buf,str.c_str());
   return str.Len();
 }
+
+int WXDLLEXPORT wxSscanf(const wxChar *buf, const wxChar *fmt, ...)
+{
+  va_list argptr;
+  int ret;
+
+  va_start(argptr, fmt);
+  ret = wxVsscanf(buf, fmt, argptr);
+  va_end(argptr);
+  return ret;
+}
+
+int WXDLLEXPORT wxVsscanf(const wxChar *buf, const wxChar *fmt, va_list argptr)
+{
+  int ret;
+  // this will work only for numeric conversion! Strings will not be converted correctly
+  // hopefully this is all we'll need
+  ret = vsscanf(wxConv_libc.cWX2MB(buf), wxConv_libc.cWX2MB(fmt), argptr);
+  return ret;
+}
 #endif
 
 #endif
 
-#ifdef wxNEED_WX_STDLIB_H
+#ifndef wxAtof
 double   WXDLLEXPORT wxAtof(const wxChar *psz)
 {
   return atof(wxConv_libc.cWX2MB(psz));
 }
 double   WXDLLEXPORT wxAtof(const wxChar *psz)
 {
   return atof(wxConv_libc.cWX2MB(psz));
 }
+#endif
 
 
+#ifdef wxNEED_WX_STDLIB_H
 int      WXDLLEXPORT wxAtoi(const wxChar *psz)
 {
   return atoi(wxConv_libc.cWX2MB(psz));
 int      WXDLLEXPORT wxAtoi(const wxChar *psz)
 {
   return atoi(wxConv_libc.cWX2MB(psz));