summaryrefslogtreecommitdiff
path: root/diff-helper.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-05-29 23:54:59 (GMT)
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-30 17:35:49 (GMT)
commitddafa7e93325d45cd4bd950dd8e89ff3188d0250 (patch)
tree61db38734c639c161a70781c9e56a790eb5d8ac0 /diff-helper.c
parentcad88fdf8d1ebafb5d4d1b92eb243ff86bae740b (diff)
downloadgit-ddafa7e93325d45cd4bd950dd8e89ff3188d0250.zip
git-ddafa7e93325d45cd4bd950dd8e89ff3188d0250.tar.gz
git-ddafa7e93325d45cd4bd950dd8e89ff3188d0250.tar.bz2
[PATCH] diff-helper: Fix R/C score parsing under -z flag.
The score number that follow R/C status were parsed but the parse pointer was not updated, causing the entire line to become unrecognized. This patch fixes this problem. There was a test missing to catch this breakage, which this commit adds as t4009-diff-rename-4.sh. The diff-raw tests used in related t4005-diff-rename-2.sh (the same test without -z) and t4007-rename-3.sh were stricter than necessarily, despite that the comment for the tests said otherwise. This patch also corrects them. The documentation is updated to say that the status can optionally be followed by a number called "score"; it does not have to stay similarity index forever and there is no reason to limit it only to C and R. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'diff-helper.c')
-rw-r--r--diff-helper.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/diff-helper.c b/diff-helper.c
index 5ad2273..c9e287f 100644
--- a/diff-helper.c
+++ b/diff-helper.c
@@ -80,17 +80,16 @@ int main(int ac, const char **av) {
if (!strchr("MCRNDU", status))
break;
two_paths = score = 0;
- if (status == 'R' || status == 'C') {
+ if (status == 'R' || status == 'C')
two_paths = 1;
- sscanf(cp, "%d", &score);
- if (line_termination) {
- cp = strchr(cp,
- inter_name_termination);
- if (!cp)
- break;
- }
- }
+ /* pick up score if exists */
+ if (sscanf(cp, "%d", &score) != 1)
+ score = 0;
+ cp = strchr(cp,
+ inter_name_termination);
+ if (!cp)
+ break;
if (*cp++ != inter_name_termination)
break;