Index: aoc.c ================================================================== --- aoc.c +++ aoc.c @@ -36,43 +36,10 @@ // read data from dataname into input char *input = NULL; size_t ilen = slurp(&input, dataname); // call the right function - void (*p)(char *, size_t) = NULL; - switch (y * 100 + d) { - default: fprintf(stderr, "no function for year %d and day %d\n", y, d); - exit(EXIT_FAILURE); - #if 0 - case 201501: p = aoc201501; break; - case 201502: p = aoc201502; break; - case 201503: p = aoc201503; break; - case 201504: p = aoc201504; break; - case 201505: p = aoc201505; break; - case 201506: p = aoc201506; break; - case 201507: p = aoc201507; break; - case 201508: p = aoc201508; break; - case 201509: p = aoc201509; break; - case 201510: p = aoc201510; break; - case 201511: p = aoc201511; break; - case 201512: p = aoc201512; break; - case 201513: p = aoc201513; break; - case 201514: p = aoc201514; break; - case 201515: p = aoc201515; break; - case 201516: p = aoc201516; break; - case 201517: p = aoc201517; break; - case 201518: p = aoc201518; break; - case 201519: p = aoc201519; break; - case 201520: p = aoc201520; break; - case 201521: p = aoc201521; break; - case 201522: p = aoc201522; break; - case 201523: p = aoc201523; break; - case 201524: p = aoc201524; break; - case 201525: p = aoc201525; break; - #endif - - case 202401: p = aoc202401; break; - case 202402: p = aoc202402; break; - } - p(input, ilen); + void (*p)(char *, size_t) = select(y, d); + if (p) p(input, ilen); + else fprintf(stderr, "Impossible!\n"); free(input); } ADDED aocdailies.c Index: aocdailies.c ================================================================== --- /dev/null +++ aocdailies.c @@ -0,0 +1,41 @@ +#include +#include "aocdailies.h" + +aocfunc *select(int y, int d) { + void (*p)(char *, size_t); + switch (y * 100 + d) { + default: return NULL; + + #if 0 + case 201501: p = aoc201501; break; + case 201502: p = aoc201502; break; + case 201503: p = aoc201503; break; + case 201504: p = aoc201504; break; + case 201505: p = aoc201505; break; + case 201506: p = aoc201506; break; + case 201507: p = aoc201507; break; + case 201508: p = aoc201508; break; + case 201509: p = aoc201509; break; + case 201510: p = aoc201510; break; + case 201511: p = aoc201511; break; + case 201512: p = aoc201512; break; + case 201513: p = aoc201513; break; + case 201514: p = aoc201514; break; + case 201515: p = aoc201515; break; + case 201516: p = aoc201516; break; + case 201517: p = aoc201517; break; + case 201518: p = aoc201518; break; + case 201519: p = aoc201519; break; + case 201520: p = aoc201520; break; + case 201521: p = aoc201521; break; + case 201522: p = aoc201522; break; + case 201523: p = aoc201523; break; + case 201524: p = aoc201524; break; + case 201525: p = aoc201525; break; + #endif + + case 202401: p = aoc202401; break; + case 202402: p = aoc202402; break; + } + return p; +} Index: aocdailies.h ================================================================== --- aocdailies.h +++ aocdailies.h @@ -1,8 +1,13 @@ #ifndef AOCDAILY_H_INCLUDED #define AOCDAILY_H_INCLUDED +#include + +typedef void aocfunc(char *, size_t); +aocfunc *select(int, int); + #if 0 void aoc201501(char *, size_t); void aoc201502(char *, size_t); void aoc201503(char *, size_t); void aoc201504(char *, size_t);