summaryrefslogtreecommitdiff
path: root/ucb/source/ucp
diff options
context:
space:
mode:
authorJoachim Lingner <jl@openoffice.org>2010-05-06 17:19:12 +0200
committerJoachim Lingner <jl@openoffice.org>2010-05-06 17:19:12 +0200
commit718bfa6bd04b4ef2f23caa3ace38b6232c1705ad (patch)
treee4ceadc46cc8dd09b825817abb0cea93e4771054 /ucb/source/ucp
parent948cff1e2664101f584b8e70b28f7bcda080ab6d (diff)
jl152 i111434 ucb failes when copying folders, which contain files containing percent signs
Diffstat (limited to 'ucb/source/ucp')
-rw-r--r--ucb/source/ucp/file/shell.cxx10
1 files changed, 8 insertions, 2 deletions
diff --git a/ucb/source/ucp/file/shell.cxx b/ucb/source/ucp/file/shell.cxx
index dff5db9616..c0ce3bebad 100644
--- a/ucb/source/ucp/file/shell.cxx
+++ b/ucb/source/ucp/file/shell.cxx
@@ -33,6 +33,7 @@
#endif
#include "osl/diagnose.h"
+#include <rtl/uri.hxx>
#include <rtl/ustrbuf.hxx>
#include <osl/time.h>
#include <osl/file.hxx>
@@ -2053,10 +2054,15 @@ shell::copy_recursive( const rtl::OUString& srcUnqPath,
rtl::OUString newDstUnqPath = dstUnqPath;
rtl::OUString tit;
- if( aFileStatus.isValid( FileStatusMask_FileName ) )
- tit = aFileStatus.getFileName();
+ if( aFileStatus.isValid( FileStatusMask_FileName ) )
+ tit = rtl::Uri::encode( aFileStatus.getFileName(),
+ rtl_UriCharClassPchar,
+ rtl_UriEncodeIgnoreEscapes,
+ RTL_TEXTENCODING_UTF8 );
+
if( newDstUnqPath.lastIndexOf( sal_Unicode('/') ) != newDstUnqPath.getLength()-1 )
newDstUnqPath += rtl::OUString::createFromAscii( "/" );
+
newDstUnqPath += tit;
if ( newSrcUnqPath != dstUnqPath )