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