m.category = MSG_DATA;
m.severity = MSG_ERROR;
- msg_location (&m.where);
m.text = ds_cstr (&text);
msg_emit (&m);
i->e--;
}
-/* Returns nonzero if we're not at the end of the string being
+/* Returns true if we're not at the end of the string being
parsed. */
static inline bool
have_char (struct data_in *i)
if (!have_char (i))
return true;
- dls_error (i, _("Trailing garbage \"%s\" following date."), i->s);
+ dls_error (i, _("Trailing garbage \"%.*s\" following date."),
+ (int) (i->e - i->s), i->s);
return false;
}
}
{
- static bool (*const handlers[FMT_NUMBER_OF_FORMATS])(struct data_in *) =
+ typedef bool (*handler_t) (struct data_in *);
+ static const handler_t handlers[FMT_NUMBER_OF_FORMATS] =
{
parse_numeric, parse_N, parse_numeric, parse_numeric,
parse_numeric, parse_numeric, parse_numeric,
parse_WKDAY, parse_MONTH,
};
- bool (*handler)(struct data_in *);
+ handler_t handler;
bool success;
handler = handlers[i->format.type];