aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2015-10-07 19:57:25 -0300
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2015-10-07 19:57:25 -0300
commitb54d7c65021d7d65c6a2b0088a6c3591e10ccfb3 (patch)
treed7e0a90501df18458c999cdeace1b963125e9a60 /src
parent1769387fb663d215871a901356dcd484c9587e58 (diff)
downloadblogc-b54d7c65021d7d65c6a2b0088a6c3591e10ccfb3.tar.gz
blogc-b54d7c65021d7d65c6a2b0088a6c3591e10ccfb3.tar.bz2
blogc-b54d7c65021d7d65c6a2b0088a6c3591e10ccfb3.zip
renderer: accept empty list of files with -l
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;