From 4b4a9a64865bbeeb55161a977bcadcb5ed58ade3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Mon, 2 Oct 2017 00:09:07 +0200 Subject: UI: Implement a command line option to boot NAND title --- Source/Core/DolphinNoGUI/MainNoGUI.cpp | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) (limited to 'Source/Core/DolphinNoGUI/MainNoGUI.cpp') diff --git a/Source/Core/DolphinNoGUI/MainNoGUI.cpp b/Source/Core/DolphinNoGUI/MainNoGUI.cpp index ecd2d3ba88..5619689abc 100644 --- a/Source/Core/DolphinNoGUI/MainNoGUI.cpp +++ b/Source/Core/DolphinNoGUI/MainNoGUI.cpp @@ -360,14 +360,26 @@ int main(int argc, char* argv[]) optparse::Values& options = CommandLineParse::ParseArguments(parser.get(), argc, argv); std::vector args = parser->args(); - std::string boot_filename; + std::unique_ptr boot; if (options.is_set("exec")) { - boot_filename = static_cast(options.get("exec")); + boot = BootParameters::GenerateFromFile(static_cast(options.get("exec"))); + } + else if (options.is_set("nand_title")) + { + const std::string hex_string = static_cast(options.get("nand_title")); + if (hex_string.length() != 16) + { + fprintf(stderr, "Invalid title ID\n"); + parser->print_help(); + return 1; + } + const u64 title_id = std::stoull(hex_string, nullptr, 16); + boot = std::make_unique(BootParameters::NANDTitle{title_id}); } else if (args.size()) { - boot_filename = args.front(); + boot = BootParameters::GenerateFromFile(args.front()); args.erase(args.begin()); } else @@ -408,9 +420,9 @@ int main(int argc, char* argv[]) DolphinAnalytics::Instance()->ReportDolphinStart("nogui"); - if (!BootManager::BootCore(BootParameters::GenerateFromFile(boot_filename))) + if (!BootManager::BootCore(std::move(boot))) { - fprintf(stderr, "Could not boot %s\n", boot_filename.c_str()); + fprintf(stderr, "Could not boot the specified file\n"); return 1; } -- cgit v1.2.3