diff options
| author | Léo Lam <leo@innovatetechnologi.es> | 2017-10-02 00:09:07 +0200 |
|---|---|---|
| committer | Léo Lam <leo@innovatetechnologi.es> | 2017-10-24 11:41:55 +0200 |
| commit | 4b4a9a64865bbeeb55161a977bcadcb5ed58ade3 (patch) | |
| tree | a2e75a88e623e68717e6ba860d480428a9d9ea2f /Source/Core/DolphinNoGUI/MainNoGUI.cpp | |
| parent | 8e0869aff6c50a23cd1ca9b2e03ad7c484ee2585 (diff) | |
UI: Implement a command line option to boot NAND title
Diffstat (limited to 'Source/Core/DolphinNoGUI/MainNoGUI.cpp')
| -rw-r--r-- | Source/Core/DolphinNoGUI/MainNoGUI.cpp | 22 |
1 files changed, 17 insertions, 5 deletions
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<std::string> args = parser->args(); - std::string boot_filename; + std::unique_ptr<BootParameters> boot; if (options.is_set("exec")) { - boot_filename = static_cast<const char*>(options.get("exec")); + boot = BootParameters::GenerateFromFile(static_cast<const char*>(options.get("exec"))); + } + else if (options.is_set("nand_title")) + { + const std::string hex_string = static_cast<const char*>(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>(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; } |
