diff options
author | Vasily Melenchuk <Vasily.Melenchuk@cib.de> | 2018-01-25 16:00:07 +0300 |
---|---|---|
committer | Katarina Behrens <Katarina.Behrens@cib.de> | 2018-02-01 12:40:22 +0100 |
commit | 65abd11d68ba9f849d89b98b6a56071411875c89 (patch) | |
tree | 2dfab863a55ebb37a464b0209f5b74f229c71d00 /tools | |
parent | ae5f89fdcccb2cf74256b04771249fc8afca8794 (diff) |
Support for webdav:// and webdavs:// schemes from command line
We have currently support for WebDAV schemes as vnd.sun.star.webdav://
but it is not user and tools friendly.
Some related refactoring in ucb to reuse existing code instead of
manual parsing of URLs.
Change-Id: Ib14411796d6cf11afd80d5132abe67d4e46a42e1
Reviewed-on: https://gerrit.libreoffice.org/48585
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/source/fsys/urlobj.cxx | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx index eee91285258e..b72976850345 100644 --- a/tools/source/fsys/urlobj.cxx +++ b/tools/source/fsys/urlobj.cxx @@ -332,6 +332,15 @@ INetURLObject::getSchemeInfo(INetProtocol eTheScheme) "vnd.sun.star.webdav", "vnd.sun.star.webdav://", true, false, false, false, true, true, true, true}, SchemeInfo{ + "vnd.sun.star.webdavs", "vnd.sun.star.webdavs://", true, false, + false, false, true, true, true, true}, + SchemeInfo{ + "webdav", "webdav://", true, false, false, false, true, true, + true, true}, + SchemeInfo{ + "webdavs", "webdavs://", true, false, false, false, true, true, + true, true}, + SchemeInfo{ "private", "private:", false, false, false, false, false, false, false, true}, SchemeInfo{ @@ -1468,7 +1477,11 @@ bool INetURLObject::setAbsURIRef(OUString const & rTheAbsURIRef, void INetURLObject::changeScheme(INetProtocol eTargetScheme) { OUString aTmpStr=m_aAbsURIRef.makeStringAndClear(); - int oldSchemeLen=strlen(getSchemeInfo().m_pScheme); + int oldSchemeLen = 0; + if (m_eScheme == INetProtocol::Generic) + oldSchemeLen = m_aScheme.getLength(); + else + oldSchemeLen = strlen(getSchemeInfo().m_pScheme); m_eScheme=eTargetScheme; int newSchemeLen=strlen(getSchemeInfo().m_pScheme); m_aAbsURIRef.appendAscii(getSchemeInfo().m_pScheme); @@ -2167,8 +2180,15 @@ INetURLObject::PrefixInfo const * INetURLObject::getPrefix(sal_Unicode const *& { "vnd.sun.star.tdoc:", nullptr, INetProtocol::VndSunStarTdoc, PrefixInfo::OFFICIAL }, { "vnd.sun.star.webdav:", nullptr, INetProtocol::VndSunStarWebdav, - PrefixInfo::OFFICIAL } }; - /* This list needs to be sorted, or you'll introduce serious bugs */ + PrefixInfo::OFFICIAL }, + { "vnd.sun.star.webdavs:", nullptr, INetProtocol::VndSunStarWebdavs, + PrefixInfo::OFFICIAL }, + { "webdav:", nullptr, INetProtocol::Webdav, + PrefixInfo::OFFICIAL }, + { "webdavs:", nullptr, INetProtocol::Webdavs, + PrefixInfo::OFFICIAL } + }; +/* This list needs to be sorted, or you'll introduce serious bugs */ PrefixInfo const * pFirst = aMap + 1; PrefixInfo const * pLast = aMap + sizeof aMap / sizeof (PrefixInfo) - 1; @@ -2916,6 +2936,9 @@ bool INetURLObject::parsePath(INetProtocol eScheme, case INetProtocol::Http: case INetProtocol::VndSunStarWebdav: + case INetProtocol::VndSunStarWebdavs: + case INetProtocol::Webdav: + case INetProtocol::Webdavs: case INetProtocol::Https: case INetProtocol::Smb: case INetProtocol::Cmis: @@ -3879,7 +3902,9 @@ bool INetURLObject::isAnyKnownWebDAVScheme() const { return ( isSchemeEqualTo( INetProtocol::Http ) || isSchemeEqualTo( INetProtocol::Https ) || isSchemeEqualTo( INetProtocol::VndSunStarWebdav ) || - isSchemeEqualTo( "vnd.sun.star.webdavs" ) ); + isSchemeEqualTo( INetProtocol::VndSunStarWebdavs ) || + isSchemeEqualTo( INetProtocol::Webdav ) || + isSchemeEqualTo( INetProtocol::Webdavs )); } // static |