diff options
author | Jan Holesovsky <kendy@collabora.com> | 2015-07-06 15:16:56 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2015-07-07 07:48:27 +0000 |
commit | a24da4040675bf18c74c54fc9f3480aa7834efc1 (patch) | |
tree | dbeeb8753f5c67fd7b1daea8f701f020c74008e5 /desktop | |
parent | bea3990141e598b60c358c03ec8f0e48ac15362b (diff) |
LOK: Cleanup absolutizing of URLs.
Thanks to Stephan Bergmann.
Change-Id: I22aa3bb827db28bce3eabebb9b8c514663fad860
Reviewed-on: https://gerrit.libreoffice.org/16795
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/source/lib/init.cxx | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index 1457e0fddd0d..b2076c622bf1 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -26,8 +26,9 @@ #include <osl/file.hxx> #include <osl/process.h> #include <osl/thread.h> -#include <rtl/strbuf.hxx> #include <rtl/bootstrap.hxx> +#include <rtl/strbuf.hxx> +#include <rtl/uri.hxx> #include <cppuhelper/bootstrap.hxx> #include <comphelper/dispatchcommand.hxx> #include <comphelper/lok.hxx> @@ -165,19 +166,23 @@ static OUString getUString(const char* pString) static OUString getAbsoluteURL(const char* pURL) { OUString aURL(getUString(pURL)); - - // return unchanged if it likely is an URL already - if (aURL.indexOf("://") > 0) + if (aURL.isEmpty()) return aURL; - OUString sAbsoluteDocUrl, sWorkingDir, sDocPathUrl; - // convert relative paths to absolute ones - osl_getProcessWorkingDir(&sWorkingDir.pData); - osl::FileBase::getFileURLFromSystemPath( aURL, sDocPathUrl ); - osl::FileBase::getAbsoluteFileURL(sWorkingDir, sDocPathUrl, sAbsoluteDocUrl); + OUString aWorkingDir; + osl_getProcessWorkingDir(&aWorkingDir.pData); + if (!aWorkingDir.endsWith("/")) + aWorkingDir += "/"; + + try { + return rtl::Uri::convertRelToAbs(aWorkingDir, aURL); + } + catch (const rtl::MalformedUriException &) + { + } - return sAbsoluteDocUrl; + return OUString(); } extern "C" @@ -349,6 +354,12 @@ static LibreOfficeKitDocument* lo_documentLoadWithOptions(LibreOfficeKit* pThis, SolarMutexGuard aGuard; OUString aURL(getAbsoluteURL(pURL)); + if (aURL.isEmpty()) + { + pLib->maLastExceptionMsg = "Filename to load was not provided."; + SAL_INFO("lok", "URL for load is empty"); + return NULL; + } pLib->maLastExceptionMsg.clear(); @@ -415,6 +426,12 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const cha OUString sFormat = getUString(pFormat); OUString aURL(getAbsoluteURL(sUrl)); + if (aURL.isEmpty()) + { + gImpl->maLastExceptionMsg = "Filename to save to was not provided."; + SAL_INFO("lok", "URL for save is empty"); + return false; + } try { |