mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:27:43 +00:00
Kernel: Simplify execve
shebang argument handling
This commit is contained in:
parent
250f8eccf3
commit
d6a3f1fcd7
1 changed files with 5 additions and 8 deletions
|
@ -846,14 +846,11 @@ KResult Process::exec(String path, Vector<String> arguments, Vector<String> envi
|
||||||
// 1) #! interpreted file
|
// 1) #! interpreted file
|
||||||
auto shebang_result = find_shebang_interpreter_for_executable(first_page, nread_or_error.value());
|
auto shebang_result = find_shebang_interpreter_for_executable(first_page, nread_or_error.value());
|
||||||
if (!shebang_result.is_error()) {
|
if (!shebang_result.is_error()) {
|
||||||
Vector<String> new_arguments(shebang_result.value());
|
auto shebang_words = shebang_result.release_value();
|
||||||
|
auto shebang_path = shebang_words.first();
|
||||||
new_arguments.append(path);
|
if (!arguments.try_prepend(move(shebang_words)))
|
||||||
|
return ENOMEM;
|
||||||
arguments.remove(0);
|
return exec(shebang_path, move(arguments), move(environment), ++recursion_depth);
|
||||||
new_arguments.append(move(arguments));
|
|
||||||
|
|
||||||
return exec(shebang_result.value().first(), move(new_arguments), move(environment), ++recursion_depth);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// #2) ELF32 for i386
|
// #2) ELF32 for i386
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue