diff.c: return filepair from diff_unmerge()

The underlying diff_queue() returns diff_filepair so that the caller can
further add information to it, and the helper function diff_unmerge()
utilizes the feature itself, but does not expose it to its callers, which
was kind of selfish.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 2011-04-22 15:55:55 -07:00
parent 3749fde561
commit 76399c0195
2 changed files with 9 additions and 6 deletions

13
diff.c
View File

@ -4308,20 +4308,23 @@ void diff_change(struct diff_options *options,
DIFF_OPT_SET(options, HAS_CHANGES); DIFF_OPT_SET(options, HAS_CHANGES);
} }


void diff_unmerge(struct diff_options *options, struct diff_filepair *diff_unmerge(struct diff_options *options,
const char *path, const char *path,
unsigned mode, const unsigned char *sha1) unsigned mode, const unsigned char *sha1)
{ {
struct diff_filepair *pair;
struct diff_filespec *one, *two; struct diff_filespec *one, *two;


if (options->prefix && if (options->prefix &&
strncmp(path, options->prefix, options->prefix_length)) strncmp(path, options->prefix, options->prefix_length))
return; return NULL;


one = alloc_filespec(path); one = alloc_filespec(path);
two = alloc_filespec(path); two = alloc_filespec(path);
fill_filespec(one, sha1, mode); fill_filespec(one, sha1, mode);
diff_queue(&diff_queued_diff, one, two)->is_unmerged = 1; pair = diff_queue(&diff_queued_diff, one, two);
pair->is_unmerged = 1;
return pair;
} }


static char *run_textconv(const char *pgm, struct diff_filespec *spec, static char *run_textconv(const char *pgm, struct diff_filespec *spec,

2
diff.h
View File

@ -209,7 +209,7 @@ extern void diff_change(struct diff_options *,
const char *fullpath, const char *fullpath,
unsigned dirty_submodule1, unsigned dirty_submodule2); unsigned dirty_submodule1, unsigned dirty_submodule2);


extern void diff_unmerge(struct diff_options *, extern struct diff_filepair *diff_unmerge(struct diff_options *,
const char *path, const char *path,
unsigned mode, unsigned mode,
const unsigned char *sha1); const unsigned char *sha1);