// SPDX-FileCopyrightText: 2014-2024 Rafael G. Martins // SPDX-License-Identifier: BSD-3-Clause #pragma once #include // error handling is centralized here for the sake of simplicity :/ typedef enum { // errors for src/common BC_ERROR_CONFIG_PARSER = 1, BC_ERROR_FILE, // errors for src/blogc BLOGC_ERROR_SOURCE_PARSER = 100, BLOGC_ERROR_TEMPLATE_PARSER, BLOGC_ERROR_LOADER, BLOGC_WARNING_DATETIME_PARSER, // errors for src/blogc-make BLOGC_MAKE_ERROR_SETTINGS = 300, BLOGC_MAKE_ERROR_EXEC, BLOGC_MAKE_ERROR_ATOM, BLOGC_MAKE_ERROR_UTILS, } bc_error_type_t; typedef struct { char *msg; bc_error_type_t type; } bc_error_t; bc_error_t* bc_error_new(bc_error_type_t type, const char *msg); bc_error_t* bc_error_new_printf(bc_error_type_t type, const char *format, ...); bc_error_t* bc_error_parser(bc_error_type_t type, const char *src, size_t src_len, size_t current, const char *format, ...); void bc_error_print(bc_error_t *err, const char *prefix); void bc_error_free(bc_error_t *err);