1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:08:12 +00:00

LibCore+LibFileSystem: Move resolve_executable_from_environment to Core

This commit is contained in:
Ben Wiederhake 2023-05-29 22:15:13 +02:00 committed by Jelle Raaijmakers
parent 00bd443d1c
commit 26efdf9d4f
3 changed files with 39 additions and 26 deletions

View file

@ -361,32 +361,8 @@ ErrorOr<void> link_file(StringView destination_path, StringView source_path)
ErrorOr<String> resolve_executable_from_environment(StringView filename, int flags)
{
if (filename.is_empty())
return Error::from_errno(ENOENT);
// Paths that aren't just a file name generally count as already resolved.
if (filename.contains('/')) {
TRY(Core::System::access(filename, X_OK, flags));
return TRY(String::from_utf8(filename));
}
auto const* path_str = ::getenv("PATH");
StringView path;
if (path_str)
path = { path_str, strlen(path_str) };
if (path.is_empty())
path = DEFAULT_PATH_SV;
auto directories = path.split_view(':');
for (auto directory : directories) {
auto file = TRY(String::formatted("{}/{}", directory, filename));
if (!Core::System::access(file, X_OK, flags).is_error())
return file;
}
return Error::from_errno(ENOENT);
// FIXME: Callers should Call Core::System::resolve_executable_from_environment instead of FileSystem::resolve_executable_from_environment.
return Core::System::resolve_executable_from_environment(filename, flags);
}
bool looks_like_shared_library(StringView path)