From 696862b1a3025b9f054a26889f4aec42d0675f30 Mon Sep 17 00:00:00 2001 From: kr3nshaw <20672068+kr3nshaw@users.noreply.github.com> Date: Mon, 8 Jun 2020 02:03:41 +1000 Subject: Replaced narccomp with knarc --- tools/knarc/Source.cpp | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 tools/knarc/Source.cpp (limited to 'tools/knarc/Source.cpp') diff --git a/tools/knarc/Source.cpp b/tools/knarc/Source.cpp new file mode 100644 index 00000000..3678997c --- /dev/null +++ b/tools/knarc/Source.cpp @@ -0,0 +1,109 @@ +#include +#include +#include +#include + +#include "Narc.h" + +using namespace std; + +void PrintError(NarcError error) +{ + switch (error) + { + case NarcError::None: cout << "ERROR: No error???" << endl; break; + case NarcError::InvalidInputFile: cout << "ERROR: Invalid input file" << endl; break; + case NarcError::InvalidHeaderId: cout << "ERROR: Invalid header ID" << endl; break; + case NarcError::InvalidByteOrderMark: cout << "ERROR: Invalid byte order mark" << endl; break; + case NarcError::InvalidVersion: cout << "ERROR: Invalid NARC version" << endl; break; + case NarcError::InvalidHeaderSize: cout << "ERROR: Invalid header size" << endl; break; + case NarcError::InvalidChunkCount: cout << "ERROR: Invalid chunk count" << endl; break; + case NarcError::InvalidFileAllocationTableId: cout << "ERROR: Invalid file allocation table ID" << endl; break; + case NarcError::InvalidFileAllocationTableReserved: cout << "ERROR: Invalid file allocation table reserved section" << endl; break; + case NarcError::InvalidFileNameTableId: cout << "ERROR: Invalid file name table ID" << endl; break; + case NarcError::InvalidFileNameTableEntryId: cout << "ERROR: Invalid file name table entry ID" << endl; break; + case NarcError::InvalidFileImagesId: cout << "ERROR: Invalid file images ID" << endl; break; + case NarcError::InvalidOutputFile: cout << "ERROR: Invalid output file" << endl; break; + default: cout << "ERROR: Unknown error???" << endl; break; + } +} + +int main(int argc, char* argv[]) +{ + if (argc != 5) + { + cout << "OVERVIEW: Knarc" << endl << endl; + cout << "USAGE: knarc [options] " << endl << endl; + cout << "OPTIONS:" << endl; + cout << "\t-d\tDirectory to pack from/unpack to" << endl; + cout << "\t-p\tPack" << endl; + cout << "\t-u\tUnpack" << endl; + + return 1; + } + + string directory = ""; + string fileName = ""; + bool pack = false; + + for (int i = 1; i < argc; ++i) + { + if (!strcmp(argv[i], "-d")) + { + if (i == (argc - 1)) + { + cerr << "ERROR: No directory specified" << endl; + + return 1; + } + + directory = argv[++i]; + } + else if (!strcmp(argv[i], "-p")) + { + if (i == (argc - 1)) + { + cerr << "ERROR: No NARC specified to pack to" << endl; + + return 1; + } + + fileName = argv[++i]; + pack = true; + } + else if (!strcmp(argv[i], "-u")) + { + if (i == (argc - 1)) + { + cerr << "ERROR: No NARC specified to unpack from" << endl; + + return 1; + } + + fileName = argv[++i]; + } + } + + Narc narc; + + if (pack) + { + if (!narc.Pack(fileName, directory)) + { + PrintError(narc.GetError()); + + return 1; + } + } + else + { + if (!narc.Unpack(fileName, directory)) + { + PrintError(narc.GetError()); + + return 1; + } + } + + return 0; +} -- cgit v1.2.3 From d20e69e76fa290e29b570fe051ea8a12548db97a Mon Sep 17 00:00:00 2001 From: kr3nshaw <20672068+kr3nshaw@users.noreply.github.com> Date: Mon, 8 Jun 2020 05:17:22 +1000 Subject: Changed filesystem to experimental/filesystem --- tools/knarc/Source.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'tools/knarc/Source.cpp') diff --git a/tools/knarc/Source.cpp b/tools/knarc/Source.cpp index 3678997c..51bb5320 100644 --- a/tools/knarc/Source.cpp +++ b/tools/knarc/Source.cpp @@ -1,5 +1,4 @@ #include -#include #include #include -- cgit v1.2.3