X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/929eed47994d715f3ffccbdf47768a13171da968..4a377e137527eb7f4a26b9e3bc1cd88e8c108676:/src/common/wxchar.cpp diff --git a/src/common/wxchar.cpp b/src/common/wxchar.cpp index f5f989701a..f9e73aed8a 100644 --- a/src/common/wxchar.cpp +++ b/src/common/wxchar.cpp @@ -97,13 +97,13 @@ size_t WXDLLEXPORT wxWC2MB(char *buf, const wchar_t *pwz, size_t n) bool WXDLLEXPORT wxOKlibc() { #if wxUSE_WCHAR_T && defined(__UNIX__) && defined(__GLIBC__) - // GNU libc uses UTF-8 even when it shouldn't - wchar_t res; + // glibc 2.0 uses UTF-8 even when it shouldn't + wchar_t res = 0; if ((MB_CUR_MAX == 2) && - (wxMB2WC(&res, "\xdd\xa5", 1)>0) && + (wxMB2WC(&res, "\xdd\xa5", 1) == 1) && (res==0x765)) { // this is UTF-8 allright, check whether that's what we want - char *cur_locale = setlocale(LC_ALL, NULL); + char *cur_locale = setlocale(LC_CTYPE, NULL); if ((strlen(cur_locale) < 4) || (strcasecmp(cur_locale + strlen(cur_locale) - 4, "utf8"))) { // nope, don't use libc conversion @@ -189,18 +189,11 @@ WXDLLEXPORT wxChar * wxStrtok(wxChar *psz, const wxChar *delim, wxChar **save_pt #endif #ifndef wxSetlocale -WXDLLEXPORT wxChar * wxSetlocale(int category, const wxChar *locale) +WXDLLEXPORT wxWCharBuffer wxSetlocale(int category, const wxChar *locale) { -#ifdef wxUSE_THREADS - wxASSERT_MSG( wxThread::IsMain(), _T("wxSetlocale() is not MT-safe") ); -#endif - - static wxWCharBuffer s_wzLocale; - char *localeOld = setlocale(category, wxConvLibc.cWX2MB(locale)); - s_wzLocale = wxConvLibc.cMB2WC(localeOld); - return s_wzLocale; + return wxWCharBuffer(wxConvLibc.cMB2WC(localeOld)); } #endif @@ -361,6 +354,16 @@ WXDLLEXPORT FILE * wxFreopen(const wxChar *path, const wxChar *mode, FILE *strea return freopen(wxConvFile.cWX2MB(path), wxConvLibc.cWX2MB(mode), stream); } +WXDLLEXPORT int wxRemove(const wxChar *path) +{ + return remove(wxConvFile.cWX2MB(path)); +} + +WXDLLEXPORT int wxRename(const wxChar *oldpath, const wxChar *newpath) +{ + return rename(wxConvFile.cWX2MB(oldpath), wxConvFile.cWX2MB(newpath)); +} + int WXDLLEXPORT wxPrintf(const wxChar *fmt, ...) { va_list argptr;