Add yyerrorf() for formatted error messages.

Signed-off-by: Scott Wood <scottwood@freescale.com>
main
Scott Wood 2008-01-03 17:43:29 -06:00 committed by Jon Loeliger
parent 3bb78bfd97
commit f77fe6a20e
3 changed files with 14 additions and 4 deletions

View File

@ -307,15 +307,25 @@ label:

%%

void yyerror (char const *s)
void yyerrorf(char const *s, ...)
{
const char *fname = srcpos_filename_for_num(yylloc.filenum);
va_list va;
va_start(va, s);

if (strcmp(fname, "-") == 0)
fname = "stdin";

fprintf(stderr, "%s:%d %s\n",
fname, yylloc.first_line, s);
fprintf(stderr, "%s:%d ", fname, yylloc.first_line);
vfprintf(stderr, s, va);
fprintf(stderr, "\n");

va_end(va);
}

void yyerror (char const *s)
{
yyerrorf("%s", s);
}

unsigned long long eval_literal(const char *s, int base, int bits)

View File

@ -63,6 +63,7 @@ typedef struct YYLTYPE {


extern void yyerror(char const *);
extern void yyerrorf(char const *, ...) __attribute__((format(printf, 1, 2)));

extern int srcpos_filenum;


View File

@ -23,7 +23,6 @@

extern FILE *yyin;
extern int yyparse(void);
extern void yyerror(char const *);

struct boot_info *the_boot_info;