roza/lib/err.c

48 lines
766 B
C
Raw Normal View History

2023-12-09 17:24:41 +00:00
#include "err.h"
void err_init(err_t* err)
{
assert(err);
err->size = 0;
}
void err_free(err_t* err)
{
assert(err);
for (size_t i=0; i<err->size; i++)
{
free(err->errors[i]->what);
free(err->errors[i]);
}
err->size = 0;
}
void err_error(err_t* err, char* what, int line)
{
assert(err);
assert(err->size + 1 < RZ_ERROR_STACK_SIZE);
err->errors[err->size] = malloc(sizeof(err_msg_t));
err->errors[err->size]->what = strdup(what);
err->errors[err->size]->line = line;
err->size++;
}
void err_abort(err_t* err)
{
assert(err);
for (size_t i=0; i<err->size; i++)
{
fprintf(stderr, "ERR(%d) %s\n",
err->errors[i]->line,
err->errors[i]->what);
}
err_free(err);
abort();
}