Shell: Do not strip glob base path when it was explicitly requested

Fixes #3544.
This commit is contained in:
AnotherTest 2020-09-19 02:18:44 +04:30 committed by Andreas Kling
parent eb24603da0
commit 4c2f86c24f
Notes: sideshowbarker 2024-07-19 02:20:53 +09:00

View file

@ -195,8 +195,11 @@ Vector<StringView> Shell::split_path(const StringView& path)
Vector<String> Shell::expand_globs(const StringView& path, StringView base)
{
if (path.starts_with('/'))
auto explicitly_set_base = false;
if (path.starts_with('/')) {
base = "/";
explicitly_set_base = true;
}
auto parts = split_path(path);
String base_string = base;
struct stat statbuf;
@ -214,6 +217,8 @@ Vector<String> Shell::expand_globs(const StringView& path, StringView base)
auto results = expand_globs(move(parts), resolved_base);
if (explicitly_set_base && base == "/")
resolved_base = resolved_base.substring_view(1, resolved_base.length() - 1);
for (auto& entry : results) {
entry = entry.substring(resolved_base.length(), entry.length() - resolved_base.length());
if (entry.is_empty())