summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2013-11-07 11:37:19 +0000
committerMichael Meeks <michael.meeks@collabora.com>2013-11-07 11:50:00 +0000
commit3c608eb38150f3b11919adf6eca6eff0fdfdb0cd (patch)
tree022a89f6776d0101bff063e92e47d922440fcc0a /desktop
parentd324745fe95c7f0fad56f146e1e33f994a0d5de6 (diff)
liblibo: share crude URL absolutization, and clean.
Change-Id: I559eac8626a011644f68f8391631447f15c643eb
Diffstat (limited to 'desktop')
-rw-r--r--desktop/source/lib/init.cxx36
1 files changed, 20 insertions, 16 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 6c6b9f51ad27..d26d5b8752a0 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -135,24 +135,33 @@ static OUString getUString( const char *str )
RTL_TEXTENCODING_UTF8 );
}
+// Try to convert a relative URL to an absolute one
+static OUString getAbsoluteURL( const char *pURL )
+{
+ OUString aURL( getUString( pURL ) );
+ OUString sAbsoluteDocUrl, sWorkingDir, sDocPathUrl;
+
+ // FIXME: this would appear to kill non-file URLs.
+ osl_getProcessWorkingDir(&sWorkingDir.pData);
+ osl::FileBase::getFileURLFromSystemPath( aURL, sDocPathUrl );
+ osl::FileBase::getAbsoluteFileURL(sWorkingDir, sDocPathUrl, sAbsoluteDocUrl);
+
+ return sAbsoluteDocUrl;
+}
+
LODocument *
LibLibreOffice_Impl::documentLoad( const char *docUrl )
{
- OUString sUrl = getUString( docUrl );
- OUString sAbsoluteDocUrl, sWorkingDir, sDocPathUrl;
+ OUString aURL = getAbsoluteURL( docUrl );
uno::Reference < css::frame::XDesktop2 > xComponentLoader =
css::frame::Desktop::create(xContext);
- osl_getProcessWorkingDir(&sWorkingDir.pData);
- osl::FileBase::getFileURLFromSystemPath( sUrl, sDocPathUrl );
- osl::FileBase::getAbsoluteFileURL(sWorkingDir, sDocPathUrl, sAbsoluteDocUrl);
-
maLastExceptionMsg = "";
try {
uno::Reference < css::lang::XComponent > xComponent =
xComponentLoader->loadComponentFromURL(
- sAbsoluteDocUrl, OUString("_blank"), 0,
+ aURL, OUString("_blank"), 0,
uno::Sequence < css::beans::PropertyValue >());
if( xComponentLoader.is() )
return new LibLODocument_Impl( xComponent );
@@ -168,12 +177,7 @@ bool LibLODocument_Impl::saveAs (const char *url, const char *format)
{
OUString sFormat = getUString( format );
- OUString sUrl = getUString( url );
- OUString sAbsoluteDocUrl, sWorkingDir, sDocPathUrl;
-
- osl_getProcessWorkingDir(&sWorkingDir.pData);
- osl::FileBase::getFileURLFromSystemPath( sUrl, sDocPathUrl );
- osl::FileBase::getAbsoluteFileURL(sWorkingDir, sDocPathUrl, sAbsoluteDocUrl);
+ OUString aURL = getAbsoluteURL( url );
try {
uno::Reference< frame::XModel > xDocument( mxComponent, uno::UNO_QUERY_THROW );
@@ -205,10 +209,10 @@ bool LibLODocument_Impl::saveAs (const char *url, const char *format)
if( ! format )
{
// sniff from the extension
- sal_Int32 idx = sUrl.lastIndexOf( "." );
+ sal_Int32 idx = aURL.lastIndexOf( "." );
if( idx > 0 )
{
- sFormat = sUrl.copy( idx + 1 );
+ sFormat = aURL.copy( idx + 1 );
}
else
{
@@ -239,7 +243,7 @@ bool LibLODocument_Impl::saveAs (const char *url, const char *format)
aSeq[1].Value <<= aFilterName;
uno::Reference< frame::XStorable > xStorable( mxComponent, uno::UNO_QUERY_THROW );
- xStorable->storeToURL( sAbsoluteDocUrl, aSeq );
+ xStorable->storeToURL( aURL, aSeq );
return true;
} catch (const uno::Exception &ex) {