12345678910111213141516171819202122232425262728293031323334 |
- /*
- * Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #include "HelperProcess.h"
- #include "Utilities.h"
- #include <AK/String.h>
- #include <QCoreApplication>
- ErrorOr<void> spawn_helper_process(StringView process_name, Span<StringView> arguments, Core::System::SearchInPath search_in_path, Optional<Span<StringView const>> environment)
- {
- auto paths = TRY(get_paths_for_helper_process(process_name));
- VERIFY(!paths.is_empty());
- ErrorOr<void> result;
- for (auto const& path : paths) {
- result = Core::System::exec(path, arguments, search_in_path, environment);
- if (!result.is_error())
- break;
- }
- return result;
- }
- ErrorOr<Vector<String>> get_paths_for_helper_process(StringView process_name)
- {
- Vector<String> paths;
- TRY(paths.try_append(TRY(String::formatted("./{}/{}", process_name, process_name))));
- TRY(paths.try_append(TRY(String::formatted("{}/{}", TRY(ak_string_from_qstring(QCoreApplication::applicationDirPath())), process_name))));
- TRY(paths.try_append(TRY(String::formatted("./{}", process_name))));
- // NOTE: Add platform-specific paths here
- return paths;
- }
|