Justin Erenkrantz wrote:
> Julian Foad wrote:
>> For years we have been carrying around a work-around (in
>> svn_io_make_dir_recursively) for the fact that apr_dir_make_recursive is
>> not implemented for OS/2. This is silly. If anybody wants to run
>> Subversion on OS/2 they should get a patch into APR to implement that,
>> otherwise every project using APR has equal hassle.
> IIRC, Brian Harvard, the OS/2 maintainer of APR & httpd, has posted a
> few times here that Subversion works with some minor tweaks. But, if we
> pulled that workaround, then it'd give him impetus to fix APR. ;-) --
Well, I'm torn between protecting any OS/2 users that we might already have,
and trying to get out of keeping this work-around forever.
By the way, I see now that the original reason for this work-around was for MS
Windows; if OS/2 had been the only unsupported platform then, we might not have
bothered with this work-around in the first place.
How about letting Brian Havard know (I've CC'd him) that we intend to remove
this work-around some time soon? If he can implement apr_dir_make_recursive
for OS/2 before then, that's great, otherwise any OS/2 users that there might
be will have to step forward and help themselves.
I attach the removal diff for reference.
APR can now make a dir recursively, so we don't need our own implementation.
(svn_io_make_dir_recursively): Just use apr_dir_make_recursive.
--- subversion/libsvn_subr/io.c (revision 11819)
+++ subversion/libsvn_subr/io.c (working copy)
@@ -743,44 +743,20 @@
svn_io_make_dir_recursively (const char *path, apr_pool_t *pool)
- svn_error_t *err;
- char *dir;
+ const char *path_apr;
+ apr_status_t apr_err;
if (svn_path_is_empty (path))
/* Empty path (current dir) is assumed to always exist,
so we do nothing, per docs. */
- /* ### Use this implementation if/when apr_dir_make_recursive is
- available on all platforms, not just on Unix. --xbc */
apr_err = apr_dir_make_recursive (path_apr, APR_OS_DEFAULT, pool);
return svn_error_wrap_apr (apr_err, "Can't make directory '%s'", path);
- /* Try to make PATH right out */
- err = svn_io_dir_make (path, APR_OS_DEFAULT, pool);
- if (! err || APR_STATUS_IS_EEXIST (err->apr_err))
- /* We succeeded, or path already exists; either way we're done. */
- svn_error_clear (err);
- return SVN_NO_ERROR;
- else if (APR_STATUS_IS_ENOENT (err->apr_err))
- /* Missing an intermediate dir. */
- dir = svn_path_dirname (path, pool);
- SVN_ERR (svn_io_make_dir_recursively (dir, pool));
- return svn_io_dir_make (path, APR_OS_DEFAULT, pool);
- return err;
svn_error_t *svn_io_file_create (const char *file,
To unsubscribe, e-mail: email@example.com
For additional commands, e-mail: firstname.lastname@example.org
Received on Wed Nov 10 21:50:58 2004