> -----Original Message-----
> From: cmpil...@apache.org [mailto:cmpil...@apache.org]
> Sent: donderdag 27 januari 2011 15:45
> To: comm...@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

Reply via email to