Fixes
This commit is contained in:
@@ -74,6 +74,8 @@ std::vector<SString> CSiaApi::_CSiaFileTree::QueryDirectories(SString rootFolder
|
||||
auto fileList = GetFileList();
|
||||
CSiaFileCollection col;
|
||||
rootFolder.Replace("/", "\\");
|
||||
if (!rootFolder.BeginsWith('\\'))
|
||||
rootFolder = '\\' + rootFolder;
|
||||
|
||||
std::vector<SString> ret;
|
||||
std::for_each(fileList->begin(), fileList->end(), [&](const CSiaFilePtr& v)
|
||||
@@ -81,7 +83,7 @@ std::vector<SString> CSiaApi::_CSiaFileTree::QueryDirectories(SString rootFolder
|
||||
SString path = ("\\" + FilePath(v->GetSiaPath()).RemoveFileName()).Replace("/", "\\");
|
||||
if (path.BeginsWith(rootFolder))
|
||||
{
|
||||
path = (rootFolder == "\\") ? path.SubString(1) : path.SubString(1, rootFolder.Length());
|
||||
path = (rootFolder == "\\") ? path.SubString(1) : path.SubString(rootFolder.Length() + 1);
|
||||
if (path.Length())
|
||||
{
|
||||
auto splitPaths = path.Split('\\');
|
||||
|
@@ -1471,6 +1471,13 @@ private:
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (createDisposition == OPEN_EXISTING)
|
||||
{
|
||||
if (!cacheFilePath.IsDirectory())
|
||||
{
|
||||
ret = STATUS_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == STATUS_SUCCESS)
|
||||
{
|
||||
@@ -1715,8 +1722,8 @@ private:
|
||||
findFile.Append(fileName);
|
||||
if (dokanFileInfo->IsDirectory)
|
||||
{
|
||||
siaDirQuery = siaFileQuery;
|
||||
siaFileQuery += L"/*.*";
|
||||
siaDirQuery = findFile;
|
||||
findFile.Append("*");
|
||||
}
|
||||
}
|
||||
@@ -2272,7 +2279,7 @@ private:
|
||||
// if open with FILE_FLAG_DELETE_ON_CLOSE
|
||||
if (dokanFileInfo->IsDirectory)
|
||||
{
|
||||
filePath.RemoveDirectory();
|
||||
while (!filePath.RemoveDirectory());
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2337,13 +2344,10 @@ private:
|
||||
}
|
||||
}
|
||||
while ((ret == STATUS_SUCCESS) && (::FindNextFile(findHandle, &findData) != 0));
|
||||
if (ret != STATUS_DIRECTORY_NOT_EMPTY)
|
||||
DWORD error = ::GetLastError();
|
||||
if ((ret != STATUS_DIRECTORY_NOT_EMPTY) && (error != ERROR_NO_MORE_FILES))
|
||||
{
|
||||
DWORD error = ::GetLastError();
|
||||
if (error != ERROR_NO_MORE_FILES)
|
||||
{
|
||||
ret = DokanNtStatusFromWin32(error);
|
||||
}
|
||||
ret = DokanNtStatusFromWin32(error);
|
||||
}
|
||||
|
||||
::FindClose(findHandle);
|
||||
|
Reference in New Issue
Block a user