summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/cf-lex.l15
-rw-r--r--conf/conf.h2
2 files changed, 14 insertions, 3 deletions
diff --git a/conf/cf-lex.l b/conf/cf-lex.l
index f608a3d3..9e6b120f 100644
--- a/conf/cf-lex.l
+++ b/conf/cf-lex.l
@@ -7,12 +7,15 @@
*/
%{
+#undef REJECT /* Avoid name clashes */
#include <errno.h>
#include <stdlib.h>
#include <string.h>
+#include <stdarg.h>
#include "nest/bird.h"
+#include "lib/string.h"
#include "conf/conf.h"
#include "conf/cf-parse.tab.h"
@@ -221,9 +224,16 @@ cf_lex_init_tables(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
@@ -243,3 +253,4 @@ cfg_strdup(char *c)
memcpy(z, c, l);
return z;
}
+
diff --git a/conf/conf.h b/conf/conf.h
index 974815a8..1e80628e 100644
--- a/conf/conf.h
+++ b/conf/conf.h
@@ -40,7 +40,7 @@ struct symbol {
void cf_lex_init_tables(void);
int cf_lex(void);
void cf_lex_init(int flag);
-void cf_error(char *msg) NORET;
+void cf_error(char *msg, ...) NORET;
void cf_allocate(void);
struct symbol *cf_default_name(char *prefix);