aboutsummaryrefslogtreecommitdiff
path: root/CST 126/Homework_2/program.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'CST 126/Homework_2/program.cpp')
-rw-r--r--CST 126/Homework_2/program.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/CST 126/Homework_2/program.cpp b/CST 126/Homework_2/program.cpp
new file mode 100644
index 0000000..cd5f36b
--- /dev/null
+++ b/CST 126/Homework_2/program.cpp
@@ -0,0 +1,82 @@
+#include <iostream>
+#include "helpers.hpp"
+#include "Base64Converter.hpp"
+
+constexpr short ARG_COUNT = 4;
+
+bool Worker();
+bool Worker(char** argv);
+
+
+int main(const int argc, char* argv[])
+{
+ if (argc == ARG_COUNT)
+ {
+ //RUN THE COMMAND LINE VERSION
+ Worker(argv);
+ }
+ //RUN THE CONSOLE APP VERSION
+ return Worker();
+}
+
+bool Worker()
+{
+ return false;
+}
+
+bool Worker(char** argv)
+{
+ const char* arg1 = argv[1]; //-e -d
+ const char* arg2 = argv[2];
+ const char* arg3 = argv[3];
+
+ const char option = std::tolower(arg1[1]); //e or d
+ char* buffer = nullptr;
+
+ try {
+ switch (option)
+ {
+ case 'e':
+ {
+ size_t size = 1;
+ buffer = ReadFileAsBinary("FindingPi.exe", buffer, size);
+
+ char* encodedBuffer = Base64Encode(buffer, size);
+
+ bool success = WriteTextToFile(arg3, encodedBuffer);
+
+ delete[] buffer;
+ delete[] encodedBuffer;
+
+ return success;
+ }
+ case 'd':
+ {
+ size_t size = 0;
+ buffer = ReadTextFromFile(arg2, buffer);
+
+ size_t decodedSize = 0;
+ char* decodedBuffer = Base64Decode(buffer, decodedSize);
+ bool success = WriteFileFromBinary(arg3, decodedBuffer, decodedSize);
+ delete[] buffer;
+ delete[] decodedBuffer;
+
+ return success;
+ }
+ default:
+ std::cerr << "Invalid command option\n" <<
+ "Valid commands:\n" <<
+ "\t-e source_file.exe destination_file.exe" <<
+ "\t\tEncodes file in source into text in destination txt file." <<
+ "\t-d source_file.txt destination_file.exe" <<
+ "\t\tDecodes text in source file into the destination file.\n\n";
+
+ return false;
+ }
+
+ } catch (const std::exception& ex) {
+ std::cerr << "Exception: " << ex.what() << std::endl;
+ delete[] buffer;
+ return false;
+ }
+} \ No newline at end of file