diff options
author | Tor Lillqvist <tml@collabora.com> | 2014-10-08 11:28:00 +0300 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2014-10-08 19:03:04 +0300 |
commit | 96d091d43428472c2c68054ed5dca22f79adc705 (patch) | |
tree | e7db4481bc379b9628347a526e348928c22bcd7b /svx/source/gallery2 | |
parent | 1e721077b43de84edab2a3ed2f316ddcbec6e3ec (diff) |
Don't try to create cdefghij.klm inside the app bundle on OS X when sandboxed
Actually, we check HAVE_FEATURE_READONLY_INSTALLSET and not
HAVE_FEATURE_MACOSX_SANDBOX, but in practice we set the former only
for the latter case.
We could do this test cross-platform but I didn't bother now. Nobody
uses --enable-readonly-installset when building for Linux or Windows
anyway, I think.
(There must be more places where we could and should check
HAVE_FEATURE_READONLY_INSTALLSET.)
Change-Id: Ie54f436616a1db3119b0bc0148149784127b156d
Diffstat (limited to 'svx/source/gallery2')
-rw-r--r-- | svx/source/gallery2/gallery1.cxx | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/svx/source/gallery2/gallery1.cxx b/svx/source/gallery2/gallery1.cxx index 20fa438bad1f..e9ce8b614bcb 100644 --- a/svx/source/gallery2/gallery1.cxx +++ b/svx/source/gallery2/gallery1.cxx @@ -17,6 +17,15 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <config_features.h> + +#if defined(MACOSX) && defined(HAVE_FEATURE_READONLY_INSTALLSET) +#define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0 +#include <premac.h> +#include <Foundation/Foundation.h> +#include <postmac.h> +#endif + #include "sal/config.h" #include <comphelper/processfactory.hxx> @@ -236,6 +245,15 @@ void Gallery::ImplLoadSubDirs( const INetURLObject& rBaseURL, bool& rbDirIsReadO uno::Reference< sdbc::XResultSet > xResultSet( aCnt.createCursor( aProps, ::ucbhelper::INCLUDE_DOCUMENTS_ONLY ) ); +#if defined(MACOSX) && defined(HAVE_FEATURE_READONLY_INSTALLSET) + if( rBaseURL.GetProtocol() == INET_PROT_FILE ) + { + const char *appBundle = [[[NSBundle mainBundle] bundlePath] UTF8String]; + OUString path = rBaseURL.GetURLPath(); + if( path.startsWith( OUString( appBundle, strlen( appBundle ), RTL_TEXTENCODING_UTF8 ) + "/" ) ) + rbDirIsReadOnly = true; + } +#else try { // check readonlyness the very hard way @@ -267,7 +285,7 @@ void Gallery::ImplLoadSubDirs( const INetURLObject& rBaseURL, bool& rbDirIsReadO catch( const uno::Exception& ) { } - +#endif if( xResultSet.is() ) { uno::Reference< ucb::XContentAccess > xContentAccess( xResultSet, uno::UNO_QUERY ); |