#include #include char effects[][64] = { "spikeset.cfg", "faithful.cfg", "highfps.cfg", "high.cfg", "minimal.cfg", "h2part.cfg", "q2part.cfg", "tsshaft.cfg", "" }; int main(void) { FILE *c, *h, *s; char line[1024]; int i, j; c = fopen("../client/r_partset.c", "wt"); h = fopen("../client/r_partset.h", "wt"); if (!c || !h) { printf("unable to open a file\n"); return; } fprintf(c, "/*\nWARNING: THIS FILE IS GENERATED BY '"__FILE__"'.\nYOU SHOULD NOT EDIT THIS FILE BY HAND\n*/\n\n"); fprintf(c, "#include \"r_partset.h\"\n\n\n"); for (i = 0; *effects[i]; i++) { s = fopen(effects[i], "rt"); if (!s) { printf("unable to open %s\n", effects[i]); return; } *strchr(effects[i], '.') = 0; fprintf(h, "extern char *particle_set_%s;\n", effects[i]); if (i) fprintf(c, "\n\n\n//////////////////////////////////////////////////////\n\n\n"); fprintf(c, "char *particle_set_%s =\n", effects[i]); while(fgets(line, sizeof(line), s)) { j = 0; while (line[j] == ' ' || line[j] == '\t') j++; if ((line[j] == '/' && line[j] == '/') || line[j] == '\r' || line[j] == '\n') { while (line[j]) fputc(line[j++], c); } else { fputc('\"', c); while (line[j] && line[j] != '\r' && line[j] != '\n') { if (line[j] == '\t') fputc(' ', c); else if (line[j] == '\"') { fputc('\\', c); fputc(line[j], c); } else fputc(line[j], c); j++; } fputs("\\n\"\n", c); } } fputs(";\n", c); fclose(s); } fputs("#define R_PARTSET_BUILTINS ", h); for (i = 0; *effects[i]; i++) { fprintf(h, "{\"%s\", &particle_set_%s},", effects[i], effects[i]); } fputs("\n", h); fclose(h); fclose(c); }