Hallo...
I repost this patch (now relative to r4368) because there were several
commits since r4296 which would make life unnessesary hard for the
committer. In Addition I replaced the bogus '1' and '0' by
'TRUE'/'FALSE'. It passed "make check" on my machine.
Log entry:
* subversion/libsvn_subr/io.c
(svn_io_check_path): Add boolean parameter 'resolve_symlinks' to
decide whether the target of a symlink or the symlink itself should
be checked.
* subversion/include/svn_io.h
(svn_io_check_path): Add boolean parameter 'resolve_symlinks' to prototype.
* subversion/libsvn_repos/hooks.c
(svn_repos__hooks_start_commit, svn_repos__hooks_pre_commit,
svn_repos__hooks_post_commit, svn_repos__hooks_pre_revprop_change,
svn_repos__hooks_post_revprop_change): changed callers of
svn_io_check_path to use target of symlink.
The following callers were updated to use the current semantics
which means to return svn_node_unknown when a symlink is passed:
* subversion/libsvn_client/add.c: (svn_client_add)
* subversion/libsvn_client/auth.c: (svn_client__default_auth_dir)
* subversion/libsvn_client/cleanup.c: (svn_client_cleanup)
* subversion/libsvn_client/commit.c
(import, svn_client_import, remove_tmpfiles)
* subversion/libsvn_client/commit_util.c: (harvest_committables)
* subversion/libsvn_client/copy.c
(wc_to_wc_copy, remove_tmpfiles, wc_to_repos_copy, repos_to_wc_copy)
* subversion/libsvn_client/delete.c: (svn_client__can_delete)
* subversion/libsvn_client/diff.c
(merge_file_added, merge_file_deleted, merge_dir_added, merge_dir_deleted,
do_diff)
* subversion/libsvn_client/prop_commands.c: (maybe_convert_to_url)
* subversion/libsvn_client/revert.c: (svn_client_revert)
* subversion/libsvn_client/update.c: (svn_client_update)
* subversion/libsvn_subr/config_file.c: (svn_config_ensure)
* subversion/libsvn_subr/io.c
(svn_io_copy_dir_recursively, svn_io_detect_mimetype)
* subversion/libsvn_wc/adm_files.c
(svn_wc__adm_path_exists, maybe_copy_file, prop_path_internal,
svn_wc__wcprop_path, svn_wc__open_props, svn_wc__close_props,
svn_wc__sync_props, check_adm_exists)
* subversion/libsvn_wc/adm_ops.c:
(remove_file_if_present, erase_unversioned_from_wc, erase_from_wc,
svn_wc_add, revert_admin_things, svn_wc_revert, attempt_deletion,
svn_wc_set_auth_file)
* subversion/libsvn_wc/copy.c: (copy_file_administratively, svn_wc_copy)
* subversion/libsvn_wc/entries.c: (svn_wc_entry, svn_wc_mark_missing_deleted)
* subversion/libsvn_wc/lock.c
(probe, svn_wc_adm_open, svn_wc_locked, svn_wc__adm_is_cleanup_required)
* subversion/libsvn_wc/log.c:
(install_committed_file, log_do_modify_entry, log_do_committed,
svn_wc_cleanup)
* subversion/libsvn_wc/props.c:
(svn_wc__load_prop_file, wcprop_list, svn_wc_prop_list, svn_wc_prop_set,
empty_props_p)
* subversion/libsvn_wc/questions.c
(svn_wc_check_wc, svn_wc__timestamps_equal_p, svn_wc_text_modified_p,
svn_wc_conflicted_p)
* subversion/libsvn_wc/status.c:
(assemble_status, get_dir_status, svn_wc_statuses)
* subversion/libsvn_wc/status_editor.c: (delete_entry)
* subversion/libsvn_wc/update_editor.c
(add_directory, add_or_open_file, svn_wc_install_file)
* subversion/libsvn_wc/util.c: (svn_wc__ensure_directory)
* subversion/svnlook/main.c: (open_writable_binary_file, do_diff)
* subversion/svnversion/main.c: (main)
Index: subversion/include/svn_io.h
===================================================================
--- subversion/include/svn_io.h (revision 4368)
+++ subversion/include/svn_io.h (working copy)
@@ -58,13 +58,19 @@
*
* If @a path is a directory, @a *kind is set to @c svn_node_dir.
*
+ * If @a path is a symbolic link, @a *kind is set to @c svn_node_link.
+ *
* If @a path does not exist in its final component, @a *kind is set to
* @c svn_node_none.
*
* If intermediate directories on the way to @a path don't exist, an
* error is returned, and @a *kind's value is undefined.
+ *
+ * If @a resolve_symlinks is true, symlinks are resolved and @a *kind
+ * is set according the kind of the object the symlink refers to.
*/
svn_error_t *svn_io_check_path (const char *path,
+ svn_boolean_t resolve_symlinks,
svn_node_kind_t *kind,
apr_pool_t *pool);
Index: subversion/libsvn_wc/props.c
===================================================================
--- subversion/libsvn_wc/props.c (revision 4368)
+++ subversion/libsvn_wc/props.c (working copy)
@@ -231,7 +231,7 @@
{
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (propfile_path, &kind, pool));
+ SVN_ERR (svn_io_check_path (propfile_path, FALSE, &kind, pool));
if (kind == svn_node_file)
{
@@ -855,7 +855,7 @@
*props = apr_hash_make (pool);
/* Check validity of PATH */
- SVN_ERR( svn_io_check_path (path, &kind, pool) );
+ SVN_ERR( svn_io_check_path (path, FALSE, &kind, pool) );
#if 0
if (kind == svn_node_none)
@@ -873,7 +873,7 @@
SVN_ERR( svn_wc__wcprop_path (&prop_path, path, 0, pool) );
/* Does the property file exist? */
- SVN_ERR( svn_io_check_path (prop_path, &pkind, pool) );
+ SVN_ERR( svn_io_check_path (prop_path, FALSE, &pkind, pool) );
if (pkind == svn_node_none)
/* No property file exists. Just go home, with an empty hash. */
@@ -971,7 +971,7 @@
SVN_ERR (svn_wc__prop_path (&prop_path, path, 0, pool));
/* Does the property file exist? */
- SVN_ERR (svn_io_check_path (prop_path, &pkind, pool));
+ SVN_ERR (svn_io_check_path (prop_path, FALSE, &pkind, pool));
if (pkind == svn_node_none)
/* No property file exists. Just go home, with an empty hash. */
@@ -1124,7 +1124,7 @@
svn_node_kind_t kind;
enum svn_prop_kind prop_kind = svn_property_kind (NULL, name);
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (prop_kind == svn_prop_wc_kind)
return svn_wc__wcprop_set (name, value, path, pool);
@@ -1263,7 +1263,7 @@
{
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (path_to_prop_file, &kind, pool));
+ SVN_ERR (svn_io_check_path (path_to_prop_file, FALSE, &kind, pool));
if (kind == svn_node_none)
*empty_p = TRUE;
Index: subversion/libsvn_wc/entries.c
===================================================================
--- subversion/libsvn_wc/entries.c (revision 4368)
+++ subversion/libsvn_wc/entries.c (working copy)
@@ -612,7 +612,7 @@
*entry = NULL;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
/* ### todo:
Make an innocent way to discover that a dir/path is or is not
@@ -1677,7 +1677,7 @@
{
svn_node_kind_t pkind;
- SVN_ERR (svn_io_check_path (path, &pkind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &pkind, pool));
if (pkind == svn_node_none)
{
Index: subversion/libsvn_wc/copy.c
===================================================================
--- subversion/libsvn_wc/copy.c (revision 4368)
+++ subversion/libsvn_wc/copy.c (working copy)
@@ -136,7 +136,7 @@
= svn_path_join (svn_wc_adm_access_path (dst_parent), dst_basename, pool);
/* Sanity check: if dst file exists already, don't allow overwrite. */
- SVN_ERR (svn_io_check_path (dst_path, &dst_kind, pool));
+ SVN_ERR (svn_io_check_path (dst_path, FALSE, &dst_kind, pool));
if (dst_kind != svn_node_none)
return svn_error_createf (SVN_ERR_ENTRY_EXISTS, NULL,
"'%s' already exists and is in the way.",
@@ -218,12 +218,12 @@
SVN_ERR (svn_io_copy_file (src_txtb, dst_txtb, TRUE, pool));
/* Copy the props over if they exist. */
- SVN_ERR (svn_io_check_path (src_wprop, &kind, pool));
+ SVN_ERR (svn_io_check_path (src_wprop, FALSE, &kind, pool));
if (kind == svn_node_file)
SVN_ERR (svn_io_copy_file (src_wprop, dst_wprop, TRUE, pool));
/* Copy the base-props over if they exist */
- SVN_ERR (svn_io_check_path (src_bprop, &kind, pool));
+ SVN_ERR (svn_io_check_path (src_bprop, FALSE, &kind, pool));
if (kind == svn_node_file)
SVN_ERR (svn_io_copy_file (src_bprop, dst_bprop, TRUE, pool));
}
@@ -344,7 +344,7 @@
SVN_ERR (svn_wc_adm_probe_open (&adm_access, NULL, src_path, FALSE, TRUE,
pool));
- SVN_ERR (svn_io_check_path (src_path, &src_kind, pool));
+ SVN_ERR (svn_io_check_path (src_path, FALSE, &src_kind, pool));
if (src_kind == svn_node_file)
SVN_ERR (copy_file_administratively (src_path, adm_access,
Index: subversion/libsvn_wc/util.c
===================================================================
--- subversion/libsvn_wc/util.c (revision 4368)
+++ subversion/libsvn_wc/util.c (working copy)
@@ -37,7 +37,7 @@
svn_wc__ensure_directory (const char *path, apr_pool_t *pool)
{
svn_node_kind_t kind;
- svn_error_t *err = svn_io_check_path (path, &kind, pool);
+ svn_error_t *err = svn_io_check_path (path, FALSE, &kind, pool);
if (err)
return err;
Index: subversion/libsvn_wc/log.c
===================================================================
--- subversion/libsvn_wc/log.c (revision 4368)
+++ subversion/libsvn_wc/log.c (working copy)
@@ -237,7 +237,7 @@
/* Is there a tmp_text_base that needs to be installed? */
tmp_text_base = svn_wc__text_base_path (filepath, 1, pool);
- SVN_ERR (svn_io_check_path (tmp_text_base, &kind, pool));
+ SVN_ERR (svn_io_check_path (tmp_text_base, FALSE, &kind, pool));
if (kind == svn_node_file)
SVN_ERR (svn_subst_copy_and_translate (tmp_text_base,
@@ -523,7 +523,7 @@
svn_node_kind_t tfile_kind;
apr_time_t text_time;
- err = svn_io_check_path (tfile, &tfile_kind, loggy->pool);
+ err = svn_io_check_path (tfile, FALSE, &tfile_kind, loggy->pool);
if (err)
return svn_error_createf
(SVN_ERR_WC_BAD_ADM_LOG, err,
@@ -553,7 +553,7 @@
if (err)
signal_error (loggy, err);
- err = svn_io_check_path (pfile, &pfile_kind, loggy->pool);
+ err = svn_io_check_path (pfile, FALSE, &pfile_kind, loggy->pool);
if (err)
return svn_error_createf
(SVN_ERR_WC_BAD_ADM_LOG, err,
@@ -833,7 +833,7 @@
/* Make sure our working file copy is present in the temp area. */
tmpf = svn_wc__text_base_path (wf, 1, pool);
- if ((err = svn_io_check_path (tmpf, &kind, pool)))
+ if ((err = svn_io_check_path (tmpf, FALSE, &kind, pool)))
return svn_error_createf (SVN_ERR_WC_BAD_ADM_LOG, err,
"error checking existence: %s", name);
if (kind == svn_node_file)
@@ -893,7 +893,7 @@
if (entry->schedule == svn_wc_schedule_replace)
{
svn_node_kind_t kinder;
- SVN_ERR (svn_io_check_path (basef, &kinder, pool));
+ SVN_ERR (svn_io_check_path (basef, FALSE, &kinder, pool));
if (kinder == svn_node_file)
SVN_ERR (svn_io_remove_file (basef, pool));
}
@@ -903,7 +903,7 @@
is_this_dir
? svn_wc_adm_access_path (loggy->adm_access) : full_path,
1, pool));
- if ((err = svn_io_check_path (tmpf, &kind, pool)))
+ if ((err = svn_io_check_path (tmpf, FALSE, &kind, pool)))
return svn_error_createf (SVN_ERR_WC_BAD_ADM_LOG, err,
"error checking existence: %s", name);
if (kind == svn_node_file)
@@ -1368,7 +1368,7 @@
{
/* Recurse */
const char *subdir = svn_path_join (path, key, pool);
- SVN_ERR (svn_io_check_path (subdir, &kind, pool));
+ SVN_ERR (svn_io_check_path (subdir, FALSE, &kind, pool));
if (kind == svn_node_dir)
SVN_ERR (svn_wc_cleanup (subdir, adm_access, pool));
}
@@ -1382,7 +1382,7 @@
if (cleanup)
{
/* Is there a log? If so, run it. */
- SVN_ERR (svn_io_check_path (log_path, &kind, pool));
+ SVN_ERR (svn_io_check_path (log_path, FALSE, &kind, pool));
if (kind == svn_node_file)
SVN_ERR (svn_wc__run_log (adm_access, pool));
}
Index: subversion/libsvn_wc/adm_ops.c
===================================================================
--- subversion/libsvn_wc/adm_ops.c (revision 4368)
+++ subversion/libsvn_wc/adm_ops.c (working copy)
@@ -392,7 +392,7 @@
svn_node_kind_t kind;
/* Does this file exist? If not, get outta here. */
- SVN_ERR (svn_io_check_path (file, &kind, pool));
+ SVN_ERR (svn_io_check_path (file, FALSE, &kind, pool));
if (kind == svn_node_none)
return SVN_NO_ERROR;
@@ -509,7 +509,7 @@
{
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
switch (kind)
{
case svn_node_none:
@@ -552,7 +552,7 @@
{
/* Check that the item exists in the wc. */
svn_node_kind_t wc_kind;
- SVN_ERR (svn_io_check_path (path, &wc_kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &wc_kind, pool));
if (wc_kind == svn_node_none)
return SVN_NO_ERROR;
@@ -786,7 +786,7 @@
svn_wc_adm_access_t *adm_access;
/* Make sure something's there. */
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_none)
return svn_error_createf (SVN_ERR_WC_PATH_NOT_FOUND, NULL,
"'%s' not found", path);
@@ -1110,12 +1110,12 @@
/* There may be a base props file but no working props file, if
the mod was that the working file was `R'eplaced by a new
file with no props. */
- SVN_ERR (svn_io_check_path (thing, &working_props_kind, pool));
+ SVN_ERR (svn_io_check_path (thing, FALSE, &working_props_kind, pool));
/* If there is a pristing property file, copy it out as the
working property file, else just remove the working property
file. */
- SVN_ERR (svn_io_check_path (base_thing, &kind, pool));
+ SVN_ERR (svn_io_check_path (base_thing, FALSE, &kind, pool));
if (kind == svn_node_file)
{
if ((working_props_kind == svn_node_file)
@@ -1152,7 +1152,7 @@
then we need to restore them. */
SVN_ERR (svn_wc__prop_path (&thing, fullpath, 0, pool));
SVN_ERR (svn_wc__prop_base_path (&base_thing, fullpath, 0, pool));
- SVN_ERR (svn_io_check_path (base_thing, &kind, pool));
+ SVN_ERR (svn_io_check_path (base_thing, FALSE, &kind, pool));
if ((err = svn_io_copy_file (base_thing, thing, FALSE, pool)))
return revert_error (err, fullpath, "restoring props", pool);
@@ -1164,7 +1164,7 @@
if (entry->kind == svn_node_file)
{
- SVN_ERR (svn_io_check_path (fullpath, &kind, pool));
+ SVN_ERR (svn_io_check_path (fullpath, FALSE, &kind, pool));
SVN_ERR (svn_wc_text_modified_p (&modified_p, fullpath, adm_access,
pool));
if ((modified_p) || (kind == svn_node_none))
@@ -1278,7 +1278,7 @@
if (entry->kind == svn_node_dir)
{
svn_node_kind_t disk_kind;
- SVN_ERR (svn_io_check_path (path, &disk_kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &disk_kind, pool));
if ((disk_kind != svn_node_dir)
&& (entry->schedule != svn_wc_schedule_add))
{
@@ -1307,7 +1307,7 @@
/* Safeguard 3: can we deal with the node kind of PATH current in
the working copy? */
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if ((kind != svn_node_none)
&& (kind != svn_node_file)
&& (kind != svn_node_dir))
@@ -1722,7 +1722,7 @@
const char *full_path = svn_path_join (parent_dir, base_name, pool);
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (full_path, &kind, pool));
+ SVN_ERR (svn_io_check_path (full_path, FALSE, &kind, pool));
*was_present = kind != svn_node_none;
if (! *was_present)
return SVN_NO_ERROR;
@@ -1995,7 +1995,7 @@
= svn_path_join (svn_wc_adm_access_path (adm_access), base_name,
pool);
- SVN_ERR (svn_io_check_path (childpath, &kind, pool));
+ SVN_ERR (svn_io_check_path (childpath, FALSE, &kind, pool));
if (kind == svn_node_dir)
{
SVN_ERR (svn_wc_adm_retrieve (&child_access, adm_access,
Index: subversion/libsvn_wc/status.c
===================================================================
--- subversion/libsvn_wc/status.c (revision 4368)
+++ subversion/libsvn_wc/status.c (working copy)
@@ -125,7 +125,7 @@
/* Check the path kind for PATH. */
if (path_kind == svn_node_unknown)
- SVN_ERR (svn_io_check_path (path, &path_kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &path_kind, pool));
if (! entry)
{
@@ -598,7 +598,7 @@
svn_node_kind_t fullpath_kind;
/* Get the entry's kind on disk. */
- SVN_ERR (svn_io_check_path (fullpath, &fullpath_kind, pool));
+ SVN_ERR (svn_io_check_path (fullpath, FALSE, &fullpath_kind, pool));
if (fullpath_kind == svn_node_dir)
{
@@ -666,7 +666,7 @@
const svn_wc_entry_t *entry;
/* Is PATH a directory or file? */
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
/* Read the appropriate entries file */
Index: subversion/libsvn_wc/adm_files.c
===================================================================
--- subversion/libsvn_wc/adm_files.c (revision 4368)
+++ subversion/libsvn_wc/adm_files.c (working copy)
@@ -138,7 +138,7 @@
path = v_extend_with_adm_name (path, NULL, tmp, pool, ap);
va_end (ap);
- err = svn_io_check_path (path, &kind, pool);
+ err = svn_io_check_path (path, FALSE, &kind, pool);
if (err)
svn_error_clear (err);
if (kind == svn_node_none)
@@ -214,7 +214,7 @@
apr_status_t apr_err;
/* First test if SRC exists. */
- SVN_ERR (svn_io_check_path (src, &kind, pool));
+ SVN_ERR (svn_io_check_path (src, FALSE, &kind, pool));
if (kind == svn_node_none)
{
/* SRC doesn't exist, create DST empty. */
@@ -319,7 +319,7 @@
int wc_format_version;
const char *entry_name;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
/* kff todo: some factorization can be done on most callers of
svn_wc_check_wc()? */
@@ -392,7 +392,7 @@
int is_wc;
const char *entry_name;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
/* kff todo: some factorization can be done on most callers of
svn_wc_check_wc()? */
@@ -716,7 +716,7 @@
int wc_format_version;
/* Check if path is a file or a dir. */
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_none)
{
/* Something changed, yet we can't find the local working directory
@@ -801,7 +801,7 @@
int wc_format_version;
/* Check if path is a file or a dir. */
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
/* If file, split the path. */
if (kind == svn_node_file)
@@ -870,7 +870,7 @@
svn_node_kind_t kind;
/* Check if path is a file or a dir. */
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
/* If file, split the path. */
if (kind == svn_node_file)
@@ -946,7 +946,7 @@
tmp_path = extend_with_adm_name (path, NULL, 0, pool, NULL);
- SVN_ERR (svn_io_check_path (tmp_path, &kind, pool));
+ SVN_ERR (svn_io_check_path (tmp_path, FALSE, &kind, pool));
if (kind != svn_node_none && kind != svn_node_dir)
{
/* If got an error other than dir non-existence, then
Index: subversion/libsvn_wc/lock.c
===================================================================
--- subversion/libsvn_wc/lock.c (revision 4368)
+++ subversion/libsvn_wc/lock.c (working copy)
@@ -202,7 +202,7 @@
svn_node_kind_t kind;
int is_wc;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_dir)
SVN_ERR (svn_wc_check_wc (path, &is_wc, pool));
@@ -283,7 +283,7 @@
/* Since no physical lock gets created we must check PATH is not a
file. */
svn_node_kind_t node_kind;
- SVN_ERR (svn_io_check_path (path, &node_kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &node_kind, pool));
if (node_kind != svn_node_dir)
return svn_error_createf (SVN_ERR_WC_INVALID_LOCK, NULL,
"lock path is not a directory (%s)",
@@ -329,7 +329,7 @@
/* If this is not physically a directory, it may have been
deleted say, then ignore it. */
- SVN_ERR (svn_io_check_path (entry_path, &kind, pool));
+ SVN_ERR (svn_io_check_path (entry_path, FALSE, &kind, pool));
if (kind != svn_node_dir)
continue;
@@ -561,7 +561,7 @@
const char *lockfile
= svn_wc__adm_path (path, 0, pool, SVN_WC__ADM_LOCK, NULL);
- SVN_ERR (svn_io_check_path (lockfile, &kind, pool));
+ SVN_ERR (svn_io_check_path (lockfile, FALSE, &kind, pool));
if (kind == svn_node_file)
*locked = TRUE;
else if (kind == svn_node_none)
@@ -600,7 +600,7 @@
FALSE, pool, SVN_WC__ADM_LOG, NULL);
/* The presence of a log file demands cleanup */
- SVN_ERR (svn_io_check_path (log_path, &kind, pool));
+ SVN_ERR (svn_io_check_path (log_path, FALSE, &kind, pool));
*cleanup = (kind == svn_node_file);
return SVN_NO_ERROR;
Index: subversion/libsvn_wc/update_editor.c
===================================================================
--- subversion/libsvn_wc/update_editor.c (revision 4368)
+++ subversion/libsvn_wc/update_editor.c (working copy)
@@ -637,7 +637,7 @@
/* The directory may exist if this is a checkout, otherwise there should
be nothing with this name. */
- SVN_ERR (svn_io_check_path (db->path, &kind, db->pool));
+ SVN_ERR (svn_io_check_path (db->path, FALSE, &kind, db->pool));
if (kind != svn_node_none
&& !(pb->edit_baton->is_checkout && kind == svn_node_dir))
return svn_error_createf
@@ -1036,7 +1036,7 @@
### Are editor drives guaranteed not to mention the same name
### twice in the same dir baton? Don't know. */
- SVN_ERR (svn_io_check_path (fb->path, &kind, subpool));
+ SVN_ERR (svn_io_check_path (fb->path, FALSE, &kind, subpool));
SVN_ERR (svn_wc_adm_retrieve (&adm_access, pb->edit_baton->adm_access,
pb->path, subpool));
SVN_ERR (svn_wc_entry (&entry, fb->path, adm_access, FALSE, subpool));
@@ -1614,7 +1614,7 @@
{
svn_node_kind_t wfile_kind = svn_node_unknown;
- SVN_ERR (svn_io_check_path (file_path, &wfile_kind, pool));
+ SVN_ERR (svn_io_check_path (file_path, FALSE, &wfile_kind, pool));
if (wfile_kind == svn_node_none) /* working file is missing?! */
{
/* Just copy the new text-base to the file. */
Index: subversion/libsvn_wc/status_editor.c
===================================================================
--- subversion/libsvn_wc/status_editor.c (revision 4368)
+++ subversion/libsvn_wc/status_editor.c (working copy)
@@ -333,7 +333,7 @@
versioned in this working copy, it was probably deleted via this
working copy. No need to report such a thing. */
/* ### use svn_wc_entry() instead? */
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_dir)
dir_path = full_path;
else
Index: subversion/libsvn_wc/questions.c
===================================================================
--- subversion/libsvn_wc/questions.c (revision 4368)
+++ subversion/libsvn_wc/questions.c (working copy)
@@ -50,7 +50,7 @@
svn_error_t *err = SVN_NO_ERROR;
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_none)
{
@@ -131,7 +131,7 @@
const svn_wc_entry_t *entry;
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_dir)
entryname = SVN_WC_ENTRY_THIS_DIR;
else
@@ -321,7 +321,7 @@
svn_node_kind_t kind;
/* Sanity check: if the path doesn't exist, return FALSE. */
- SVN_ERR (svn_io_check_path (filename, &kind, subpool));
+ SVN_ERR (svn_io_check_path (filename, FALSE, &kind, subpool));
if (kind != svn_node_file)
{
*modified_p = FALSE;
@@ -345,7 +345,7 @@
is modified. For example, a file scheduled for addition but not
yet committed. */
textbase_filename = svn_wc__text_base_path (filename, 0, subpool);
- SVN_ERR (svn_io_check_path (textbase_filename, &kind, subpool));
+ SVN_ERR (svn_io_check_path (textbase_filename, FALSE, &kind, subpool));
if (kind != svn_node_file)
{
*modified_p = TRUE;
@@ -391,7 +391,7 @@
if (entry->conflict_old)
{
path = svn_path_join (dir_path, entry->conflict_old, subpool);
- SVN_ERR (svn_io_check_path (path, &kind, subpool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, subpool));
if (kind == svn_node_file)
*text_conflicted_p = TRUE;
}
@@ -399,7 +399,7 @@
if ((! *text_conflicted_p) && (entry->conflict_new))
{
path = svn_path_join (dir_path, entry->conflict_new, subpool);
- SVN_ERR (svn_io_check_path (path, &kind, subpool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, subpool));
if (kind == svn_node_file)
*text_conflicted_p = TRUE;
}
@@ -407,7 +407,7 @@
if ((! *text_conflicted_p) && (entry->conflict_wrk))
{
path = svn_path_join (dir_path, entry->conflict_wrk, subpool);
- SVN_ERR (svn_io_check_path (path, &kind, subpool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, subpool));
if (kind == svn_node_file)
*text_conflicted_p = TRUE;
}
@@ -416,7 +416,7 @@
if (entry->prejfile)
{
path = svn_path_join (dir_path, entry->prejfile, subpool);
- SVN_ERR (svn_io_check_path (path, &kind, subpool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, subpool));
if (kind == svn_node_file)
*prop_conflicted_p = TRUE;
}
Index: subversion/libsvn_subr/config_file.c
===================================================================
--- subversion/libsvn_subr/config_file.c (revision 4368)
+++ subversion/libsvn_subr/config_file.c (working copy)
@@ -456,7 +456,7 @@
if (! path)
return SVN_NO_ERROR;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_none)
{
apr_err = apr_dir_make (path, APR_OS_DEFAULT, pool);
@@ -479,7 +479,7 @@
if (! path) /* highly unlikely, since a previous call succeeded */
return SVN_NO_ERROR;
- err = svn_io_check_path (path, &kind, pool);
+ err = svn_io_check_path (path, FALSE, &kind, pool);
if (err)
return SVN_NO_ERROR;
@@ -621,7 +621,7 @@
if (! path) /* highly unlikely, since a previous call succeeded */
return SVN_NO_ERROR;
- err = svn_io_check_path (path, &kind, pool);
+ err = svn_io_check_path (path, FALSE, &kind, pool);
if (err)
return SVN_NO_ERROR;
@@ -723,7 +723,7 @@
if (! path) /* highly unlikely, since a previous call succeeded */
return SVN_NO_ERROR;
- err = svn_io_check_path (path, &kind, pool);
+ err = svn_io_check_path (path, FALSE, &kind, pool);
if (err)
return SVN_NO_ERROR;
Index: subversion/libsvn_subr/io.c
===================================================================
--- subversion/libsvn_subr/io.c (revision 4368)
+++ subversion/libsvn_subr/io.c (working copy)
@@ -107,9 +107,11 @@
svn_error_t *
svn_io_check_path (const char *path,
+ svn_boolean_t resolve_symlinks,
svn_node_kind_t *kind,
apr_pool_t *pool)
{
+ apr_int32_t flags;
apr_finfo_t finfo;
apr_status_t apr_err;
const char *path_native;
@@ -119,9 +121,11 @@
/* Not using svn_io_stat() here because we want to check the
apr_err return anyway. */
+
SVN_ERR (path_from_utf8 (&path_native, path, pool));
- apr_err = apr_stat (&finfo, path_native,
- (APR_FINFO_MIN | APR_FINFO_LINK), pool);
+
+ flags = resolve_symlinks ? APR_FINFO_MIN : (APR_FINFO_MIN | APR_FINFO_LINK);
+ apr_err = apr_stat (&finfo, path_native, flags, pool);
if (apr_err && !APR_STATUS_IS_ENOENT(apr_err))
return svn_error_createf
@@ -354,19 +358,19 @@
/* Sanity checks: SRC and DST_PARENT are directories, and
DST_BASENAME doesn't already exist in DST_PARENT. */
- SVN_ERR (svn_io_check_path (src, &kind, subpool));
+ SVN_ERR (svn_io_check_path (src, FALSE, &kind, subpool));
if (kind != svn_node_dir)
return svn_error_createf (SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
"svn_io_copy_dir: '%s' is not a directory.",
src);
- SVN_ERR (svn_io_check_path (dst_parent, &kind, subpool));
+ SVN_ERR (svn_io_check_path (dst_parent, FALSE, &kind, subpool));
if (kind != svn_node_dir)
return svn_error_createf (SVN_ERR_NODE_UNEXPECTED_KIND, NULL,
"svn_io_copy_dir: '%s' is not a directory.",
dst_parent);
- SVN_ERR (svn_io_check_path (dst_path, &kind, subpool));
+ SVN_ERR (svn_io_check_path (dst_path, FALSE, &kind, subpool));
if (kind != svn_node_none)
return svn_error_createf (SVN_ERR_ENTRY_EXISTS, NULL,
"svn_io_copy_dir: '%s' already exists.",
@@ -1678,7 +1682,7 @@
*mimetype = NULL;
/* See if this file even exists, and make sure it really is a file. */
- SVN_ERR (svn_io_check_path (file, &kind, pool));
+ SVN_ERR (svn_io_check_path (file, FALSE, &kind, pool));
if (kind != svn_node_file)
return svn_error_createf (SVN_ERR_BAD_FILENAME, NULL,
"svn_io_detect_mimetype: "
Index: subversion/svnlook/main.c
===================================================================
--- subversion/svnlook/main.c (revision 4368)
+++ subversion/svnlook/main.c (working copy)
@@ -451,7 +451,7 @@
svn_node_kind_t kind;
const char *piece = ((const char **) (path_pieces->elts))[i];
full_path = svn_path_join (full_path, piece, pool);
- SVN_ERR (svn_io_check_path (full_path, &kind, pool));
+ SVN_ERR (svn_io_check_path (full_path, FALSE, &kind, pool));
/* Does this path component exist at all? */
if (kind == svn_node_none)
@@ -945,7 +945,7 @@
SVN_ERR (svn_fs_revision_root (&base_root, c->fs, base_rev_id, pool));
SVN_ERR (print_diff_tree (root, base_root, tree, "", "",
c->no_diff_deleted, pool));
- SVN_ERR (svn_io_check_path (SVNLOOK_TMPDIR, &kind, pool));
+ SVN_ERR (svn_io_check_path (SVNLOOK_TMPDIR, FALSE, &kind, pool));
if (kind == svn_node_dir)
SVN_ERR (svn_io_remove_dir (SVNLOOK_TMPDIR, pool));
}
Index: subversion/libsvn_client/prop_commands.c
===================================================================
--- subversion/libsvn_client/prop_commands.c (revision 4368)
+++ subversion/libsvn_client/prop_commands.c (working copy)
@@ -324,7 +324,7 @@
const char *pdir;
const svn_wc_entry_t *entry;
- SVN_ERR (svn_io_check_path (target, &kind, pool));
+ SVN_ERR (svn_io_check_path (target, FALSE, &kind, pool));
if (kind == svn_node_file)
svn_path_split (target, &pdir, NULL, pool);
else
Index: subversion/libsvn_client/auth.c
===================================================================
--- subversion/libsvn_client/auth.c (revision 4368)
+++ subversion/libsvn_client/auth.c (working copy)
@@ -65,7 +65,7 @@
{
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_dir)
{
SVN_ERR (svn_client__dir_if_wc (auth_dir_p, path, pool));
Index: subversion/libsvn_client/delete.c
===================================================================
--- subversion/libsvn_client/delete.c (revision 4368)
+++ subversion/libsvn_client/delete.c (working copy)
@@ -45,7 +45,7 @@
svn_node_kind_t kind;
svn_wc_adm_access_t *dir_access;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_dir)
SVN_ERR (svn_wc_adm_retrieve (&dir_access, adm_access, path, pool));
else
Index: subversion/libsvn_client/revert.c
===================================================================
--- subversion/libsvn_client/revert.c (revision 4368)
+++ subversion/libsvn_client/revert.c (working copy)
@@ -59,7 +59,7 @@
{
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_dir)
{
/* While we could add the parent to the access baton set, there
Index: subversion/libsvn_client/diff.c
===================================================================
--- subversion/libsvn_client/diff.c (revision 4368)
+++ subversion/libsvn_client/diff.c (working copy)
@@ -456,7 +456,7 @@
const char *copyfrom_url;
const char *child;
- SVN_ERR (svn_io_check_path (mine, &kind, subpool));
+ SVN_ERR (svn_io_check_path (mine, FALSE, &kind, subpool));
switch (kind)
{
case svn_node_none:
@@ -521,7 +521,7 @@
svn_wc_adm_access_t *parent_access;
const char *parent_path;
- SVN_ERR (svn_io_check_path (mine, &kind, subpool));
+ SVN_ERR (svn_io_check_path (mine, FALSE, &kind, subpool));
switch (kind)
{
case svn_node_file:
@@ -563,7 +563,7 @@
assert (child != NULL);
copyfrom_url = svn_path_join (merge_b->url, child, subpool);
- SVN_ERR (svn_io_check_path (path, &kind, subpool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, subpool));
switch (kind)
{
case svn_node_none:
@@ -611,7 +611,7 @@
svn_wc_adm_access_t *parent_access;
const char *parent_path;
- SVN_ERR (svn_io_check_path (path, &kind, subpool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, subpool));
switch (kind)
{
case svn_node_dir:
@@ -1114,7 +1114,7 @@
recurse,
diff_editor, diff_edit_baton));
- SVN_ERR (svn_io_check_path (path2, &kind, pool));
+ SVN_ERR (svn_io_check_path (path2, FALSE, &kind, pool));
if (kind == svn_node_dir)
SVN_ERR (svn_wc_adm_retrieve (&dir_access, adm_access, path2, pool));
else
Index: subversion/libsvn_client/copy.c
===================================================================
--- subversion/libsvn_client/copy.c (revision 4368)
+++ subversion/libsvn_client/copy.c (working copy)
@@ -79,7 +79,7 @@
svn_wc_adm_access_t *adm_access, *src_access;
/* Verify that SRC_PATH exists. */
- SVN_ERR (svn_io_check_path (src_path, &src_kind, pool));
+ SVN_ERR (svn_io_check_path (src_path, FALSE, &src_kind, pool));
if (src_kind == svn_node_none)
return svn_error_createf (SVN_ERR_NODE_UNKNOWN_KIND, NULL,
"path `%s' does not exist.", src_path);
@@ -89,7 +89,7 @@
DST_PATH is a dir, then SRC_PATH's basename will become a new
file or dir within DST_PATH itself. Else if it's a file, just
error out. */
- SVN_ERR (svn_io_check_path (dst_path, &dst_kind, pool));
+ SVN_ERR (svn_io_check_path (dst_path, FALSE, &dst_kind, pool));
if (dst_kind == svn_node_none)
{
svn_path_split (dst_path, &dst_parent, &base_name, pool);
@@ -443,7 +443,7 @@
svn_node_kind_t kind;
apr_hash_this (hi, &key, &keylen, &val);
- SVN_ERR (svn_io_check_path ((const char *)key, &kind, pool));
+ SVN_ERR (svn_io_check_path ((const char *)key, FALSE, &kind, pool));
if (kind == svn_node_file)
SVN_ERR (svn_io_remove_file ((const char *)key, pool));
}
@@ -589,7 +589,7 @@
}
/* Crawl the working copy for commit items. */
- SVN_ERR (svn_io_check_path (base_path, &src_kind, pool));
+ SVN_ERR (svn_io_check_path (base_path, FALSE, &src_kind, pool));
if (src_kind == svn_node_dir)
SVN_ERR (svn_wc_adm_retrieve (&dir_access, adm_access, base_path, pool));
else
@@ -751,7 +751,7 @@
*/
/* First, figure out about dst. */
- SVN_ERR (svn_io_check_path (dst_path, &dst_kind, pool));
+ SVN_ERR (svn_io_check_path (dst_path, FALSE, &dst_kind, pool));
if (dst_kind == svn_node_dir)
{
const char *base_name;
@@ -768,7 +768,7 @@
/* Now that dst_path has possibly been reset, check that there's
nothing in the way of the upcoming checkout. */
- SVN_ERR (svn_io_check_path (dst_path, &dst_kind, pool));
+ SVN_ERR (svn_io_check_path (dst_path, FALSE, &dst_kind, pool));
if (dst_kind != svn_node_none)
return svn_error_createf (SVN_ERR_WC_OBSTRUCTED_UPDATE, NULL,
"`%s' is in the way", dst_path);
Index: subversion/libsvn_client/update.c
===================================================================
--- subversion/libsvn_client/update.c (revision 4368)
+++ subversion/libsvn_client/update.c (working copy)
@@ -122,7 +122,7 @@
recurse,
update_editor, update_edit_baton));
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
SVN_ERR (svn_wc_adm_retrieve (&dir_access, adm_access,
(kind == svn_node_dir
? path
Index: subversion/libsvn_client/commit_util.c
===================================================================
--- subversion/libsvn_client/commit_util.c (revision 4368)
+++ subversion/libsvn_client/commit_util.c (working copy)
@@ -140,7 +140,7 @@
return svn_error_createf
(SVN_ERR_NODE_UNKNOWN_KIND, NULL, "Unknown entry kind for \"%s\"", path);
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if ((kind != svn_node_file)
&& (kind != svn_node_dir)
@@ -397,7 +397,7 @@
/* A missing, schedule-delete child dir is
allowable. Just don't try to recurse. */
svn_node_kind_t childkind;
- SVN_ERR (svn_io_check_path (full_path,
+ SVN_ERR (svn_io_check_path (full_path, FALSE,
&childkind, loop_pool));
if (childkind == svn_node_none
&& this_entry->schedule == svn_wc_schedule_delete)
Index: subversion/libsvn_client/cleanup.c
===================================================================
--- subversion/libsvn_client/cleanup.c (revision 4368)
+++ subversion/libsvn_client/cleanup.c (working copy)
@@ -40,7 +40,7 @@
{
svn_node_kind_t kind;
- SVN_ERR (svn_io_check_path (dir, &kind, pool));
+ SVN_ERR (svn_io_check_path (dir, FALSE, &kind, pool));
if (kind != svn_node_dir)
return svn_error_createf (SVN_ERR_WC_NOT_DIRECTORY, NULL,
"Cannot cleanup '%s' -- not a directory",
Index: subversion/libsvn_client/commit.c
===================================================================
--- subversion/libsvn_client/commit.c (revision 4368)
+++ subversion/libsvn_client/commit.c (working copy)
@@ -353,7 +353,7 @@
pool, &root_baton));
/* Import a file or a directory tree. */
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
/* Note that there is no need to check whether PATH's basename is
the same name that we reserve for our admistritave
@@ -589,7 +589,7 @@
svn_node_kind_t kind;
const char *base_dir = path;
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if (kind == svn_node_file)
svn_path_split (path, &base_dir, NULL, pool);
SVN_ERR (get_ra_editor (&ra_baton, &session, &ra_lib, NULL,
@@ -639,7 +639,7 @@
svn_node_kind_t kind;
apr_hash_this (hi, &key, NULL, &val);
- SVN_ERR (svn_io_check_path ((const char *)key, &kind, pool));
+ SVN_ERR (svn_io_check_path ((const char *)key, FALSE, &kind, pool));
if (kind == svn_node_file)
SVN_ERR (svn_io_remove_file ((const char *)key, pool));
}
Index: subversion/libsvn_client/add.c
===================================================================
--- subversion/libsvn_client/add.c (revision 4368)
+++ subversion/libsvn_client/add.c (working copy)
@@ -135,7 +135,7 @@
SVN_ERR (svn_wc_adm_open (&adm_access, NULL, parent_path, TRUE, TRUE, pool));
- SVN_ERR (svn_io_check_path (path, &kind, pool));
+ SVN_ERR (svn_io_check_path (path, FALSE, &kind, pool));
if ((kind == svn_node_dir) && recursive)
err = add_dir_recursive (path, adm_access,
notify_func, notify_baton, pool);
Index: subversion/libsvn_repos/hooks.c
===================================================================
--- subversion/libsvn_repos/hooks.c (revision 4368)
+++ subversion/libsvn_repos/hooks.c (working copy)
@@ -117,7 +117,7 @@
svn_node_kind_t kind;
const char *hook = svn_repos_start_commit_hook (repos, pool);
- if ((! svn_io_check_path (hook, &kind, pool))
+ if ((! svn_io_check_path (hook, TRUE, &kind, pool))
&& (kind == svn_node_file))
{
const char *args[4];
@@ -144,7 +144,7 @@
svn_node_kind_t kind;
const char *hook = svn_repos_pre_commit_hook (repos, pool);
- if ((! svn_io_check_path (hook, &kind, pool))
+ if ((! svn_io_check_path (hook, TRUE, &kind, pool))
&& (kind == svn_node_file))
{
const char *args[4];
@@ -171,7 +171,7 @@
svn_node_kind_t kind;
const char *hook = svn_repos_post_commit_hook (repos, pool);
- if ((! svn_io_check_path (hook, &kind, pool))
+ if ((! svn_io_check_path (hook, TRUE, &kind, pool))
&& (kind == svn_node_file))
{
const char *args[4];
@@ -202,7 +202,7 @@
svn_node_kind_t kind;
const char *hook = svn_repos_pre_revprop_change_hook (repos, pool);
- if ((! svn_io_check_path (hook, &kind, pool))
+ if ((! svn_io_check_path (hook, TRUE, &kind, pool))
&& (kind == svn_node_file))
{
const char *args[6];
@@ -248,7 +248,7 @@
svn_node_kind_t kind;
const char *hook = svn_repos_post_revprop_change_hook (repos, pool);
- if ((! svn_io_check_path (hook, &kind, pool))
+ if ((! svn_io_check_path (hook, TRUE, &kind, pool))
&& (kind == svn_node_file))
{
const char *args[6];
Index: subversion/svnversion/main.c
===================================================================
--- subversion/svnversion/main.c (revision 4368)
+++ subversion/svnversion/main.c (working copy)
@@ -90,7 +90,7 @@
if (err)
{
svn_node_kind_t kind;
- svn_error_t *err3 = svn_io_check_path (wc_path, &kind, pool);
+ svn_error_t *err3 = svn_io_check_path (wc_path, FALSE, &kind, pool);
if (! err3 && kind == svn_node_dir)
{
printf ("exported\n");
--
-- Josef Wolf -- jw@raven.inka.de --
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Mon Jan 13 23:49:39 2003