mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-17 20:52:37 +01:00
Fixed FilePath behavior with trailing slash.
This commit is contained in:
@@ -61,6 +61,8 @@ namespace bx
|
||||
dotdot = size;
|
||||
}
|
||||
|
||||
bool trailingSlash = false;
|
||||
|
||||
while (idx < num && err.isOk() )
|
||||
{
|
||||
switch (_src[idx])
|
||||
@@ -68,6 +70,7 @@ namespace bx
|
||||
case '/':
|
||||
case '\\':
|
||||
++idx;
|
||||
trailingSlash = idx == num;
|
||||
break;
|
||||
|
||||
case '.':
|
||||
@@ -129,6 +132,11 @@ namespace bx
|
||||
size += write(&writer, '.', &err);
|
||||
}
|
||||
|
||||
if (trailingSlash)
|
||||
{
|
||||
size += write(&writer, '/', &err);
|
||||
}
|
||||
|
||||
write(&writer, '\0', &err);
|
||||
|
||||
return size;
|
||||
@@ -326,6 +334,8 @@ namespace bx
|
||||
{
|
||||
return StringView(fileName.getPtr(), ext);
|
||||
}
|
||||
|
||||
return fileName;
|
||||
}
|
||||
|
||||
return StringView();
|
||||
|
||||
@@ -26,21 +26,21 @@ FilePathTest s_filePathTest[] =
|
||||
{"/abc", "/abc"},
|
||||
{"/", "/"},
|
||||
|
||||
// Remove trailing slash
|
||||
{"abc/", "abc"},
|
||||
{"abc/def/", "abc/def"},
|
||||
{"a/b/c/", "a/b/c"},
|
||||
{"./", "."},
|
||||
{"../", ".."},
|
||||
{"../../", "../.."},
|
||||
{"/abc/", "/abc"},
|
||||
// Do not remove trailing slash
|
||||
{"abc/", "abc/"},
|
||||
{"abc/def/", "abc/def/"},
|
||||
{"a/b/c/", "a/b/c/"},
|
||||
{"./", "./"},
|
||||
{"../", "../"},
|
||||
{"../../", "../../"},
|
||||
{"/abc/", "/abc/"},
|
||||
|
||||
// Remove doubled slash
|
||||
{"abc//def//ghi", "abc/def/ghi"},
|
||||
{"//abc", "/abc"},
|
||||
{"///abc", "/abc"},
|
||||
{"//abc//", "/abc"},
|
||||
{"abc//", "abc"},
|
||||
{"//abc//", "/abc/"},
|
||||
{"abc//", "abc/"},
|
||||
|
||||
// Remove . elements
|
||||
{"abc/./def", "abc/def"},
|
||||
@@ -84,6 +84,8 @@ static const FilePathSplit s_filePathSplit[] =
|
||||
{ "tmp/archive.tar.gz", false, "tmp/", "archive.tar.gz", "archive", ".tar.gz" },
|
||||
{ "/tmp/archive.tar.gz", true, "/tmp/", "archive.tar.gz", "archive", ".tar.gz" },
|
||||
{ "d:/tmp/archive.tar.gz", true, "D:/tmp/", "archive.tar.gz", "archive", ".tar.gz" },
|
||||
{ "/tmp/abv/gd", true, "/tmp/abv/", "gd", "gd", "" },
|
||||
{ "/tmp/abv/gd/", true, "/tmp/abv/gd/", "", "", "" },
|
||||
};
|
||||
|
||||
TEST_CASE("FilePath", "")
|
||||
|
||||
Reference in New Issue
Block a user