From d67ff448e2bbddd1c4b5b77b8fe96defb7cbb761 Mon Sep 17 00:00:00 2001 From: Dario Date: Mon, 16 Dec 2024 15:20:46 -0300 Subject: [PATCH] FS fixes. --- UnleashedRecomp/kernel/io/file_system.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/UnleashedRecomp/kernel/io/file_system.cpp b/UnleashedRecomp/kernel/io/file_system.cpp index 415ae4df..e8ea62fd 100644 --- a/UnleashedRecomp/kernel/io/file_system.cpp +++ b/UnleashedRecomp/kernel/io/file_system.cpp @@ -14,6 +14,7 @@ struct FileHandle : KernelObject struct FindHandle : KernelObject { + std::error_code ec; std::filesystem::path searchPath; std::filesystem::directory_iterator iterator; @@ -25,7 +26,7 @@ struct FindHandle : KernelObject lpFindFileData->dwFileAttributes = ByteSwap(FILE_ATTRIBUTE_NORMAL); std::u8string pathU8Str = iterator->path().lexically_relative(searchPath).u8string(); - uint64_t fileSize = iterator->file_size(); + uint64_t fileSize = iterator->file_size(ec); strncpy(lpFindFileData->cFileName, (const char *)(pathU8Str.c_str()), sizeof(lpFindFileData->cFileName)); lpFindFileData->nFileSizeLow = ByteSwap(uint32_t(fileSize >> 32U)); lpFindFileData->nFileSizeHigh = ByteSwap(uint32_t(fileSize)); @@ -233,11 +234,11 @@ FindHandle* XFindFirstFileA(const char* lpFileName, WIN32_FIND_DATAA* lpFindFile return (FindHandle*)GUEST_INVALID_HANDLE_VALUE; std::filesystem::path dirPath; - if (strstr(transformedPath, "\\*") == (&transformedPath[transformedPathLength - 2])) + if (strstr(transformedPath, "\\*") == (&transformedPath[transformedPathLength - 2]) || strstr(transformedPath, "/*") == (&transformedPath[transformedPathLength - 2])) { dirPath = std::u8string_view((const char8_t*)(transformedPath), transformedPathLength - 2); } - else if (strstr(transformedPath, "\\*.*") == (&transformedPath[transformedPathLength - 4])) + else if (strstr(transformedPath, "\\*.*") == (&transformedPath[transformedPathLength - 4]) || strstr(transformedPath, "/*.*") == (&transformedPath[transformedPathLength - 4])) { dirPath = std::u8string_view((const char8_t *)(transformedPath), transformedPathLength - 4); }