mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2024-11-23 14:25:37 +00:00
FileSystem: Add SanitizeFilename() overload for std::string
This commit is contained in:
parent
d97a107b62
commit
322f1492b2
|
@ -169,7 +169,7 @@ void CanonicalizePath(std::string& path, bool OSPath /*= true*/)
|
||||||
static inline bool FileSystemCharacterIsSane(char c, bool StripSlashes)
|
static inline bool FileSystemCharacterIsSane(char c, bool StripSlashes)
|
||||||
{
|
{
|
||||||
if (!(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z') && !(c >= '0' && c <= '9') && c != ' ' && c != ' ' &&
|
if (!(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z') && !(c >= '0' && c <= '9') && c != ' ' && c != ' ' &&
|
||||||
c != '_' && c != '-')
|
c != '_' && c != '-' && c != '.')
|
||||||
{
|
{
|
||||||
if (!StripSlashes && (c == '/' || c == '\\'))
|
if (!StripSlashes && (c == '/' || c == '\\'))
|
||||||
return true;
|
return true;
|
||||||
|
@ -239,6 +239,16 @@ void SanitizeFileName(String& Destination, bool StripSlashes /* = true */)
|
||||||
return SanitizeFileName(Destination, Destination, StripSlashes);
|
return SanitizeFileName(Destination, Destination, StripSlashes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SanitizeFileName(std::string& Destination, bool StripSlashes /* = true*/)
|
||||||
|
{
|
||||||
|
const std::size_t len = Destination.length();
|
||||||
|
for (std::size_t i = 0; i < len; i++)
|
||||||
|
{
|
||||||
|
if (!FileSystemCharacterIsSane(Destination[i], StripSlashes))
|
||||||
|
Destination[i] = '_';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool IsAbsolutePath(const std::string_view& path)
|
bool IsAbsolutePath(const std::string_view& path)
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
|
|
|
@ -138,6 +138,7 @@ String BuildPathRelativeToFile(const char* CurrentFileName, const char* NewFileN
|
||||||
void SanitizeFileName(char* Destination, u32 cbDestination, const char* FileName, bool StripSlashes = true);
|
void SanitizeFileName(char* Destination, u32 cbDestination, const char* FileName, bool StripSlashes = true);
|
||||||
void SanitizeFileName(String& Destination, const char* FileName, bool StripSlashes = true);
|
void SanitizeFileName(String& Destination, const char* FileName, bool StripSlashes = true);
|
||||||
void SanitizeFileName(String& Destination, bool StripSlashes = true);
|
void SanitizeFileName(String& Destination, bool StripSlashes = true);
|
||||||
|
void SanitizeFileName(std::string& Destination, bool StripSlashes = true);
|
||||||
|
|
||||||
/// Returns true if the specified path is an absolute path (C:\Path on Windows or /path on Unix).
|
/// Returns true if the specified path is an absolute path (C:\Path on Windows or /path on Unix).
|
||||||
bool IsAbsolutePath(const std::string_view& path);
|
bool IsAbsolutePath(const std::string_view& path);
|
||||||
|
|
Loading…
Reference in a new issue