Author: breser
Date: Tue Aug 19 13:09:32 2014
New Revision: 1618857

URL: http://svn.apache.org/r1618857
Log:
Add svn_diff_file_output_merge3() with cancel support and update callers.

* subversion/include/svn_diff.h
  (svn_diff_file_output_merge3): New function.
  (svn_diff_file_output_merge2): Deprecate.

* subversion/libsvn_diff/diff_file.c
  (svn_diff_file_output_merge2): Replace with ...
  (svn_diff_file_output_merge3): that adds cancel support.

* subversion/libsvn_diff/deprecated.c
  (svn_diff_file_output_merge2): New implementation that just uses
    svn_diff_file_output_merge3().

* subversion/libsvn_wc/conflicts.h
  (svn_wc__mark_resolved_text_conflict): Add cancel support.

* subversion/libsvn_wc/conflicts.c
  (merge_showing_conflicts, eval_text_conflict_func_result,
   resolve_text_conflict, svn_wc__mark_resolved_text_conflict):
    Add cancel support.
  (svn_wc__conflict_invoke_resolver): Pass cancel arguments to
    resolve_text_conflict() and svn_wc__mark_resolved_text_conflict()
  (resolve_text_conflict_on_node): Pass cancel arguments to
    merge_showing_conflicts.

* subversion/libsvn_wc/merge.c
  (do_text_merge): Add cancel support.
  (merge_text_file): Update caller.

* subversion/libsvn_wc/adm_crawler.c
  (restore_file): Update call to svn_wc__mark_resolved_text_conflict().
    Did not add cancel support here.

* subversion/svn/conflict-callbacks.c
  (show_conflicts, merge_prop_conflict, show_prop_conflict,
   edit_prop_conflict): Add cancel support.
  (handle_text_conflict): Update call to show_conflicts().
  (handle_prop_conflict): Update call to show_prop_conflict().

* subversion/tests/libsvn_diff/diff-diff3-test.c
  (three_way_merge): Switch to svn_diff_file_output_merge3().

* tools/diff/diff3.c
  (do_diff3): Switch to svn_diff_file_output_merge3().

* tools/diff/diff4.c
  (do_diff4): Switch to svn_diff_file_output_merge3().


Modified:
    subversion/trunk/subversion/include/svn_diff.h
    subversion/trunk/subversion/libsvn_diff/deprecated.c
    subversion/trunk/subversion/libsvn_diff/diff_file.c
    subversion/trunk/subversion/libsvn_wc/adm_crawler.c
    subversion/trunk/subversion/libsvn_wc/conflicts.c
    subversion/trunk/subversion/libsvn_wc/conflicts.h
    subversion/trunk/subversion/libsvn_wc/merge.c
    subversion/trunk/subversion/svn/conflict-callbacks.c
    subversion/trunk/subversion/tests/libsvn_diff/diff-diff3-test.c
    subversion/trunk/tools/diff/diff3.c
    subversion/trunk/tools/diff/diff4.c

Modified: subversion/trunk/subversion/include/svn_diff.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_diff.h?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_diff.h (original)
+++ subversion/trunk/subversion/include/svn_diff.h Tue Aug 19 13:09:32 2014
@@ -706,8 +706,30 @@ svn_diff_file_output_unified(svn_stream_
  * @a conflict_separator is @c NULL, a default marker will be displayed.
  * @a conflict_style dictates how conflicts are displayed.
  *
+ * @since New in 1.9.
+ */
+svn_error_t *
+svn_diff_file_output_merge3(svn_stream_t *output_stream,
+                            svn_diff_t *diff,
+                            const char *original_path,
+                            const char *modified_path,
+                            const char *latest_path,
+                            const char *conflict_original,
+                            const char *conflict_modified,
+                            const char *conflict_latest,
+                            const char *conflict_separator,
+                            svn_diff_conflict_display_style_t conflict_style,
+                            svn_cancel_func_t cancel_func,
+                            void *cancel_baton,
+                            apr_pool_t *pool);
+
+/** Similar to svn_diff_file_output_merge3, but without cancel support.
+ *
  * @since New in 1.6.
+ *
+ * @deprecated Provided for backward compatibility with the 1.8 API.
  */
+SVN_DEPRECATED
 svn_error_t *
 svn_diff_file_output_merge2(svn_stream_t *output_stream,
                             svn_diff_t *diff,

Modified: subversion/trunk/subversion/libsvn_diff/deprecated.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_diff/deprecated.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_diff/deprecated.c (original)
+++ subversion/trunk/subversion/libsvn_diff/deprecated.c Tue Aug 19 13:09:32 
2014
@@ -271,6 +271,31 @@ svn_diff_file_output_merge(svn_stream_t 
                                      pool);
 }
 
+svn_error_t *
+svn_diff_file_output_merge2(svn_stream_t *output_stream,
+                            svn_diff_t *diff,
+                            const char *original_path,
+                            const char *modified_path,
+                            const char *latest_path,
+                            const char *conflict_original,
+                            const char *conflict_modified,
+                            const char *conflict_latest,
+                            const char *conflict_separator,
+                            svn_diff_conflict_display_style_t conflict_style,
+                            apr_pool_t *pool)
+{
+  return svn_error_trace(svn_diff_file_output_merge3(output_stream,
+                                                     diff, original_path,
+                                                     modified_path,
+                                                     latest_path,
+                                                     conflict_original,
+                                                     conflict_modified,
+                                                     conflict_latest,
+                                                     conflict_separator,
+                                                     conflict_style,
+                                                     NULL, NULL, /* cancel */
+                                                     pool));
+}
 
 /*** From diff.c ***/
 svn_error_t *

Modified: subversion/trunk/subversion/libsvn_diff/diff_file.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_diff/diff_file.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_diff/diff_file.c (original)
+++ subversion/trunk/subversion/libsvn_diff/diff_file.c Tue Aug 19 13:09:32 2014
@@ -2344,7 +2344,7 @@ output_conflict(void *baton,
 }
 
 svn_error_t *
-svn_diff_file_output_merge2(svn_stream_t *output_stream,
+svn_diff_file_output_merge3(svn_stream_t *output_stream,
                             svn_diff_t *diff,
                             const char *original_path,
                             const char *modified_path,
@@ -2354,6 +2354,8 @@ svn_diff_file_output_merge2(svn_stream_t
                             const char *conflict_latest,
                             const char *conflict_separator,
                             svn_diff_conflict_display_style_t style,
+                            svn_cancel_func_t cancel_func,
+                            void *cancel_baton,
                             apr_pool_t *pool)
 {
   svn_diff3__file_output_baton_t baton;
@@ -2425,8 +2427,9 @@ svn_diff_file_output_merge2(svn_stream_t
     eol = APR_EOL_STR;
   baton.marker_eol = eol;
 
-  SVN_ERR(svn_diff_output(diff, &baton,
-                          &svn_diff3__file_output_vtable));
+  SVN_ERR(svn_diff_output2(diff, &baton,
+                          &svn_diff3__file_output_vtable,
+                          cancel_func, cancel_baton));
 
   for (idx = 0; idx < 3; idx++)
     {

Modified: subversion/trunk/subversion/libsvn_wc/adm_crawler.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/adm_crawler.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/adm_crawler.c (original)
+++ subversion/trunk/subversion/libsvn_wc/adm_crawler.c Tue Aug 19 13:09:32 2014
@@ -91,7 +91,8 @@ restore_file(svn_wc__db_t *db,
 
   /* Remove any text conflict */
   if (mark_resolved_text_conflict)
-    SVN_ERR(svn_wc__mark_resolved_text_conflict(db, local_abspath, 
scratch_pool));
+    SVN_ERR(svn_wc__mark_resolved_text_conflict(db, local_abspath, NULL, NULL,
+                                                scratch_pool));
 
   return SVN_NO_ERROR;
 }

Modified: subversion/trunk/subversion/libsvn_wc/conflicts.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/conflicts.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/conflicts.c (original)
+++ subversion/trunk/subversion/libsvn_wc/conflicts.c Tue Aug 19 13:09:32 2014
@@ -1537,6 +1537,8 @@ merge_showing_conflicts(const char **cho
                         const char *detranslated_target,
                         const char *right_abspath,
                         svn_io_file_del_t delete_when,
+                        svn_cancel_func_t cancel_func,
+                        void *cancel_baton,
                         apr_pool_t *result_pool,
                         apr_pool_t *scratch_pool)
 {
@@ -1565,12 +1567,12 @@ merge_showing_conflicts(const char **cho
                                 left_abspath,
                                 detranslated_target, right_abspath,
                                 diff3_options, scratch_pool));
-  SVN_ERR(svn_diff_file_output_merge2(chosen_stream, diff,
+  SVN_ERR(svn_diff_file_output_merge3(chosen_stream, diff,
                                       left_abspath,
                                       detranslated_target,
                                       right_abspath,
                                       NULL, NULL, NULL, NULL, /* markers */
-                                      style,
+                                      style, cancel_func, cancel_baton,
                                       scratch_pool));
   SVN_ERR(svn_stream_close(chosen_stream));
 
@@ -1608,6 +1610,8 @@ eval_text_conflict_func_result(svn_skel_
                                const char *right_abspath,
                                const char *merged_abspath,
                                const char *detranslated_target,
+                               svn_cancel_func_t cancel_func,
+                               void *cancel_baton,
                                apr_pool_t *result_pool,
                                apr_pool_t *scratch_pool)
 {
@@ -1654,6 +1658,7 @@ eval_text_conflict_func_result(svn_skel_
                                           right_abspath,
                                           /* ### why not same as other caller? 
*/
                                           svn_io_file_del_none,
+                                          cancel_func, cancel_baton,
                                           scratch_pool, scratch_pool));
           remove_source = TRUE;
           *is_resolved = TRUE;
@@ -1784,6 +1789,8 @@ resolve_text_conflict(svn_skel_t **work_
                       const apr_array_header_t *merge_options,
                       svn_wc_conflict_resolver_func2_t conflict_func,
                       void *conflict_baton,
+                      svn_cancel_func_t cancel_func,
+                      void *cancel_baton,
                       apr_pool_t *result_pool,
                       apr_pool_t *scratch_pool)
 {
@@ -1829,6 +1836,7 @@ resolve_text_conflict(svn_skel_t **work_
                                                ? result->merged_file
                                                : cdesc->merged_abspath,
                                              cdesc->my_abspath,
+                                             cancel_func, cancel_baton,
                                              result_pool, scratch_pool));
       *work_items = svn_wc__wq_merge(*work_items, work_item, result_pool);
     }
@@ -2059,6 +2067,7 @@ svn_wc__conflict_invoke_resolver(svn_wc_
                                     db, local_abspath, desc,
                                     merge_options,
                                     resolver_func, resolver_baton,
+                                    cancel_func, cancel_baton,
                                     scratch_pool, scratch_pool));
 
       if (was_resolved)
@@ -2072,6 +2081,8 @@ svn_wc__conflict_invoke_resolver(svn_wc_
                                      scratch_pool));
             }
           SVN_ERR(svn_wc__mark_resolved_text_conflict(db, local_abspath,
+                                                      cancel_func,
+                                                      cancel_baton,
                                                       scratch_pool));
         }
     }
@@ -2471,6 +2482,7 @@ resolve_text_conflict_on_node(svn_boolea
                                             conflict_new,
                                             /* ### why not same as other 
caller? */
                                             svn_io_file_del_on_pool_cleanup,
+                                            cancel_func, cancel_baton,
                                             scratch_pool, scratch_pool));
           }
         else
@@ -2895,6 +2907,8 @@ resolve_tree_conflict_on_node(svn_boolea
 svn_error_t *
 svn_wc__mark_resolved_text_conflict(svn_wc__db_t *db,
                                     const char *local_abspath,
+                                    svn_cancel_func_t cancel_func,
+                                    void *cancel_baton,
                                     apr_pool_t *scratch_pool)
 {
   svn_boolean_t ignored_result;
@@ -2903,7 +2917,7 @@ svn_wc__mark_resolved_text_conflict(svn_
                            &ignored_result,
                            db, local_abspath,
                            svn_wc_conflict_choose_merged, NULL,
-                           NULL, NULL,
+                           cancel_func, cancel_baton,
                            scratch_pool));
 }
 

Modified: subversion/trunk/subversion/libsvn_wc/conflicts.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/conflicts.h?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/conflicts.h (original)
+++ subversion/trunk/subversion/libsvn_wc/conflicts.h Tue Aug 19 13:09:32 2014
@@ -432,6 +432,8 @@ svn_wc__conflict_invoke_resolver(svn_wc_
 svn_error_t *
 svn_wc__mark_resolved_text_conflict(svn_wc__db_t *db,
                                     const char *local_abspath,
+                                    svn_cancel_func_t cancel_func,
+                                    void *cancel_baton,
                                     apr_pool_t *scratch_pool);
 
 /* Mark as resolved any prop conflicts on the node at DB/LOCAL_ABSPATH.  */

Modified: subversion/trunk/subversion/libsvn_wc/merge.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/merge.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/merge.c (original)
+++ subversion/trunk/subversion/libsvn_wc/merge.c Tue Aug 19 13:09:32 2014
@@ -392,6 +392,8 @@ do_text_merge(svn_boolean_t *contains_co
               const char *target_label,
               const char *left_label,
               const char *right_label,
+              svn_cancel_func_t cancel_func,
+              void *cancel_baton,
               apr_pool_t *pool)
 {
   svn_diff_t *diff;
@@ -416,13 +418,14 @@ do_text_merge(svn_boolean_t *contains_co
 
   ostream = svn_stream_from_aprfile2(result_f, TRUE, pool);
 
-  SVN_ERR(svn_diff_file_output_merge2(ostream, diff,
+  SVN_ERR(svn_diff_file_output_merge3(ostream, diff,
                                       left, detranslated_target, right,
                                       left_marker,
                                       target_marker,
                                       right_marker,
                                       "=======", /* separator */
                                       
svn_diff_conflict_display_modified_original_latest,
+                                      cancel_func, cancel_baton,
                                       pool));
   SVN_ERR(svn_stream_close(ostream));
 
@@ -871,6 +874,7 @@ merge_text_file(svn_skel_t **work_items,
                           target_label,
                           left_label,
                           right_label,
+                          cancel_func, cancel_baton,
                           pool));
 
   SVN_ERR(svn_io_file_close(result_f, pool));

Modified: subversion/trunk/subversion/svn/conflict-callbacks.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svn/conflict-callbacks.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/svn/conflict-callbacks.c (original)
+++ subversion/trunk/subversion/svn/conflict-callbacks.c Tue Aug 19 13:09:32 
2014
@@ -204,6 +204,8 @@ show_diff(const svn_wc_conflict_descript
  * and 'my' files of DESC. */
 static svn_error_t *
 show_conflicts(const svn_wc_conflict_description3_t *desc,
+               svn_cancel_func_t cancel_func,
+               void *cancel_baton,
                apr_pool_t *pool)
 {
   svn_diff_t *diff;
@@ -220,7 +222,7 @@ show_conflicts(const svn_wc_conflict_des
                                 options, pool));
   /* ### Consider putting the markers/labels from
      ### svn_wc__merge_internal in the conflict description. */
-  return svn_diff_file_output_merge2(output, diff,
+  return svn_diff_file_output_merge3(output, diff,
                                      desc->base_abspath,
                                      desc->my_abspath,
                                      desc->their_abspath,
@@ -229,6 +231,8 @@ show_conflicts(const svn_wc_conflict_des
                                      _(">>>>>>> THEIRS (select with 'tc')"),
                                      "=======",
                                      svn_diff_conflict_display_only_conflicts,
+                                     cancel_func,
+                                     cancel_baton,
                                      pool);
 }
 
@@ -244,6 +248,8 @@ static svn_error_t *
 merge_prop_conflict(svn_stream_t *output,
                     const svn_wc_conflict_description3_t *desc,
                     const char *merged_abspath,
+                    svn_cancel_func_t cancel_func,
+                    void *cancel_baton,
                     apr_pool_t *pool)
 {
   const char *base_abspath = desc->base_abspath;
@@ -275,7 +281,7 @@ merge_prop_conflict(svn_stream_t *output
                                 merged_abspath ? merged_abspath : my_abspath,
                                 their_abspath,
                                 options, pool));
-  SVN_ERR(svn_diff_file_output_merge2(output, diff,
+  SVN_ERR(svn_diff_file_output_merge3(output, diff,
                                       base_abspath,
                                       merged_abspath ? merged_abspath
                                                      : my_abspath,
@@ -285,6 +291,8 @@ merge_prop_conflict(svn_stream_t *output
                                       _(">>>>>>> THEIRS"),
                                       "=======",
                                       
svn_diff_conflict_display_modified_original_latest,
+                                      cancel_func,
+                                      cancel_baton,
                                       pool));
 
   return SVN_NO_ERROR;
@@ -300,12 +308,15 @@ merge_prop_conflict(svn_stream_t *output
 static svn_error_t *
 show_prop_conflict(const svn_wc_conflict_description3_t *desc,
                    const char *merged_abspath,
+                   svn_cancel_func_t cancel_func,
+                   void *cancel_baton,
                    apr_pool_t *pool)
 {
   svn_stream_t *output;
 
   SVN_ERR(svn_stream_for_stdout(&output, pool));
-  SVN_ERR(merge_prop_conflict(output, desc, merged_abspath, pool));
+  SVN_ERR(merge_prop_conflict(output, desc, merged_abspath,
+                              cancel_func, cancel_baton, pool));
 
   return SVN_NO_ERROR;
 }
@@ -374,7 +385,10 @@ edit_prop_conflict(const char **merged_f
                                    result_pool, scratch_pool));
   merged_prop = svn_stream_from_aprfile2(file, TRUE /* disown */,
                                          scratch_pool);
-  SVN_ERR(merge_prop_conflict(merged_prop, desc, NULL, scratch_pool));
+  SVN_ERR(merge_prop_conflict(merged_prop, desc, NULL,
+                              b->pb->cancel_func,
+                              b->pb->cancel_baton,
+                              scratch_pool));
   SVN_ERR(svn_stream_close(merged_prop));
   SVN_ERR(svn_io_file_flush(file, scratch_pool));
   SVN_ERR(open_editor(&performed_edit, file_path, b, scratch_pool));
@@ -778,7 +792,10 @@ handle_text_conflict(svn_wc_conflict_res
                                             "files not available.\n\n")));
               continue;
             }
-          SVN_ERR(show_conflicts(desc, iterpool));
+          SVN_ERR(show_conflicts(desc,
+                                 b->pb->cancel_func,
+                                 b->pb->cancel_baton,
+                                 iterpool));
           knows_something = TRUE;
         }
       else if (strcmp(opt->code, "df") == 0)
@@ -1020,7 +1037,9 @@ handle_prop_conflict(svn_wc_conflict_res
         }
       else if (strcmp(opt->code, "dc") == 0)
         {
-          SVN_ERR(show_prop_conflict(desc, merged_file_path, scratch_pool));
+          SVN_ERR(show_prop_conflict(desc, merged_file_path,
+                                     b->pb->cancel_func, b->pb->cancel_baton,
+                                     scratch_pool));
         }
       else if (strcmp(opt->code, "e") == 0)
         {

Modified: subversion/trunk/subversion/tests/libsvn_diff/diff-diff3-test.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/libsvn_diff/diff-diff3-test.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/libsvn_diff/diff-diff3-test.c (original)
+++ subversion/trunk/subversion/tests/libsvn_diff/diff-diff3-test.c Tue Aug 19 
13:09:32 2014
@@ -173,13 +173,15 @@ three_way_merge(const char *base_filenam
   actual = svn_stringbuf_create_empty(pool);
   ostream = svn_stream_from_stringbuf(actual, pool);
 
-  SVN_ERR(svn_diff_mem_string_output_merge2
+  SVN_ERR(svn_diff_mem_string_output_merge3
           (ostream, diff, original, modified, latest,
            apr_psprintf(pool, "||||||| %s", base_filename1),
            apr_psprintf(pool, "<<<<<<< %s", base_filename2),
            apr_psprintf(pool, ">>>>>>> %s", base_filename3),
            NULL, /* separator */
-           style, pool));
+           style,
+           NULL, NULL, /* cancel */
+           pool));
 
   SVN_ERR(svn_stream_close(ostream));
   if (strcmp(actual->data, expected) != 0)
@@ -199,14 +201,16 @@ three_way_merge(const char *base_filenam
                            APR_OS_DEFAULT, pool));
 
   ostream = svn_stream_from_aprfile2(output, FALSE, pool);
-  SVN_ERR(svn_diff_file_output_merge2(
+  SVN_ERR(svn_diff_file_output_merge3(
               ostream, diff,
               filename1, filename2, filename3,
               apr_psprintf(pool, "||||||| %s", base_filename1),
               apr_psprintf(pool, "<<<<<<< %s", base_filename2),
               apr_psprintf(pool, ">>>>>>> %s", base_filename3),
               NULL, /* separator */
-              style, pool));
+              style,
+              NULL, NULL, /* cancel */
+              pool));
   SVN_ERR(svn_stream_close(ostream));
   SVN_ERR(svn_stringbuf_from_file2(&actual, merge_name, pool));
   if (strcmp(actual->data, expected))

Modified: subversion/trunk/tools/diff/diff3.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/tools/diff/diff3.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/tools/diff/diff3.c (original)
+++ subversion/trunk/tools/diff/diff3.c Tue Aug 19 13:09:32 2014
@@ -51,13 +51,14 @@ do_diff3(svn_stream_t *ostream,
 
   *has_changes = svn_diff_contains_diffs(diff);
 
-  SVN_ERR(svn_diff_file_output_merge2(ostream, diff,
+  SVN_ERR(svn_diff_file_output_merge3(ostream, diff,
                                       original, modified, latest,
                                       conflict_original,
                                       conflict_modified,
                                       conflict_latest,
                                       "=======",
                                       conflict_style,
+                                      NULL, NULL, /* cancel */
                                       pool));
 
   return NULL;

Modified: subversion/trunk/tools/diff/diff4.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/tools/diff/diff4.c?rev=1618857&r1=1618856&r2=1618857&view=diff
==============================================================================
--- subversion/trunk/tools/diff/diff4.c (original)
+++ subversion/trunk/tools/diff/diff4.c Tue Aug 19 13:09:32 2014
@@ -42,10 +42,11 @@ do_diff4(svn_stream_t *ostream,
 
   SVN_ERR(svn_diff_file_diff4_2(&diff, original, modified, latest, ancestor,
                                 svn_diff_file_options_create(pool), pool));
-  SVN_ERR(svn_diff_file_output_merge2(ostream, diff,
+  SVN_ERR(svn_diff_file_output_merge3(ostream, diff,
                                       original, modified, latest,
                                       NULL, NULL, NULL, NULL,
                                       
svn_diff_conflict_display_modified_latest,
+                                      NULL, NULL, /* cancel */
                                       pool));
 
   return NULL;


Reply via email to