X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fglsl%2Fapps%2Fversion.c;h=b1d0d6ff282d7e2ded065c474951d58143693357;hb=6199a0cf89034ab92ac61158a25902acc17604f4;hp=e774c4a8f163743b4327be64d10a7dd087b5af57;hpb=af617c603720cf41ec433f1653cc6dbdcffd8e31;p=mesa.git diff --git a/src/glsl/apps/version.c b/src/glsl/apps/version.c index e774c4a8f16..b1d0d6ff282 100644 --- a/src/glsl/apps/version.c +++ b/src/glsl/apps/version.c @@ -27,9 +27,9 @@ #include #include +#include #include -#include "../pp/sl_pp_purify.h" -#include "../pp/sl_pp_version.h" +#include "../pp/sl_pp_public.h" int @@ -40,7 +40,9 @@ main(int argc, long size; char *inbuf; struct sl_pp_purify_options options; - char *outbuf; + char errmsg[100] = ""; + unsigned int errline = 0; + struct sl_pp_context *context; struct sl_pp_token_info *tokens; unsigned int version; unsigned int tokens_eaten; @@ -59,14 +61,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; } @@ -76,33 +90,42 @@ main(int argc, memset(&options, 0, sizeof(options)); - if (sl_pp_purify(inbuf, &options, &outbuf)) { + context = sl_pp_context_create(); + if (!context) { + fprintf(out, "$CONTEXERROR\n"); + free(inbuf); + fclose(out); return 1; } - free(inbuf); + if (sl_pp_tokenise(context, inbuf, &options, &tokens)) { + fprintf(out, "$ERROR: `%s'\n", sl_pp_context_error_message(context)); - if (sl_pp_tokenise(outbuf, &tokens)) { - free(outbuf); + sl_pp_context_destroy(context); + free(inbuf); + fclose(out); return 1; } - free(outbuf); + free(inbuf); - if (sl_pp_version(tokens, &version, &tokens_eaten)) { + if (sl_pp_version(context, tokens, &version, &tokens_eaten)) { + fprintf(out, "$ERROR: `%s'\n", sl_pp_context_error_message(context)); + + sl_pp_context_destroy(context); free(tokens); + fclose(out); return -1; } + sl_pp_context_destroy(context); free(tokens); - out = fopen(argv[2], "wb"); - if (!out) { - return 1; - } - - fprintf(out, "%u\n", version); + fprintf(out, + "%u\n%u\n", + version, + tokens_eaten); fclose(out);