summaryrefslogtreecommitdiff
path: root/glcpp
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2010-06-17 12:03:25 -0700
committerKenneth Graunke <kenneth@whitecape.org>2010-06-21 12:31:02 -0700
commitf1e6c069fac93dd2b7b2026ccd24833a066c895a (patch)
tree37bd98609c64e6b87c05308c6c69f567c4208920 /glcpp
parentb78c9ddfbfecb983f7ab519bb07889333bdab959 (diff)
glcpp: Introduce new glcpp_error function.
Diffstat (limited to 'glcpp')
-rw-r--r--glcpp/glcpp-parse.y3
-rw-r--r--glcpp/glcpp.h3
-rw-r--r--glcpp/pp.c14
3 files changed, 18 insertions, 2 deletions
diff --git a/glcpp/glcpp-parse.y b/glcpp/glcpp-parse.y
index f26dd9a..d7a1048 100644
--- a/glcpp/glcpp-parse.y
+++ b/glcpp/glcpp-parse.y
@@ -879,8 +879,7 @@ _token_list_print (glcpp_parser_t *parser, token_list_t *list)
void
yyerror (YYLTYPE *locp, glcpp_parser_t *parser, const char *error)
{
- glcpp_printf(parser->errors, "%u:%u(%u): preprocessor error: %s\n",
- locp->source, locp->first_line, locp->first_column, error);
+ glcpp_error(locp, parser, "%s", error);
}
glcpp_parser_t *
diff --git a/glcpp/glcpp.h b/glcpp/glcpp.h
index 2d4c847..45bbff3 100644
--- a/glcpp/glcpp.h
+++ b/glcpp/glcpp.h
@@ -165,6 +165,9 @@ glcpp_parser_parse (glcpp_parser_t *parser);
void
glcpp_parser_destroy (glcpp_parser_t *parser);
+void
+glcpp_error (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...);
+
/* Generated by glcpp-lex.l to glcpp-lex.c */
int
diff --git a/glcpp/pp.c b/glcpp/pp.c
index 04ea0a4..5d1ff8c 100644
--- a/glcpp/pp.c
+++ b/glcpp/pp.c
@@ -23,6 +23,20 @@
#include "glcpp.h"
+void
+glcpp_error (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...)
+{
+ parser->errors = talloc_asprintf_append(parser->errors, "%u:%u(%u): "
+ "preprocessor error: ",
+ locp->source, locp->first_line,
+ locp->first_column);
+ va_list ap;
+ va_start(ap, fmt);
+ parser->errors = talloc_vasprintf_append(parser->errors, fmt, ap);
+ va_end(ap);
+ parser->errors = talloc_strdup_append(parser->errors, "\n");
+}
+
extern int
preprocess(void *talloc_ctx, const char **shader, size_t *shader_len)
{