From: Michal Krol Date: Sun, 20 Dec 2009 12:51:38 +0000 (+0100) Subject: glsl/apps: Print error line number in compile. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0874ce48a68c06d8bb7387e434af7471d6638e80;p=mesa.git glsl/apps: Print error line number in compile. --- diff --git a/src/glsl/apps/compile.c b/src/glsl/apps/compile.c index b1165420fb8..4181281ee70 100644 --- a/src/glsl/apps/compile.c +++ b/src/glsl/apps/compile.c @@ -50,9 +50,7 @@ main(int argc, struct sl_pp_purify_options options; char errmsg[100] = ""; struct sl_pp_context *context; - struct sl_pp_token_info *tokens; unsigned int version; - unsigned int tokens_eaten; struct sl_pp_token_info *outtokens; FILE *out; unsigned int i, j; @@ -118,7 +116,7 @@ main(int argc, memset(&options, 0, sizeof(options)); - context = sl_pp_context_create(); + context = sl_pp_context_create(inbuf, &options); if (!context) { fprintf(out, "$CONTEXERROR\n"); @@ -128,24 +126,12 @@ main(int argc, return 0; } - if (sl_pp_tokenise(context, inbuf, &options, &tokens)) { - fprintf(out, "$ERROR: `%s'\n", sl_pp_context_error_message(context)); - - printf("Error: %s.\n", sl_pp_context_error_message(context)); - sl_pp_context_destroy(context); - free(inbuf); - fclose(out); - return 0; - } - - free(inbuf); - - if (sl_pp_version(context, tokens, &version, &tokens_eaten)) { + if (sl_pp_version(context, &version)) { fprintf(out, "$ERROR: `%s'\n", sl_pp_context_error_message(context)); printf("Error: %s\n", sl_pp_context_error_message(context)); sl_pp_context_destroy(context); - free(tokens); + free(inbuf); fclose(out); return 0; } @@ -156,22 +142,26 @@ main(int argc, printf("Error: %s\n", sl_pp_context_error_message(context)); sl_pp_context_destroy(context); - free(tokens); + free(inbuf); fclose(out); return 0; } - if (sl_pp_process(context, &tokens[tokens_eaten], &outtokens)) { - fprintf(out, "$ERROR: `%s'\n", sl_pp_context_error_message(context)); + if (sl_pp_process(context, &outtokens)) { + unsigned int errline; - printf("Error: %s\n", sl_pp_context_error_message(context)); + sl_pp_context_error_position(context, NULL, &errline); + + fprintf(out, "$ERROR: (%u) `%s'\n", errline, sl_pp_context_error_message(context)); + + printf("Error: (%u) %s\n", errline, sl_pp_context_error_message(context)); sl_pp_context_destroy(context); - free(tokens); + free(inbuf); fclose(out); return 0; } - free(tokens); + free(inbuf); for (i = j = 0; outtokens[i].token != SL_PP_EOF; i++) { switch (outtokens[i].token) {