From: Junio C Hamano Date: Sun, 22 Jun 2008 21:33:56 +0000 (-0700) Subject: Merge branch 'jc/maint-combine-diff-pre-context' X-Git-Tag: v1.6.0-rc0~231 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=bc9c3e0b932c5e14de749e07f5045197e7d6cd76;hp=-c;p=git.git Merge branch 'jc/maint-combine-diff-pre-context' * jc/maint-combine-diff-pre-context: diff -c/--cc: do not include uninteresting deletion before leading context --- bc9c3e0b932c5e14de749e07f5045197e7d6cd76 diff --combined combine-diff.c index 588c58bc5,b6af32455..9f80a1c5e --- a/combine-diff.c +++ b/combine-diff.c @@@ -84,6 -84,7 +84,7 @@@ struct sline /* bit 0 up to (N-1) are on if the parent has this line (i.e. * we did not change it). * bit N is used for "interesting" lines, including context. + * bit (N+1) is used for "do not show deletion before this". */ unsigned long flag; unsigned long *p_lno; @@@ -308,6 -309,7 +309,7 @@@ static int give_context(struct sline *s { unsigned long all_mask = (1UL<lost_head; + ll = (sl->flag & no_pre_delete) ? NULL : sl->lost_head; while (ll) { fputs(c_old, stdout); for (j = 0; j < num_parent; j++) { @@@ -701,7 -704,7 +704,7 @@@ static void show_patch_diff(struct comb else if (0 <= (fd = open(elem->path, O_RDONLY)) && !fstat(fd, &st)) { size_t len = xsize_t(st.st_size); - size_t sz = 0; + ssize_t done; int is_file, i; elem->mode = canon_mode(st.st_mode); @@@ -716,13 -719,14 +719,13 @@@ result_size = len; result = xmalloc(len + 1); - while (sz < len) { - ssize_t done = xread(fd, result+sz, len-sz); - if (done == 0) - break; - if (done < 0) - die("read error '%s'", elem->path); - sz += done; - } + + done = read_in_full(fd, result, len); + if (done < 0) + die("read error '%s'", elem->path); + else if (done < len) + die("early EOF '%s'", elem->path); + result[len] = 0; } else { @@@ -797,7 -801,7 +800,7 @@@ int deleted = 0; if (rev->loginfo && !rev->no_commit_id) - show_log(rev, opt->msg_sep); + show_log(rev); dump_quoted_path(dense ? "diff --cc " : "diff --combined ", "", elem->path, c_meta, c_reset); printf("%sindex ", c_meta); @@@ -880,7 -884,7 +883,7 @@@ static void show_raw_diff(struct combin inter_name_termination = 0; if (rev->loginfo && !rev->no_commit_id) - show_log(rev, opt->msg_sep); + show_log(rev); if (opt->output_format & DIFF_FORMAT_RAW) { offset = strlen(COLONS) - num_parent; @@@ -961,7 -965,7 +964,7 @@@ void diff_tree_combined(const unsigned paths = intersect_paths(paths, i, num_parent); if (show_log_first && i == 0) { - show_log(rev, opt->msg_sep); + show_log(rev); if (rev->verbose_header && opt->output_format) putchar(opt->line_termination); }