Author: cmpilato
Date: Mon Jan 24 21:46:43 2011
New Revision: 1062999

URL: http://svn.apache.org/viewvc?rev=1062999&view=rev
Log:
On the 'uris-as-urls' branch:  Generalize (privately) a class of
URL-path-related functions so they can be shared amongst mod_dav_svn,
libsvn_ra_serf, and libsvn_ra_neon.

* subversion/include/private/svn_fspath.h
  (svn_urlpath__basename, svn_urlpath__dirname, svn_urlpath__join,
   svn_urlpath__get_longest_ancestor, svn_urlpath__is_ancestor,
   svn_urlpath__is_canonical, svn_urlpath__is_child,
   svn_urlpath__is_root, svn_urlpath__canonicalize,
   svn_urlpath__skip_ancestor, svn_urlpath__split): Renamed from
    libsvn_ra_serf/ra_serf.h:svn_ra_serf__uri*.

* subversion/libsvn_subr/dirent_uri.c
  (svn_urlpath__canonicalize): Was
    libsvn_ra_serf/util.c:svn_ra_serf__uri_canonicalize().

* subversion/libsvn_ra_serf/util.c
  (): Track renamed svn_ra_serf__uri_* functions.
  (svn_ra_serf__uri_canonicalize): Moved to
    libsvn_subr/dirent_uri.c:svn_urlpath__canonicalize().

* subversion/libsvn_ra_serf/commit.c,
* subversion/libsvn_ra_serf/merge.c,
* subversion/libsvn_ra_serf/options.c,
* subversion/libsvn_ra_serf/property.c,
* subversion/libsvn_ra_serf/serf.c
  (): Track renamed svn_ra_serf__uri_* functions.

Modified:
    subversion/branches/uris-as-urls/subversion/include/private/svn_fspath.h
    subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/commit.c
    subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/merge.c
    subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/options.c
    subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/property.c
    subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/ra_serf.h
    subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/serf.c
    subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/util.c
    subversion/branches/uris-as-urls/subversion/libsvn_subr/dirent_uri.c

Modified: 
subversion/branches/uris-as-urls/subversion/include/private/svn_fspath.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/include/private/svn_fspath.h?rev=1062999&r1=1062998&r2=1062999&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/include/private/svn_fspath.h 
(original)
+++ subversion/branches/uris-as-urls/subversion/include/private/svn_fspath.h 
Mon Jan 24 21:46:43 2011
@@ -173,6 +173,28 @@ svn_fspath__get_longest_ancestor(const c
                                  apr_pool_t *result_pool);
 
 
+
+
+/** A faux fspath API used by the DAV modules to help us distinguish
+ * between real URI-decoded fspaths and URI-encoded URL path-portions.
+ */
+#define svn_urlpath__basename             svn_fspath__basename
+#define svn_urlpath__dirname              svn_fspath__dirname
+#define svn_urlpath__get_longest_ancestor svn_fspath__get_longest_ancestor
+#define svn_urlpath__is_ancestor          svn_fspath__is_ancestor
+#define svn_urlpath__is_canonical         svn_fspath__is_canonical
+#define svn_urlpath__is_child             svn_fspath__is_child
+#define svn_urlpath__is_root              svn_fspath__is_root
+#define svn_urlpath__join                 svn_fspath__join
+#define svn_urlpath__skip_ancestor        svn_fspath__skip_ancestor
+#define svn_urlpath__split                svn_fspath__split
+
+/* Like svn_fspath__canonicalize(), but this one accepts both full
+   URLs and URL path-portions. */
+const char *
+svn_urlpath__canonicalize(const char *uri, apr_pool_t *pool);
+
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */

Modified: subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/commit.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/commit.c?rev=1062999&r1=1062998&r2=1062999&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/commit.c 
(original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/commit.c Mon Jan 
24 21:46:43 2011
@@ -41,6 +41,7 @@
 
 #include "svn_private_config.h"
 #include "private/svn_dep_compat.h"
+#include "private/svn_fspath.h"
 
 #include "ra_serf.h"
 #include "../libsvn_ra/ra_loader.h"
@@ -311,7 +312,7 @@ handle_checkout(serf_request_t *request,
       if (status)
         err = svn_error_compose_create(svn_error_wrap_apr(status, NULL), err);
 
-      ctx->resource_url = svn_ra_serf__uri_canonicalize(uri.path, ctx->pool);
+      ctx->resource_url = svn_urlpath__canonicalize(uri.path, ctx->pool);
     }
 
   return err;
@@ -488,7 +489,7 @@ get_version_url(const char **checked_in_
       if (current_version)
         {
           *checked_in_url =
-            svn_ra_serf__uri_canonicalize(current_version->data, pool);
+            svn_urlpath__canonicalize(current_version->data, pool);
           return SVN_NO_ERROR;
         }
     }
@@ -543,7 +544,7 @@ get_version_url(const char **checked_in_
                                  _("Path '%s' not present"),
                                  session->repos_url.path);
 
-      root_checkout = svn_ra_serf__uri_canonicalize(root_checkout, pool);
+      root_checkout = svn_urlpath__canonicalize(root_checkout, pool);
     }
 
   *checked_in_url = svn_path_url_add_component2(root_checkout, relpath, pool);

Modified: subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/merge.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/merge.c?rev=1062999&r1=1062998&r2=1062999&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/merge.c 
(original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/merge.c Mon Jan 
24 21:46:43 2011
@@ -298,7 +298,7 @@ end_merge(svn_ra_serf__xml_parser_t *par
           const char *href;
 
           href = apr_hash_get(info->props, "href", APR_HASH_KEY_STRING);
-          if (! svn_ra_serf__uri_is_ancestor(ctx->merge_url, href))
+          if (! svn_urlpath__is_ancestor(ctx->merge_url, href))
             {
               /* ### need something better than APR_EGENERAL */
               return svn_error_createf(APR_EGENERAL, NULL,
@@ -320,7 +320,7 @@ end_merge(svn_ra_serf__xml_parser_t *par
                  an ancestor of HREF.  All that remains is to
                  determine of HREF is the same as CTX->MERGE_URL, or --
                  if not -- is relative value as a child thereof. */
-              href = svn_ra_serf__uri_is_child(ctx->merge_url, href, NULL);
+              href = svn_urlpath__is_child(ctx->merge_url, href, NULL);
               if (! href)
                 href = "";
 
@@ -365,7 +365,7 @@ end_merge(svn_ra_serf__xml_parser_t *par
       info->prop_val = apr_pstrmemdup(info->pool, info->prop_val,
                                       info->prop_val_len);
       if (strcmp(info->prop_name, "href") == 0)
-        info->prop_val = svn_ra_serf__uri_canonicalize(info->prop_val,
+        info->prop_val = svn_urlpath__canonicalize(info->prop_val,
                                                        info->pool);
 
       /* Set our property. */
@@ -454,7 +454,7 @@ svn_ra_serf__merge_lock_token_list(apr_h
       path.data = key;
       path.len = klen;
 
-      if (parent && !svn_ra_serf__uri_is_ancestor(parent, key))
+      if (parent && !svn_urlpath__is_ancestor(parent, key))
         continue;
 
       svn_ra_serf__add_open_tag_buckets(body, alloc, "S:lock", NULL);

Modified: subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/options.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/options.c?rev=1062999&r1=1062998&r2=1062999&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/options.c 
(original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/options.c Mon 
Jan 24 21:46:43 2011
@@ -39,6 +39,7 @@
 #include "svn_version.h"
 #include "svn_dirent_uri.h"
 #include "svn_private_config.h"
+#include "private/svn_fspath.h"
 
 #include "ra_serf.h"
 
@@ -187,7 +188,7 @@ end_options(svn_ra_serf__xml_parser_t *p
     {
       options_ctx->collect_cdata = FALSE;
       options_ctx->activity_collection =
-        svn_ra_serf__uri_canonicalize(options_ctx->attr_val, 
options_ctx->pool);
+        svn_urlpath__canonicalize(options_ctx->attr_val, options_ctx->pool);
       pop_state(options_ctx);
     }
 
@@ -336,7 +337,7 @@ capabilities_headers_iterator_callback(v
           orc->session->repos_root = orc->session->repos_url;
           orc->session->repos_root.path = apr_pstrdup(orc->session->pool, val);
           orc->session->repos_root_str =
-            svn_ra_serf__uri_canonicalize(
+            svn_urlpath__canonicalize(
                 apr_uri_unparse(orc->session->pool,
                                 &orc->session->repos_root,
                                 0),

Modified: subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/property.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/property.c?rev=1062999&r1=1062998&r2=1062999&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/property.c 
(original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/property.c Mon 
Jan 24 21:46:43 2011
@@ -32,6 +32,7 @@
 #include "svn_dirent_uri.h"
 
 #include "private/svn_dav_protocol.h"
+#include "private/svn_fspath.h"
 #include "svn_private_config.h"
 
 #include "ra_serf.h"
@@ -344,7 +345,7 @@ end_propfind(svn_ra_serf__xml_parser_t *
           if (strcmp(ctx->depth, "1") == 0)
             {
               ctx->current_path =
-                svn_ra_serf__uri_canonicalize(info->val, ctx->pool);
+                svn_urlpath__canonicalize(info->val, ctx->pool);
             }
           else
             {
@@ -1034,7 +1035,7 @@ svn_ra_serf__get_baseline_info(const cha
                                         "the requested checked-in value"));
             }
 
-          baseline_url = svn_ra_serf__uri_canonicalize(baseline_url, pool);
+          baseline_url = svn_urlpath__canonicalize(baseline_url, pool);
 
           SVN_ERR(svn_ra_serf__retrieve_props(props, session, conn,
                                               baseline_url, revision, "0",
@@ -1051,7 +1052,7 @@ svn_ra_serf__get_baseline_info(const cha
                                     "requested baseline-collection value"));
         }
 
-      basecoll_url = svn_ra_serf__uri_canonicalize(basecoll_url, pool);
+      basecoll_url = svn_urlpath__canonicalize(basecoll_url, pool);
 
       if (latest_revnum)
         {

Modified: subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/ra_serf.h
URL: 
http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/ra_serf.h?rev=1062999&r1=1062998&r2=1062999&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/ra_serf.h 
(original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/ra_serf.h Mon 
Jan 24 21:46:43 2011
@@ -64,27 +64,6 @@ extern "C" {
 #endif
 
 
-/* A faux fspath API used inside this library to help us distinguish
- * between real URI-decoded fspaths and URI-encoded URL path-portions.
- */
-#define svn_ra_serf__uri_basename             svn_fspath__basename
-#define svn_ra_serf__uri_dirname              svn_fspath__dirname
-#define svn_ra_serf__uri_get_longest_ancestor svn_fspath__get_longest_ancestor
-#define svn_ra_serf__uri_is_ancestor          svn_fspath__is_ancestor
-#define svn_ra_serf__uri_is_canonical         svn_fspath__is_canonical
-#define svn_ra_serf__uri_is_child             svn_fspath__is_child
-#define svn_ra_serf__uri_is_root              svn_fspath__is_root
-#define svn_ra_serf__uri_join                 svn_fspath__join
-#define svn_ra_serf__uri_skip_ancestor        svn_fspath__skip_ancestor
-#define svn_ra_serf__uri_split                svn_fspath__split
-
-/* Like svn_fspath__canonicalize(), but this one accepts both full
-   URLs and URL path-portions. */
-const char *
-svn_ra_serf__uri_canonicalize(const char *uri,
-                              apr_pool_t *pool);
-
-
 /* Forward declarations. */
 typedef struct svn_ra_serf__session_t svn_ra_serf__session_t;
 typedef struct svn_ra_serf__auth_protocol_t svn_ra_serf__auth_protocol_t;

Modified: subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/serf.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/serf.c?rev=1062999&r1=1062998&r2=1062999&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/serf.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/serf.c Mon Jan 
24 21:46:43 2011
@@ -774,7 +774,7 @@ path_dirent_walker(void *baton,
 
       apr_hash_set(dirents->full_paths, path, path_len, entry);
 
-      base_name = svn_path_uri_decode(svn_ra_serf__uri_basename(path, pool),
+      base_name = svn_path_uri_decode(svn_urlpath__basename(path, pool),
                                       pool);
 
       apr_hash_set(dirents->base_paths, base_name, APR_HASH_KEY_STRING, entry);
@@ -908,7 +908,7 @@ svn_ra_serf__get_dir(svn_ra_session_t *r
        */
       dirent_walk.full_paths = apr_hash_make(pool);
       dirent_walk.base_paths = apr_hash_make(pool);
-      dirent_walk.orig_path = svn_ra_serf__uri_canonicalize(path, pool);
+      dirent_walk.orig_path = svn_urlpath__canonicalize(path, pool);
 
       SVN_ERR(svn_ra_serf__walk_all_paths(props, revision, path_dirent_walker,
                                           &dirent_walk, pool));

Modified: subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/util.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/util.c?rev=1062999&r1=1062998&r2=1062999&view=diff
==============================================================================
--- subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/util.c (original)
+++ subversion/branches/uris-as-urls/subversion/libsvn_ra_serf/util.c Mon Jan 
24 21:46:43 2011
@@ -915,7 +915,7 @@ svn_ra_serf__response_get_location(serf_
 
   headers = serf_bucket_response_get_headers(response);
   val = serf_bucket_headers_get(headers, "Location");
-  return val ? svn_ra_serf__uri_canonicalize(val, pool) : NULL;
+  return val ? svn_urlpath__canonicalize(val, pool) : NULL;
 }
 
 /* Implements svn_ra_serf__response_handler_t */
@@ -1802,7 +1802,7 @@ svn_ra_serf__discover_vcc(const char **v
               svn_error_clear(err);
 
               /* Okay, strip off a component from PATH. */
-              path = svn_ra_serf__uri_dirname(path, pool);
+              path = svn_urlpath__dirname(path, pool);
             }
         }
     }
@@ -1837,9 +1837,9 @@ svn_ra_serf__discover_vcc(const char **v
       session->repos_root = session->repos_url;
       session->repos_root.path = apr_pstrdup(session->pool, url_buf->data);
       session->repos_root_str =
-        svn_ra_serf__uri_canonicalize(apr_uri_unparse(session->pool,
-                                                      &session->repos_root, 0),
-                                      session->pool);
+        svn_urlpath__canonicalize(apr_uri_unparse(session->pool,
+                                                  &session->repos_root, 0),
+                                  session->pool);
     }
 
   /* Store the repository UUID in the cache. */
@@ -1884,7 +1884,7 @@ svn_ra_serf__get_relative_path(const cha
     }
   else
     {
-      *rel_path = svn_ra_serf__uri_is_child(decoded_root, decoded_orig, pool);
+      *rel_path = svn_urlpath__is_child(decoded_root, decoded_orig, pool);
       SVN_ERR_ASSERT(*rel_path != NULL);
     }
   return SVN_NO_ERROR;
@@ -1934,21 +1934,3 @@ svn_ra_serf__error_on_status(int status_
 
   return SVN_NO_ERROR;
 }
-
-
-const char *
-svn_ra_serf__uri_canonicalize(const char *uri,
-                              apr_pool_t *pool)
-{
-  if (svn_path_is_url(uri))
-    {
-      uri = svn_url_canonicalize(uri, pool);
-    }
-  else
-    {
-      uri = svn_fspath__canonicalize(uri, pool);
-      uri = svn_path_uri_decode(uri, pool);
-      uri = svn_path_uri_encode(uri, pool);
-    }
-  return uri;
-}

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=1062999&r1=1062998&r2=1062999&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 Mon 
Jan 24 21:46:43 2011
@@ -2423,7 +2423,8 @@ svn_url_get_file_url_from_dirent(const c
 }
 
 
-/* ------------------------ The fspath API ------------------------ */
+
+/* -------------- The fspath API (see private/svn_fspath.h) -------------- */
 
 svn_boolean_t
 svn_fspath__is_canonical(const char *fspath)
@@ -2576,3 +2577,25 @@ svn_fspath__get_longest_ancestor(const c
   assert(svn_fspath__is_canonical(result));
   return result;
 }
+
+
+
+
+/* -------------- The urlpath API (see private/svn_fspath.h) ------------- */
+
+const char *
+svn_urlpath__canonicalize(const char *uri,
+                          apr_pool_t *pool)
+{
+  if (svn_path_is_url(uri))
+    {
+      uri = svn_url_canonicalize(uri, pool);
+    }
+  else
+    {
+      uri = svn_fspath__canonicalize(uri, pool);
+      uri = svn_path_uri_decode(uri, pool);
+      uri = svn_path_uri_encode(uri, pool);
+    }
+  return uri;
+}


Reply via email to