glcpp: Print to the main compiler's infolog, not stdout.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 21 Jun 2010 18:47:55 +0000 (11:47 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 21 Jun 2010 19:41:05 +0000 (12:41 -0700)
glcpp/pp.c
glsl_parser_extras.h
main.cpp

index e6921db46b58ef61ab80033df0f4cf52c66318a1..5455518c7c711525a61d949e7502c228cdc3601e 100644 (file)
@@ -57,7 +57,7 @@ glcpp_warning (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...)
 }
 
 extern int
-preprocess(void *talloc_ctx, const char **shader)
+preprocess(void *talloc_ctx, const char **shader, char **info_log)
 {
        int errors;
        glcpp_parser_t *parser = glcpp_parser_create ();
@@ -65,7 +65,7 @@ preprocess(void *talloc_ctx, const char **shader)
 
        glcpp_parser_parse (parser);
 
-       printf("%s", parser->info_log);
+       *info_log = talloc_strdup_append(*info_log, parser->info_log);
 
        talloc_steal(talloc_ctx, parser->output);
        *shader = parser->output;
index 1edd86bc6ea56c4d8f62c9efb0845e8088594f69..87de9083c060e242290b29a3b6c38bb98f3ddcf9 100644 (file)
@@ -102,7 +102,7 @@ extern void _mesa_glsl_warning(const YYLTYPE *locp,
                               const char *fmt, ...);
 
 extern "C" {
-extern int preprocess(void *ctx, const char **shader);
+extern int preprocess(void *ctx, const char **shader, char **info_log);
 }
 
 extern void _mesa_glsl_lexer_ctor(struct _mesa_glsl_parse_state *state,
index 25904380c9560ba9bcc88470e3d92b6949e06998..7f094f8e3e44712f44c0ba46529499d63fb0fb42 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -128,7 +128,7 @@ compile_shader(struct glsl_shader *shader)
     * should probably be the parser context, but there isn't one yet.
    */
    const char *source = shader->Source;
-   state.error = preprocess(shader, &source);
+   state.error = preprocess(shader, &source, &state.info_log);
 
    if (!state.error) {
       _mesa_glsl_lexer_ctor(& state, source);