Author: rinrab
Date: Fri May  9 14:08:38 2025
New Revision: 1925477

URL: http://svn.apache.org/viewvc?rev=1925477&view=rev
Log:
Open patch file outside of the apply_patches() routine, but accept
svn_patch_file_t instead.

* subversion/libsvn_client/patch.c
  (apply_patches): Change arguments so we require a patch_file instead of
   a local path and remove the code that opens and closes the patch file.
  (svn_client_patch): Open and intialise the patch file.

No functional changes. Yet.

Modified:
    subversion/trunk/subversion/libsvn_client/patch.c

Modified: subversion/trunk/subversion/libsvn_client/patch.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/patch.c?rev=1925477&r1=1925476&r2=1925477&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/patch.c (original)
+++ subversion/trunk/subversion/libsvn_client/patch.c Fri May  9 14:08:38 2025
@@ -3613,8 +3613,8 @@ check_ancestor_delete(const char *delete
 
 /* This function is the main entry point into the patch code. */
 static svn_error_t *
-apply_patches(/* The path to the patch file. */
-              const char *patch_abspath,
+apply_patches(/* The descriptor of the patch file. */
+              svn_patch_file_t *patch_file,
               /* The abspath to the working copy the patch should be applied 
to. */
               const char *root_abspath,
               /* Indicates whether we're doing a dry run. */
@@ -3636,12 +3636,8 @@ apply_patches(/* The path to the patch f
 {
   svn_patch_t *patch;
   apr_pool_t *iterpool;
-  svn_patch_file_t *patch_file;
   apr_array_header_t *targets_info;
 
-  /* Try to open the patch file. */
-  SVN_ERR(svn_diff_open_patch_file(&patch_file, patch_abspath, scratch_pool));
-
   /* Apply patches. */
   targets_info = apr_array_make(scratch_pool, 0,
                                 sizeof(patch_target_info_t *));
@@ -3720,7 +3716,6 @@ apply_patches(/* The path to the patch f
     }
   while (patch);
 
-  SVN_ERR(svn_diff_close_patch_file(patch_file, iterpool));
   svn_pool_destroy(iterpool);
 
   return SVN_NO_ERROR;
@@ -3740,6 +3735,7 @@ svn_client_patch(const char *patch_abspa
                  apr_pool_t *scratch_pool)
 {
   svn_node_kind_t kind;
+  svn_patch_file_t *patch_file;
 
   if (strip_count < 0)
     return svn_error_create(SVN_ERR_INCORRECT_PARAMS, NULL,
@@ -3775,10 +3771,15 @@ svn_client_patch(const char *patch_abspa
                              svn_dirent_local_style(wc_dir_abspath,
                                                     scratch_pool));
 
+  SVN_ERR(svn_diff_open_patch_file(&patch_file, patch_abspath, scratch_pool));
+
   SVN_WC__CALL_WITH_WRITE_LOCK(
-    apply_patches(patch_abspath, wc_dir_abspath, dry_run, strip_count,
+    apply_patches(patch_file, wc_dir_abspath, dry_run, strip_count,
                   reverse, ignore_whitespace, remove_tempfiles,
                   patch_func, patch_baton, ctx, scratch_pool),
     ctx->wc_ctx, wc_dir_abspath, FALSE /* lock_anchor */, scratch_pool);
+
+  SVN_ERR(svn_diff_close_patch_file(patch_file, scratch_pool));
+
   return SVN_NO_ERROR;
 }


Reply via email to