From 56736b7b39218c10efd64f305f7a35df9d4bc0af Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Wed, 4 Nov 2015 00:04:10 -0200 Subject: content-parser: handle errors (that are handler as warnings) in directives --- src/content-parser.c | 5 ++++- src/directives.c | 5 +++-- src/directives.h | 3 ++- src/error.c | 3 +++ src/error.h | 1 + 5 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/content-parser.c b/src/content-parser.c index 042f308..a9ab9af 100644 --- a/src/content-parser.c +++ b/src/content-parser.c @@ -1114,8 +1114,11 @@ hr: case CONTENT_DIRECTIVE_PARAM_END: param_end: if (c == '\n' || c == '\r' || is_last) { + // FIXME: handle errors in the rest of the parser. + blogc_error_t *err = NULL; char *rv_d = blogc_directive_loader(directive_name, - directive_argument, directive_params); + directive_argument, directive_params, &err); + blogc_error_print(err); if (rv_d != NULL) b_string_append(rv, rv_d); free(rv_d); diff --git a/src/directives.c b/src/directives.c index 7a6b47f..5ff3b4d 100644 --- a/src/directives.c +++ b/src/directives.c @@ -11,10 +11,11 @@ #endif /* HAVE_CONFIG_H */ #include "utils/utils.h" - +#include "error.h" char* -blogc_directive_loader(const char *name, const char *argument, b_trie_t *params) +blogc_directive_loader(const char *name, const char *argument, b_trie_t *params, + blogc_error_t **err) { // TODO: implement me! return b_strdup("TODO\n"); diff --git a/src/directives.h b/src/directives.h index fa758e2..d03102a 100644 --- a/src/directives.h +++ b/src/directives.h @@ -10,8 +10,9 @@ #define _DIRECTIVES_H #include "utils/utils.h" +#include "error.h" char* blogc_directive_loader(const char *name, const char *argument, - b_trie_t *params); + b_trie_t *params, blogc_error_t **err); #endif /* _DIRECTIVES_H */ diff --git a/src/error.c b/src/error.c index 28396f8..e472d1f 100644 --- a/src/error.c +++ b/src/error.c @@ -125,6 +125,9 @@ blogc_error_print(blogc_error_t *err) case BLOGC_WARNING_DATETIME_PARSER: fprintf(stderr, "blogc: warning: datetime: %s\n", err->msg); break; + case BLOGC_WARNING_CONTENT_PARSER: + fprintf(stderr, "blogc: warning: content: %s\n", err->msg); + break; default: fprintf(stderr, "blogc: error: %s\n", err->msg); } diff --git a/src/error.h b/src/error.h index 845a316..02ccc96 100644 --- a/src/error.h +++ b/src/error.h @@ -17,6 +17,7 @@ typedef enum { BLOGC_ERROR_TEMPLATE_PARSER, BLOGC_ERROR_LOADER, BLOGC_WARNING_DATETIME_PARSER, + BLOGC_WARNING_CONTENT_PARSER, } blogc_error_type_t; typedef struct { -- cgit v1.2.3-18-g5258