From 3990e630f2838e8ff02d498928e211a0dbfd1f89 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Tue, 30 Apr 2024 12:35:34 -0400 Subject: [PATCH] FileManager: Launch applications with their AppFile-specified arguments We should really use Core::Process here, but it does not yet support all posix_spawn features we are currently using. --- Userland/Applications/FileManager/DirectoryView.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Userland/Applications/FileManager/DirectoryView.cpp b/Userland/Applications/FileManager/DirectoryView.cpp index 535e2cf2273..b08b93eb08c 100644 --- a/Userland/Applications/FileManager/DirectoryView.cpp +++ b/Userland/Applications/FileManager/DirectoryView.cpp @@ -493,6 +493,7 @@ void DirectoryView::set_should_show_dotfiles(bool show_dotfiles) void DirectoryView::launch(URL::URL const&, LauncherHandler const& launcher_handler) const { + // FIXME: Add posix_spawnattr_t support to Core::Process and use it here. pid_t child; posix_spawnattr_t spawn_attributes; @@ -509,8 +510,15 @@ void DirectoryView::launch(URL::URL const&, LauncherHandler const& launcher_hand posix_spawn_file_actions_init(&spawn_actions); posix_spawn_file_actions_addchdir(&spawn_actions, path().characters()); - char const* argv[] = { launcher_handler.details().name.characters(), nullptr }; - errno = posix_spawn(&child, launcher_handler.details().executable.characters(), &spawn_actions, &spawn_attributes, const_cast(argv), environ); + Vector argv; + argv.append(launcher_handler.details().name.characters()); + + for (auto const& argument : launcher_handler.details().arguments) + argv.append(argument.characters()); + + argv.append(nullptr); + + errno = posix_spawn(&child, launcher_handler.details().executable.characters(), &spawn_actions, &spawn_attributes, const_cast(argv.data()), environ); if (errno) { perror("posix_spawn"); } else if (disown(child) < 0) {