summaryrefslogtreecommitdiff
path: root/svx/source/gallery2
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2014-10-08 11:28:00 +0300
committerTor Lillqvist <tml@collabora.com>2014-10-08 19:03:04 +0300
commit96d091d43428472c2c68054ed5dca22f79adc705 (patch)
treee7db4481bc379b9628347a526e348928c22bcd7b /svx/source/gallery2
parent1e721077b43de84edab2a3ed2f316ddcbec6e3ec (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.cxx20
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 );