summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinNoGUI/MainNoGUI.cpp
diff options
context:
space:
mode:
authorLéo Lam <leo@innovatetechnologi.es>2017-10-02 00:09:07 +0200
committerLéo Lam <leo@innovatetechnologi.es>2017-10-24 11:41:55 +0200
commit4b4a9a64865bbeeb55161a977bcadcb5ed58ade3 (patch)
treea2e75a88e623e68717e6ba860d480428a9d9ea2f /Source/Core/DolphinNoGUI/MainNoGUI.cpp
parent8e0869aff6c50a23cd1ca9b2e03ad7c484ee2585 (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.cpp22
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;
}