aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2015-11-04 00:04:10 -0200
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2015-11-04 00:04:10 -0200
commit56736b7b39218c10efd64f305f7a35df9d4bc0af (patch)
treed48ededd476a1994cb84fcc865e6346a8f60ba1d
parentd29c85ef1751cb46c579b3292f676605d9f86951 (diff)
downloadblogc-56736b7b39218c10efd64f305f7a35df9d4bc0af.tar.gz
blogc-56736b7b39218c10efd64f305f7a35df9d4bc0af.tar.bz2
blogc-56736b7b39218c10efd64f305f7a35df9d4bc0af.zip
content-parser: handle errors (that are handler as warnings) in directives
-rw-r--r--src/content-parser.c5
-rw-r--r--src/directives.c5
-rw-r--r--src/directives.h3
-rw-r--r--src/error.c3
-rw-r--r--src/error.h1
5 files changed, 13 insertions, 4 deletions
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 {