PC_graph/error_buffer.c
2024-12-18 15:52:01 +01:00

44 lines
1.0 KiB
C

#include "error_buffer.h"
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
void error_buffer_init(struct error_buffer *eb) {
eb->err = ERR_NO_ERR;
eb->text_len = 0;
eb->text[0] = 0;
}
void error_set(struct error_buffer *eb, enum error_code err) {
eb->err = err;
}
enum error_code error_get(const struct error_buffer *eb) {
return eb->err;
}
void error_printf(struct error_buffer *eb, const char *format, ...) {
va_list args;
int space = MAX_ERROR_MESSAGE_LENGTH - eb->text_len;
int write_size;
if (space == 0)
return;
va_start(args, format);
write_size = vsnprintf(eb->text + eb->text_len, MAX_ERROR_MESSAGE_LENGTH - eb->text_len, format, args);
va_end(args);
if (write_size < 0)
return;
if (write_size < space) {
eb->text_len += write_size;
} else {
eb->text_len = MAX_ERROR_MESSAGE_LENGTH;
}
}
const char *error_get_text(const struct error_buffer *eb) {
return eb->text;
}