+ FILE *src;
+ char *line;
+
+ printf("Mode: progs.src\n");
+ src = util_fopen("progs.src", "rb");
+ if (!src) {
+ printf("failed to open `progs.src` for reading\n");
+ retval = 1;
+ goto cleanup;
+ }
+
+ line = NULL;
+ if (!progs_nextline(&line, src) || !line[0]) {
+ printf("illformatted progs.src file: expected output filename in first line\n");
+ retval = 1;
+ goto srcdone;
+ }
+
+ if (!opts_output_wasset) {
+ opts_output = util_strdup(line);
+ opts_output_free = true;
+ }
+
+ while (progs_nextline(&line, src)) {
+ if (!line[0] || (line[0] == '/' && line[1] == '/'))
+ continue;
+ printf(" src: %s\n", line);
+ if (!parser_compile(line)) {
+ retval = 1;
+ goto srcdone;
+ }
+ }
+
+ parser_finish(opts_output);
+
+srcdone:
+ fclose(src);
+ mem_d(line);