summaryrefslogtreecommitdiffstats
path: root/subversion/include/mod_dav_svn.h
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/include/mod_dav_svn.h')
-rw-r--r--subversion/include/mod_dav_svn.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/subversion/include/mod_dav_svn.h b/subversion/include/mod_dav_svn.h
new file mode 100644
index 0000000..c498c5e
--- /dev/null
+++ b/subversion/include/mod_dav_svn.h
@@ -0,0 +1,99 @@
+/**
+ * @copyright
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ * @endcopyright
+ *
+ * @file mod_dav_svn.h
+ * @brief Subversion's backend for Apache's mod_dav module
+ */
+
+
+#ifndef MOD_DAV_SVN_H
+#define MOD_DAV_SVN_H
+
+#include <httpd.h>
+#include <mod_dav.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/**
+ Given an apache request @a r, a @a uri, and a @a root_path to the svn
+ location block, process @a uri and return many things, allocated in
+ @a r->pool:
+
+ - @a cleaned_uri: The uri with duplicate and trailing slashes removed.
+
+ - @a trailing_slash: Whether the uri had a trailing slash on it.
+
+ Three special substrings of the uri are returned for convenience:
+
+ - @a repos_basename: The single path component that is the directory
+ which contains the repository. (Don't confuse
+ this with the "repository name" as optionally
+ defined via the SVNReposName directive!)
+
+ - @a relative_path: The remaining imaginary path components.
+
+ - @a repos_path: The actual path within the repository filesystem, or
+ NULL if no part of the uri refers to a path in
+ the repository (e.g. "!svn/vcc/default" or
+ "!svn/bln/25").
+
+
+ For example, consider the uri
+
+ /svn/repos/proj1/!svn/blah/13//A/B/alpha
+
+ In the SVNPath case, this function would receive a @a root_path of
+ '/svn/repos/proj1', and in the SVNParentPath case would receive a
+ @a root_path of '/svn/repos'. But either way, we would get back:
+
+ - @a cleaned_uri: /svn/repos/proj1/!svn/blah/13/A/B/alpha
+ - @a repos_basename: proj1
+ - @a relative_path: /!svn/blah/13/A/B/alpha
+ - @a repos_path: A/B/alpha
+ - @a trailing_slash: FALSE
+*/
+AP_MODULE_DECLARE(dav_error *) dav_svn_split_uri(request_rec *r,
+ const char *uri,
+ const char *root_path,
+ const char **cleaned_uri,
+ int *trailing_slash,
+ const char **repos_basename,
+ const char **relative_path,
+ const char **repos_path);
+
+
+/**
+ * Given an apache request @a r and a @a root_path to the svn location
+ * block, set @a *repos_path to the path of the repository on disk. */
+AP_MODULE_DECLARE(dav_error *) dav_svn_get_repos_path(request_rec *r,
+ const char *root_path,
+ const char **repos_path);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* MOD_DAV_SVN_H */
OpenPOWER on IntegriCloud