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/27 15:45:19 UTC

svn commit: r1064138 - in /subversion/branches/uris-as-urls: ./ subversion/include/ subversion/libsvn_client/ subversion/libsvn_subr/ subversion/svn/ subversion/tests/libsvn_subr/

Author: cmpilato
Date: Thu Jan 27 14:45:18 2011
New Revision: 1064138

URL: http://svn.apache.org/viewvc?rev=1064138&view=rev
Log:
On the 'uris-as-urls' branch: Begin ensuring that the relpaths
returned from svn_url_* functions are URI-decoded.

* BRANCH-README
  Update status.

* subversion/include/svn_dirent_uri.h
  (svn_dir_split): Change promise -- basename will be URI-decoded now.
  (svn_url_basename): Change promise -- basename will be URI-decoded
    now, and pool is no longer optional.

* subversion/tests/libsvn_subr/dirent_uri-test.c
  (test_uri_split, test_uri_basename): Add test data to check that the
    returned basename was URI-decoded.

* subversion/libsvn_subr/dirent_uri.c
  (svn_url_basename): URI-decode the returned basename.

* subversion/libsvn_client/diff.c
  (diff_prepare_repos_repos): Updated code to expect decoded basenames
    from svn_url_split() and svn_url_basename().

* subversion/libsvn_client/info.c
  (svn_client_info3): Same as above.

* 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/add.c
  (mkdir_urls): Same as above.

* subversion/libsvn_client/commit.c
  (svn_client_import4): Same as above.

* subversion/libsvn_subr/subst.c
  (keyword_printf): Same as above.

* subversion/svn/merge-cmd.c
  (svn_cl__merge): Same as above.

* subversion/svn/checkout-cmd.c
  (svn_cl__checkout): Same as above.

* subversion/svn/export-cmd.c
  (svn_cl__export): Same as above.

* subversion/libsvn_client/copy.c
  (try_copy, svn_client_copy6, svn_client_move6): Same as above.

* subversion/libsvn_client/export.c
  (append_basename_if_dir, svn_client_export5): Same as above.

* subversion/libsvn_client/delete.c
  (delete_urls): Same as above.

Modified:
    subversion/branches/uris-as-urls/BRANCH-README
    subversion/branches/uris-as-urls/subversion/include/svn_dirent_uri.h
    subversion/branches/uris-as-urls/subversion/libsvn_client/add.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/commit.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/copy.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/delete.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/diff.c
    subversion/branches/uris-as-urls/subversion/libsvn_client/export.c
    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_subr/dirent_uri.c
    subversion/branches/uris-as-urls/subversion/libsvn_subr/subst.c
    subversion/branches/uris-as-urls/subversion/svn/checkout-cmd.c
    subversion/branches/uris-as-urls/subversion/svn/export-cmd.c
    subversion/branches/uris-as-urls/subversion/svn/merge-cmd.c
    subversion/branches/uris-as-urls/subversion/tests/libsvn_subr/dirent_uri-test.c

Modified: subversion/branches/uris-as-urls/BRANCH-README
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/BRANCH-README?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/BRANCH-README (original)
+++ subversion/branches/uris-as-urls/BRANCH-README Thu Jan 27 14:45:18 2011
@@ -67,9 +67,10 @@ Step 3:
    Return URI-decoded relpaths (instead of URI-encoded ones) from some
    of these APIs:
 
-      svn_url_split
-      svn_url_basename
+      svn_url_basename [DONE]
+      svn_url_condense_targets
       svn_url_is_child
+      svn_url_split [DONE]
 
    Make svn_url_join_relpath() URI-encoded its input relpath.
 

Modified: subversion/branches/uris-as-urls/subversion/include/svn_dirent_uri.h
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/include/svn_dirent_uri.h?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/include/svn_dirent_uri.h (original)
+++ subversion/branches/uris-as-urls/subversion/include/svn_dirent_uri.h Thu Jan 27 14:45:18 2011
@@ -327,8 +327,8 @@ svn_relpath_dirname(const char *relpath,
                     apr_pool_t *pool);
 
 
-/** Divide the canonicalized @a uri into @a *dirpath and @a
- * *base_name, allocated in @a pool.
+/** Divide the canonicalized @a uri into a uri @a *dirpath and a
+ * (URI-decoded) relpath @a *base_name, allocated in @a pool.
  *
  * If @a dirpath or @a base_name is NULL, then don't set that one.
  *
@@ -349,15 +349,14 @@ svn_url_split(const char **dirpath,
               const char *uri,
               apr_pool_t *pool);
 
-/** Get the basename of the specified canonicalized @a uri.  The
- * basename is defined as the last component of the uri.  If the @a uri
- * is root then that is returned. Otherwise, the returned value will have no
- * slashes in it.
+/** Get the (URI-decoded) basename of the specified canonicalized @a
+ * uri.  The basename is defined as the last component of the uri.  If
+ * the @a uri is root then that is returned.  Otherwise, the returned
+ * value will have no slashes in it.
  *
  * Example: svn_uri_basename("http://server/foo/bar") -> "bar"
  *
- * The returned basename will be allocated in @a pool. If @a pool is NULL
- * a pointer to the basename in @a uri is returned.
+ * The returned basename will be allocated in @a pool.
  *
  * @since New in 1.7.
  */

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/add.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/add.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/add.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/add.c Thu Jan 27 14:45:18 2011
@@ -752,7 +752,8 @@ mkdir_urls(const apr_array_header_t *url
     {
       const char *bname;
       svn_url_split(&common, &bname, common, pool);
-      APR_ARRAY_PUSH(targets, const char *) = bname;
+      APR_ARRAY_PUSH(targets, const char *) = 
+        svn_path_uri_encode(bname, pool);
     }
   else
     {
@@ -774,6 +775,7 @@ mkdir_urls(const apr_array_header_t *url
         {
           const char *bname;
           svn_url_split(&common, &bname, common, pool);
+          bname = svn_path_uri_encode(bname, pool);
           for (i = 0; i < targets->nelts; i++)
             {
               const char *path = APR_ARRAY_IDX(targets, i, const char *);

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/commit.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/commit.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/commit.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/commit.c Thu Jan 27 14:45:18 2011
@@ -758,8 +758,7 @@ svn_client_import4(const char *path,
             svn_error_clear(err);
 
           svn_url_split(&temp, &dir, url, pool);
-          APR_ARRAY_PUSH(new_entries, const char *) =
-            svn_path_uri_decode(dir, pool);
+          APR_ARRAY_PUSH(new_entries, const char *) = dir;
           url = temp;
         }
     }

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/copy.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/copy.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/copy.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/copy.c Thu Jan 27 14:45:18 2011
@@ -1970,9 +1970,6 @@ try_copy(const apr_array_header_t *sourc
                                             TRUE,
                                             iterpool));
 
-          if (srcs_are_urls && ! dst_is_url)
-            src_basename = svn_path_uri_decode(src_basename, iterpool);
-
           /* Check to see if all the sources are urls or all working copy
            * paths. */
           if (src_is_url != srcs_are_urls)
@@ -1981,8 +1978,8 @@ try_copy(const apr_array_header_t *sourc
                _("Cannot mix repository and working copy sources"));
 
           if (dst_is_url)
-            pair->dst_abspath_or_url = svn_url_join_relpath(dst_path_in,
-                                                            src_basename, pool);
+            pair->dst_abspath_or_url = 
+              svn_path_url_add_component2(dst_path_in, src_basename, pool);
           else
             pair->dst_abspath_or_url = svn_dirent_join(dst_path_in,
                                                        src_basename, pool);
@@ -2274,13 +2271,11 @@ svn_client_copy6(const apr_array_header_
 
       src_basename = src_is_url ? svn_url_basename(src_path, subpool)
                                 : svn_dirent_basename(src_path, subpool);
-      if (svn_path_is_url(src_path) && ! svn_path_is_url(dst_path))
-        src_basename = svn_path_uri_decode(src_basename, subpool);
 
       err = try_copy(sources,
                      dst_is_url
-                         ? svn_url_join_relpath(dst_path, src_basename,
-                                                subpool)
+                         ? svn_path_url_add_component2(dst_path, src_basename,
+                                                       subpool)
                          : svn_dirent_join(dst_path, src_basename, subpool),
                      FALSE /* is_move */,
                      make_parents,
@@ -2360,7 +2355,8 @@ svn_client_move6(const apr_array_header_
 
       err = try_copy(sources,
                      dst_is_url
-                         ? svn_url_join_relpath(dst_path, src_basename, pool)
+                         ? svn_path_url_add_component2(dst_path, 
+                                                       src_basename, pool)
                          : svn_dirent_join(dst_path, src_basename, pool),
                      TRUE /* is_move */,
                      make_parents,

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/delete.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/delete.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/delete.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/delete.c Thu Jan 27 14:45:18 2011
@@ -163,7 +163,8 @@ delete_urls(const apr_array_header_t *pa
     {
       const char *bname;
       svn_url_split(&common, &bname, common, pool);
-      APR_ARRAY_PUSH(targets, const char *) = bname;
+      APR_ARRAY_PUSH(targets, const char *) = 
+        svn_path_uri_encode(bname, pool);
     }
 
   /* Create new commit items and add them to the array. */

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/diff.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/diff.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/diff.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/diff.c Thu Jan 27 14:45:18 2011
@@ -1533,9 +1533,7 @@ diff_prepare_repos_repos(const char **ur
   if ((kind1 == svn_node_file) || (kind2 == svn_node_file))
     {
       svn_url_split(anchor1, target1, *url1, pool);
-      *target1 = svn_path_uri_decode(*target1, pool);
       svn_url_split(anchor2, target2, *url2, pool);
-      *target2 = svn_path_uri_decode(*target2, pool);
       if (*base_path)
         *base_path = svn_dirent_dirname(*base_path, pool);
       SVN_ERR(svn_ra_reparent(*ra_session, *anchor1, pool));

Modified: subversion/branches/uris-as-urls/subversion/libsvn_client/export.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_client/export.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_client/export.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_client/export.c Thu Jan 27 14:45:18 2011
@@ -110,17 +110,15 @@ append_basename_if_dir(const char **appe
   SVN_ERR(svn_io_check_resolved_path(*appendable_dirent_p, &local_kind, pool));
   if (local_kind == svn_node_dir)
     {
-      const char *basename2; /* _2 because it shadows basename() */
+      const char *base_name;
 
       if (is_uri)
-        basename2 = svn_path_uri_decode(svn_url_basename(basename_of, NULL),
-                                        pool);
+        base_name = svn_url_basename(basename_of, pool);
       else
-        basename2 = svn_dirent_basename(basename_of, NULL);
+        base_name = svn_dirent_basename(basename_of, NULL);
 
       *appendable_dirent_p = svn_dirent_join(*appendable_dirent_p,
-                                             basename2,
-                                             pool);
+                                             base_name, pool);
     }
 
   return SVN_NO_ERROR;
@@ -1038,8 +1036,7 @@ svn_client_export5(svn_revnum_t *result_
           if (svn_path_is_empty(to_path))
             {
               if (from_is_url)
-                to_path = svn_path_uri_decode(svn_url_basename(from_path_or_url,
-                                                               NULL), pool);
+                to_path = svn_url_basename(from_path_or_url, pool);
               else
                 to_path = svn_dirent_basename(from_path_or_url, NULL);
               eb->root_path = to_path;

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=1064138&r1=1064137&r2=1064138&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 27 14:45:18 2011
@@ -537,7 +537,6 @@ svn_client_info3(const char *abspath_or_
   SVN_ERR(svn_ra_get_uuid2(ra_session, &repos_UUID, 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. */
   err = svn_ra_stat(ra_session, "", rev, &the_ent, pool);

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=1064138&r1=1064137&r2=1064138&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 27 14:45:18 2011
@@ -182,11 +182,6 @@ svn_client_list2(const char *path_or_url
                  doesn't support svn_ra_reparent anyway, so don't try it. */
               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
-                 it. */
-              base_name = svn_path_uri_decode(base_name, pool);
-
               SVN_ERR(svn_client__open_ra_session_internal(&parent_session,
                                                            NULL, parent_url,
                                                            NULL, NULL, FALSE,

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=1064138&r1=1064137&r2=1064138&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 27 14:45:18 2011
@@ -206,9 +206,16 @@ organize_lock_targets(const char **commo
     {
       const char *parent, *base;
       if (url_mode)
-        svn_url_split(&parent, &base, *common_parent_url, result_pool);
+        {
+          svn_url_split(&parent, &base, *common_parent_url, 
+                        result_pool);
+          svn_path_uri_encode(base, result_pool);
+        }
       else
-        svn_dirent_split(&parent, &base, *common_parent_url, result_pool);
+        {
+          svn_dirent_split(&parent, &base, *common_parent_url, 
+                           result_pool);
+        }
 
       *common_parent_url = parent;
       APR_ARRAY_PUSH(rel_targets, const char *) = base;
@@ -278,9 +285,12 @@ organize_lock_targets(const char **commo
          had 1 member, so we special case that (again). */
       if (apr_is_empty_array(rel_urls))
         {
-          const char *base_name = svn_url_basename(common_url, scratch_pool);
+          const char *base_name;
+
+          base_name = svn_url_basename(common_url, scratch_pool);
+          APR_ARRAY_PUSH(rel_urls, const char *) = 
+            svn_path_uri_encode(base_name, result_pool);
           common_url = svn_url_dirname(common_url, result_pool);
-          APR_ARRAY_PUSH(rel_urls, const char *) = base_name;
         }
 
       /* If we have no common URL parent, bail (cross-repos lock attempt) */

Modified: subversion/branches/uris-as-urls/subversion/libsvn_subr/dirent_uri.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_subr/dirent_uri.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_subr/dirent_uri.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_subr/dirent_uri.c Thu Jan 27 14:45:18 2011
@@ -1365,8 +1365,7 @@ svn_url_basename(const char *uri, apr_po
   else
     base_name = uri + start;
 
-  /* ### TODO: URI decode a non-NULL base_name? */
-  return base_name;
+  return svn_path_uri_decode(base_name, pool);
 }
 
 void

Modified: subversion/branches/uris-as-urls/subversion/libsvn_subr/subst.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_subr/subst.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_subr/subst.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_subr/subst.c Thu Jan 27 14:45:18 2011
@@ -173,8 +173,7 @@ keyword_printf(const char *fmt,
         case 'b': /* basename of this file */
           if (url && *url)
             {
-              const char *base_name
-                = svn_path_uri_decode(svn_url_basename(url, pool), pool);
+              const char *base_name = svn_url_basename(url, pool);
               svn_stringbuf_appendcstr(value, base_name);
             }
           break;

Modified: subversion/branches/uris-as-urls/subversion/svn/checkout-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/svn/checkout-cmd.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/svn/checkout-cmd.c (original)
+++ subversion/branches/uris-as-urls/subversion/svn/checkout-cmd.c Thu Jan 27 14:45:18 2011
@@ -93,8 +93,7 @@ svn_cl__checkout(apr_getopt_t *os,
 
           /* Discard the peg-revision, if one was provided. */
           SVN_ERR(svn_opt_parse_path(&pegrev, &local_dir, local_dir, pool));
-          local_dir = svn_path_uri_decode(svn_url_basename(local_dir, pool),
-                                          pool);
+          local_dir = svn_url_basename(local_dir, pool);
         }
       else
         {
@@ -144,12 +143,9 @@ svn_cl__checkout(apr_getopt_t *os,
         }
       else
         {
-          target_dir =
-            svn_dirent_join(local_dir,
-                            svn_path_uri_decode(svn_url_basename(true_url,
-                                                                 subpool),
-                                                subpool),
-                            subpool);
+          target_dir = svn_dirent_join(local_dir,
+                                       svn_url_basename(true_url, subpool),
+                                       subpool);
         }
 
       /* Checkout doesn't accept an unspecified revision, so default to

Modified: subversion/branches/uris-as-urls/subversion/svn/export-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/svn/export-cmd.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/svn/export-cmd.c (original)
+++ subversion/branches/uris-as-urls/subversion/svn/export-cmd.c Thu Jan 27 14:45:18 2011
@@ -75,7 +75,7 @@ svn_cl__export(apr_getopt_t *os,
   if (targets->nelts == 1)
     {
       if (svn_path_is_url(truefrom))
-        to = svn_path_uri_decode(svn_url_basename(truefrom, pool), pool);
+        to = svn_url_basename(truefrom, pool);
       else
         to = svn_dirent_basename(truefrom, pool);
     }

Modified: subversion/branches/uris-as-urls/subversion/svn/merge-cmd.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/svn/merge-cmd.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/svn/merge-cmd.c (original)
+++ subversion/branches/uris-as-urls/subversion/svn/merge-cmd.c Thu Jan 27 14:45:18 2011
@@ -238,24 +238,23 @@ svn_cl__merge(apr_getopt_t *os,
      sourcepaths. */
   if (sourcepath1 && sourcepath2 && strcmp(targetpath, "") == 0)
     {
-      /* If the sourcepath is a URL, it can only refer to a target in the
-         current working directory.
-         However, if the sourcepath is a local path, it can refer to a target
-         somewhere deeper in the directory structure. */
+      /* If the sourcepath is a URL, it can only refer to a target in
+         the current working directory.  However, if the sourcepath is
+         a local path, it can refer to a target somewhere deeper in
+         the directory structure. */
       if (svn_path_is_url(sourcepath1))
         {
-          const char *sp1_basename, *sp2_basename;
-          sp1_basename = svn_url_basename(sourcepath1, pool);
-          sp2_basename = svn_url_basename(sourcepath2, pool);
+          const char *sp1_basename = svn_url_basename(sourcepath1, pool);
+          const char *sp2_basename = svn_url_basename(sourcepath2, pool);
 
           if (strcmp(sp1_basename, sp2_basename) == 0)
             {
               svn_node_kind_t kind;
-              const char *decoded_path = svn_path_uri_decode(sp1_basename, pool);
-              SVN_ERR(svn_io_check_path(decoded_path, &kind, pool));
+
+              SVN_ERR(svn_io_check_path(sp1_basename, &kind, pool));
               if (kind == svn_node_file)
                 {
-                  targetpath = decoded_path;
+                  targetpath = sp1_basename;
                 }
             }
         }

Modified: subversion/branches/uris-as-urls/subversion/tests/libsvn_subr/dirent_uri-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/tests/libsvn_subr/dirent_uri-test.c?rev=1064138&r1=1064137&r2=1064138&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/tests/libsvn_subr/dirent_uri-test.c (original)
+++ subversion/branches/uris-as-urls/subversion/tests/libsvn_subr/dirent_uri-test.c Thu Jan 27 14:45:18 2011
@@ -495,6 +495,7 @@ test_uri_basename(apr_pool_t *pool)
   } tests[] = {
     { "http://s/file", "file" },
     { "http://s/dir/file", "file" },
+    { "http://s/some%20dir/other%20file", "other file" },
     { "http://s", "" },
     { "file://", "" },
     { "file:///a", "a" },
@@ -1277,6 +1278,7 @@ test_uri_split(apr_pool_t *pool)
   static const char * const paths[][3] = {
     { "http://server/foo/bar", "http://server/foo", "bar" },
     { "http://server/dir/foo/bar", "http://server/dir/foo", "bar" },
+    { "http://server/some%20dir/foo%20bar", "http://server/some%20dir", "foo bar" },
     { "http://server/foo", "http://server", "foo" },
     { "http://server", "http://server", "" },
     { "file://", "file://", "" },



Re: svn commit: r1064138 - in /subversion/branches/uris-as-urls: ./ subversion/include/ subversion/libsvn_client/ subversion/libsvn_subr/ subversion/svn/ subversion/tests/libsvn_subr/

Posted by "C. Michael Pilato" <cm...@collab.net>.
On 01/27/2011 11:16 AM, C. Michael Pilato wrote:
> On 01/27/2011 09:56 AM, Bert Huijben wrote:
>>> Modified: subversion/branches/uris-as-
>>> urls/subversion/libsvn_client/locking_commands.c
> 
> [...]
> 
>>> @@ -206,9 +206,16 @@ organize_lock_targets(const char **commo
>>>      {
>>>        const char *parent, *base;
>>>        if (url_mode)
>>> -        svn_url_split(&parent, &base, *common_parent_url,
>>> result_pool);
>>> +        {
>>> +          svn_url_split(&parent, &base, *common_parent_url,
>>> +                        result_pool);
>>> +          svn_path_uri_encode(base, result_pool);
>>
>> I think you tried to store the result in base?
>>
>> Or should the encode be removed?
> 
> Encode can't be removed just yet -- I'll tackle that in a subsequent pass.
> But yes, I definitely should have kept the returned value!

Fixed this in r1064179.

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand


Re: svn commit: r1064138 - in /subversion/branches/uris-as-urls: ./ subversion/include/ subversion/libsvn_client/ subversion/libsvn_subr/ subversion/svn/ subversion/tests/libsvn_subr/

Posted by "C. Michael Pilato" <cm...@collab.net>.
On 01/27/2011 09:56 AM, Bert Huijben wrote:
>> Modified: subversion/branches/uris-as-
>> urls/subversion/libsvn_client/locking_commands.c

[...]

>> @@ -206,9 +206,16 @@ organize_lock_targets(const char **commo
>>      {
>>        const char *parent, *base;
>>        if (url_mode)
>> -        svn_url_split(&parent, &base, *common_parent_url,
>> result_pool);
>> +        {
>> +          svn_url_split(&parent, &base, *common_parent_url,
>> +                        result_pool);
>> +          svn_path_uri_encode(base, result_pool);
> 
> I think you tried to store the result in base?
> 
> Or should the encode be removed?

Encode can't be removed just yet -- I'll tackle that in a subsequent pass.
But yes, I definitely should have kept the returned value!

>> Modified: subversion/branches/uris-as-
>> urls/subversion/libsvn_subr/dirent_uri.c

[...]

>> @@ -1365,8 +1365,7 @@ svn_url_basename(const char *uri, apr_po
>>    else
>>      base_name = uri + start;
>>
>> -  /* ### TODO: URI decode a non-NULL base_name? */
>> -  return base_name;
>> +  return svn_path_uri_decode(base_name, pool);
>>  }
> 
> I wouldn't be surprised if there is a static function in this file which
> would avoid the copying if possible. (If not, that would be a nice
> addition for a future enhancement)

Hrm.  Agreed.  That would allow us to go back to not requiring a pool for
svn_url_basename().

-- 
C. Michael Pilato <cm...@collab.net>
CollabNet   <>   www.collab.net   <>   Distributed Development On Demand


RE: svn commit: r1064138 - in /subversion/branches/uris-as-urls: ./ subversion/include/ subversion/libsvn_client/ subversion/libsvn_subr/ subversion/svn/ subversion/tests/libsvn_subr/

Posted by Bert Huijben <be...@qqmail.nl>.

> -----Original Message-----
> From: cmpilato@apache.org [mailto:cmpilato@apache.org]
> Sent: donderdag 27 januari 2011 15:45
> To: commits@subversion.apache.org
> Subject: svn commit: r1064138 - in /subversion/branches/uris-as-urls:
> ./ subversion/include/ subversion/libsvn_client/
> subversion/libsvn_subr/ subversion/svn/ subversion/tests/libsvn_subr/
> 
> Author: cmpilato
> Date: Thu Jan 27 14:45:18 2011
> New Revision: 1064138
> 
> URL: http://svn.apache.org/viewvc?rev=1064138&view=rev
> Log:
> On the 'uris-as-urls' branch: Begin ensuring that the relpaths
> returned from svn_url_* functions are URI-decoded.
> 
> * BRANCH-README
>   Update status.
> 
> * subversion/include/svn_dirent_uri.h
>   (svn_dir_split): Change promise -- basename will be URI-decoded now.
>   (svn_url_basename): Change promise -- basename will be URI-decoded
>     now, and pool is no longer optional.
> 
> * subversion/tests/libsvn_subr/dirent_uri-test.c
>   (test_uri_split, test_uri_basename): Add test data to check that the
>     returned basename was URI-decoded.
> 
> * subversion/libsvn_subr/dirent_uri.c
>   (svn_url_basename): URI-decode the returned basename.
> 
> * subversion/libsvn_client/diff.c
>   (diff_prepare_repos_repos): Updated code to expect decoded basenames
>     from svn_url_split() and svn_url_basename().
> 
> * subversion/libsvn_client/info.c
>   (svn_client_info3): Same as above.
> 
> * 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/add.c
>   (mkdir_urls): Same as above.
> 
> * subversion/libsvn_client/commit.c
>   (svn_client_import4): Same as above.
> 
> * subversion/libsvn_subr/subst.c
>   (keyword_printf): Same as above.
> 
> * subversion/svn/merge-cmd.c
>   (svn_cl__merge): Same as above.
> 
> * subversion/svn/checkout-cmd.c
>   (svn_cl__checkout): Same as above.
> 
> * subversion/svn/export-cmd.c
>   (svn_cl__export): Same as above.
> 
> * subversion/libsvn_client/copy.c
>   (try_copy, svn_client_copy6, svn_client_move6): Same as above.
> 
> * subversion/libsvn_client/export.c
>   (append_basename_if_dir, svn_client_export5): Same as above.
> 
> * subversion/libsvn_client/delete.c
>   (delete_urls): Same as above.
> 
> Modified:
>     subversion/branches/uris-as-urls/BRANCH-README
>     subversion/branches/uris-as-
> urls/subversion/include/svn_dirent_uri.h
>     subversion/branches/uris-as-urls/subversion/libsvn_client/add.c
>     subversion/branches/uris-as-urls/subversion/libsvn_client/commit.c
>     subversion/branches/uris-as-urls/subversion/libsvn_client/copy.c
>     subversion/branches/uris-as-urls/subversion/libsvn_client/delete.c
>     subversion/branches/uris-as-urls/subversion/libsvn_client/diff.c
>     subversion/branches/uris-as-urls/subversion/libsvn_client/export.c
>     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_subr/dirent_uri.c
>     subversion/branches/uris-as-urls/subversion/libsvn_subr/subst.c
>     subversion/branches/uris-as-urls/subversion/svn/checkout-cmd.c
>     subversion/branches/uris-as-urls/subversion/svn/export-cmd.c
>     subversion/branches/uris-as-urls/subversion/svn/merge-cmd.c
>     subversion/branches/uris-as-
> urls/subversion/tests/libsvn_subr/dirent_uri-test.c
> 
> 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=1064138&r1=1064137
> &r2=1064138&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 27 14:45:18
> 2011
> @@ -206,9 +206,16 @@ organize_lock_targets(const char **commo
>      {
>        const char *parent, *base;
>        if (url_mode)
> -        svn_url_split(&parent, &base, *common_parent_url,
> result_pool);
> +        {
> +          svn_url_split(&parent, &base, *common_parent_url,
> +                        result_pool);
> +          svn_path_uri_encode(base, result_pool);

I think you tried to store the result in base?

Or should the encode be removed?

> +        }
>        else
> -        svn_dirent_split(&parent, &base, *common_parent_url,
> result_pool);
> +        {
> +          svn_dirent_split(&parent, &base, *common_parent_url,
> +                           result_pool);
> +        }
> 
>        *common_parent_url = parent;
>        APR_ARRAY_PUSH(rel_targets, const char *) = base;
> @@ -278,9 +285,12 @@ organize_lock_targets(const char **commo
>           had 1 member, so we special case that (again). */
>        if (apr_is_empty_array(rel_urls))
>          {
> -          const char *base_name = svn_url_basename(common_url,
> scratch_pool);
> +          const char *base_name;
> +
> +          base_name = svn_url_basename(common_url, scratch_pool);
> +          APR_ARRAY_PUSH(rel_urls, const char *) =
> +            svn_path_uri_encode(base_name, result_pool);
>            common_url = svn_url_dirname(common_url, result_pool);
> -          APR_ARRAY_PUSH(rel_urls, const char *) = base_name;
>          }
> 
>        /* If we have no common URL parent, bail (cross-repos lock
> attempt) */
> 
> Modified: subversion/branches/uris-as-
> urls/subversion/libsvn_subr/dirent_uri.c
> URL: http://svn.apache.org/viewvc/subversion/branches/uris-as-
> urls/subversion/libsvn_subr/dirent_uri.c?rev=1064138&r1=1064137&r2=1064
> 138&view=diff
> =======================================================================
> =======
> --- subversion/branches/uris-as-
> urls/subversion/libsvn_subr/dirent_uri.c (original)
> +++ subversion/branches/uris-as-
> urls/subversion/libsvn_subr/dirent_uri.c Thu Jan 27 14:45:18 2011
> @@ -1365,8 +1365,7 @@ svn_url_basename(const char *uri, apr_po
>    else
>      base_name = uri + start;
> 
> -  /* ### TODO: URI decode a non-NULL base_name? */
> -  return base_name;
> +  return svn_path_uri_decode(base_name, pool);
>  }

I wouldn't be surprised if there is a static function in this file which would avoid the copying if possible. (If not, that would be a nice addition for a future enhancement)

 
	Bert