#include "filter-parser.h"
#include "filter-scanner.h"
-void yyerror(yyscan_t *locp, struct libscols_filter *fltr, char const *msg);
+void yyerror(yyscan_t *locp, struct libscols_filter *fltr, char const *fmt, ...);
%}
void yyerror (yyscan_t *locp __attribute__((__unused__)),
struct libscols_filter *fltr,
- char const *msg)
+ char const *fmt, ...)
{
- if (msg && fltr) {
+ if (fmt && fltr) {
char *p;
+ va_list ap;
- if (fltr->errmsg)
+ if (fltr->errmsg) {
free(fltr->errmsg);
+ fltr->errmsg = NULL;
+ }
+
+ va_start(ap, fmt);
+ vasprintf(&fltr->errmsg, fmt, ap);
+ va_end(ap);
- fltr->errmsg = strdup(msg);
if (!fltr->errmsg)
return;