From 7a01d4616cec1831ec025e62bc64b4ec5d6ed600 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Sun, 10 Jun 2018 11:15:47 +0200 Subject: make: disable post listings if {atom_,}posts_per_page is 0 --- src/blogc-make/rules.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) (limited to 'src/blogc-make') diff --git a/src/blogc-make/rules.c b/src/blogc-make/rules.c index aea9c0f..8851313 100644 --- a/src/blogc-make/rules.c +++ b/src/blogc-make/rules.c @@ -53,6 +53,19 @@ posts_pagination(bm_ctx_t *ctx, bc_trie_t *variables, const char *variable) } +static bool +posts_pagination_enabled(bm_ctx_t *ctx, const char *variable) +{ + if (ctx == NULL || ctx->settings == NULL || ctx->settings->settings == NULL) + return false; + + long posts_per_page = strtol( + bc_trie_lookup(ctx->settings->settings, variable), + NULL, 10); // FIXME: improve + return posts_per_page != 0; +} + + // INDEX RULE static bc_slist_t* @@ -61,6 +74,9 @@ index_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL) return NULL; + if (!posts_pagination_enabled(ctx, "posts_per_page")) + return NULL; + bc_slist_t *rv = NULL; const char *html_ext = bc_trie_lookup(ctx->settings->settings, "html_ext"); @@ -119,6 +135,9 @@ atom_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL) return NULL; + if (!posts_pagination_enabled(ctx, "atom_posts_per_page")) + return NULL; + bc_slist_t *rv = NULL; const char *atom_prefix = bc_trie_lookup(ctx->settings->settings, "atom_prefix"); @@ -173,6 +192,9 @@ atom_tags_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL || ctx->settings->tags == NULL) return NULL; + if (!posts_pagination_enabled(ctx, "atom_posts_per_page")) + return NULL; + bc_slist_t *rv = NULL; const char *atom_prefix = bc_trie_lookup(ctx->settings->settings, "atom_prefix"); @@ -234,13 +256,15 @@ pagination_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL) return NULL; - long num_posts = bc_slist_length(ctx->posts_fctx); + // not using posts_pagination_enabled() here because we need to calculate + // posts per page here anyway, and the condition is different. long posts_per_page = strtol( bc_trie_lookup(ctx->settings->settings, "posts_per_page"), NULL, 10); // FIXME: improve if (posts_per_page <= 0) return NULL; + long num_posts = bc_slist_length(ctx->posts_fctx); size_t pages = ceilf(((float) num_posts) / posts_per_page); const char *pagination_prefix = bc_trie_lookup(ctx->settings->settings, @@ -374,6 +398,9 @@ tags_outputlist(bm_ctx_t *ctx) if (ctx == NULL || ctx->settings->posts == NULL || ctx->settings->tags == NULL) return NULL; + if (!posts_pagination_enabled(ctx, "posts_per_page")) + return NULL; + bc_slist_t *rv = NULL; const char *tag_prefix = bc_trie_lookup(ctx->settings->settings, "tag_prefix"); -- cgit v1.2.3-18-g5258