Skip to content

Commit

Permalink
lib: Introduce abstraction for failure logging implementations.
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergey-Kitov authored and villesavolainen committed Sep 7, 2018
1 parent 0574f9f commit 2362760
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/lib/failures.c
Expand Up @@ -52,6 +52,26 @@ static char *log_stamp_format = NULL, *log_stamp_format_suffix = NULL;
static bool failure_ignore_errors = FALSE, log_prefix_sent = FALSE;
static bool coredump_on_error = FALSE;

typedef int (*failure_write_to_file_t)(enum log_type type, string_t *data, size_t prefix_len);
typedef string_t *(*failure_format_str_t)(const struct failure_context *ctx,
size_t *prefix_len_r, const char *format,
va_list args);
typedef void (*failure_on_handler_failure_t)(const struct failure_context *ctx);
typedef void (*failure_post_handler_t)(const struct failure_context *ctx);


struct failure_handler_vfuncs {
failure_write_to_file_t write;
failure_format_str_t format;
failure_on_handler_failure_t on_handler_failure;
failure_post_handler_t post_handler;
};

struct failure_handler_config {
int fatal_err_reset;
struct failure_handler_vfuncs *v;
};

static void ATTR_FORMAT(2, 0)
i_internal_error_handler(const struct failure_context *ctx,
const char *format, va_list args);
Expand Down

0 comments on commit 2362760

Please sign in to comment.