]> gitweb.ps.run Git - ps-cgit/blobdiff - shared.c
ui-summary: Pass filename to about-filter
[ps-cgit] / shared.c
index cc06930f68acad64c430ae1fea7c8bdd9c13ae60..919a99ef6629549fd597aa8154f78737306f1d03 100644 (file)
--- a/shared.c
+++ b/shared.c
@@ -15,21 +15,21 @@ struct cgit_context ctx;
 int chk_zero(int result, char *msg)
 {
        if (result != 0)
 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)
        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)
        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;
 }
 
        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->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;
        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);
 }
 
        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;
 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);
                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),
        }
        close(filter->pipe_fh[0]);
        chk_non_negative(dup2(filter->pipe_fh[1], STDOUT_FILENO),