room101/MAIN.CPP

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