diff options
Diffstat (limited to 'src/glsl')
-rw-r--r-- | src/glsl/apps/process.c | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/src/glsl/apps/process.c b/src/glsl/apps/process.c index a11f9741f5a..678b1005f89 100644 --- a/src/glsl/apps/process.c +++ b/src/glsl/apps/process.c @@ -64,14 +64,26 @@ main(int argc, size = ftell(in); fseek(in, 0, SEEK_SET); + out = fopen(argv[2], "wb"); + if (!out) { + fclose(in); + return 1; + } + inbuf = malloc(size + 1); if (!inbuf) { + fprintf(out, "$OOMERROR\n"); + + fclose(out); fclose(in); return 1; } if (fread(inbuf, 1, size, in) != size) { + fprintf(out, "$READERROR\n"); + free(inbuf); + fclose(out); fclose(in); return 1; } @@ -82,36 +94,41 @@ main(int argc, memset(&options, 0, sizeof(options)); if (sl_pp_purify(inbuf, &options, &outbuf)) { + fprintf(out, "$PURIFYERROR\n"); + free(inbuf); + fclose(out); return 1; } free(inbuf); if (sl_pp_context_init(&context)) { + fprintf(out, "$CONTEXERROR\n"); + free(outbuf); + fclose(out); return 1; } if (sl_pp_tokenise(&context, outbuf, &tokens)) { + fprintf(out, "$ERROR: `%s'\n", context.error_msg); + sl_pp_context_destroy(&context); free(outbuf); + fclose(out); return 1; } free(outbuf); if (sl_pp_version(&context, tokens, &version, &tokens_eaten)) { - sl_pp_context_destroy(&context); - free(tokens); - return -1; - } + fprintf(out, "$ERROR: `%s'\n", context.error_msg); - out = fopen(argv[2], "wb"); - if (!out) { sl_pp_context_destroy(&context); free(tokens); - return 1; + fclose(out); + return -1; } if (sl_pp_process(&context, &tokens[tokens_eaten], &outtokens)) { |