blob: cd5f36b69be7afe2a794f0fa493fe541844f0121 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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;
}
}
|