X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/0255821e22678d4c58c809efe17bf2798835d5b9..f32a2da636ffa6eaa6b8d0d3f35a673fa12e404a:/shared.c diff --git a/shared.c b/shared.c index cc06930..919a99e 100644 --- a/shared.c +++ b/shared.c @@ -15,21 +15,21 @@ struct cgit_context ctx; int chk_zero(int result, char *msg) { if (result != 0) - die("%s: %s", msg, strerror(errno)); + die_errno("%s", msg); return result; } int chk_positive(int result, char *msg) { if (result <= 0) - die("%s: %s", msg, strerror(errno)); + die_errno("%s", msg); return result; } int chk_non_negative(int result, char *msg) { if (result < 0) - die("%s: %s", msg, strerror(errno)); + die_errno("%s", msg); return result; } @@ -63,6 +63,7 @@ struct cgit_repo *cgit_add_repo(const char *url) ret->enable_remote_branches = ctx.cfg.enable_remote_branches; ret->enable_subject_links = ctx.cfg.enable_subject_links; ret->max_stats = ctx.cfg.max_stats; + ret->branch_sort = ctx.cfg.branch_sort; ret->commit_sort = ctx.cfg.commit_sort; ret->module_link = ctx.cfg.module_link; ret->readme = ctx.cfg.readme; @@ -115,6 +116,27 @@ char *trim_end(const char *str, char c) return xstrndup(str, len); } +char *ensure_end(const char *str, char c) +{ + size_t len = strlen(str); + char *result; + + if (len && str[len - 1] == c) + return xstrndup(str, len); + + result = xmalloc(len + 2); + memcpy(result, str, len); + result[len] = '/'; + result[len + 1] = '\0'; + return result; +} + +void strbuf_ensure_end(struct strbuf *sb, char c) +{ + if (!sb->len || sb->buf[sb->len - 1] != c) + strbuf_addch(sb, c); +} + char *strlpart(char *txt, int maxlen) { char *result; @@ -446,8 +468,7 @@ int cgit_open_filter(struct cgit_filter *filter) chk_non_negative(dup2(filter->pipe_fh[0], STDIN_FILENO), "Unable to use pipe as STDIN"); execvp(filter->cmd, filter->argv); - die("Unable to exec subprocess %s: %s (%d)", filter->cmd, - strerror(errno), errno); + die_errno("Unable to exec subprocess %s", filter->cmd); } close(filter->pipe_fh[0]); chk_non_negative(dup2(filter->pipe_fh[1], STDOUT_FILENO),