| Index: third_party/lzma/v4_65/files/CPP/Windows/FileFind.cpp
|
| diff --git a/third_party/lzma/v4_65/files/CPP/Windows/FileFind.cpp b/third_party/lzma/v4_65/files/CPP/Windows/FileFind.cpp
|
| deleted file mode 100644
|
| index f33ec96162d79ab357cf56bec5996a1bee436d37..0000000000000000000000000000000000000000
|
| --- a/third_party/lzma/v4_65/files/CPP/Windows/FileFind.cpp
|
| +++ /dev/null
|
| @@ -1,402 +0,0 @@
|
| -// Windows/FileFind.cpp
|
| -
|
| -#include "StdAfx.h"
|
| -
|
| -#include "FileFind.h"
|
| -#ifndef _UNICODE
|
| -#include "../Common/StringConvert.h"
|
| -#endif
|
| -
|
| -#ifndef _UNICODE
|
| -extern bool g_IsNT;
|
| -#endif
|
| -
|
| -namespace NWindows {
|
| -namespace NFile {
|
| -
|
| -#if defined(WIN_LONG_PATH) && defined(_UNICODE)
|
| -#define WIN_LONG_PATH2
|
| -#endif
|
| -
|
| -bool GetLongPath(LPCWSTR fileName, UString &res);
|
| -
|
| -namespace NFind {
|
| -
|
| -static const TCHAR kDot = TEXT('.');
|
| -
|
| -bool CFileInfo::IsDots() const
|
| -{
|
| - if (!IsDir() || Name.IsEmpty())
|
| - return false;
|
| - if (Name[0] != kDot)
|
| - return false;
|
| - return Name.Length() == 1 || (Name[1] == kDot && Name.Length() == 2);
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -bool CFileInfoW::IsDots() const
|
| -{
|
| - if (!IsDir() || Name.IsEmpty())
|
| - return false;
|
| - if (Name[0] != kDot)
|
| - return false;
|
| - return Name.Length() == 1 || (Name[1] == kDot && Name.Length() == 2);
|
| -}
|
| -#endif
|
| -
|
| -static void ConvertWIN32_FIND_DATA_To_FileInfo(const WIN32_FIND_DATA &fd, CFileInfo &fi)
|
| -{
|
| - fi.Attrib = fd.dwFileAttributes;
|
| - fi.CTime = fd.ftCreationTime;
|
| - fi.ATime = fd.ftLastAccessTime;
|
| - fi.MTime = fd.ftLastWriteTime;
|
| - fi.Size = (((UInt64)fd.nFileSizeHigh) << 32) + fd.nFileSizeLow;
|
| - fi.Name = fd.cFileName;
|
| - #ifndef _WIN32_WCE
|
| - fi.ReparseTag = fd.dwReserved0;
|
| - #else
|
| - fi.ObjectID = fd.dwOID;
|
| - #endif
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -
|
| -static inline UINT GetCurrentCodePage() { return ::AreFileApisANSI() ? CP_ACP : CP_OEMCP; }
|
| -
|
| -static void ConvertWIN32_FIND_DATA_To_FileInfo(const WIN32_FIND_DATAW &fd, CFileInfoW &fi)
|
| -{
|
| - fi.Attrib = fd.dwFileAttributes;
|
| - fi.CTime = fd.ftCreationTime;
|
| - fi.ATime = fd.ftLastAccessTime;
|
| - fi.MTime = fd.ftLastWriteTime;
|
| - fi.Size = (((UInt64)fd.nFileSizeHigh) << 32) + fd.nFileSizeLow;
|
| - fi.Name = fd.cFileName;
|
| - #ifndef _WIN32_WCE
|
| - fi.ReparseTag = fd.dwReserved0;
|
| - #else
|
| - fi.ObjectID = fd.dwOID;
|
| - #endif
|
| -}
|
| -
|
| -static void ConvertWIN32_FIND_DATA_To_FileInfo(const WIN32_FIND_DATA &fd, CFileInfoW &fi)
|
| -{
|
| - fi.Attrib = fd.dwFileAttributes;
|
| - fi.CTime = fd.ftCreationTime;
|
| - fi.ATime = fd.ftLastAccessTime;
|
| - fi.MTime = fd.ftLastWriteTime;
|
| - fi.Size = (((UInt64)fd.nFileSizeHigh) << 32) + fd.nFileSizeLow;
|
| - fi.Name = GetUnicodeString(fd.cFileName, GetCurrentCodePage());
|
| - #ifndef _WIN32_WCE
|
| - fi.ReparseTag = fd.dwReserved0;
|
| - #else
|
| - fi.ObjectID = fd.dwOID;
|
| - #endif
|
| -}
|
| -#endif
|
| -
|
| -////////////////////////////////
|
| -// CFindFile
|
| -
|
| -bool CFindFile::Close()
|
| -{
|
| - if (_handle == INVALID_HANDLE_VALUE)
|
| - return true;
|
| - if (!::FindClose(_handle))
|
| - return false;
|
| - _handle = INVALID_HANDLE_VALUE;
|
| - return true;
|
| -}
|
| -
|
| -
|
| -bool CFindFile::FindFirst(LPCTSTR wildcard, CFileInfo &fileInfo)
|
| -{
|
| - if (!Close())
|
| - return false;
|
| - WIN32_FIND_DATA fd;
|
| - _handle = ::FindFirstFile(wildcard, &fd);
|
| - #ifdef WIN_LONG_PATH2
|
| - if (_handle == INVALID_HANDLE_VALUE)
|
| - {
|
| - UString longPath;
|
| - if (GetLongPath(wildcard, longPath))
|
| - _handle = ::FindFirstFileW(longPath, &fd);
|
| - }
|
| - #endif
|
| - if (_handle == INVALID_HANDLE_VALUE)
|
| - return false;
|
| - ConvertWIN32_FIND_DATA_To_FileInfo(fd, fileInfo);
|
| - return true;
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -bool CFindFile::FindFirst(LPCWSTR wildcard, CFileInfoW &fileInfo)
|
| -{
|
| - if (!Close())
|
| - return false;
|
| - if (g_IsNT)
|
| - {
|
| - WIN32_FIND_DATAW fd;
|
| - _handle = ::FindFirstFileW(wildcard, &fd);
|
| - #ifdef WIN_LONG_PATH
|
| - if (_handle == INVALID_HANDLE_VALUE)
|
| - {
|
| - UString longPath;
|
| - if (GetLongPath(wildcard, longPath))
|
| - _handle = ::FindFirstFileW(longPath, &fd);
|
| - }
|
| - #endif
|
| - if (_handle != INVALID_HANDLE_VALUE)
|
| - ConvertWIN32_FIND_DATA_To_FileInfo(fd, fileInfo);
|
| - }
|
| - else
|
| - {
|
| - WIN32_FIND_DATAA fd;
|
| - _handle = ::FindFirstFileA(UnicodeStringToMultiByte(wildcard,
|
| - GetCurrentCodePage()), &fd);
|
| - if (_handle != INVALID_HANDLE_VALUE)
|
| - ConvertWIN32_FIND_DATA_To_FileInfo(fd, fileInfo);
|
| - }
|
| - return (_handle != INVALID_HANDLE_VALUE);
|
| -}
|
| -#endif
|
| -
|
| -bool CFindFile::FindNext(CFileInfo &fileInfo)
|
| -{
|
| - WIN32_FIND_DATA fd;
|
| - bool result = BOOLToBool(::FindNextFile(_handle, &fd));
|
| - if (result)
|
| - ConvertWIN32_FIND_DATA_To_FileInfo(fd, fileInfo);
|
| - return result;
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -bool CFindFile::FindNext(CFileInfoW &fileInfo)
|
| -{
|
| - if (g_IsNT)
|
| - {
|
| - WIN32_FIND_DATAW fd;
|
| - if (!::FindNextFileW(_handle, &fd))
|
| - return false;
|
| - ConvertWIN32_FIND_DATA_To_FileInfo(fd, fileInfo);
|
| - }
|
| - else
|
| - {
|
| - WIN32_FIND_DATAA fd;
|
| - if (!::FindNextFileA(_handle, &fd))
|
| - return false;
|
| - ConvertWIN32_FIND_DATA_To_FileInfo(fd, fileInfo);
|
| - }
|
| - return true;
|
| -}
|
| -#endif
|
| -
|
| -bool FindFile(LPCTSTR wildcard, CFileInfo &fileInfo)
|
| -{
|
| - CFindFile finder;
|
| - return finder.FindFirst(wildcard, fileInfo);
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -bool FindFile(LPCWSTR wildcard, CFileInfoW &fileInfo)
|
| -{
|
| - CFindFile finder;
|
| - return finder.FindFirst(wildcard, fileInfo);
|
| -}
|
| -#endif
|
| -
|
| -bool DoesFileExist(LPCTSTR name)
|
| -{
|
| - CFileInfo fileInfo;
|
| - return FindFile(name, fileInfo);
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -bool DoesFileExist(LPCWSTR name)
|
| -{
|
| - CFileInfoW fileInfo;
|
| - return FindFile(name, fileInfo);
|
| -}
|
| -#endif
|
| -
|
| -/////////////////////////////////////
|
| -// CEnumerator
|
| -
|
| -bool CEnumerator::NextAny(CFileInfo &fileInfo)
|
| -{
|
| - if (_findFile.IsHandleAllocated())
|
| - return _findFile.FindNext(fileInfo);
|
| - else
|
| - return _findFile.FindFirst(_wildcard, fileInfo);
|
| -}
|
| -
|
| -bool CEnumerator::Next(CFileInfo &fileInfo)
|
| -{
|
| - for (;;)
|
| - {
|
| - if (!NextAny(fileInfo))
|
| - return false;
|
| - if (!fileInfo.IsDots())
|
| - return true;
|
| - }
|
| -}
|
| -
|
| -bool CEnumerator::Next(CFileInfo &fileInfo, bool &found)
|
| -{
|
| - if (Next(fileInfo))
|
| - {
|
| - found = true;
|
| - return true;
|
| - }
|
| - found = false;
|
| - return (::GetLastError() == ERROR_NO_MORE_FILES);
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -bool CEnumeratorW::NextAny(CFileInfoW &fileInfo)
|
| -{
|
| - if (_findFile.IsHandleAllocated())
|
| - return _findFile.FindNext(fileInfo);
|
| - else
|
| - return _findFile.FindFirst(_wildcard, fileInfo);
|
| -}
|
| -
|
| -bool CEnumeratorW::Next(CFileInfoW &fileInfo)
|
| -{
|
| - for (;;)
|
| - {
|
| - if (!NextAny(fileInfo))
|
| - return false;
|
| - if (!fileInfo.IsDots())
|
| - return true;
|
| - }
|
| -}
|
| -
|
| -bool CEnumeratorW::Next(CFileInfoW &fileInfo, bool &found)
|
| -{
|
| - if (Next(fileInfo))
|
| - {
|
| - found = true;
|
| - return true;
|
| - }
|
| - found = false;
|
| - return (::GetLastError() == ERROR_NO_MORE_FILES);
|
| -}
|
| -
|
| -#endif
|
| -
|
| -////////////////////////////////
|
| -// CFindChangeNotification
|
| -// FindFirstChangeNotification can return 0. MSDN doesn't tell about it.
|
| -
|
| -bool CFindChangeNotification::Close()
|
| -{
|
| - if (!IsHandleAllocated())
|
| - return true;
|
| - if (!::FindCloseChangeNotification(_handle))
|
| - return false;
|
| - _handle = INVALID_HANDLE_VALUE;
|
| - return true;
|
| -}
|
| -
|
| -HANDLE CFindChangeNotification::FindFirst(LPCTSTR pathName, bool watchSubtree, DWORD notifyFilter)
|
| -{
|
| - _handle = ::FindFirstChangeNotification(pathName, BoolToBOOL(watchSubtree), notifyFilter);
|
| - #ifdef WIN_LONG_PATH2
|
| - if (!IsHandleAllocated())
|
| - {
|
| - UString longPath;
|
| - if (GetLongPath(pathName, longPath))
|
| - _handle = ::FindFirstChangeNotificationW(longPath, BoolToBOOL(watchSubtree), notifyFilter);
|
| - }
|
| - #endif
|
| - return _handle;
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -HANDLE CFindChangeNotification::FindFirst(LPCWSTR pathName, bool watchSubtree, DWORD notifyFilter)
|
| -{
|
| - if (!g_IsNT)
|
| - return FindFirst(UnicodeStringToMultiByte(pathName, GetCurrentCodePage()), watchSubtree, notifyFilter);
|
| - _handle = ::FindFirstChangeNotificationW(pathName, BoolToBOOL(watchSubtree), notifyFilter);
|
| - #ifdef WIN_LONG_PATH
|
| - if (!IsHandleAllocated())
|
| - {
|
| - UString longPath;
|
| - if (GetLongPath(pathName, longPath))
|
| - _handle = ::FindFirstChangeNotificationW(longPath, BoolToBOOL(watchSubtree), notifyFilter);
|
| - }
|
| - #endif
|
| - return _handle;
|
| -}
|
| -#endif
|
| -
|
| -#ifndef _WIN32_WCE
|
| -bool MyGetLogicalDriveStrings(CSysStringVector &driveStrings)
|
| -{
|
| - driveStrings.Clear();
|
| - UINT32 size = GetLogicalDriveStrings(0, NULL);
|
| - if (size == 0)
|
| - return false;
|
| - CSysString buffer;
|
| - UINT32 newSize = GetLogicalDriveStrings(size, buffer.GetBuffer(size));
|
| - if (newSize == 0)
|
| - return false;
|
| - if (newSize > size)
|
| - return false;
|
| - CSysString string;
|
| - for (UINT32 i = 0; i < newSize; i++)
|
| - {
|
| - TCHAR c = buffer[i];
|
| - if (c == TEXT('\0'))
|
| - {
|
| - driveStrings.Add(string);
|
| - string.Empty();
|
| - }
|
| - else
|
| - string += c;
|
| - }
|
| - if (!string.IsEmpty())
|
| - return false;
|
| - return true;
|
| -}
|
| -
|
| -#ifndef _UNICODE
|
| -bool MyGetLogicalDriveStrings(UStringVector &driveStrings)
|
| -{
|
| - driveStrings.Clear();
|
| - if (g_IsNT)
|
| - {
|
| - UINT32 size = GetLogicalDriveStringsW(0, NULL);
|
| - if (size == 0)
|
| - return false;
|
| - UString buffer;
|
| - UINT32 newSize = GetLogicalDriveStringsW(size, buffer.GetBuffer(size));
|
| - if (newSize == 0)
|
| - return false;
|
| - if (newSize > size)
|
| - return false;
|
| - UString string;
|
| - for (UINT32 i = 0; i < newSize; i++)
|
| - {
|
| - WCHAR c = buffer[i];
|
| - if (c == L'\0')
|
| - {
|
| - driveStrings.Add(string);
|
| - string.Empty();
|
| - }
|
| - else
|
| - string += c;
|
| - }
|
| - return string.IsEmpty();
|
| - }
|
| - CSysStringVector driveStringsA;
|
| - bool res = MyGetLogicalDriveStrings(driveStringsA);
|
| - for (int i = 0; i < driveStringsA.Size(); i++)
|
| - driveStrings.Add(GetUnicodeString(driveStringsA[i]));
|
| - return res;
|
| -}
|
| -#endif
|
| -
|
| -#endif
|
| -
|
| -}}}
|
|
|