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.cpp96
1 files changed, 95 insertions, 1 deletions
diff --git a/CST 126/Homework_2/program.cpp b/CST 126/Homework_2/program.cpp
index cd5f36b..3aa2a2d 100644
--- a/CST 126/Homework_2/program.cpp
+++ b/CST 126/Homework_2/program.cpp
@@ -2,6 +2,7 @@
#include "helpers.hpp"
#include "Base64Converter.hpp"
+/*
constexpr short ARG_COUNT = 4;
bool Worker();
@@ -79,4 +80,97 @@ bool Worker(char** argv)
delete[] buffer;
return false;
}
-} \ No newline at end of file
+}
+*/
+
+void displayMenu() {
+ std::cout << "\nWelcome to the Base64 Encoder/Decoder:\n";
+ std::cout << "1. Encode\n";
+ std::cout << "2. Decode\n";
+ std::cout << "3. Exit\n";
+}
+
+int main() {
+ char choice;
+ bool exitProgram = false;
+
+ do {
+ displayMenu();
+ std::cout << "\nEnter your choice: ";
+ std::cin >> choice;
+
+ switch (choice) {
+ case '1': {
+ std::string sourceFile, destinationFile;
+ std::cout << "Enter source file name: ";
+ std::cin >> sourceFile;
+ std::cout << "Enter destination file name: ";
+ std::cin >> destinationFile;
+
+ size_t size = 1;
+ char* buffer = nullptr;
+ buffer = ReadFileAsBinary(sourceFile.c_str(), buffer, size);
+
+ if (buffer) {
+ char* encodedBuffer = Base64Encode(buffer, size);
+ if (encodedBuffer) {
+ bool success = WriteTextToFile(destinationFile.c_str(), encodedBuffer);
+ delete[] encodedBuffer;
+ if (success)
+ std::cout << "File encoded successfully.\n";
+ else
+ std::cerr << "Error: Unable to write to destination file.\n";
+ }
+ else {
+ std::cerr << "Error: Unable to encode file.\n";
+ }
+ delete[] buffer;
+ }
+ else {
+ std::cerr << "Error: Unable to read from source file.\n";
+ }
+ break;
+ }
+ case '2': {
+ std::string sourceFile, destinationFile;
+ std::cout << "Enter source file name: ";
+ std::cin >> sourceFile;
+ std::cout << "Enter destination file name: ";
+ std::cin >> destinationFile;
+
+ size_t size = 0;
+ char* buffer = nullptr;
+ buffer = ReadTextFromFile(sourceFile.c_str(), buffer);
+
+ if (buffer) {
+ size_t decodedSize = 0;
+ char* decodedBuffer = Base64Decode(buffer, decodedSize);
+ if (decodedBuffer) {
+ bool success = WriteFileFromBinary(destinationFile.c_str(), decodedBuffer, decodedSize);
+ delete[] decodedBuffer;
+ if (success)
+ std::cout << "File decoded successfully.\n";
+ else
+ std::cerr << "Error: Unable to write to destination file.\n";
+ }
+ else {
+ std::cerr << "Error: Unable to decode file.\n";
+ }
+ delete[] buffer;
+ }
+ else {
+ std::cerr << "Error: Unable to read from source file.\n";
+ }
+ break;
+ }
+ case '3':
+ std::cout << "Thank you for using the Base64 Encoder/Decoder! Goodbye.\n";
+ exitProgram = true;
+ break;
+ default:
+ std::cout << "Invalid choice. Please try again.\n";
+ }
+ } while (!exitProgram);
+
+ return 0;
+}