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