Commit Diff


commit - 37f62f5d4e914963adfbf2085f5fd9294d79b497
commit + 66ea8e5adfb496de581ba4b78479f3258692ee9e
blob - c4259e18e965b715f404bfcfb23821be55b30468
blob + f9307b1fc9fb1776eb3f64b4bf48067896283ca3
--- lib/diff_output_unidiff.c
+++ lib/diff_output_unidiff.c
@@ -144,6 +144,7 @@ output_unidiff_chunk(struct diff_output_info *outinfo,
 		     struct diff_output_unidiff_state *state,
 		     const struct diff_input_info *info,
 		     const struct diff_result *result,
+		     bool print_header,
 		     const struct diff_chunk_context *cc)
 {
 	int rc, left_start, left_len, right_start, right_len;
@@ -157,7 +158,7 @@ output_unidiff_chunk(struct diff_output_info *outinfo,
 		outoff = outinfo->line_offsets.head[idx];
 	}
 
-	if (!(state->header_printed)) {
+	if (print_header && !(state->header_printed)) {
 		rc = fprintf(dest, "--- %s\n", info->left_path ? : "a");
 		if (rc < 0)
 			return errno;
@@ -304,7 +305,7 @@ diff_output_unidiff_chunk(struct diff_output_info **ou
 	}
 
 	return output_unidiff_chunk(outinfo, dest, state, info,
-	    result, cc);
+	    result, false, cc);
 }
 
 int
@@ -403,14 +404,16 @@ diff_output_unidiff(struct diff_output_info **output_i
 		debug("new chunk to be printed does not touch previous chunk;"
 		      " print left %d-%d right %d-%d\n",
 		      cc.left.start, cc.left.end, cc.right.start, cc.right.end);
-		output_unidiff_chunk(outinfo, dest, state, info, result, &cc);
+		output_unidiff_chunk(outinfo, dest, state, info, result,
+		    true, &cc);
 		cc = next;
 		debug("new unprinted chunk is left %d-%d right %d-%d\n",
 		      cc.left.start, cc.left.end, cc.right.start, cc.right.end);
 	}
 
 	if (!diff_chunk_context_empty(&cc))
-		output_unidiff_chunk(outinfo, dest, state, info, result, &cc);
+		output_unidiff_chunk(outinfo, dest, state, info, result,
+		    true, &cc);
 	diff_output_unidiff_state_free(state);
 	return DIFF_RC_OK;
 }