diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main.c | 7 | ||||
-rw-r--r-- | src/renderer.c | 12 |
2 files changed, 13 insertions, 6 deletions
@@ -195,12 +195,9 @@ main(int argc, char **argv) sources = b_slist_append(sources, b_strdup(argv[i])); } - if (b_slist_length(sources) == 0) { + if (!listing && b_slist_length(sources) == 0) { blogc_print_usage(); - if (listing) - fprintf(stderr, "blogc: error: at least one source file is required\n"); - else - fprintf(stderr, "blogc: error: one source file is required\n"); + fprintf(stderr, "blogc: error: one source file is required\n"); rv = 2; goto cleanup; } diff --git a/src/renderer.c b/src/renderer.c index bf8b8cc..47a5f87 100644 --- a/src/renderer.c +++ b/src/renderer.c @@ -71,7 +71,7 @@ blogc_format_date(const char *date, b_trie_t *global, b_trie_t *local) char* blogc_render(b_slist_t *tmpl, b_slist_t *sources, b_trie_t *config, bool listing) { - if (tmpl == NULL || sources == NULL) + if (tmpl == NULL) return NULL; b_slist_t *current_source = NULL; @@ -136,6 +136,16 @@ blogc_render(b_slist_t *tmpl, b_slist_t *sources, b_trie_t *config, bool listing } } if (0 == strcmp("listing", stmt->value)) { + if (sources == NULL) { + + // we can just skip anything and walk until the next + // 'endblock' + while (stmt->type != BLOGC_TEMPLATE_ENDBLOCK_STMT) { + tmp = tmp->next; + stmt = tmp->data; + } + break; + } if (current_source == NULL) { listing_start = tmp; current_source = sources; |