X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a5e0b1e83d016690d96bea389ad058d0ee3c4a69..6842d18650b487249b4ae29d0d7e17231b24cde8:/src/common/wxchar.cpp diff --git a/src/common/wxchar.cpp b/src/common/wxchar.cpp index db8b5d651e..1ef378cda3 100644 --- a/src/common/wxchar.cpp +++ b/src/common/wxchar.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #ifndef WX_PRECOMP #include "wx/defs.h" @@ -51,7 +52,7 @@ size_t WXDLLEXPORT wxMB2WC(wchar_t *buf, const char *psz, size_t n) { if (buf) { if (!n || !*psz) { - if (n) *buf = _T('\0'); + if (n) *buf = wxT('\0'); return 0; } return mbstowcs(buf, psz, n); @@ -180,7 +181,7 @@ WXDLLEXPORT wxChar * wxStrtok(wxChar *psz, const wxChar *delim, wxChar **save_pt psz = wxStrpbrk(psz, delim); if (!psz) *save_ptr = (wxChar*)NULL; else { - *psz = _T('\0'); + *psz = wxT('\0'); *save_ptr = psz + 1; } return ret; @@ -291,21 +292,21 @@ WXDLLEXPORT double wxStrtod(const wxChar *nptr, wxChar **endptr) // FIXME: only correct for C locale while (wxIsspace(*nptr)) nptr++; - if (*nptr == _T('+') || *nptr == _T('-')) nptr++; + if (*nptr == wxT('+') || *nptr == wxT('-')) nptr++; while (wxIsdigit(*nptr)) nptr++; - if (*nptr == _T('.')) { + if (*nptr == wxT('.')) { nptr++; while (wxIsdigit(*nptr)) nptr++; } - if (*nptr == _T('E') || *nptr == _T('e')) { + if (*nptr == wxT('E') || *nptr == wxT('e')) { nptr++; - if (*nptr == _T('+') || *nptr == _T('-')) nptr++; + if (*nptr == wxT('+') || *nptr == wxT('-')) nptr++; while (wxIsdigit(*nptr)) nptr++; } wxString data(nptr, nptr-start); wxWX2MBbuf dat = data.mb_str(wxConvLibc); - char *rdat = MBSTRINGCAST dat; + char *rdat = wxMBSTRINGCAST dat; double ret = strtod(dat, &rdat); if (endptr) *endptr = (wxChar *)(start + (rdat - (const char *)dat)); @@ -319,21 +320,21 @@ WXDLLEXPORT long int wxStrtol(const wxChar *nptr, wxChar **endptr, int base) // FIXME: only correct for C locale while (wxIsspace(*nptr)) nptr++; - if (*nptr == _T('+') || *nptr == _T('-')) nptr++; + if (*nptr == wxT('+') || *nptr == wxT('-')) nptr++; if (((base == 0) || (base == 16)) && - (nptr[0] == _T('0') && nptr[1] == _T('x'))) { + (nptr[0] == wxT('0') && nptr[1] == wxT('x'))) { nptr += 2; base = 16; } - else if ((base == 0) && (nptr[0] == _T('0'))) base = 8; + else if ((base == 0) && (nptr[0] == wxT('0'))) base = 8; else if (base == 0) base = 10; - while ((wxIsdigit(*nptr) && (*nptr - _T('0') < base)) || - (wxIsalpha(*nptr) && (wxToupper(*nptr) - _T('A') + 10 < base))) nptr++; + while ((wxIsdigit(*nptr) && (*nptr - wxT('0') < base)) || + (wxIsalpha(*nptr) && (wxToupper(*nptr) - wxT('A') + 10 < base))) nptr++; wxString data(nptr, nptr-start); wxWX2MBbuf dat = data.mb_str(wxConvLibc); - char *rdat = MBSTRINGCAST dat; + char *rdat = wxMBSTRINGCAST dat; long int ret = strtol(dat, &rdat, base); if (endptr) *endptr = (wxChar *)(start + (rdat - (const char *)dat)); @@ -343,6 +344,16 @@ WXDLLEXPORT long int wxStrtol(const wxChar *nptr, wxChar **endptr, int base) #endif #ifdef wxNEED_WX_STDIO_H +WXDLLEXPORT FILE * wxFopen(const wxChar *path, const wxChar *mode) +{ + return fopen(wxConvFile.cWX2MB(path), wxConvLibc.cWX2MB(mode)); +} + +WXDLLEXPORT FILE * wxFreopen(const wxChar *path, const wxChar *mode, FILE *stream) +{ + return freopen(wxConvFile.cWX2MB(path), wxConvLibc.cWX2MB(mode), stream); +} + int WXDLLEXPORT wxPrintf(const wxChar *fmt, ...) { va_list argptr; @@ -465,3 +476,21 @@ int WXDLLEXPORT wxSystem(const wxChar *psz) } #endif + +#ifdef wxNEED_WX_TIME_H +WXDLLEXPORT size_t wxStrftime(wxChar *s, size_t max, const wxChar *fmt, const struct tm *tm) +{ + if (!max) return 0; + char *buf = (char *)malloc(max); + size_t ret = strftime(buf, max, wxConvLibc.cWX2MB(fmt), tm); + if (ret) { + wxStrcpy(s, wxConvLibc.cMB2WX(buf)); + free(buf); + return wxStrlen(s); + } else { + free(buf); + *s = 0; + return 0; + } +} +#endif