[Libreoffice-commits] core.git: desktop/source

Stephan Bergmann sbergman at redhat.com
Mon Jul 6 03:06:16 PDT 2015


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 <kendy at 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
>       {


More information about the LibreOffice mailing list