X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/43b2d5e7c3b3e3d6b245e279dde73d96e0075911..f050bdbd5b69ed1a6752102f0c4c13bc7cb4ed3c:/src/common/filename.cpp diff --git a/src/common/filename.cpp b/src/common/filename.cpp index 0d3e6229f2..09b03c6251 100644 --- a/src/common/filename.cpp +++ b/src/common/filename.cpp @@ -144,6 +144,8 @@ extern const wxULongLong wxInvalidSize = (unsigned)-1; #endif // wxUSE_LONGLONG +namespace +{ // ---------------------------------------------------------------------------- // private classes @@ -230,13 +232,13 @@ static void ConvertFileTimeToWx(wxDateTime *dt, const FILETIME &ft) FILETIME ftLocal; if ( !::FileTimeToLocalFileTime(&ftcopy, &ftLocal) ) { - wxLogLastError(_T("FileTimeToLocalFileTime")); + wxLogLastError(wxT("FileTimeToLocalFileTime")); } SYSTEMTIME st; if ( !::FileTimeToSystemTime(&ftLocal, &st) ) { - wxLogLastError(_T("FileTimeToSystemTime")); + wxLogLastError(wxT("FileTimeToSystemTime")); } dt->Set(st.wDay, wxDateTime::Month(st.wMonth - 1), st.wYear, @@ -257,12 +259,12 @@ static void ConvertWxToFileTime(FILETIME *ft, const wxDateTime& dt) FILETIME ftLocal; if ( !::SystemTimeToFileTime(&st, &ftLocal) ) { - wxLogLastError(_T("SystemTimeToFileTime")); + wxLogLastError(wxT("SystemTimeToFileTime")); } if ( !::LocalFileTimeToFileTime(&ftLocal, ft) ) { - wxLogLastError(_T("LocalFileTimeToFileTime")); + wxLogLastError(wxT("LocalFileTimeToFileTime")); } } @@ -295,17 +297,26 @@ static wxString wxGetVolumeString(const wxString& volume, wxPathFormat format) return path; } +// return true if the character is a DOS path separator i.e. either a slash or +// a backslash +inline bool IsDOSPathSep(wxUniChar ch) +{ + return ch == wxFILE_SEP_PATH_DOS || ch == wxFILE_SEP_PATH_UNIX; +} + // return true if the format used is the DOS/Windows one and the string looks // like a UNC path static bool IsUNCPath(const wxString& path, wxPathFormat format) { return format == wxPATH_DOS && path.length() >= 4 && // "\\a" can't be a UNC path - path[0u] == wxFILE_SEP_PATH_DOS && - path[1u] == wxFILE_SEP_PATH_DOS && - path[2u] != wxFILE_SEP_PATH_DOS; + IsDOSPathSep(path[0u]) && + IsDOSPathSep(path[1u]) && + !IsDOSPathSep(path[2u]); } +} // anonymous namespace + // ============================================================================ // implementation // ============================================================================ @@ -412,7 +423,7 @@ void wxFileName::SetPath( const wxString& pathOrig, wxPathFormat format ) break; default: - wxFAIL_MSG( _T("Unknown path format") ); + wxFAIL_MSG( wxT("Unknown path format") ); // !! Fall through !! case wxPATH_UNIX: @@ -482,13 +493,15 @@ void wxFileName::Assign(const wxString& fullpathOrig, SplitPath(fullname, &volDummy, &pathDummy, &name, &ext, &hasExt, format); wxASSERT_MSG( volDummy.empty() && pathDummy.empty(), - _T("the file name shouldn't contain the path") ); + wxT("the file name shouldn't contain the path") ); SplitPath(fullpath, &volume, &path, &nameDummy, &extDummy, format); - wxASSERT_MSG( nameDummy.empty() && extDummy.empty(), - _T("the path shouldn't contain file name nor extension") ); - +#ifndef __VMS + // This test makes no sense on an OpenVMS system. + wxASSERT_MSG( nameDummy.empty() && extDummy.empty(), + wxT("the path shouldn't contain file name nor extension") ); +#endif Assign(volume, path, name, ext, hasExt, format); } @@ -679,7 +692,7 @@ static bool wxTempOpen(wxFFile *file, const wxString& path, bool *deleteOnClose) { #ifndef wx_fdopen *deleteOnClose = false; - return file->Open(path, _T("w+b")); + return file->Open(path, wxT("w+b")); #else // wx_fdopen int fd = wxTempOpen(path, deleteOnClose); if (fd == -1) @@ -747,7 +760,7 @@ static wxString wxCreateTempImpl( if ( !::GetTempFileName(dir.fn_str(), name.fn_str(), 0, wxStringBuffer(path, MAX_PATH + 1)) ) { - wxLogLastError(_T("GetTempFileName")); + wxLogLastError(wxT("GetTempFileName")); path.clear(); } @@ -765,7 +778,7 @@ static wxString wxCreateTempImpl( #if defined(HAVE_MKSTEMP) // scratch space for mkstemp() - path += _T("XXXXXX"); + path += wxT("XXXXXX"); // we need to copy the path to the buffer in which mkstemp() can modify it wxCharBuffer buf(path.fn_str()); @@ -797,7 +810,7 @@ static wxString wxCreateTempImpl( #ifdef wx_fdopen ffileTemp->Attach(wx_fdopen(fdTemp, "r+b")); #else - ffileTemp->Open(path, _T("r+b")); + ffileTemp->Open(path, wxT("r+b")); close(fdTemp); #endif } @@ -812,7 +825,7 @@ static wxString wxCreateTempImpl( #ifdef HAVE_MKTEMP // same as above - path += _T("XXXXXX"); + path += wxT("XXXXXX"); wxCharBuffer buf = wxConvFile.cWX2MB( path ); if ( !mktemp( (char*)(const char*) buf ) ) @@ -835,7 +848,7 @@ static wxString wxCreateTempImpl( for ( size_t n = 0; n < numTries; n++ ) { // 3 hex digits is enough for numTries == 1000 < 4096 - pathTry = path + wxString::Format(_T("%.03x"), (unsigned int) n); + pathTry = path + wxString::Format(wxT("%.03x"), (unsigned int) n); if ( !wxFileName::FileExists(pathTry) ) { break; @@ -1056,7 +1069,7 @@ wxString wxFileName::GetTempDir() #elif defined(__WINDOWS__) && !defined(__WXMICROWIN__) if ( !::GetTempPath(MAX_PATH, wxStringBuffer(dir, MAX_PATH + 1)) ) { - wxLogLastError(_T("GetTempPath")); + wxLogLastError(wxT("GetTempPath")); } #elif defined(__WXMAC__) && wxOSX_USE_CARBON dir = wxMacFindFolder(short(kOnSystemDisk), kTemporaryFolderType, kCreateFolder); @@ -1135,7 +1148,7 @@ bool wxFileName::Rmdir(const wxString& dir, int flags) wxString path(dir); if ( path.Last() == wxFILE_SEP_PATH ) path.RemoveLast(); - path += _T('\0'); + path += wxT('\0'); SHFILEOPSTRUCT fileop; wxZeroMemory(fileop); @@ -1152,7 +1165,7 @@ bool wxFileName::Rmdir(const wxString& dir, int flags) { // SHFileOperation may return non-Win32 error codes, so the error // message can be incorrect - wxLogApiError(_T("SHFileOperation"), ret); + wxLogApiError(wxT("SHFileOperation"), ret); return false; } @@ -1245,7 +1258,7 @@ bool wxFileName::Normalize(int flags, if ( !dirs.IsEmpty() ) { wxString dir = dirs[0u]; - if ( !dir.empty() && dir[0u] == _T('~') ) + if ( !dir.empty() && dir[0u] == wxT('~') ) { // to make the path absolute use the home directory curDir.AssignDir(wxGetUserHome(dir.c_str() + 1)); @@ -1499,7 +1512,7 @@ bool wxFileName::IsAbsolute(wxPathFormat format) const { wxString dir = m_dirs[0u]; - if (!dir.empty() && dir[0u] == _T('~')) + if (!dir.empty() && dir[0u] == wxT('~')) return true; } } @@ -1563,7 +1576,7 @@ bool wxFileName::MakeRelativeTo(const wxString& pathBase, wxPathFormat format) // files) if ( m_dirs.IsEmpty() && IsDir() ) { - m_dirs.Add(_T('.')); + m_dirs.Add(wxT('.')); } } @@ -1670,7 +1683,7 @@ wxString wxFileName::GetPathSeparators(wxPathFormat format) break; default: - wxFAIL_MSG( _T("Unknown wxPATH_XXX style") ); + wxFAIL_MSG( wxT("Unknown wxPATH_XXX style") ); // fall through case wxPATH_UNIX: @@ -1696,7 +1709,7 @@ wxString wxFileName::GetPathTerminators(wxPathFormat format) // under VMS the end of the path is ']', not the path separator used to // separate the components - return format == wxPATH_VMS ? wxString(_T(']')) : GetPathSeparators(format); + return format == wxPATH_VMS ? wxString(wxT(']')) : GetPathSeparators(format); } /* static */ @@ -1704,7 +1717,7 @@ bool wxFileName::IsPathSeparator(wxChar ch, wxPathFormat format) { // wxString::Find() doesn't work as expected with NUL - it will always find // it, so test for it separately - return ch != _T('\0') && GetPathSeparators(format).Find(ch) != wxNOT_FOUND; + return ch != wxT('\0') && GetPathSeparators(format).Find(ch) != wxNOT_FOUND; } // ---------------------------------------------------------------------------- @@ -1715,7 +1728,7 @@ bool wxFileName::IsPathSeparator(wxChar ch, wxPathFormat format) { if ( dir.empty() ) { - wxFAIL_MSG( _T("empty directory passed to wxFileName::InsertDir()") ); + wxFAIL_MSG( wxT("empty directory passed to wxFileName::InsertDir()") ); return false; } @@ -1725,7 +1738,7 @@ bool wxFileName::IsPathSeparator(wxChar ch, wxPathFormat format) { if ( dir[n] == GetVolumeSeparator() || IsPathSeparator(dir[n]) ) { - wxFAIL_MSG( _T("invalid directory component in wxFileName") ); + wxFAIL_MSG( wxT("invalid directory component in wxFileName") ); return false; } @@ -1940,13 +1953,13 @@ wxString wxFileName::GetLongPath() const { s_triedToLoad = true; - wxDynamicLibrary dllKernel(_T("kernel32")); + wxDynamicLibrary dllKernel(wxT("kernel32")); - const wxChar* GetLongPathName = _T("GetLongPathName") + const wxChar* GetLongPathName = wxT("GetLongPathName") #if wxUSE_UNICODE - _T("W"); + wxT("W"); #else // ANSI - _T("A"); + wxT("A"); #endif // Unicode/ANSI if ( dllKernel.HasSymbol(GetLongPathName) ) @@ -2151,7 +2164,7 @@ void wxFileName::SplitPath(const wxString& fullpathWithVolume, if ( (posLastDot != wxString::npos) && (posLastDot == 0 || IsPathSeparator(fullpath[posLastDot - 1]) || - (format == wxPATH_VMS && fullpath[posLastDot - 1] == _T(']'))) ) + (format == wxPATH_VMS && fullpath[posLastDot - 1] == wxT(']'))) ) { // dot may be (and commonly -- at least under Unix -- is) the first // character of the filename, don't treat the entire filename as @@ -2193,7 +2206,7 @@ void wxFileName::SplitPath(const wxString& fullpathWithVolume, // special VMS hack: remove the initial bracket if ( format == wxPATH_VMS ) { - if ( (*pstrPath)[0u] == _T('[') ) + if ( (*pstrPath)[0u] == wxT('[') ) pstrPath->erase(0, 1); } }