summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@github.com>2016-10-09 16:05:48 +0100
committerEdward Thomson <ethomson@github.com>2016-10-09 16:05:48 +0100
commit610cff13a31964eeb2264a452424e1e3d49accc3 (patch)
treeb8066e39eb0048097f03c68174364be01611a85a /src
parent2468bf0615a581e67c69bd47b6862eabb1940e5e (diff)
parentdc5cfdbab957a08f3ddda9889f68c81011eb1900 (diff)
downloadlibgit2-610cff13a31964eeb2264a452424e1e3d49accc3.tar.gz
Merge branch 'pr/3809'
Diffstat (limited to 'src')
-rw-r--r--src/diff_stats.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/diff_stats.c b/src/diff_stats.c
index 9c186d793..2005712cd 100644
--- a/src/diff_stats.c
+++ b/src/diff_stats.c
@@ -300,15 +300,24 @@ int git_diff_stats_to_buf(
}
if (format & GIT_DIFF_STATS_FULL || format & GIT_DIFF_STATS_SHORT) {
- error = git_buf_printf(
- out, " %" PRIuZ " file%s changed, %" PRIuZ
- " insertion%s(+), %" PRIuZ " deletion%s(-)\n",
- stats->files_changed, stats->files_changed != 1 ? "s" : "",
- stats->insertions, stats->insertions != 1 ? "s" : "",
- stats->deletions, stats->deletions != 1 ? "s" : "");
-
- if (error < 0)
- return error;
+ git_buf_printf(
+ out, " %" PRIuZ " file%s changed",
+ stats->files_changed, stats->files_changed != 1 ? "s" : "");
+
+ if (stats->insertions || stats->deletions == 0)
+ git_buf_printf(
+ out, ", %" PRIuZ " insertion%s(+)",
+ stats->insertions, stats->insertions != 1 ? "s" : "");
+
+ if (stats->deletions || stats->insertions == 0)
+ git_buf_printf(
+ out, ", %" PRIuZ " deletion%s(-)",
+ stats->deletions, stats->deletions != 1 ? "s" : "");
+
+ git_buf_putc(out, '\n');
+
+ if (git_buf_oom(out))
+ return -1;
}
if (format & GIT_DIFF_STATS_INCLUDE_SUMMARY) {
@@ -334,4 +343,3 @@ void git_diff_stats_free(git_diff_stats *stats)
git__free(stats->filestats);
git__free(stats);
}
-