mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-26 09:30:24 +00:00
parent
8ab601f9e1
commit
173effc88d
Notes:
sideshowbarker
2024-07-19 05:01:37 +09:00
Author: https://github.com/alimpfard Commit: https://github.com/SerenityOS/serenity/commit/173effc88d8 Pull-request: https://github.com/SerenityOS/serenity/pull/2738 Issue: https://github.com/SerenityOS/serenity/issues/2732
1 changed files with 26 additions and 19 deletions
|
@ -631,28 +631,35 @@ void Shell::cache_path()
|
|||
if (!cached_path.is_empty())
|
||||
cached_path.clear_with_capacity();
|
||||
|
||||
String path = getenv("PATH");
|
||||
if (path.is_empty())
|
||||
return;
|
||||
|
||||
auto directories = path.split(':');
|
||||
for (const auto& directory : directories) {
|
||||
Core::DirIterator programs(directory.characters(), Core::DirIterator::SkipDots);
|
||||
while (programs.has_next()) {
|
||||
auto program = programs.next_path();
|
||||
String program_path = String::format("%s/%s", directory.characters(), program.characters());
|
||||
auto escaped_name = escape_token(program);
|
||||
if (cached_path.contains_slow(escaped_name))
|
||||
continue;
|
||||
if (access(program_path.characters(), X_OK) == 0)
|
||||
cached_path.append(escaped_name);
|
||||
}
|
||||
}
|
||||
|
||||
// add shell builtins to the cache
|
||||
// Add shell builtins to the cache.
|
||||
for (const auto& builtin_name : builtin_names)
|
||||
cached_path.append(escape_token(builtin_name));
|
||||
|
||||
// Add aliases to the cache.
|
||||
for (const auto& alias : m_aliases) {
|
||||
auto name = escape_token(alias.key);
|
||||
if (cached_path.contains_slow(name))
|
||||
continue;
|
||||
cached_path.append(name);
|
||||
}
|
||||
|
||||
String path = getenv("PATH");
|
||||
if (!path.is_empty()) {
|
||||
auto directories = path.split(':');
|
||||
for (const auto& directory : directories) {
|
||||
Core::DirIterator programs(directory.characters(), Core::DirIterator::SkipDots);
|
||||
while (programs.has_next()) {
|
||||
auto program = programs.next_path();
|
||||
String program_path = String::format("%s/%s", directory.characters(), program.characters());
|
||||
auto escaped_name = escape_token(program);
|
||||
if (cached_path.contains_slow(escaped_name))
|
||||
continue;
|
||||
if (access(program_path.characters(), X_OK) == 0)
|
||||
cached_path.append(escaped_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
quick_sort(cached_path);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue