I would just not go down the troubled road of attempting to support
whatever platform-specific file pathname notation in an interface
supposedly designed to take URLs (i.e., stop calling
osl::FileBase::getFileURLFromSystemPath on aURL), and then---if there is
indeed demand to support relative URLs in your interface---use
rtl::Uri::convertRelToAbs for reliable conversion, instead of resorting
to guesswork like indexOf("://").
On 07/03/2015 06:18 PM, Jan Holesovsky wrote:
commit e83cb37cf7546e8bc46d0d49b487dcd352b67093
Author: Jan Holesovsky <ke...@collabora.com>
Date: Fri Jul 3 18:14:31 2015 +0200
LOK: Don't try to absolutize URL's.
Based on a patch by Henry Castro.
Change-Id: Ia7aca20feb8f6095adf7dfe510ed78b1e9882740
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index ee47cd8..3a0ce67 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -161,13 +161,18 @@ static OUString getUString(const char* pString)
return OStringToOUString(sString, RTL_TEXTENCODING_UTF8);
}
-// Try to convert a relative URL to an absolute one
+/// Try to convert a relative URL to an absolute one, unless it already looks
like an URL.
static OUString getAbsoluteURL(const char* pURL)
{
- OUString aURL( getUString( pURL ) );
+ OUString aURL(getUString(pURL));
+
+ // return unchanged if it likely is an URL already
+ if (aURL.indexOf("://") > 0)
+ return aURL;
+
OUString sAbsoluteDocUrl, sWorkingDir, sDocPathUrl;
- // FIXME: this would appear to kill non-file URLs.
+ // convert relative paths to absolute ones
osl_getProcessWorkingDir(&sWorkingDir.pData);
osl::FileBase::getFileURLFromSystemPath( aURL, sDocPathUrl );
osl::FileBase::getAbsoluteFileURL(sWorkingDir, sDocPathUrl,
sAbsoluteDocUrl);
@@ -343,7 +348,7 @@ static LibreOfficeKitDocument*
lo_documentLoadWithOptions(LibreOfficeKit* pThis,
SolarMutexGuard aGuard;
- OUString aURL = getAbsoluteURL(pURL);
+ OUString aURL(getAbsoluteURL(pURL));
pLib->maLastExceptionMsg.clear();
@@ -409,7 +414,7 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const
char* sUrl, const cha
LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis);
OUString sFormat = getUString(pFormat);
- OUString aURL = getAbsoluteURL(sUrl);
+ OUString aURL(getAbsoluteURL(sUrl));
try
{
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice