From mboxrd@z Thu Jan 1 00:00:00 1970 From: tim.nordell at logicpd.com (Tim Nordell) Date: Fri, 4 Mar 2016 17:29:34 -0600 Subject: [PATCH v2 5/8] ui-repolist: Factor out logic for emitting a new section heading In-Reply-To: <1457133901-12998-1-git-send-email-tim.nordell@logicpd.com> References: <1457133901-12998-1-git-send-email-tim.nordell@logicpd.com> Message-ID: <1457134177-4094-1-git-send-email-tim.nordell@logicpd.com> For a later commit in this series, this logic is common in a couple of places. This simplifies the logic a bit instead of having several nested checks. Additionally, this patch removes the need for using "!strcmp(c->section, "")" as this is equivalent to comparing "'\0' == repo->section[0]". Signed-off-by: Tim Nordell diff --git a/ui-repolist.c b/ui-repolist.c index 38a42c7..df2dc92 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -329,6 +329,30 @@ static void html_repository(struct cgit_repo *repo, bool sorted) html("\n"); } +static inline bool should_emit_section(struct repolist_ctx *c, struct cgit_repo *repo) +{ + /* If we're sorted, we will not have a new section emitted. */ + if (c->sorted) + return false; + + /* We need a valid repo section for the rest of the checks */ + if (NULL == repo->section) + return false; + + /* If the section title is blank (e.g. top-level), we never emit + * a section heading. */ + if ('\0' == repo->section[0]) + return false; + + /* Finally, compare the last section name to the current. If they're + * the same, do not emit a section area. */ + if (NULL != c->last_section && !strcmp(repo->section, c->last_section)) + return false; + + c->last_section = repo->section; + return true; +} + void cgit_print_repolist(void) { struct repolist_ctx repolist_ctx; @@ -375,16 +399,8 @@ void cgit_print_repolist(void) if (c->hits > ctx.qry.ofs + ctx.cfg.max_repo_count) continue; c->section = ctx.repo->section; - if (c->section && !strcmp(c->section, "")) - c->section = NULL; - if (!c->sorted && - ((c->last_section == NULL && c->section != NULL) || - (repolist_ctx.last_section != NULL && c->section == NULL) || - (repolist_ctx.last_section != NULL && c->section != NULL && - strcmp(c->section, c->last_section)))) { + if (should_emit_section(&repolist_ctx, ctx.repo)) html_section(ctx.repo, c->columns); - c->last_section = c->section; - } html_repository(ctx.repo, repolist_ctx.sorted); } html(""); -- 2.4.9