- diff_end = view->line + view->lines;
- if (line->type != LINE_DIFF_CHUNK) {
- diff_chunk = diff_hdr;
-
- } else {
- for (diff_chunk = line + 1; diff_chunk < diff_end; diff_chunk++)
- if (diff_chunk->type == LINE_DIFF_CHUNK ||
- diff_chunk->type == LINE_DIFF_HEADER)
- diff_end = diff_chunk;
-
- diff_chunk = line;
-
- while (diff_hdr->type != LINE_DIFF_CHUNK) {
- switch (diff_hdr->type) {
- case LINE_DIFF_HEADER:
- case LINE_DIFF_INDEX:
- case LINE_DIFF_ADD:
- case LINE_DIFF_DEL:
- break;
-
- default:
- diff_hdr++;
- continue;
- }
-
- if (!stage_diff_line(pipe, diff_hdr++)) {
- pclose(pipe);
- return FALSE;
- }
- }
- }
-
- while (diff_chunk < diff_end && stage_diff_line(pipe, diff_chunk))
- diff_chunk++;
+ if (!stage_diff_write(pipe, diff_hdr, chunk) ||
+ !stage_diff_write(pipe, chunk, view->line + view->lines))
+ chunk = NULL;