mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:47:44 +00:00
LibCore: Avoid DeprecatedFile for resolve_executable_from_environment
This commit is contained in:
parent
f20d04726a
commit
800a0092ca
1 changed files with 13 additions and 12 deletions
|
@ -1263,20 +1263,20 @@ ErrorOr<void> exec(StringView filename, ReadonlySpan<StringView> arguments, Sear
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
|
|
||||||
DeprecatedString exec_filename;
|
StringView exec_filename;
|
||||||
|
|
||||||
if (search_in_path == SearchInPath::Yes) {
|
if (search_in_path == SearchInPath::Yes) {
|
||||||
auto maybe_executable = Core::DeprecatedFile::resolve_executable_from_environment(filename);
|
auto executable_or_error = resolve_executable_from_environment(filename);
|
||||||
|
|
||||||
if (!maybe_executable.has_value())
|
if (executable_or_error.is_error())
|
||||||
return ENOENT;
|
return executable_or_error.release_error();
|
||||||
|
|
||||||
exec_filename = maybe_executable.release_value();
|
exec_filename = executable_or_error.value();
|
||||||
} else {
|
} else {
|
||||||
exec_filename = filename.to_deprecated_string();
|
exec_filename = filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
params.path = { exec_filename.characters(), exec_filename.length() };
|
params.path = { exec_filename.characters_without_null_termination(), exec_filename.length() };
|
||||||
TRY(run_exec(params));
|
TRY(run_exec(params));
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
#else
|
#else
|
||||||
|
@ -1305,14 +1305,15 @@ ErrorOr<void> exec(StringView filename, ReadonlySpan<StringView> arguments, Sear
|
||||||
// These BSDs don't support execvpe(), so we'll have to manually search the PATH.
|
// These BSDs don't support execvpe(), so we'll have to manually search the PATH.
|
||||||
ScopedValueRollback errno_rollback(errno);
|
ScopedValueRollback errno_rollback(errno);
|
||||||
|
|
||||||
auto maybe_executable = Core::DeprecatedFile::resolve_executable_from_environment(filename_string);
|
auto executable_or_error = resolve_executable_from_environment(filename_string);
|
||||||
|
|
||||||
if (!maybe_executable.has_value()) {
|
if (executable_or_error.is_error()) {
|
||||||
errno_rollback.set_override_rollback_value(ENOENT);
|
errno_rollback.set_override_rollback_value(executable_or_error.error().code());
|
||||||
return Error::from_errno(ENOENT);
|
return executable_or_error.release_error();
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = ::execve(maybe_executable.release_value().characters(), argv.data(), envp.data());
|
DeprecatedString executable = executable_or_error.release_value().to_deprecated_string();
|
||||||
|
rc = ::execve(executable.characters(), argv.data(), envp.data());
|
||||||
# else
|
# else
|
||||||
rc = ::execvpe(filename_string.characters(), argv.data(), envp.data());
|
rc = ::execvpe(filename_string.characters(), argv.data(), envp.data());
|
||||||
# endif
|
# endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue