1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 08:47:17 +01:00

Add function to normalize path separators.

This commit is contained in:
Sandu Liviu Catalin 2019-08-14 04:33:18 +03:00
parent 012ab7ac0a
commit 98fab7a780
2 changed files with 32 additions and 0 deletions

View File

@ -1711,6 +1711,32 @@ SysPath SysPath::MakeDynamic(CSStr path)
return SysPath(path, Style::Dynamic);
}
// ------------------------------------------------------------------------------------------------
String SysPath::NormalizePath(SQInteger s, StackStrF & val)
{
// Have we failed to retrieve the string?
if (SQ_FAILED(val.Proc(true)))
{
STHROWLASTF("Invalid string");
}
// Is the string empty?
else if (!val.mLen)
{
return String();
}
// Turn it into a string that we can edit
String str(val.mPtr, val.mLen);
// Replace all occurences of the specified character
for (String::reference c : str)
{
if (c == '/' || c == '\\')
{
c = static_cast< String::value_type >(s);
}
}
// Return the new string
return str;
}
// ================================================================================================
void Register_SysPath(HSQUIRRELVM vm)
{
@ -1794,6 +1820,7 @@ void Register_SysPath(HSQUIRRELVM vm)
.StaticFunc(_SC("Native"), &SysPath::MakeNative)
.StaticFunc(_SC("Guess"), &SysPath::MakeGuess)
.StaticFunc(_SC("Dynamic"), &SysPath::MakeDynamic)
.StaticFmtFunc(_SC("Normalize"), &SysPath::NormalizePath)
// Static Overloads
.StaticOverload< SysPath (*)(CSStr) >(_SC("ForDir"), &SysPath::ForDirectory)
.StaticOverload< SysPath (*)(CSStr, Int32) >(_SC("ForDir"), &SysPath::ForDirectory)

View File

@ -751,6 +751,11 @@ public:
* Creates a path in dynamic format from a string.
*/
static SysPath MakeDynamic(CSStr path);
/* --------------------------------------------------------------------------------------------
* Makes sure all separators from a path are the same.
*/
static String NormalizePath(SQInteger s, StackStrF & val);
};
} // Namespace:: SqMod