diff options
| -rw-r--r-- | src/engine.c | 12 | ||||
| -rw-r--r-- | src/lexer.c | 8 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/engine.c b/src/engine.c index 8bc62e7..f4b2f63 100644 --- a/src/engine.c +++ b/src/engine.c @@ -92,12 +92,12 @@ handle_eachdo(char **buffer, key_match_t *match, directive_t *directive) char *path; - asprintf(&path, "%s/%s", msg->base_directory, operands->key); + asprintf(&path, "%s/%s", msg->base_directory, trim(operands->key)); list_t *files = enumfilesindir(path); free(path); if (files == NULL) { - printf("Could not find key %s\n", operands->key); + printf("Could not find key %s\n", trim(operands->key)); free(operands); return; } @@ -110,7 +110,7 @@ handle_eachdo(char **buffer, key_match_t *match, directive_t *directive) asprintf(&path, "%s/%s/%s", msg->base_directory, - operands->key, + trim(operands->key), (char *) file_wrp->ptr); FILE *f = fopen(path, "r"); @@ -189,8 +189,9 @@ handle_eachdo(char **buffer, key_match_t *match, directive_t *directive) list_delete(atoms); free(content); free(temp_buffer); - free(operands); + free(operands->key); free(original_content); + free(operands); } list_t * @@ -243,6 +244,9 @@ engine_ingest(char **buffer) break; case PUT: + free(directive->operands); + skip++; + break; case ENDEACHDO: case BODY: case CONTENT: diff --git a/src/lexer.c b/src/lexer.c index 9e38960..829942a 100644 --- a/src/lexer.c +++ b/src/lexer.c @@ -188,8 +188,8 @@ lexer_handle_eachdo(directive_t *directive, directive->type = EACHDO; eachdo_operands_t *operands = malloc(sizeof(eachdo_operands_t)); - operands->key = trim(strndup(buffer + n + strlen("eachdo"), - match->length - n - strlen("eachdo") - 2)); + operands->key = strndup(buffer + n + strlen("eachdo"), + match->length - n - strlen("eachdo") - 2); buffer += match->length; key_match_t *new_match; @@ -210,7 +210,6 @@ lexer_handle_eachdo(directive_t *directive, printf("Cannot find directive: %.*s\n", new_match->length, buffer + new_match->offset); - free(new_directive); free(new_match); free(directive); return; @@ -219,6 +218,9 @@ lexer_handle_eachdo(directive_t *directive, if (new_directive->type == ENDEACHDO) { free(new_directive); break; + } else { + /* TODO: delete_directive */ + free(new_directive->operands); } free(new_directive); |
