tried to clean strdup() mess: we now have wxStrdup[AW] which should be always available

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18172 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2002-12-10 00:43:28 +00:00
parent 2a5d3f5738
commit 07243717e2
3 changed files with 45 additions and 37 deletions

View File

@@ -80,6 +80,13 @@
// Required for wxPrintf() etc
#include <stdarg.h>
// Almost all compiler have strdup(), but not quite all: CodeWarrior under Mac
// and VC++ for Windows CE don't provide it
#if !(defined(__MWERKS__) && defined(__WXMAC__)) && !defined(__WXWINCE__)
// use #define, not inline wrapper, as it is tested with #ifndef below
#define wxStrdupA strdup
#endif
// non Unix compilers which do have wchar.h (but not tchar.h which is included
// below and which includes wchar.h anyhow).
// Actually MinGW has tchar.h, but it does not include wchar.h
@@ -269,7 +276,7 @@
#define wxStrcoll _tcscoll
#define wxStrcpy _tcscpy
#define wxStrcspn _tcscspn
#define wxStrdup _tcsdup
#define wxStrdupW _wcsdup // notice the 'W'!
#define wxStrftime _tcsftime
#define wxStricmp _tcsicmp
#define wxStrnicmp _tcsnicmp
@@ -459,9 +466,7 @@
#define wxStrcoll strcoll
#define wxStrcpy strcpy
#define wxStrcspn strcspn
#if !defined(__MWERKS__) || !defined(__WXMAC__)
#define wxStrdup strdup
#endif
// wxStricmp and wxStrnicmp are defined below
#define wxStrlen_ strlen // used in wxStrlen inline function
#define wxStrncat strncat
@@ -572,6 +577,17 @@ inline bool wxIsEmpty(const wxChar *p) { return !p || !*p; }
// safe version of strlen() (returns 0 if passed NULL pointer)
inline size_t wxStrlen(const wxChar *psz) { return psz ? wxStrlen_(psz) : 0; }
// each of strdup() and wcsdup() may or may not be available but we need both
// of them anyhow for wx/buffer.h so we define the missing one(s) in
// wxchar.cpp and so we should always have both wxStrdupA and wxStrdupW
// defined -- if this is somehow not the case in some situations, please
// correct that and not the lines here
#if wxUSE_UNICODE
#define wxStrdup wxStrdupW
#else
#define wxStrdup wxStrdupA
#endif
WXDLLEXPORT bool wxOKlibc(); // for internal use
// ----------------------------------------------------------------------------
@@ -736,8 +752,12 @@ WXDLLEXPORT bool wxOKlibc(); // for internal use
WXDLLEXPORT size_t wxStrxfrm(wxChar *dest, const wxChar *src, size_t n);
#endif // wxNEED_WX_STRING_H
#ifndef wxStrdup
WXDLLEXPORT wxChar * wxStrdup(const wxChar *psz);
#ifndef wxStrdupA
WXDLLEXPORT char *wxStrdupA(const char *psz);
#endif
#ifndef wxStrdupW
WXDLLEXPORT wchar_t *wxStrdupW(const wchar_t *pwz);
#endif
#ifndef wxStricmp