cf_error() now accepts any format strings instead of just an error

message. Also added extra kludge to get rid of collisions of REJECT
symbols.
This commit is contained in:
Martin Mares 1998-12-06 23:10:28 +00:00
parent a1bf6440b5
commit cc12cf05c7
2 changed files with 14 additions and 3 deletions

View file

@ -7,12 +7,15 @@
*/ */
%{ %{
#undef REJECT /* Avoid name clashes */
#include <errno.h> #include <errno.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <stdarg.h>
#include "nest/bird.h" #include "nest/bird.h"
#include "lib/string.h"
#include "conf/conf.h" #include "conf/conf.h"
#include "conf/cf-parse.tab.h" #include "conf/cf-parse.tab.h"
@ -221,9 +224,16 @@ cf_lex_init_tables(void)
} }
void void
cf_error(char *msg) cf_error(char *msg, ...)
{ {
die(PATH_CONFIG ", line %d: %s", cf_lino, msg); /* FIXME */
char buf[1024];
va_list args;
va_start(args, msg);
bvsprintf(buf, msg, args);
die(PATH_CONFIG ", line %d: %s", cf_lino, buf);
} }
void void
@ -243,3 +253,4 @@ cfg_strdup(char *c)
memcpy(z, c, l); memcpy(z, c, l);
return z; return z;
} }

View file

@ -40,7 +40,7 @@ struct symbol {
void cf_lex_init_tables(void); void cf_lex_init_tables(void);
int cf_lex(void); int cf_lex(void);
void cf_lex_init(int flag); void cf_lex_init(int flag);
void cf_error(char *msg) NORET; void cf_error(char *msg, ...) NORET;
void cf_allocate(void); void cf_allocate(void);
struct symbol *cf_default_name(char *prefix); struct symbol *cf_default_name(char *prefix);