You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by cm...@apache.org on 2011/01/20 20:07:58 UTC

svn commit: r1061463 - in /subversion/branches/uris-as-urls/subversion/libsvn_client: info.c list.c locking_commands.c log.c merge.c mergeinfo.c prop_commands.c ra.c relocate.c status.c switch.c util.c

Author: cmpilato
Date: Thu Jan 20 19:07:57 2011
New Revision: 1061463

URL: http://svn.apache.org/viewvc?rev=1061463&view=rev
Log:
On the 'uris-as-urls' branch, review and correct some use of the
svn_uri_* APIs.  (One step of many similar ones.)

* subversion/libsvn_client/info.c
  (push_dir_info, svn_client_info3): Review, correct (as needed), and
    rename uses of the svn_uri_* API.

* subversion/libsvn_client/list.c
  (svn_client_list2): (Same as above.)

* subversion/libsvn_client/locking_commands.c
  (organize_lock_targets): (Same as above.)

* subversion/libsvn_client/log.c
  (svn_client_log5): (Same as above.)

* subversion/libsvn_client/merge.c
  (make_conflict_versions, merge_reintegrate_locked): (Same as above.)

* subversion/libsvn_client/mergeinfo.c
  (svn_client_mergeinfo_get_merged): (Same as above.)

* subversion/libsvn_client/ra.c
  (svn_client__repos_locations): (Same as above.)

* subversion/libsvn_client/relocate.c
  (validator_func): (Same as above.)

* subversion/libsvn_client/status.c
  (reporter_link_path): (Same as above.)

* subversion/libsvn_client/switch.c
  (switch_internal): (Same as above.)

* subversion/libsvn_client/util.c
  (svn_client__path_relative_to_root): (Same as above.)

* subversion/libsvn_client/prop_commands.c
  (remote_propget, remote_proplist): (Same as above; also fixes some
    preexisting URI-encoding bugs.)

Modified:
    subversion/branches/uris-as-urls/subversion/libsvn_client/info.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/list.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/locking_commands.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/log.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/merge.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/mergeinfo.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/prop_commands.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/ra.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/relocate.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/status.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/switch.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/util.c

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/info.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/info.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/info.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/info.c Thu Jan 20 19:07:57 2011
@@ -291,7 +291,7 @@ push_dir_info(svn_ra_session_t *ra_sessi
       path = svn_relpath_join(dir, name, subpool);
       URL  = svn_path_url_add_component2(session_URL, name, subpool);
 
-      fs_path = svn_uri_is_child(repos_root, URL, subpool);
+      fs_path = svn_url_is_child(repos_root, URL, subpool);
       fs_path = apr_pstrcat(subpool, "/", fs_path, (char *)NULL);
       fs_path = svn_path_uri_decode(fs_path, subpool);
 
@@ -536,7 +536,7 @@ svn_client_info3(const char *abspath_or_
   SVN_ERR(svn_ra_get_repos_root2(ra_session, &repos_root_URL, pool));
   SVN_ERR(svn_ra_get_uuid2(ra_session, &repos_UUID, pool));
 
-  svn_uri_split(&parent_url, &base_name, url, pool);
+  svn_url_split(&parent_url, &base_name, url, pool);
   base_name = svn_path_uri_decode(base_name, pool);
 
   /* Get the dirent for the URL itself. */

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/list.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/list.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/list.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/list.c Thu Jan 20 19:07:57 2011
@@ -179,7 +179,7 @@ svn_client_list2(const char *path_or_url
 
               /* Open another session to the path's parent.  This server
                  doesn't support svn_ra_reparent anyway, so don't try it. */
-              svn_uri_split(&parent_url, &base_name, url, pool);
+              svn_url_split(&parent_url, &base_name, url, pool);
 
               /* 'base_name' is now the last component of an URL, but we want
                  to use it as a plain file name. Therefore, we must URI-decode

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/locking_commands.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/locking_commands.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/locking_commands.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/locking_commands.c Thu Jan 20 19:07:57 2011
@@ -191,7 +191,7 @@ organize_lock_targets(const char **commo
 
   /* Get the common parent and all paths */
   if (url_mode)
-    SVN_ERR(svn_uri_condense_targets(common_parent_url, &rel_targets,
+    SVN_ERR(svn_url_condense_targets(common_parent_url, &rel_targets,
                                      targets, TRUE, result_pool,
                                      scratch_pool));
   else
@@ -206,7 +206,7 @@ organize_lock_targets(const char **commo
     {
       const char *parent, *base;
       if (url_mode)
-        svn_uri_split(&parent, &base, *common_parent_url, result_pool);
+        svn_url_split(&parent, &base, *common_parent_url, result_pool);
       else
         svn_dirent_split(&parent, &base, *common_parent_url, result_pool);
 
@@ -271,15 +271,15 @@ organize_lock_targets(const char **commo
         }
 
       /* Condense our absolute urls and get the relative urls. */
-      SVN_ERR(svn_uri_condense_targets(&common_url, &rel_urls, urls,
+      SVN_ERR(svn_url_condense_targets(&common_url, &rel_urls, urls,
                                        FALSE, result_pool, scratch_pool));
 
       /* svn_uri_condense_targets leaves URLs empty if TARGETS only
          had 1 member, so we special case that (again). */
       if (apr_is_empty_array(rel_urls))
         {
-          const char *base_name = svn_uri_basename(common_url, scratch_pool);
-          common_url = svn_uri_dirname(common_url, result_pool);
+          const char *base_name = svn_url_basename(common_url, scratch_pool);
+          common_url = svn_url_dirname(common_url, result_pool);
           APR_ARRAY_PUSH(rel_urls, const char *) = base_name;
         }
 

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/log.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/log.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/log.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/log.c Thu Jan 20 19:07:57 2011
@@ -458,7 +458,7 @@ svn_client_log5(const apr_array_header_t
         return SVN_NO_ERROR;
 
       /* Find the base URL and condensed targets relative to it. */
-      SVN_ERR(svn_uri_condense_targets(&url_or_path, &condensed_targets,
+      SVN_ERR(svn_url_condense_targets(&url_or_path, &condensed_targets,
                                        target_urls, TRUE, pool, iterpool));
 
       if (condensed_targets->nelts == 0)

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/merge.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/merge.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/merge.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/merge.c Thu Jan 20 19:07:57 2011
@@ -489,12 +489,12 @@ make_conflict_versions(const svn_wc_conf
 
   *left = svn_wc_conflict_version_create(
             src_repos_url,
-            svn_uri_is_child(src_repos_url, left_url, merge_b->pool),
+            svn_url_is_child(src_repos_url, left_url, merge_b->pool),
             merge_b->merge_source.rev1, node_kind, merge_b->pool);
 
   *right = svn_wc_conflict_version_create(
              src_repos_url,
-             svn_uri_is_child(src_repos_url, right_url, merge_b->pool),
+             svn_url_is_child(src_repos_url, right_url, merge_b->pool),
              merge_b->merge_source.rev2, node_kind, merge_b->pool);
 
   return SVN_NO_ERROR;
@@ -10419,7 +10419,7 @@ merge_reintegrate_locked(const char *sou
      (with regard to the WC). */
   rev1 = target_base_rev;
 
-  source_repos_rel_path = svn_uri_skip_ancestor(wc_repos_root, url2);
+  source_repos_rel_path = svn_url_skip_ancestor(wc_repos_root, url2);
   source_repos_rel_path = svn_path_uri_decode(source_repos_rel_path,
                                               scratch_pool);
   SVN_ERR(svn_client__path_relative_to_root(&target_repos_rel_path,

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/mergeinfo.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/mergeinfo.c Thu Jan 20 19:07:57 2011
@@ -1667,11 +1667,9 @@ svn_client_mergeinfo_get_merged(apr_hash
         {
           const char *key = svn__apr_hash_index_key(hi);
           void *val = svn__apr_hash_index_val(hi);
-          const char *source_url;
-
-          source_url = svn_path_uri_encode(key, pool);
-          source_url = svn_uri_join(repos_root, source_url + 1, pool);
-          apr_hash_set(full_path_mergeinfo, source_url,
+            
+          apr_hash_set(full_path_mergeinfo,
+                       svn_path_url_add_component2(repos_root, key + 1, pool),
                        APR_HASH_KEY_STRING, val);
         }
       *mergeinfo_p = full_path_mergeinfo;

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/prop_commands.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/prop_commands.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/prop_commands.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/prop_commands.c Thu Jan 20 19:07:57 2011
@@ -746,6 +746,9 @@ remote_propget(apr_hash_t *props,
 {
   apr_hash_t *dirents;
   apr_hash_t *prop_hash;
+  const svn_string_t *val;
+  const char *target_full_url =
+    svn_path_url_add_component2(target_prefix, target_relative, work_pool);
 
   if (kind == svn_node_dir)
     {
@@ -761,29 +764,22 @@ remote_propget(apr_hash_t *props,
     }
   else if (kind == svn_node_none)
     {
-      return svn_error_createf
-        (SVN_ERR_ENTRY_NOT_FOUND, NULL,
-         _("'%s' does not exist in revision %ld"),
-         svn_uri_join(target_prefix, target_relative, work_pool), revnum);
+      return svn_error_createf(SVN_ERR_ENTRY_NOT_FOUND, NULL,
+                               _("'%s' does not exist in revision %ld"),
+                               target_full_url, revnum);
     }
   else
     {
-      return svn_error_createf
-        (SVN_ERR_NODE_UNKNOWN_KIND, NULL,
-         _("Unknown node kind for '%s'"),
-         svn_uri_join(target_prefix, target_relative, work_pool));
-    }
-
-  {
-    svn_string_t *val = apr_hash_get(prop_hash, propname,
-                                     APR_HASH_KEY_STRING);
-    if (val)
-      {
-        apr_hash_set(props,
-                     svn_uri_join(target_prefix, target_relative, perm_pool),
-                     APR_HASH_KEY_STRING, svn_string_dup(val, perm_pool));
-      }
-  }
+      return svn_error_createf(SVN_ERR_NODE_UNKNOWN_KIND, NULL,
+                               _("Unknown node kind for '%s'"),
+                               target_full_url);
+    }
+
+  if ((val = apr_hash_get(prop_hash, propname, APR_HASH_KEY_STRING)))
+    {
+      apr_hash_set(props, apr_pstrdup(perm_pool, target_full_url),
+                   APR_HASH_KEY_STRING, svn_string_dup(val, perm_pool));
+    }
 
   if (depth >= svn_depth_files
       && kind == svn_node_dir
@@ -1071,6 +1067,8 @@ remote_proplist(const char *target_prefi
   apr_hash_t *dirents;
   apr_hash_t *prop_hash, *final_hash;
   apr_hash_index_t *hi;
+  const char *target_full_url =
+    svn_path_url_add_component2(target_prefix, target_relative, scratchpool);
 
   if (kind == svn_node_dir)
     {
@@ -1086,10 +1084,9 @@ remote_proplist(const char *target_prefi
     }
   else
     {
-      return svn_error_createf
-        (SVN_ERR_NODE_UNKNOWN_KIND, NULL,
-         _("Unknown node kind for '%s'"),
-         svn_uri_join(target_prefix, target_relative, pool));
+      return svn_error_createf(SVN_ERR_NODE_UNKNOWN_KIND, NULL,
+                               _("Unknown node kind for '%s'"),
+                               target_full_url);
     }
 
   /* Filter out non-regular properties, since the RA layer returns all
@@ -1115,9 +1112,7 @@ remote_proplist(const char *target_prefi
         }
     }
 
-  call_receiver(svn_uri_join(target_prefix, target_relative, scratchpool),
-                final_hash, receiver, receiver_baton,
-                pool);
+  call_receiver(target_full_url, final_hash, receiver, receiver_baton, pool);
 
   if (depth > svn_depth_empty
       && (kind == svn_node_dir) && (apr_hash_count(dirents) > 0))

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/ra.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/ra.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/ra.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/ra.c Thu Jan 20 19:07:57 2011
@@ -759,20 +759,10 @@ svn_client__repos_locations(const char *
          "repository or refers to an unrelated object"),
        path_or_url_local_style(path, pool), end_revnum);
 
-  /* Repository paths might be absolute, but we want to treat them as
-     relative.
-     ### Aren't they always absolute? */
-  if (start_path[0] == '/')
-    start_path = start_path + 1;
-  if (end_path[0] == '/')
-    end_path = end_path + 1;
-
   /* Set our return variables */
-  *start_url = svn_uri_join(repos_url, svn_path_uri_encode(start_path,
-                                                            pool), pool);
+  *start_url = svn_path_url_add_component2(repos_url, start_path + 1, pool);
   if (end->kind != svn_opt_revision_unspecified)
-    *end_url = svn_uri_join(repos_url, svn_path_uri_encode(end_path,
-                                                            pool), pool);
+    *end_url = svn_path_url_add_component2(repos_url, end_path + 1, pool);
 
   svn_pool_destroy(subpool);
   return SVN_NO_ERROR;

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/relocate.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/relocate.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/relocate.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/relocate.c Thu Jan 20 19:07:57 2011
@@ -75,7 +75,7 @@ validator_func(void *baton,
     {
       struct url_uuid_t *uu = &APR_ARRAY_IDX(uuids, i,
                                              struct url_uuid_t);
-      if (svn_uri_is_ancestor(uu->root, url))
+      if (svn_url_is_ancestor(uu->root, url))
         {
           url_uuid = uu;
           break;

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/status.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/status.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/status.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/status.c Thu Jan 20 19:07:57 2011
@@ -163,7 +163,7 @@ reporter_link_path(void *report_baton, c
   const char *ancestor;
   apr_size_t len;
 
-  ancestor = svn_uri_get_longest_ancestor(url, rb->ancestor, pool);
+  ancestor = svn_url_get_longest_ancestor(url, rb->ancestor, pool);
 
   /* If we got a shorter ancestor, truncate our current ancestor.
      Note that svn_dirent_get_longest_ancestor will allocate its return

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/switch.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/switch.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/switch.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/switch.c Thu Jan 20 19:07:57 2011
@@ -169,12 +169,10 @@ switch_internal(svn_revnum_t *result_rev
 
   /* Disallow a switch operation to change the repository root of the
      target. */
-  if (! svn_uri_is_ancestor(source_root, url))
-    return svn_error_createf
-      (SVN_ERR_WC_INVALID_SWITCH, NULL,
-       _("'%s'\n"
-         "is not the same repository as\n"
-         "'%s'"), url, source_root);
+  if (! svn_url_is_ancestor(source_root, url))
+    return svn_error_createf(SVN_ERR_WC_INVALID_SWITCH, NULL,
+                             _("'%s'\nis not the same repository as\n'%s'"),
+                             url, source_root);
 
   SVN_ERR(svn_ra_reparent(ra_session, url, pool));
 

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/util.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/util.c?rev=1061463&r1=1061462&r2=1061463&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/util.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/util.c Thu Jan 20 19:07:57 2011
@@ -208,7 +208,7 @@ svn_client__path_relative_to_root(const 
          back from this, the two URLs have no commonality (which
          should only happen if our caller provided us a REPOS_ROOT and
          a PATH_OR_URL of something not in that repository).  */
-      const char *rel_url = svn_uri_is_child(repos_root, abspath_or_url,
+      const char *rel_url = svn_url_is_child(repos_root, abspath_or_url,
                                              scratch_pool);
       if (! rel_url)
         {
@@ -219,8 +219,7 @@ svn_client__path_relative_to_root(const 
         }
       rel_url = svn_path_uri_decode(rel_url, result_pool);
       *rel_path = include_leading_slash
-                    ? apr_pstrcat(result_pool, "/", rel_url,
-                                  (char *)NULL)
+                    ? apr_pstrcat(result_pool, "/", rel_url, NULL)
                     : rel_url;
     }