1
0
mirror of https://github.com/pevans/erc-c.git synced 2024-12-01 00:49:46 +00:00
erc-c/src/main.c
2017-12-08 17:09:58 -06:00

74 lines
1.7 KiB
C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include "log.h"
#include "option.h"
/*
* This function will establish the base environment that we want to use
* while we execute.
*/
static void
init(int argc, char **argv)
{
int options_ok;
// If the option_parse() function returns zero, that means that it's
// signaled to us that we should stop now. Whether that means we are
// stopping in _error_ (bad input), or just because you asked for
// --help, is not really specified. We exit with a non-zero error
// code in any case.
options_ok = option_parse(argc, argv);
if (options_ok == 0) {
const char *err = option_get_error();
if (strlen(err) > 0) {
fprintf(stderr, "%s\n", err);
option_print_help();
}
exit(1);
}
// We're literally using stdout in this heavy phase of development.
log_open(stdout);
}
/*
* And this is the teardown function.
*/
static void
finish()
{
// Close any file sources we had opened
for (int i = 1; i <= OPTION_MAX_DISKS; i++) {
FILE *stream = option_get_input(i);
if (stream != NULL) {
fclose(stream);
}
}
log_close();
}
/*
* This is what will run when the program begins, if you were new to how
* C works.
*/
int
main(int argc, char **argv)
{
init(argc, argv);
// When we exit, we want to wrap up a few loose ends. This syscall
// will ensure that `finish()` runs whether we return from main
// successfully or if we run `exit()` from elsewhere in the program.
atexit(finish);
// ha ha ha ha #nervous #laughter
printf("Hello, world\n");
}