aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main.c7
-rw-r--r--src/renderer.c12
2 files changed, 13 insertions, 6 deletions
diff --git a/src/main.c b/src/main.c
index 06b8714..616641f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;