X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=diagnostic.c;h=0b92ae578c64389b97684db1aaf3d0f35522f66c;hb=f618d56a33190711d5bf34f1341a268667ce4645;hp=585d61bb15eb8673715ac0be32f3d460f16103fb;hpb=152becd590dc065f730deea680aa32b7d1032286;p=cparser diff --git a/diagnostic.c b/diagnostic.c index 585d61b..0b92ae5 100644 --- a/diagnostic.c +++ b/diagnostic.c @@ -1,6 +1,6 @@ /* * This file is part of cparser. - * Copyright (C) 2007-2008 Matthias Braun + * Copyright (C) 2007-2009 Matthias Braun * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -40,7 +40,8 @@ static const source_position_t *curr_pos = NULL; /** * prints an additional source position */ -static void print_source_position(FILE *out, const source_position_t *pos) { +static void print_source_position(FILE *out, const source_position_t *pos) +{ fprintf(out, "at line %u", pos->linenr); if (curr_pos == NULL || curr_pos->input_name != pos->input_name) fprintf(out, " of \"%s\"", pos->input_name); @@ -66,12 +67,6 @@ static void diagnosticvf(const char *const fmt, va_list ap) fputc(*f, stderr); break; - case 'C': { - const wint_t val = va_arg(ap, wint_t); - fputwc(val, stderr); - break; - } - case 'c': { const unsigned char val = (unsigned char) va_arg(ap, int); fputc(val, stderr); @@ -90,6 +85,14 @@ static void diagnosticvf(const char *const fmt, va_list ap) break; } + case 'S': { + const string_t *str = va_arg(ap, const string_t*); + for (size_t i = 0; i < str->size; ++i) { + fputc(str->begin[i], stderr); + } + break; + } + case 'u': { const unsigned int val = va_arg(ap, unsigned int); fprintf(stderr, "%u", val); @@ -127,6 +130,12 @@ static void diagnosticvf(const char *const fmt, va_list ap) break; } + case 't': { + const token_t *const token = va_arg(ap, const token_t*); + print_pp_token(stderr, token); + break; + } + case 'K': { const token_t* const token = va_arg(ap, const token_t*); print_token(stderr, token);