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; | 
