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

Reply via email to