Alien-SVN
view release on metacpan or search on metacpan
src/subversion/subversion/include/svn_dirent_uri.h view on Meta::CPAN
apr_pool_t *result_pool);
/** Divide the canonicalized @a relpath into @a *dirpath and @a *base_name.
*
* If @a dirpath or @a base_name is NULL, then don't set that one.
*
* Either @a dirpath or @a base_name may be @a relpaths's own address, but
* they may not both be the same address, or the results are undefined.
*
* If @a relpath has two or more components, the separator between @a dirpath
* and @a base_name is not included in either of the new names.
*
* examples:
* - <pre>"foo/bar/baz" ==> "foo/bar" and "baz"</pre>
* - <pre>"bar" ==> "" and "bar"</pre>
* - <pre>"" ==> "" and ""</pre>
*
* Allocate the results in @a result_pool.
*
* @since New in 1.7.
*/
void
svn_relpath_split(const char **dirpath,
const char **base_name,
const char *relpath,
apr_pool_t *result_pool);
/** Get the basename of the specified canonicalized @a relpath. The
* basename is defined as the last component of the relpath. If the @a
* relpath has only one component then that is returned. The returned
* value will have no slashes in it.
*
* Example: svn_relpath_basename("/trunk/foo/bar") -> "bar"
*
* If @a result_pool is NULL, return a pointer to the basename in @a relpath,
* otherwise allocate the result in @a result_pool.
*
* @note If an empty string is passed, then an empty string will be returned.
*
* @since New in 1.7.
*/
const char *
svn_relpath_basename(const char *relpath,
apr_pool_t *result_pool);
/** Get the dirname of the specified canonicalized @a relpath, defined as
* the relpath with its basename removed.
*
* If @a relpath is empty, "" is returned.
*
* Allocate the result in @a result_pool.
*
* @since New in 1.7.
*/
char *
svn_relpath_dirname(const char *relpath,
apr_pool_t *result_pool);
/** Divide the canonicalized @a uri into a uri @a *dirpath and a
* (URI-decoded) relpath @a *base_name.
*
* If @a dirpath or @a base_name is NULL, then don't set that one.
*
* Either @a dirpath or @a base_name may be @a uri's own address, but they
* may not both be the same address, or the results are undefined.
*
* If @a uri has two or more components, the separator between @a dirpath
* and @a base_name is not included in either of the new names.
*
* Examples:
* - <pre>"http://server/foo/bar" ==> "http://server/foo" and "bar"</pre>
*
* Allocate the result in @a result_pool.
*
* @since New in 1.7.
*/
void
svn_uri_split(const char **dirpath,
const char **base_name,
const char *uri,
apr_pool_t *result_pool);
/** 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, return "". The returned value will have no
* slashes in it.
*
* Example: svn_uri_basename("http://server/foo/bar") -> "bar"
*
* Allocate the result in @a result_pool.
*
* @since New in 1.7.
*/
const char *
svn_uri_basename(const char *uri,
apr_pool_t *result_pool);
/** Get the dirname of the specified canonicalized @a uri, defined as
* the uri with its basename removed.
*
* If @a uri is root (e.g. "http://server"), it is returned
* unchanged.
*
* Allocate the result in @a result_pool.
*
* @since New in 1.7.
*/
char *
svn_uri_dirname(const char *uri,
apr_pool_t *result_pool);
/** Return TRUE if @a dirent is considered absolute on the platform at
* hand. E.g. '/foo' on Posix platforms or 'X:/foo', '//server/share/foo'
* on Windows.
*
* @since New in 1.6.
*/
svn_boolean_t
svn_dirent_is_absolute(const char *dirent);
/** Return TRUE if @a dirent is considered a root directory on the platform
* at hand.
* E.g.:
* On Posix: '/'
* On Windows: '/', 'X:/', '//server/share', 'X:'
*
* Note that on Windows '/' and 'X:' are roots, but paths starting with this
* root are not absolute.
*
* @since New in 1.5.
*/
svn_boolean_t
svn_dirent_is_root(const char *dirent,
apr_size_t len);
/** Return TRUE if @a uri is a root URL (e.g., "http://server").
*
* @since New in 1.7
*/
svn_boolean_t
svn_uri_is_root(const char *uri,
apr_size_t len);
src/subversion/subversion/include/svn_dirent_uri.h view on Meta::CPAN
* is @c NULL; an empty string is never returned.
*
* If @a result_pool is NULL, return a pointer into @a child_dirent, otherwise
* allocate the result in @a result_pool.
*
* ### TODO: Deprecate, as the semantics are trivially
* obtainable from *_skip_ancestor().
*
* @since New in 1.6.
*/
const char *
svn_dirent_is_child(const char *parent_dirent,
const char *child_dirent,
apr_pool_t *result_pool);
/** Return TRUE if @a parent_dirent is an ancestor of @a child_dirent or
* the dirents are equal, and FALSE otherwise.
*
* ### TODO: Deprecate, as the semantics are trivially
* obtainable from *_skip_ancestor().
*
* @since New in 1.6.
*/
svn_boolean_t
svn_dirent_is_ancestor(const char *parent_dirent,
const char *child_dirent);
/** Return TRUE if @a parent_uri is an ancestor of @a child_uri or
* the uris are equal, and FALSE otherwise.
*/
svn_boolean_t
svn_uri__is_ancestor(const char *parent_uri,
const char *child_uri);
/** Return the relative path part of @a child_dirent that is below
* @a parent_dirent, or just "" if @a parent_dirent is equal to
* @a child_dirent. If @a child_dirent is not below or equal to
* @a parent_dirent, return NULL.
*
* If one of @a parent_dirent and @a child_dirent is absolute and
* the other relative, return NULL.
*
* @since New in 1.7.
*/
const char *
svn_dirent_skip_ancestor(const char *parent_dirent,
const char *child_dirent);
/** Return the relative path part of @a child_relpath that is below
* @a parent_relpath, or just "" if @a parent_relpath is equal to
* @a child_relpath. If @a child_relpath is not below @a parent_relpath,
* return NULL.
*
* @since New in 1.7.
*/
const char *
svn_relpath_skip_ancestor(const char *parent_relpath,
const char *child_relpath);
/** Return the URI-decoded relative path of @a child_uri that is below
* @a parent_uri, or just "" if @a parent_uri is equal to @a child_uri. If
* @a child_uri is not below @a parent_uri, return NULL.
*
* Allocate the result in @a result_pool.
*
* @since New in 1.7.
*/
const char *
svn_uri_skip_ancestor(const char *parent_uri,
const char *child_uri,
apr_pool_t *result_pool);
/** Find the common prefix of the canonicalized dirents in @a targets
* (an array of <tt>const char *</tt>'s), and remove redundant dirents if @a
* remove_redundancies is TRUE.
*
* - Set @a *pcommon to the absolute dirent of the dirent common to
* all of the targets. If the targets have no common prefix (e.g.
* "C:/file" and "D:/file" on Windows), set @a *pcommon to the empty
* string.
*
* - If @a pcondensed_targets is non-NULL, set @a *pcondensed_targets
* to an array of targets relative to @a *pcommon, and if
* @a remove_redundancies is TRUE, omit any dirents that are
* descendants of another dirent in @a targets. If *pcommon
* is empty, @a *pcondensed_targets will contain absolute dirents;
* redundancies can still be removed. If @a pcondensed_targets is NULL,
* leave it alone.
*
* Else if there is exactly one target, then
*
* - Set @a *pcommon to that target, and
*
* - If @a pcondensed_targets is non-NULL, set @a *pcondensed_targets
* to an array containing zero elements. Else if
* @a pcondensed_targets is NULL, leave it alone.
*
* If there are no items in @a targets, set @a *pcommon and (if
* applicable) @a *pcondensed_targets to @c NULL.
*
* Allocate the results in @a result_pool. Use @a scratch_pool for
* temporary allocations.
*
* @since New in 1.7.
*/
svn_error_t *
svn_dirent_condense_targets(const char **pcommon,
apr_array_header_t **pcondensed_targets,
const apr_array_header_t *targets,
svn_boolean_t remove_redundancies,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
/** Find the common prefix of the canonicalized uris in @a targets
* (an array of <tt>const char *</tt>'s), and remove redundant uris if @a
* remove_redundancies is TRUE.
*
* - Set @a *pcommon to the common base uri of all of the targets.
* If the targets have no common prefix (e.g. "http://srv1/file"
* and "http://srv2/file"), set @a *pcommon to the empty
* string.
*
* - If @a pcondensed_targets is non-NULL, set @a *pcondensed_targets
* to an array of URI-decoded targets relative to @a *pcommon, and
* if @a remove_redundancies is TRUE, omit any uris that are
* descendants of another uri in @a targets. If *pcommon is
* empty, @a *pcondensed_targets will contain absolute uris;
* redundancies can still be removed. If @a pcondensed_targets is
* NULL, leave it alone.
*
* Else if there is exactly one target, then
*
* - Set @a *pcommon to that target, and
*
* - If @a pcondensed_targets is non-NULL, set @a *pcondensed_targets
* to an array containing zero elements. Else if
* @a pcondensed_targets is NULL, leave it alone.
*
* If there are no items in @a targets, set @a *pcommon and (if
* applicable) @a *pcondensed_targets to @c NULL.
*
* Allocate the results in @a result_pool. Use @a scratch_pool for
* temporary allocations.
*
* @since New in 1.7.
*/
svn_error_t *
svn_uri_condense_targets(const char **pcommon,
apr_array_header_t **pcondensed_targets,
const apr_array_header_t *targets,
svn_boolean_t remove_redundancies,
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
/** Join @a path onto @a base_path, checking that @a path does not attempt
* to traverse above @a base_path. If @a path or any ".." component within
* it resolves to a path above @a base_path, or if @a path is an absolute
* path, then set @a *under_root to @c FALSE. Otherwise, set @a *under_root
* to @c TRUE and, if @a result_path is not @c NULL, set @a *result_path to
* the resulting path.
*
* @a path need not be canonical. @a base_path must be canonical and
* @a *result_path will be canonical.
*
* Allocate the result in @a result_pool.
*
* @note Use of this function is strongly encouraged. Do not roll your own.
* (http://cve.mitre.org/cgi-bin/cvename.cgi?name=2007-3846)
*
* @since New in 1.7.
*/
svn_error_t *
svn_dirent_is_under_root(svn_boolean_t *under_root,
const char **result_path,
const char *base_path,
const char *path,
apr_pool_t *result_pool);
/** Set @a *dirent to the path corresponding to the file:// URL @a url, using
* the platform-specific file:// rules.
*
* Allocate the result in @a result_pool.
*
* @since New in 1.7.
( run in 1.098 second using v1.01-cache-2.11-cpan-df04353d9ac )