That should do it

This commit is contained in:
goeiecool9999 2022-09-07 21:49:50 +02:00 committed by klaas
parent b1b6a5d8c3
commit 37cfd78afd
9 changed files with 22 additions and 29 deletions

View file

@ -1,16 +1,13 @@
#include "FSPath.h"
#ifdef BOOST_OS_LINUX
FSPath& FSPath::operator/ (const FSPath & other)
{
*this /= other;
return *this;
}
#ifndef BOOST_OS_UNIX
FSPath& FSPath::operator/= (const FSPath & other)
{
fs::path::operator/=(other);
}
#else
FSPath& FSPath::operator/= (const FSPath & other)
{
// todo: implement caching.
@ -20,9 +17,9 @@ FSPath& FSPath::operator/= (const FSPath & other)
fs::path correctedPath = empty() ? other.root_path() : *this;
// helper function to convert a path's alphabet characters to lowercase.
auto static lowercase_path = [](fs::path const & path)
auto static lowercase_path = [](FSPath const & path)
{
std::wstring string = path.wstring();
std::string string = path.string();
for (auto& i : string)
{
i = std::isalpha(i) ? std::tolower(i) : i;
@ -47,19 +44,13 @@ FSPath& FSPath::operator/= (const FSPath & other)
}
// if we can't iterate directory, just copy the original case.
if(listErr)
if(listErr || !found)
{
correctedPath /= it;
found = true;
}
if (!found)
break;
}
if (found)
*this = correctedPath;
*this = FSPath(correctedPath);
return *this;
}

View file

@ -6,8 +6,9 @@ class FSPath : public fs::path {
FSPath() = default;
template <class T>
FSPath(const T & other) : fs::path(other) {};
FSPath(const T& other) : fs::path(other) {};
#ifdef BOOST_OS_UNIX
template <class T>
static FSPath Convert(const T& input)
{
@ -15,4 +16,5 @@ class FSPath : public fs::path {
}
FSPath& operator/= (const FSPath & other);
FSPath& operator/ (const FSPath & other);
#endif
};

View file

@ -219,9 +219,9 @@ FSCVirtualFile* FSCVirtualFile_Host::OpenFile(const FSPath& path, FSC_ACCESS_FLA
/* Device implementation */
class fscDeviceHostFSC : public fscDeviceC {
public:
class fscDeviceHostFSC : public fscDeviceC
{
public:
FSCVirtualFile* fscDeviceOpenByPath(std::wstring_view path, FSC_ACCESS_FLAG accessFlags, void* ctx, sint32* fscStatus) override
{
*fscStatus = FSC_STATUS_OK;