Files
FEX-Emu--FEX/Source/Tools/FEXServer/ArgumentLoader.cpp
T
LC 9575506391 FEXServer: Fix some missing declaration warnings
Makes sure prototypes are visible to their implementation. Also marks
functions internally linked where applicable.

Also makes it a little more visibly obvious which bits are exposed for
use elsewhere.
2026-07-16 07:10:32 -04:00

48 lines
1.9 KiB
C++

// SPDX-License-Identifier: MIT
#include "ArgumentLoader.h"
#include "Common/cpp-optparse/OptionParser.h"
#include "PipeScanner.h"
#include "ProcessPipe.h"
#include "git_version.h"
#include <fmt/format.h>
namespace FEXServer::Config {
constexpr std::string_view Version = "FEX-Emu (" GIT_DESCRIBE_STRING ") ";
FEXServerOptions Load(int argc, char** argv) {
FEXServerOptions FEXOptions {};
optparse::OptionParser Parser = optparse::OptionParser().version(fextl::string(Version));
Parser.add_option("-k", "--kill").action("store_true").set_default(false).help("Shutdown an already active FEXServer");
Parser.add_option("-f", "--foreground").action("store_true").set_default(false).help("Run this FEXServer in the foreground");
Parser.add_option("-p", "--persistent").action("store").type("int").set_default(0).set_optional_value(true).metavar("n").help("Make FEXServer persistent. Optional number of seconds");
Parser.add_option("-w", "--wait").action("store_true").set_default(false).help("Wait for the FEXServer to shutdown");
Parser.add_option("--wait_pipe").action("store").type("int").set_default(-1).set_optional_value(true);
Parser.add_option("--watch_fd").action("store").type("int").set_default(-1).set_optional_value(true).help("Adds FD to watch list of active processes");
Parser.add_option("-v").action("version").help("Version string");
optparse::Values Options = Parser.parse_args(argc, argv);
FEXOptions.Kill = Options.get("kill");
FEXOptions.Foreground = Options.get("foreground");
FEXOptions.Wait = Options.get("wait");
if (FEXOptions.Wait) {
FEXOptions.Foreground = true;
}
FEXOptions.PersistentTimeout = Options.get("persistent");
int WaitPipe = Options.get("wait_pipe");
if (WaitPipe != -1) {
PipeScanner::SetWaitPipe(WaitPipe);
}
ProcessPipe::SetWatchFD(Options.get("watch_fd"));
return FEXOptions;
}
} // namespace FEXServer::Config