#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; } }