static clib_error_handler_t *handlers = 0;
-void
+__clib_export void
clib_error_register_handler (clib_error_handler_func_t func, void *arg)
{
clib_error_handler_t h = {.func = func,.arg = arg, };
return msg;
}
-void
-_clib_error (int how_to_die,
- char *function_name, uword line_number, char *fmt, ...)
+__clib_export void
+_clib_error (int how_to_die, const char *function_name, uword line_number,
+ const char *fmt, ...)
{
u8 *msg = 0;
va_list va;
error_exit (1);
}
-clib_error_t *
-_clib_error_return (clib_error_t * errors,
- any code, uword flags, char *where, char *fmt, ...)
+__clib_export clib_error_t *
+_clib_error_return (clib_error_t *errors, any code, uword flags,
+ const char *where, const char *fmt, ...)
{
clib_error_t *e;
va_list va;
return errors;
}
-void *
+__clib_export void *
clib_error_free_vector (clib_error_t * errors)
{
clib_error_t *e;
return 0;
}
-u8 *
+__clib_export u8 *
format_clib_error (u8 * s, va_list * va)
{
clib_error_t *errors = va_arg (*va, clib_error_t *);
vec_free (where);
}
- s = format (s, "%v\n", e->what);
+ s = format (s, "%v", e->what);
+ if ((vec_end (errors) - 1) != e)
+ s = format (s, "\n");
}
return s;
}
-clib_error_t *
+__clib_export clib_error_t *
_clib_error_report (clib_error_t * errors)
{
if (errors)