summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorJan Holesovsky <kendy@collabora.com>2015-07-06 15:16:56 +0200
committerStephan Bergmann <sbergman@redhat.com>2015-07-07 07:48:27 +0000
commita24da4040675bf18c74c54fc9f3480aa7834efc1 (patch)
treedbeeb8753f5c67fd7b1daea8f701f020c74008e5 /desktop
parentbea3990141e598b60c358c03ec8f0e48ac15362b (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.cxx37
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
{