81 lines
1.6 KiB
C++
81 lines
1.6 KiB
C++
|
|
#include "main.hpp"
|
|
#include "string.hpp"
|
|
|
|
static int main_argc;
|
|
static char** main_argv;
|
|
static int verbose;
|
|
|
|
char*
|
|
FindArg(char* s, char* message, char* defarg)
|
|
{
|
|
for (int i = 0; i < main_argc; i++)
|
|
{
|
|
if (!strcmp(main_argv[i], s) && (i + 1) < main_argc) return main_argv[i + 1];
|
|
}
|
|
ThrowIf(!defarg, message ? message : "Incorrect parameters");
|
|
|
|
return defarg;
|
|
}
|
|
|
|
int
|
|
FindSwitch(int c)
|
|
{
|
|
for (int i = 0; i < main_argc; i++)
|
|
{
|
|
if (main_argv[i][0] == '-' && strchr(&main_argv[i][1], c)) return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/*******************************************************************************
|
|
** Verbose
|
|
*******************************************************************************/
|
|
void
|
|
Verbose(char* s)
|
|
{
|
|
if (verbose)
|
|
{
|
|
fprintf(stderr, "\r> %s\n", s);
|
|
fflush(stderr);
|
|
}
|
|
}
|
|
|
|
void
|
|
Failure(char* s)
|
|
{
|
|
fprintf(stderr, "ERROR! '%s'\n", s);
|
|
exit(-1);
|
|
}
|
|
|
|
void
|
|
FileProcessingTime(FILE* file)
|
|
{
|
|
clock_t seconds = clock() / CLOCKS_PER_SEC;
|
|
|
|
fprintf(file, "Processing time: %02d:%02d\n", seconds / 60, seconds % 60);
|
|
}
|
|
|
|
int
|
|
main(int argc, char* argv[])
|
|
{
|
|
main_argc = argc;
|
|
main_argv = argv;
|
|
verbose = FindSwitch('v');
|
|
|
|
//freopen("stdout.txt", "w", stdout);
|
|
//freopen("stderr.txt", "w", stderr);
|
|
|
|
try
|
|
{
|
|
Main();
|
|
}
|
|
catch (Exception& exception)
|
|
{
|
|
fprintf(stderr, "ERROR! '%s'\n", exception.error);
|
|
}
|
|
if (verbose) FileProcessingTime(stderr);
|
|
|
|
return 0;
|
|
}
|
|
|