mirror of https://github.com/AxioDL/nod.git
70 lines
1.4 KiB
C++
70 lines
1.4 KiB
C++
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <LogVisor/LogVisor.hpp>
|
|
#include "NOD/NOD.hpp"
|
|
|
|
static void printHelp()
|
|
{
|
|
fprintf(stderr, "Usage:\n"
|
|
" nodlib extract [-f] <image-in> [<dir-out>]\n"
|
|
" nodlib make <dir-in> [<image-out>]\n");
|
|
}
|
|
|
|
#if NOD_UCS2
|
|
#ifdef strcasecmp
|
|
#undef strcasecmp
|
|
#endif
|
|
#define strcasecmp _wcsicmp
|
|
int wmain(int argc, wchar_t* argv[])
|
|
#else
|
|
int main(int argc, char* argv[])
|
|
#endif
|
|
{
|
|
if (argc < 3)
|
|
{
|
|
printHelp();
|
|
return -1;
|
|
}
|
|
|
|
/* Enable logging to console */
|
|
LogVisor::RegisterConsoleLogger();
|
|
|
|
const NOD::SystemChar* inDir = nullptr;
|
|
const NOD::SystemChar* outDir = _S(".");
|
|
bool force = false;
|
|
for (int a=2 ; a<argc ; ++a)
|
|
{
|
|
if (argv[a][0] == '-' && argv[a][1] == 'f')
|
|
force = true;
|
|
else if (!inDir)
|
|
inDir = argv[a];
|
|
else
|
|
outDir = argv[a];
|
|
}
|
|
|
|
if (!strcasecmp(argv[1], _S("extract")))
|
|
{
|
|
std::unique_ptr<NOD::DiscBase> disc = NOD::OpenDiscFromImage(inDir);
|
|
if (!disc)
|
|
return -1;
|
|
|
|
NOD::DiscBase::IPartition* dataPart = disc->getDataPartition();
|
|
if (!dataPart)
|
|
return -1;
|
|
|
|
if (!dataPart->extractToDirectory(outDir, force))
|
|
return -1;
|
|
}
|
|
else if (!strcasecmp(argv[1], _S("make")))
|
|
{
|
|
}
|
|
else
|
|
{
|
|
printHelp();
|
|
return -1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|