X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d6f2a8911e509fd9e61f881cc881a97f5aa05ae8..235a997f9aea9d80774e296d314682e99e0c46f1:/include/wx/filefn.h diff --git a/include/wx/filefn.h b/include/wx/filefn.h index c47f40a2ca..ad0333d669 100644 --- a/include/wx/filefn.h +++ b/include/wx/filefn.h @@ -22,22 +22,9 @@ #include #endif -#ifdef __WXWINCE__ -// Nothing -#elif !defined(__MWERKS__) +#ifndef __WXWINCE__ #include #include -#else - #ifdef __MACH__ - #include - #include - #include - #include - #else - #include - #include - #include - #endif #endif #ifdef __OS2__ @@ -58,7 +45,7 @@ #endif #if defined(__WINDOWS__) && !defined(__WXMICROWIN__) -#if !defined( __GNUWIN32__ ) && !defined( __MWERKS__ ) && !defined(__SALFORDC__) && !defined(__WXWINCE__) && !defined(__CYGWIN__) +#if !defined( __GNUWIN32__ ) && !defined(__WXWINCE__) && !defined(__CYGWIN__) #include #include #include @@ -83,14 +70,10 @@ #include #endif -#ifdef __SALFORDC__ - #include - #include -#endif - #ifndef __WXWINCE__ #include // O_RDONLY &c #endif + // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- @@ -110,12 +93,10 @@ #endif #endif -#if (defined(__VISUALC__) && !defined(__WXWINCE__)) || ( defined(__MWERKS__) && defined( __INTEL__) ) +#if defined(__VISUALC__) && !defined(__WXWINCE__) typedef _off_t off_t; #elif defined(__SYMANTEC__) typedef long off_t; -#elif defined(__MWERKS__) && !defined(__INTEL__) && !defined(__MACH__) - typedef long off_t; #endif enum wxSeekMode @@ -133,6 +114,51 @@ enum wxFileKind wxFILE_KIND_PIPE // a pipe }; +// we redefine these constants here because S_IREAD &c are _not_ standard +// however, we do assume that the values correspond to the Unix umask bits +enum wxPosixPermissions +{ + // standard Posix names for these permission flags: + wxS_IRUSR = 00400, + wxS_IWUSR = 00200, + wxS_IXUSR = 00100, + + wxS_IRGRP = 00040, + wxS_IWGRP = 00020, + wxS_IXGRP = 00010, + + wxS_IROTH = 00004, + wxS_IWOTH = 00002, + wxS_IXOTH = 00001, + + // longer but more readable synonyms for the constants above: + wxPOSIX_USER_READ = wxS_IRUSR, + wxPOSIX_USER_WRITE = wxS_IWUSR, + wxPOSIX_USER_EXECUTE = wxS_IXUSR, + + wxPOSIX_GROUP_READ = wxS_IRGRP, + wxPOSIX_GROUP_WRITE = wxS_IWGRP, + wxPOSIX_GROUP_EXECUTE = wxS_IXGRP, + + wxPOSIX_OTHERS_READ = wxS_IROTH, + wxPOSIX_OTHERS_WRITE = wxS_IWOTH, + wxPOSIX_OTHERS_EXECUTE = wxS_IXOTH, + + // default mode for the new files: allow reading/writing them to everybody but + // the effective file mode will be set after anding this value with umask and + // so won't include wxS_IW{GRP,OTH} for the default 022 umask value + wxS_DEFAULT = (wxPOSIX_USER_READ | wxPOSIX_USER_WRITE | \ + wxPOSIX_GROUP_READ | wxPOSIX_GROUP_WRITE | \ + wxPOSIX_OTHERS_READ | wxPOSIX_OTHERS_WRITE), + + // default mode for the new directories (see wxFileName::Mkdir): allow + // reading/writing/executing them to everybody, but just like wxS_DEFAULT + // the effective directory mode will be set after anding this value with umask + wxS_DIR_DEFAULT = (wxPOSIX_USER_READ | wxPOSIX_USER_WRITE | wxPOSIX_USER_EXECUTE | \ + wxPOSIX_GROUP_READ | wxPOSIX_GROUP_WRITE | wxPOSIX_GROUP_EXECUTE | \ + wxPOSIX_OTHERS_READ | wxPOSIX_OTHERS_WRITE | wxPOSIX_OTHERS_EXECUTE) +}; + // ---------------------------------------------------------------------------- // declare our versions of low level file functions: some compilers prepend // underscores to the usual names, some also have Unicode versions of them @@ -142,7 +168,7 @@ enum wxFileKind // Implemented in filefnwce.cpp #if defined( __WXWINCE__) typedef __int64 wxFileOffset; - #define wxFileOffsetFmtSpec _("I64") + #define wxFileOffsetFmtSpec wxT("I64") WXDLLIMPEXP_BASE int wxCRT_Open(const wxChar *filename, int oflag, int WXUNUSED(pmode)); WXDLLIMPEXP_BASE int wxCRT_Access(const wxChar *name, int WXUNUSED(how)); WXDLLIMPEXP_BASE int wxClose(int fd); @@ -159,31 +185,45 @@ enum wxFileKind #define wxCRT_RmDir _wrmdir #define wxCRT_Stat _wstat #define wxStructStat struct _stat -#elif defined(__WXMSW__) && !defined(__WXPALMOS__) && \ +#elif (defined(__WINDOWS__) || defined(__OS2__)) && \ ( \ defined(__VISUALC__) || \ + defined(__MINGW64__) || \ (defined(__MINGW32__) && !defined(__WINE__) && \ wxCHECK_W32API_VERSION(0, 5)) || \ - defined(__MWERKS__) || \ defined(__DMC__) || \ defined(__WATCOMC__) || \ defined(__BORLANDC__) \ ) + // temporary defines just used immediately below #undef wxHAS_HUGE_FILES + #undef wxHAS_HUGE_STDIO_FILES // detect compilers which have support for huge files #if defined(__VISUALC__) #define wxHAS_HUGE_FILES 1 - #elif defined(__MINGW32__) + #elif defined(__MINGW32__) || defined(__MINGW64__) #define wxHAS_HUGE_FILES 1 #elif defined(_LARGE_FILES) #define wxHAS_HUGE_FILES 1 #endif - // other Windows compilers (DMC, Watcom, Metrowerks and Borland) don't have - // huge file support (or at least not all functions needed for it by wx) - // currently + // detect compilers which have support for huge stdio files + #if wxCHECK_VISUALC_VERSION(8) + #define wxHAS_HUGE_STDIO_FILES + #define wxFseek _fseeki64 + #define wxFtell _ftelli64 + #elif wxCHECK_MINGW32_VERSION(3, 5) // mingw-runtime version (not gcc) + #define wxHAS_HUGE_STDIO_FILES + #define wxFseek fseeko64 + #define wxFtell ftello64 + #endif + + // other Windows compilers (DMC, Watcom, and Borland) don't have huge file + // support (or at least not all functions needed for it by wx) currently + + // types #ifdef wxHAS_HUGE_FILES typedef wxLongLong_t wxFileOffset; @@ -192,6 +232,46 @@ enum wxFileKind typedef off_t wxFileOffset; #endif + // at least Borland 5.5 doesn't like "struct ::stat" so don't use the scope + // resolution operator present in wxPOSIX_IDENT for it + #ifdef __BORLANDC__ + #define wxPOSIX_STRUCT(s) struct s + #else + #define wxPOSIX_STRUCT(s) struct wxPOSIX_IDENT(s) + #endif + + // Notice that Watcom is the only compiler to have a wide char + // version of struct stat as well as a wide char stat function variant. + // This was dropped since OW 1.4 "for consistency across platforms". + // + // Borland is also special in that it uses _stat with Unicode functions + // (for MSVC compatibility?) but stat with ANSI ones + #ifdef __BORLANDC__ + #if wxHAS_HUGE_FILES + #define wxStructStat struct stati64 + #else + #if wxUSE_UNICODE + #define wxStructStat struct _stat + #else + #define wxStructStat struct stat + #endif + #endif + #else // !__BORLANDC__ + #ifdef wxHAS_HUGE_FILES + #if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4) + #define wxStructStat struct _wstati64 + #else + #define wxStructStat struct _stati64 + #endif + #else + #if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4) + #define wxStructStat struct _wstat + #else + #define wxStructStat struct _stat + #endif + #endif + #endif // __BORLANDC__/!__BORLANDC__ + // functions @@ -201,44 +281,31 @@ enum wxFileKind // to avoid using them as they're not present in earlier versions and // always using the native functions spelling is easier than testing for // the versions - #if defined(__BORLANDC__) || defined(__DMC__) || defined(__WATCOMC__) + #if defined(__BORLANDC__) || defined(__DMC__) || defined(__WATCOMC__) || defined(__MINGW64__) #define wxPOSIX_IDENT(func) ::func #else // by default assume MSVC-compatible names #define wxPOSIX_IDENT(func) _ ## func #define wxHAS_UNDERSCORES_IN_POSIX_IDENTS #endif - // at least Borland 5.5 doesn't like "struct ::stat" so don't use the scope - // resolution operator present in wxPOSIX_IDENT for it - #ifdef __BORLANDC__ - #define wxPOSIX_STRUCT(s) struct s - #else - #define wxPOSIX_STRUCT(s) struct wxPOSIX_IDENT(s) - #endif - // first functions not working with strings, i.e. without ANSI/Unicode // complications #define wxClose wxPOSIX_IDENT(close) - #if defined(__MWERKS__) - #if __MSL__ >= 0x6000 - #define wxRead(fd, buf, nCount) _read(fd, (void *)buf, nCount) - #define wxWrite(fd, buf, nCount) _write(fd, (void *)buf, nCount) - #else - #define wxRead(fd, buf, nCount)\ - _read(fd, (const char *)buf, nCount) - #define wxWrite(fd, buf, nCount)\ - _write(fd, (const char *)buf, nCount) - #endif - #else // __MWERKS__ - #define wxRead wxPOSIX_IDENT(read) - #define wxWrite wxPOSIX_IDENT(write) - #endif + #define wxRead wxPOSIX_IDENT(read) + #define wxWrite wxPOSIX_IDENT(write) #ifdef wxHAS_HUGE_FILES - #define wxSeek wxPOSIX_IDENT(lseeki64) - #define wxLseek wxPOSIX_IDENT(lseeki64) - #define wxTell wxPOSIX_IDENT(telli64) + #ifndef __MINGW64__ + #define wxSeek wxPOSIX_IDENT(lseeki64) + #define wxLseek wxPOSIX_IDENT(lseeki64) + #define wxTell wxPOSIX_IDENT(telli64) + #else + // unfortunately, mingw-W64 is somewhat inconsistent... + #define wxSeek _lseeki64 + #define wxLseek _lseeki64 + #define wxTell _telli64 + #endif #else // !wxHAS_HUGE_FILES #define wxSeek wxPOSIX_IDENT(lseek) #define wxLseek wxPOSIX_IDENT(lseek) @@ -246,106 +313,100 @@ enum wxFileKind #endif // wxHAS_HUGE_FILES/!wxHAS_HUGE_FILES #ifndef __WATCOMC__ - #if !defined(__BORLANDC__) || (__BORLANDC__ > 0x540) - // NB: this one is not POSIX and always has the underscore - #define wxFsync _commit - - #define HAVE_FSYNC - #endif // BORLANDC + #if !defined(__BORLANDC__) || (__BORLANDC__ > 0x540) + // NB: this one is not POSIX and always has the underscore + #define wxFsync _commit + + // could be already defined by configure (Cygwin) + #ifndef HAVE_FSYNC + #define HAVE_FSYNC + #endif + #endif // BORLANDC #endif #define wxEof wxPOSIX_IDENT(eof) // then the functions taking strings + + // first the ANSI versions + #define wxCRT_OpenA wxPOSIX_IDENT(open) + #define wxCRT_AccessA wxPOSIX_IDENT(access) + #define wxCRT_MkDirA wxPOSIX_IDENT(mkdir) + #define wxCRT_RmDirA wxPOSIX_IDENT(rmdir) + #ifdef wxHAS_HUGE_FILES + // MinGW-64 provides underscore-less versions of all file functions + // except for this one. + #ifdef __MINGW64__ + #define wxCRT_StatA _stati64 + #else + #define wxCRT_StatA wxPOSIX_IDENT(stati64) + #endif + #else + // Unfortunately Watcom is not consistent + #if defined(__OS2__) && defined(__WATCOMC__) + #define wxCRT_StatA _stat + #else + #define wxCRT_StatA wxPOSIX_IDENT(stat) + #endif + #endif + + // then wide char ones #if wxUSE_UNICODE - #if wxUSE_UNICODE_MSLU + // special workaround for buggy wopen() in bcc 5.5 + #if defined(__BORLANDC__) && \ + (__BORLANDC__ >= 0x550 && __BORLANDC__ <= 0x551) + WXDLLIMPEXP_BASE int wxCRT_OpenW(const wxChar *pathname, + int flags, mode_t mode); + #else + #define wxCRT_OpenW _wopen + #endif + + #define wxCRT_AccessW _waccess + #define wxCRT_MkDirW _wmkdir + #define wxCRT_RmDirW _wrmdir + #ifdef wxHAS_HUGE_FILES + #define wxCRT_StatW _wstati64 + #else + #define wxCRT_StatW _wstat + #endif + #endif // wxUSE_UNICODE + + + // finally the default char-type versions + #if wxUSE_UNICODE + #if wxUSE_UNICODE_MSLU || defined(__WX_STRICT_ANSI_GCC__) // implement the missing file functions in Win9x ourselves - #if defined( __VISUALC__ ) \ - || ( defined(__MINGW32__) && wxCHECK_W32API_VERSION( 0, 5 ) ) \ - || ( defined(__MWERKS__) && defined(__WXMSW__) ) \ - || ( defined(__BORLANDC__) && (__BORLANDC__ > 0x460) ) \ - || defined(__DMC__) - - WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name, - int flags, int mode); - WXDLLIMPEXP_BASE int wxMSLU__waccess(const wxChar *name, - int mode); - WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wxChar *name); - WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wxChar *name); - - WXDLLIMPEXP_BASE int - wxMSLU__wstat(const wxChar *name, wxPOSIX_STRUCT(stat) *buffer); - WXDLLIMPEXP_BASE int - wxMSLU__wstati64(const wxChar *name, - wxPOSIX_STRUCT(stati64) *buffer); - #endif // Windows compilers with MSLU support + WXDLLIMPEXP_BASE int wxMSLU__wopen(const wxChar *name, + int flags, int mode); + WXDLLIMPEXP_BASE int wxMSLU__waccess(const wxChar *name, + int mode); + WXDLLIMPEXP_BASE int wxMSLU__wmkdir(const wxChar *name); + WXDLLIMPEXP_BASE int wxMSLU__wrmdir(const wxChar *name); + + WXDLLIMPEXP_BASE int + wxMSLU__wstat(const wxChar *name, wxStructStat *buffer); #define wxCRT_Open wxMSLU__wopen #define wxCRT_Access wxMSLU__waccess #define wxCRT_MkDir wxMSLU__wmkdir #define wxCRT_RmDir wxMSLU__wrmdir - #ifdef wxHAS_HUGE_FILES - #define wxCRT_Stat wxMSLU__wstati64 - #else - #define wxCRT_Stat wxMSLU__wstat - #endif + #define wxCRT_Stat wxMSLU__wstat #else // !wxUSE_UNICODE_MSLU - #ifdef __BORLANDC__ - #if __BORLANDC__ >= 0x550 && __BORLANDC__ <= 0x551 - WXDLLIMPEXP_BASE int wxCRT_Open(const wxChar *pathname, - int flags, mode_t mode); - #else - #define wxCRT_Open _wopen - #endif - #define wxCRT_Access _waccess - #define wxCRT_MkDir _wmkdir - #define wxCRT_RmDir _wrmdir - #ifdef wxHAS_HUGE_FILES - #define wxCRT_Stat _wstati64 - #else - #define wxCRT_Stat _wstat - #endif - #else - #define wxCRT_Open _wopen - #define wxCRT_Access _waccess - #define wxCRT_MkDir _wmkdir - #define wxCRT_RmDir _wrmdir - #ifdef wxHAS_HUGE_FILES - #define wxCRT_Stat _wstati64 - #else - #define wxCRT_Stat _wstat - #endif - #endif + #define wxCRT_Open wxCRT_OpenW + #define wxCRT_Access wxCRT_AccessW + #define wxCRT_MkDir wxCRT_MkDirW + #define wxCRT_RmDir wxCRT_RmDirW + #define wxCRT_Stat wxCRT_StatW #endif // wxUSE_UNICODE_MSLU/!wxUSE_UNICODE_MSLU #else // !wxUSE_UNICODE - #define wxCRT_Open wxPOSIX_IDENT(open) - #define wxCRT_Access wxPOSIX_IDENT(access) - #define wxCRT_MkDir wxPOSIX_IDENT(mkdir) - #define wxCRT_RmDir wxPOSIX_IDENT(rmdir) - #ifdef wxHAS_HUGE_FILES - #define wxCRT_Stat wxPOSIX_IDENT(stati64) - #else - #define wxCRT_Stat wxPOSIX_IDENT(stat) - #endif + #define wxCRT_Open wxCRT_OpenA + #define wxCRT_Access wxCRT_AccessA + #define wxCRT_MkDir wxCRT_MkDirA + #define wxCRT_RmDir wxCRT_RmDirA + #define wxCRT_Stat wxCRT_StatA #endif // wxUSE_UNICODE/!wxUSE_UNICODE - // Types: Notice that Watcom is the only compiler to have a wide char - // version of struct stat as well as a wide char stat function variant. - // This was droped since OW 1.4 "for consistency across platforms". - #ifdef wxHAS_HUGE_FILES - #if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4) - #define wxStructStat struct _wstati64 - #else - #define wxStructStat struct _stati64 - #endif - #else - #if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4) - #define wxStructStat struct _wstat - #else - #define wxStructStat struct _stat - #endif - #endif // constants (unless already defined by the user code) #ifdef wxHAS_UNDERSCORES_IN_POSIX_IDENTS @@ -366,32 +427,39 @@ enum wxFileKind #endif // wxHAS_UNDERSCORES_IN_POSIX_IDENTS #ifdef wxHAS_HUGE_FILES - // wxFile is present and supports large files. Currently wxFFile - // doesn't have large file support with any Windows compiler (even - // Win64 ones). + // wxFile is present and supports large files. #if wxUSE_FILE #define wxHAS_LARGE_FILES #endif + // wxFFile is present and supports large files + #if wxUSE_FFILE && defined wxHAS_HUGE_STDIO_FILES + #define wxHAS_LARGE_FFILES + #endif #endif - // it's a private define, undefine it so that nobody gets tempted to use it + // private defines, undefine so that nobody gets tempted to use #undef wxHAS_HUGE_FILES + #undef wxHAS_HUGE_STDIO_FILES #else // Unix or Windows using unknown compiler, assume POSIX supported typedef off_t wxFileOffset; - #ifdef _LARGE_FILES + #ifdef HAVE_LARGEFILE_SUPPORT #define wxFileOffsetFmtSpec wxLongLongFmtSpec wxCOMPILE_TIME_ASSERT( sizeof(off_t) == sizeof(wxLongLong_t), BadFileSizeType ); // wxFile is present and supports large files - #ifdef wxUSE_FILE + #if wxUSE_FILE #define wxHAS_LARGE_FILES #endif // wxFFile is present and supports large files - #if SIZEOF_LONG == 8 || defined HAVE_FSEEKO + #if wxUSE_FFILE && (SIZEOF_LONG == 8 || defined HAVE_FSEEKO) #define wxHAS_LARGE_FFILES #endif + #ifdef HAVE_FSEEKO + #define wxFseek fseeko + #define wxFtell ftello + #endif #else - #define wxFileOffsetFmtSpec _T("") + #define wxFileOffsetFmtSpec wxT("") #endif // functions #define wxClose close @@ -423,6 +491,15 @@ enum wxFileKind #define wxCRT_Lstat wxCRT_Stat #endif +// define wxFseek/wxFtell to large file versions if available (done above) or +// to fseek/ftell if not, to save ifdefs in using code +#ifndef wxFseek + #define wxFseek fseek +#endif +#ifndef wxFtell + #define wxFtell ftell +#endif + inline int wxAccess(const wxString& path, mode_t mode) { return wxCRT_Access(path.fn_str(), mode); } inline int wxOpen(const wxString& path, int flags, mode_t mode) @@ -436,7 +513,8 @@ inline int wxLstat(const wxString& path, wxStructStat *buf) { return wxCRT_Lstat(path.fn_str(), buf); } inline int wxRmDir(const wxString& path) { return wxCRT_RmDir(path.fn_str()); } -#ifdef __WINDOWS__ +#if (defined(__WINDOWS__) && !defined(__CYGWIN__)) \ + || (defined(__OS2__) && defined(__WATCOMC__)) inline int wxMkDir(const wxString& path, mode_t WXUNUSED(mode) = 0) { return wxCRT_MkDir(path.fn_str()); } #else @@ -478,41 +556,52 @@ WXDLLIMPEXP_BASE wxString wxFileNameFromPath(const wxString& path); // Get directory WXDLLIMPEXP_BASE wxString wxPathOnly(const wxString& path); -WXDLLIMPEXP_BASE void wxDos2UnixFilename(char *s); -WXDLLIMPEXP_BASE void wxDos2UnixFilename(wchar_t *s); +// all deprecated functions below are deprecated in favour of wxFileName's methods +#if WXWIN_COMPATIBILITY_2_8 -WXDLLIMPEXP_BASE void wxUnix2DosFilename(char *s); -WXDLLIMPEXP_BASE void wxUnix2DosFilename(wchar_t *s); +wxDEPRECATED( WXDLLIMPEXP_BASE void wxDos2UnixFilename(char *s) ); +wxDEPRECATED( WXDLLIMPEXP_BASE void wxDos2UnixFilename(wchar_t *s) ); + +wxDEPRECATED_BUT_USED_INTERNALLY( + WXDLLIMPEXP_BASE void wxUnix2DosFilename(char *s) ); +wxDEPRECATED_BUT_USED_INTERNALLY( + WXDLLIMPEXP_BASE void wxUnix2DosFilename(wchar_t *s) ); // Strip the extension, in situ -WXDLLIMPEXP_BASE void wxStripExtension(char *buffer); -WXDLLIMPEXP_BASE void wxStripExtension(wchar_t *buffer); -WXDLLIMPEXP_BASE void wxStripExtension(wxString& buffer); +// Deprecated in favour of wxFileName::StripExtension() but notice that their +// behaviour is slightly different, see the manual +wxDEPRECATED( WXDLLIMPEXP_BASE void wxStripExtension(char *buffer) ); +wxDEPRECATED( WXDLLIMPEXP_BASE void wxStripExtension(wchar_t *buffer) ); +wxDEPRECATED( WXDLLIMPEXP_BASE void wxStripExtension(wxString& buffer) ); // Get a temporary filename -WXDLLIMPEXP_BASE wxChar* wxGetTempFileName(const wxString& prefix, wxChar *buf = (wxChar *) NULL); -WXDLLIMPEXP_BASE bool wxGetTempFileName(const wxString& prefix, wxString& buf); +wxDEPRECATED_BUT_USED_INTERNALLY( WXDLLIMPEXP_BASE wxChar* wxGetTempFileName(const wxString& prefix, wxChar *buf = NULL) ); +wxDEPRECATED_BUT_USED_INTERNALLY( WXDLLIMPEXP_BASE bool wxGetTempFileName(const wxString& prefix, wxString& buf) ); // Expand file name (~/ and ${OPENWINHOME}/ stuff) -WXDLLIMPEXP_BASE char* wxExpandPath(char *dest, const wxString& path); -WXDLLIMPEXP_BASE wchar_t* wxExpandPath(wchar_t *dest, const wxString& path); -// FIXME-UTF8: add some wxString version +wxDEPRECATED_BUT_USED_INTERNALLY( WXDLLIMPEXP_BASE char* wxExpandPath(char *dest, const wxString& path) ); +wxDEPRECATED_BUT_USED_INTERNALLY( WXDLLIMPEXP_BASE wchar_t* wxExpandPath(wchar_t *dest, const wxString& path) ); + // DEPRECATED: use wxFileName::Normalize(wxPATH_NORM_ENV_VARS) // Contract w.r.t environment ( -> ${OPENWINHOME}/lib) // and make (if under the home tree) relative to home // [caller must copy-- volatile] +wxDEPRECATED( WXDLLIMPEXP_BASE wxChar* wxContractPath(const wxString& filename, const wxString& envname = wxEmptyString, - const wxString& user = wxEmptyString); + const wxString& user = wxEmptyString) ); + // DEPRECATED: use wxFileName::ReplaceEnvVariable and wxFileName::ReplaceHomeDir // Destructive removal of /./ and /../ stuff -// FIXME-UTF8: deprecate these two (and similar) -WXDLLIMPEXP_BASE char* wxRealPath(char *path); -WXDLLIMPEXP_BASE wchar_t* wxRealPath(wchar_t *path); -WXDLLIMPEXP_BASE wxString wxRealPath(const wxString& path); +wxDEPRECATED_BUT_USED_INTERNALLY( WXDLLIMPEXP_BASE char* wxRealPath(char *path) ); +wxDEPRECATED_BUT_USED_INTERNALLY( WXDLLIMPEXP_BASE wchar_t* wxRealPath(wchar_t *path) ); +wxDEPRECATED_BUT_USED_INTERNALLY( WXDLLIMPEXP_BASE wxString wxRealPath(const wxString& path) ); + // DEPRECATED: use wxFileName::Normalize instead // Allocate a copy of the full absolute path -WXDLLIMPEXP_BASE wxChar* wxCopyAbsolutePath(const wxString& path); +wxDEPRECATED( WXDLLIMPEXP_BASE wxChar* wxCopyAbsolutePath(const wxString& path) ); + // DEPRECATED: use wxFileName::MakeAbsolute instead +#endif // Get first file name matching given wild card. // Flags are reserved for future use. @@ -548,7 +637,7 @@ WXDLLIMPEXP_BASE bool wxRenameFile(const wxString& file1, const wxString& file2, // copies into buf. // IMPORTANT NOTE getcwd is know not to work under some releases // of Win32s 1.3, according to MS release notes! -wxDEPRECATED( WXDLLIMPEXP_BASE wxChar* wxGetWorkingDirectory(wxChar *buf = (wxChar *) NULL, int sz = 1000) ); +wxDEPRECATED( WXDLLIMPEXP_BASE wxChar* wxGetWorkingDirectory(wxChar *buf = NULL, int sz = 1000) ); // new and preferred version of wxGetWorkingDirectory // NB: can't have the same name because of overloading ambiguity #endif // WXWIN_COMPATIBILITY_2_6 @@ -558,7 +647,7 @@ WXDLLIMPEXP_BASE wxString wxGetCwd(); WXDLLIMPEXP_BASE bool wxSetWorkingDirectory(const wxString& d); // Make directory -WXDLLIMPEXP_BASE bool wxMkdir(const wxString& dir, int perm = 0777); +WXDLLIMPEXP_BASE bool wxMkdir(const wxString& dir, int perm = wxS_DIR_DEFAULT); // Remove directory. Flags reserved for future use. WXDLLIMPEXP_BASE bool wxRmdir(const wxString& dir, int flags = 0); @@ -640,12 +729,15 @@ inline bool wxIsPathSeparator(wxChar c) // does the string ends with path separator? WXDLLIMPEXP_BASE bool wxEndsWithPathSeparator(const wxString& filename); +#if WXWIN_COMPATIBILITY_2_8 // split the full path into path (including drive for DOS), name and extension // (understands both '/' and '\\') -WXDLLIMPEXP_BASE void wxSplitPath(const wxString& fileName, - wxString *pstrPath, - wxString *pstrName, - wxString *pstrExt); +// Deprecated in favour of wxFileName::SplitPath +wxDEPRECATED( WXDLLIMPEXP_BASE void wxSplitPath(const wxString& fileName, + wxString *pstrPath, + wxString *pstrName, + wxString *pstrExt) ); +#endif // find a file in a list of directories, returns false if not found WXDLLIMPEXP_BASE bool wxFindFileInPath(wxString *pStr, const wxString& szPath, const wxString& szFile);