From 4af1c3c43cf039909d74d8eb8fb7a3c8405a5241 Mon Sep 17 00:00:00 2001 From: Chanin Timbal Date: Tue, 11 Jun 2024 16:05:01 -0700 Subject: Completed Homework 2!! --- CST 126/Homework_2/program.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 CST 126/Homework_2/program.cpp (limited to 'CST 126/Homework_2/program.cpp') 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 +#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 -- cgit v1.2.3