diff options
| author | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2016-09-09 01:13:23 +0200 | 
|---|---|---|
| committer | Rafael G. Martins <rafael@rafaelmartins.eng.br> | 2016-09-09 01:13:23 +0200 | 
| commit | e1db398049adf8ea37cebfc8f816be12f9ba131c (patch) | |
| tree | ae6efacc5172caf211abe65510c105029ee2e09e /src/common | |
| parent | d97662894bab06133830c2936986b7f1e57ae26f (diff) | |
| download | blogc-e1db398049adf8ea37cebfc8f816be12f9ba131c.tar.gz blogc-e1db398049adf8ea37cebfc8f816be12f9ba131c.tar.bz2 blogc-e1db398049adf8ea37cebfc8f816be12f9ba131c.zip | |
*: centralize error handling
Diffstat (limited to 'src/common')
| -rw-r--r-- | src/common/error.c | 29 | ||||
| -rw-r--r-- | src/common/error.h | 13 | 
2 files changed, 41 insertions, 1 deletions
| diff --git a/src/common/error.c b/src/common/error.c index dbc1d81..78cdc86 100644 --- a/src/common/error.c +++ b/src/common/error.c @@ -101,6 +101,35 @@ bc_error_parser(int type, const char *src, size_t src_len,  } +// error handling is centralized here for the sake of simplicity :/ +void +bc_error_print(bc_error_t *err) +{ +    if (err == NULL) +        return; + +    switch(err->type) { +        case BLOGC_ERROR_SOURCE_PARSER: +            fprintf(stderr, "blogc: error: source: %s\n", err->msg); +            break; +        case BLOGC_ERROR_TEMPLATE_PARSER: +            fprintf(stderr, "blogc: error: template: %s\n", err->msg); +            break; +        case BLOGC_ERROR_LOADER: +            fprintf(stderr, "blogc: error: loader: %s\n", err->msg); +            break; +        case BLOGC_ERROR_FILE: +            fprintf(stderr, "blogc: error: file: %s\n", err->msg); +            break; +        case BLOGC_WARNING_DATETIME_PARSER: +            fprintf(stderr, "blogc: warning: datetime: %s\n", err->msg); +            break; +        default: +            fprintf(stderr, "blogc: error: %s\n", err->msg); +    } +} + +  void  bc_error_free(bc_error_t *err)  { diff --git a/src/common/error.h b/src/common/error.h index 17843ed..f2845df 100644 --- a/src/common/error.h +++ b/src/common/error.h @@ -11,9 +11,20 @@  #include <stddef.h> +// error handling is centralized here for the sake of simplicity :/ +typedef enum { + +    // errors for src/blogc +    BLOGC_ERROR_SOURCE_PARSER = 100, +    BLOGC_ERROR_TEMPLATE_PARSER, +    BLOGC_ERROR_LOADER, +    BLOGC_ERROR_FILE, +    BLOGC_WARNING_DATETIME_PARSER, +} bc_error_type_t; +  typedef struct {      char *msg; -    int type; +    bc_error_type_t type;  } bc_error_t;  bc_error_t* bc_error_new(int type, const char *msg); | 
