From b2ba6fac09df1f06161a7ea1ef1f25bb9fbe8a5a Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Thu, 17 Jun 2010 15:15:35 -0700 Subject: [PATCH] Change error/warning functions to print to the info log. --- glsl_parser_extras.cpp | 44 ++++++++++++++++++++------------------------ ir_reader.cpp | 16 +++++++++++----- 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/glsl_parser_extras.cpp b/glsl_parser_extras.cpp index 8cf765f..7bd30de 100644 --- a/glsl_parser_extras.cpp +++ b/glsl_parser_extras.cpp @@ -25,6 +25,10 @@ #include #include +extern "C" { +#include +} + #include "ast.h" #include "glsl_parser_extras.h" #include "glsl_parser.h" @@ -47,24 +51,20 @@ void _mesa_glsl_error(YYLTYPE *locp, _mesa_glsl_parse_state *state, const char *fmt, ...) { - char buf[1024]; - int len; va_list ap; state->error = true; - len = snprintf(buf, sizeof(buf), "%u:%u(%u): error: ", - locp->source, locp->first_line, locp->first_column); - + assert(state->info_log != NULL); + state->info_log = talloc_asprintf_append(state->info_log, + "%u:%u(%u): error: ", + locp->source, + locp->first_line, + locp->first_column); va_start(ap, fmt); - vsnprintf(buf + len, sizeof(buf) - len, fmt, ap); + state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap); va_end(ap); - - printf("%s\n", buf); - - if (state->info_log) - free(state->info_log); - state->info_log = strdup(buf); + state->info_log = talloc_strdup_append(state->info_log, "\n"); } @@ -72,22 +72,18 @@ void _mesa_glsl_warning(const YYLTYPE *locp, _mesa_glsl_parse_state *state, const char *fmt, ...) { - char buf[1024]; - int len; va_list ap; - len = snprintf(buf, sizeof(buf), "%u:%u(%u): warning: ", - locp->source, locp->first_line, locp->first_column); - + assert(state->info_log != NULL); + state->info_log = talloc_asprintf_append(state->info_log, + "%u:%u(%u): warning: ", + locp->source, + locp->first_line, + locp->first_column); va_start(ap, fmt); - vsnprintf(buf + len, sizeof(buf) - len, fmt, ap); + state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap); va_end(ap); - - printf("%s\n", buf); - - if (!state->info_log) { - state->info_log = strdup(buf); - } + state->info_log = talloc_strdup_append(state->info_log, "\n"); } diff --git a/ir_reader.cpp b/ir_reader.cpp index 23981a0..5cbce33 100644 --- a/ir_reader.cpp +++ b/ir_reader.cpp @@ -22,6 +22,11 @@ */ #include #include + +extern "C" { +#include +} + #include "ir_reader.h" #include "glsl_parser_extras.h" #include "glsl_types.h" @@ -86,17 +91,18 @@ ir_read_error(_mesa_glsl_parse_state *state, s_expression *expr, state->error = true; - printf("error: "); + state->info_log = talloc_strdup_append(state->info_log, "error: "); va_start(ap, fmt); - vprintf(fmt, ap); + state->info_log = talloc_vasprintf_append(state->info_log, fmt, ap); va_end(ap); - printf("\n"); + state->info_log = talloc_strdup_append(state->info_log, "\n"); if (expr != NULL) { - printf("...in this context:\n "); + state->info_log = talloc_strdup_append(state->info_log, + "...in this context:\n "); expr->print(); - printf("\n\n"); + state->info_log = talloc_strdup_append(state->info_log, "\n\n"); } } -- 2.7.4