aboutsummaryrefslogtreecommitdiff
path: root/parse.c
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@hornquist.se>2019-02-10 01:05:15 +0100
committerHugo Hörnquist <hugo@hornquist.se>2019-02-10 01:05:15 +0100
commit226e98b5fb330449996801dcbaa1a7b044d711ae (patch)
tree4054d5c7bb4918245b063d6bc1c168b20ee07e02 /parse.c
parentAdd attr_helper to graph output. (diff)
downloadcalp-226e98b5fb330449996801dcbaa1a7b044d711ae.tar.gz
calp-226e98b5fb330449996801dcbaa1a7b044d711ae.tar.xz
Minor general cleanup.
Diffstat (limited to 'parse.c')
-rw-r--r--parse.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/parse.c b/parse.c
index 77c3f8db..e10e8b23 100644
--- a/parse.c
+++ b/parse.c
@@ -13,6 +13,9 @@
#include "linked_list.inc.h"
#undef TYPE
+/*
+ * name *(";" param) ":" value CRLF
+ */
int parse_file(char* filename, FILE* f, vcomponent* root) {
int segments = 1;
SNEW(strbuf, str, segments * SEGSIZE);
@@ -81,6 +84,7 @@ int parse_file(char* filename, FILE* f, vcomponent* root) {
}
strbuf_copy(cline.vals.cur->value, &str);
+
/* TODO when do I actualy cap? */
// strbuf_cap(cline.vals.cur->value);
@@ -132,26 +136,31 @@ int parse_file(char* filename, FILE* f, vcomponent* root) {
vallen = str.ptr + 1;
strbuf_realloc(cline.vals.cur->value, vallen);
}
+
strbuf_copy(cline.vals.cur->value, &str);
strbuf_cap(cline.vals.cur->value);
handle_kv(&cline, line, &ctx);
+
}
+
FREE(strbuf)(&str);
FREE(content_line)(&cline);
// FREE(strbuf)(ctx.skip_to);
+
assert(POP(LLIST(vcomponent))(&ctx.comp_stack) == root);
assert(EMPTY(LLIST(strbuf))(&ctx.key_stack));
assert(EMPTY(LLIST(vcomponent))(&ctx.comp_stack));
+
FREE(LLIST(strbuf))(&ctx.key_stack);
FREE(LLIST(vcomponent))(&ctx.comp_stack);
free(ctx.filename);
+ FREE(strbuf)(&kv.key);
+ FREE(strbuf)(&kv.val);
+
return 0;
}
-/*
- * TODO Extend this to handle properties
- */
int handle_kv (
content_line* cline,
int line,