diff options
author | Hugo Hörnquist <hugo@hornquist.se> | 2019-02-10 01:05:15 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@hornquist.se> | 2019-02-10 01:05:15 +0100 |
commit | 226e98b5fb330449996801dcbaa1a7b044d711ae (patch) | |
tree | 4054d5c7bb4918245b063d6bc1c168b20ee07e02 /parse.c | |
parent | Add attr_helper to graph output. (diff) | |
download | calp-226e98b5fb330449996801dcbaa1a7b044d711ae.tar.gz calp-226e98b5fb330449996801dcbaa1a7b044d711ae.tar.xz |
Minor general cleanup.
Diffstat (limited to '')
-rw-r--r-- | parse.c | 15 |
1 files changed, 12 insertions, 3 deletions
@@ -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, |