On 9/12/07, dionisos@tigris.org <dionisos@tigris.org> wrote:
> + /* Then maybe it was a directory? */
> + svn_error_clear(err);
> if (cancel_func)
> SVN_ERR(cancel_func(cancel_baton));
>
> - SVN_ERR(svn_io_remove_dir2(path, FALSE, pool));
> + err = svn_io_remove_dir2(path, FALSE, pool);
>
> - if (cancel_func)
> - SVN_ERR(cancel_func(cancel_baton));
> + if (err)
> + {
> + /* We're unlikely to end up here. But we need this fallback
> + to make sure we report the right error *and* try the
> + correct deletion at least once. */
> + svn_node_kind_t kind;
>
> - break;
> + svn_error_clear(err);
> + SVN_ERR(svn_io_check_path(path, &kind, pool));
> + if (kind == svn_node_file)
> + SVN_ERR(svn_io_remove_file(path, pool));
> + else if (kind == svn_node_dir)
> + {
> + if (cancel_func)
> + SVN_ERR(cancel_func(cancel_baton));
It looks like you changed the cancel func semantics slightly here. Was
this intentional?
Previously, we used the following algorithm:
- call the cancel func
- delete the directory
- if the directory was deleted successfully, call the cancel func
again (presumably to check if the user pressed the cancel button while
we were off deleting a big directory of files)
Now, we use the following algorithm instead:
- call the cancel func
- delete the directory
- if the directory was NOT deleted successfully, call the cancel func again
Cheers,
David
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Thu Sep 13 02:09:51 2007