#include #include "args.h" #include "pattern/pattern.h" #include "io/text.h" #include "io/svg.h" /* * EX stands for EXIT STATUS and * EXE stands for EXIT STATUS ERROR */ #define EX_OK 0 #define EXE_ARGS 1 #define EXE_IO 2 int main(int argc, char **argv) { struct args args; enum alr alr = load_args(argc, argv, &args); if (alr != ALR_OK) { if (alr == ALR_INVALID_OPTION) fprintf(stderr, "Invalid option!"); else fprintf(stderr, "Args processing error!\n"); return EXE_ARGS; } struct pattern *pattern = &args.pattern; struct coord path[16]; pattern->path = path; args.params.count = 0; FILE *out = stdout; if (!args.standard_output && args.single_output) { if ((out = fopen(args.output, "w")) == NULL) { fprintf(stderr, "%s file cannot be opened.", args.output); return EXE_IO; } } while (args.gen(pattern) && (args.gen_count < 0 || args.params.count < args.gen_count)) { args.params.count++; if ((args.from_count <= (int)args.params.count) && (((int)args.params.count <= args.to_count) || (args.to_count < 0))) { if (!args.standard_output && !args.single_output) { char file_path[512]; sprintf(file_path, args.output, args.params.count); if ((out = fopen(file_path, "w")) == NULL) { fprintf(stderr, "%s file cannot be opened.", file_path); return EXE_IO; } } args.print(out, args.params, pattern); if (args.wait) { char c; getchar(); } if (!args.standard_output && !args.single_output) fclose(out); } } if (!args.standard_output && args.single_output) fclose(out); return EX_OK; }