[PATCH] diff-raw format update take #2.
[gitweb.git] / diff-tree.c
index 0fd28f12883e7e99d73d3b35f536e8168a366c06..0d21b18ff700a37509dfb9bd57f2fa636840cb5c 100644 (file)
@@ -270,17 +270,28 @@ static int call_diff_flush(void)
        if (pickaxe) {
                diffcore_pickaxe(pickaxe);
                if (diff_queue_is_empty()) {
-                       diff_flush(DIFF_FORMAT_NO_OUTPUT);
+                       diff_flush(DIFF_FORMAT_NO_OUTPUT, 0);
                        return 0;
                }
        }
        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);
+       diff_flush(diff_output_format, 1);
        return 1;
 }