diff.c: return filepair from diff_unmerge()
authorJunio C Hamano <gitster@pobox.com>
Fri, 22 Apr 2011 22:55:55 +0000 (15:55 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 24 Apr 2011 05:34:43 +0000 (22:34 -0700)
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>
diff.c
diff.h

diff --git a/diff.c b/diff.c
index 9a5c77c13ff3406a85e8a94f309a639529f2d88b..4c34c64bd7dac112e2bea27a0c99967e0b9bc050 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -4308,20 +4308,23 @@ void diff_change(struct diff_options *options,
                DIFF_OPT_SET(options, HAS_CHANGES);
 }
 
-void diff_unmerge(struct diff_options *options,
-                 const char *path,
-                 unsigned mode, const unsigned char *sha1)
+struct diff_filepair *diff_unmerge(struct diff_options *options,
+                                  const char *path,
+                                  unsigned mode, const unsigned char *sha1)
 {
+       struct diff_filepair *pair;
        struct diff_filespec *one, *two;
 
        if (options->prefix &&
            strncmp(path, options->prefix, options->prefix_length))
-               return;
+               return NULL;
 
        one = alloc_filespec(path);
        two = alloc_filespec(path);
        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,
diff --git a/diff.h b/diff.h
index bf2f44d840735684c89f654ee6f3b3a935af2c55..f51a8ee1b2a159814ce7fcca699b9895365ab2ff 100644 (file)
--- a/diff.h
+++ b/diff.h
@@ -209,7 +209,7 @@ extern void diff_change(struct diff_options *,
                        const char *fullpath,
                        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,
                         unsigned mode,
                         const unsigned char *sha1);