Clean up error definitions, location and expose them in the headers

- Exposes all errors in the header file so any user of the api can test
   for the specific error conditions
 - Mark all static error pointers as const
 - Move generic errors into error.h
 - Name all errors err_modulename_* for errors that belong to a specific
   module and err_* for generic errors.
This commit is contained in:
2025-04-04 12:23:35 +02:00
parent cb8768b1d0
commit af66790cff
8 changed files with 24 additions and 17 deletions

View File

@ -5,21 +5,16 @@
#include <errno.h>
#include <string.h>
error_t *err_lexer_already_open = &(error_t){
error_t *const err_lexer_already_open = &(error_t){
.message =
"Can't open on a lexer object that is already opened. Close it first."};
error_t *err_prefix_too_large =
error_t *const err_prefix_too_large =
&(error_t){.message = "Prefix too large for internal lexer buffer"};
error_t *err_buffer_underrun = &(error_t){
error_t *const err_buffer_underrun = &(error_t){
.message = "Buffer does not contain enough characters for lexer_consume_n"};
error_t *err_consume_excessive_length =
error_t *const err_consume_excessive_length =
&(error_t){.message = "Too many valid characters to consume"};
error_t *err_eof =
&(error_t){.message = "Can't read from file because EOF is reached"};
error_t *err_unknown_read = &(error_t){.message = "Unknown read error"};
typedef bool (*char_predicate_t)(char);
const char *lexer_token_id_to_cstr(lexer_token_id_t id) {
@ -112,7 +107,7 @@ error_t *lexer_fill_buffer(lexer_t *lex) {
if (n == 0 && ferror(lex->fp))
return errorf("Read error: %s", strerror(errno));
if (n == 0)
return err_unknown_read;
return err_unknown_read_failure;
remaining -= n;
lex->buffer_count += n;
}