You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2012/09/21 21:40:51 UTC
svn commit: r1388644 - in /subversion/branches/10Gb/subversion:
include/private/svn_fs_util.h libsvn_fs_util/fs-util.c
Author: stefan2
Date: Fri Sep 21 19:40:51 2012
New Revision: 1388644
URL: http://svn.apache.org/viewvc?rev=1388644&view=rev
Log:
On the 10Gb branch: Introduce a new utility method that determines
whether svn_fs__canonicalize_abspath must be called for a given path.
* subversion/include/private/svn_fs_util.h
(svn_fs__is_canonical_abspath): declare new API
* subversion/libsvn_fs_util/fs-util.c
(svn_fs__is_canonical_abspath): implement new API
Modified:
subversion/branches/10Gb/subversion/include/private/svn_fs_util.h
subversion/branches/10Gb/subversion/libsvn_fs_util/fs-util.c
Modified: subversion/branches/10Gb/subversion/include/private/svn_fs_util.h
URL: http://svn.apache.org/viewvc/subversion/branches/10Gb/subversion/include/private/svn_fs_util.h?rev=1388644&r1=1388643&r2=1388644&view=diff
==============================================================================
--- subversion/branches/10Gb/subversion/include/private/svn_fs_util.h (original)
+++ subversion/branches/10Gb/subversion/include/private/svn_fs_util.h Fri Sep 21 19:40:51 2012
@@ -52,6 +52,12 @@ extern "C" {
const char *
svn_fs__canonicalize_abspath(const char *path, apr_pool_t *pool);
+/* Return FALSE, if a svn_fs__canonicalize_abspath will return a
+ different value than PATH (despite creating a copy).
+*/
+svn_boolean_t
+svn_fs__is_canonical_abspath(const char *path);
+
/* If EXPECT_OPEN, verify that FS refers to an open database;
otherwise, verify that FS refers to an unopened database. Return
an appropriate error if the expectation fails to match the
Modified: subversion/branches/10Gb/subversion/libsvn_fs_util/fs-util.c
URL: http://svn.apache.org/viewvc/subversion/branches/10Gb/subversion/libsvn_fs_util/fs-util.c?rev=1388644&r1=1388643&r2=1388644&view=diff
==============================================================================
--- subversion/branches/10Gb/subversion/libsvn_fs_util/fs-util.c (original)
+++ subversion/branches/10Gb/subversion/libsvn_fs_util/fs-util.c Fri Sep 21 19:40:51 2012
@@ -35,6 +35,40 @@
#include "private/svn_fspath.h"
#include "../libsvn_fs/fs-loader.h"
+svn_boolean_t
+svn_fs__is_canonical_abspath(const char *path)
+{
+ size_t path_len;
+ const char *end;
+
+ /* No PATH? No problem. */
+ if (! path)
+ return TRUE;
+
+ /* Empty PATH? That's just "/". */
+ if (! *path)
+ return FALSE;
+
+ /* No leading slash? Fix that. */
+ if (*path != '/')
+ return FALSE;
+
+ /* check for trailing '/' */
+ path_len = strlen(path);
+ if (path_len == 1)
+ return TRUE;
+ if (path[path_len - 1] == '/')
+ return FALSE;
+
+ /* check for "//" */
+ end = path + path_len - 1;
+ for (; path != end; ++path)
+ if ((path[0] == '/') && (path[1] == '/'))
+ return FALSE;
+
+ return TRUE;
+}
+
const char *
svn_fs__canonicalize_abspath(const char *path, apr_pool_t *pool)
{