diff options
Diffstat (limited to 'subversion/libsvn_subr/io.c')
-rw-r--r-- | subversion/libsvn_subr/io.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/subversion/libsvn_subr/io.c b/subversion/libsvn_subr/io.c index 08f2e326d7fe6..e27411e139a7d 100644 --- a/subversion/libsvn_subr/io.c +++ b/subversion/libsvn_subr/io.c @@ -4675,8 +4675,25 @@ svn_io_open_unique_file3(apr_file_t **file, * case, but only if the umask allows it. */ if (!using_system_temp_dir) { + svn_error_t *err; + SVN_ERR(merge_default_file_perms(tempfile, &perms, scratch_pool)); - SVN_ERR(file_perms_set2(tempfile, perms, scratch_pool)); + err = file_perms_set2(tempfile, perms, scratch_pool); + if (err) + { + if (APR_STATUS_IS_INCOMPLETE(err->apr_err) || + APR_STATUS_IS_ENOTIMPL(err->apr_err)) + svn_error_clear(err); + else + { + const char *message; + message = apr_psprintf(scratch_pool, + _("Can't set permissions on '%s'"), + svn_dirent_local_style(tempname, + scratch_pool)); + return svn_error_quick_wrap(err, message); + } + } } #endif |