WIP: Argument | Shortcut support.

This commit is contained in:
StackZ 2020-11-16 13:28:45 +01:00
commit f08bed5813
15 changed files with 294 additions and 20 deletions

View file

@ -24,13 +24,69 @@
* reasonable ways as different from the original version.
*/
#include "argumentParser.hpp"
#include "common.hpp"
#include "init.hpp"
#include <dirent.h>
#include <string>
#define ARG_AMOUNT 4 // In case for more args, change this. It must be ARG amount + 1, because of 3DSX Path.
std::string _3dsxPath = "";
/*
ARG Init.
*/
static void InitForARG() {
gfxInitDefault();
romfsInit();
Gui::init();
amInit();
acInit();
/* Create Directories, if missing. */
mkdir("sdmc:/3ds", 0777);
mkdir("sdmc:/3ds/Universal-Updater", 0777);
mkdir("sdmc:/3ds/Universal-Updater/stores", 0777);
mkdir("sdmc:/3ds/Universal-Updater/shortcuts", 0777);
config = std::make_unique<Config>();
Lang::load(config->language());
Init::LoadFont();
osSetSpeedupEnable(true); // Enable speed-up for New 3DS users.
}
/*
ARG Exit.
*/
static Result ExitForARG() {
Gui::exit();
Init::UnloadFont();
gfxExit();
cfguExit();
acExit();
amExit();
romfsExit();
return 0;
}
int main(int argc, char *argv[]) {
if (argc > 0) _3dsxPath = argv[0];
/* 4 --> Argument mode. */
if (argc == ARG_AMOUNT) {
InitForARG();
const std::string file = argv[1];
const std::string entry = argv[2];
int dlIndex = atoi(argv[3]);
std::unique_ptr<ArgumentParser> arg = std::make_unique<ArgumentParser>(file, entry, dlIndex);
if (arg->GetValid()) arg->Execute(); // Execute, if valid.
else Msg::waitMsg(Lang::get("ARGUMENT_INVALID"));
return ExitForARG();
}
return Init::MainLoop();
}