Diffstat (limited to 'shared.c')
| -rw-r--r-- | shared.c | 19 |
1 files changed, 14 insertions, 5 deletions
@@ -100,15 +100,23 @@ void *cgit_free_commitinfo(struct commitinfo *info) char *trim_end(const char *str, char c) { int len; + char *s, *t; if (str == NULL) return NULL; - len = strlen(str); - while(len > 0 && str[len - 1] == c) + t = (char *)str; + len = strlen(t); + while(len > 0 && t[len - 1] == c) len--; + if (len == 0) return NULL; - return xstrndup(str, len); + + c = t[len]; + t[len] = '\0'; + s = xstrdup(t); + t[len] = c; + return s; } char *strlpart(char *txt, int maxlen) @@ -303,6 +311,7 @@ void cgit_diff_tree(const unsigned char *old_sha1, filepair_fn fn, const char *prefix, int ignorews) { struct diff_options opt; + int ret; int prefixlen; diff_setup(&opt); @@ -323,9 +332,9 @@ void cgit_diff_tree(const unsigned char *old_sha1, diff_setup_done(&opt); if (old_sha1 && !is_null_sha1(old_sha1)) - diff_tree_sha1(old_sha1, new_sha1, "", &opt); + ret = diff_tree_sha1(old_sha1, new_sha1, "", &opt); else - diff_root_tree_sha1(new_sha1, "", &opt); + ret = diff_root_tree_sha1(new_sha1, "", &opt); diffcore_std(&opt); diff_flush(&opt); } |