summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-05-23 12:07:55 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-23 12:17:09 -0700
commit5831b563a442e7c3198a444a51d8caba4d072506 (patch)
tree770a89b014c4df5b3320e1c8bdd5a39abb719646
parent046aa6440fdf9a94df5e2f0609bef5d7415ff94a (diff)
downloadgit-5831b563a442e7c3198a444a51d8caba4d072506.tar.gz
[PATCH] NUL terminate diff-tree header lines under -z.
Thomas Glanzmann noticed that diff-tree -z HEAD piped to diff-helper -z did not work. Since diff-helper -z expects NUL terminated lines, we should generate such. The output side of the diff-helper should always be using '\n' termination; earlier it used the same line_termination used for the input side, which was a mistake. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--diff-helper.c2
-rw-r--r--diff-tree.c13
2 files changed, 13 insertions, 2 deletions
diff --git a/diff-helper.c b/diff-helper.c
index 23855759ee..c977a1b859 100644
--- a/diff-helper.c
+++ b/diff-helper.c
@@ -121,7 +121,7 @@ int main(int ac, const char **av) {
if (status) {
unrecognized:
diff_flush(diff_output_style);
- printf("%s%c", sb1.buf, line_termination);
+ printf("%s\n", sb1.buf);
}
}
if (detect_rename)
diff --git a/diff-tree.c b/diff-tree.c
index 0fd28f1288..2ec0d6fa81 100644
--- a/diff-tree.c
+++ b/diff-tree.c
@@ -277,7 +277,18 @@ static int call_diff_flush(void)
if (nr_paths)
diffcore_pathspec(paths);
if (header) {
- printf("%s", header);
+ if (diff_output_format == DIFF_FORMAT_MACHINE) {
+ const char *ep, *cp;
+ for (cp = header; *cp; cp = ep) {
+ ep = strchr(cp, '\n');
+ if (ep == 0) ep = cp + strlen(cp);
+ printf("%.*s%c", ep-cp, cp, 0);
+ if (*ep) ep++;
+ }
+ }
+ else {
+ printf("%s", header);
+ }
header = NULL;
}
diff_flush(diff_output_format);