[Scummvm-cvs-logs] scummvm master -> aa369ab48fba04f3315bff5fe3ecd300b7d75373

lordhoto lordhoto at gmail.com
Fri Feb 26 14:38:30 CET 2016


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
587d5d5703 IOS: Fixes savegame deletion on sandboxed iOS devices
aa369ab48f Merge pull request #684 from bSr43/master


Commit: 587d5d570310118595140b475d77a4be9999963d
    https://github.com/scummvm/scummvm/commit/587d5d570310118595140b475d77a4be9999963d
Author: Vincent Bénony (bsr43 at hopperapp.com)
Date: 2016-02-26T09:50:39+01:00

Commit Message:
IOS: Fixes savegame deletion on sandboxed iOS devices

Changed paths:
    backends/platform/ios7/ios7_osys_main.cpp
    backends/platform/ios7/ios7_osys_main.h



diff --git a/backends/platform/ios7/ios7_osys_main.cpp b/backends/platform/ios7/ios7_osys_main.cpp
index c1280a2..25d9cbe 100644
--- a/backends/platform/ios7/ios7_osys_main.cpp
+++ b/backends/platform/ios7/ios7_osys_main.cpp
@@ -79,6 +79,33 @@ AQCallbackStruct OSystem_iOS7::s_AudioQueue;
 SoundProc OSystem_iOS7::s_soundCallback = NULL;
 void *OSystem_iOS7::s_soundParam = NULL;
 
+#ifdef IPHONE_SANDBOXED
+class SandboxedSaveFileManager : public DefaultSaveFileManager {
+	Common::String _sandboxRootPath;
+public:
+
+	SandboxedSaveFileManager(Common::String sandboxRootPath, Common::String defaultSavepath)
+			: DefaultSaveFileManager(defaultSavepath), _sandboxRootPath(sandboxRootPath) {
+	}
+
+	virtual bool removeSavefile(const Common::String &filename) override {
+		Common::String chrootedFile = getSavePath() + "/" + filename;
+		Common::String realFilePath = _sandboxRootPath + chrootedFile;
+
+		if (remove(realFilePath.c_str()) != 0) {
+			if (errno == EACCES)
+				setError(Common::kWritePermissionDenied, "Search or write permission denied: "+chrootedFile);
+
+			if (errno == ENOENT)
+				setError(Common::kPathDoesNotExist, "removeSavefile: '"+chrootedFile+"' does not exist or path is invalid");
+			return false;
+		} else {
+			return true;
+		}
+	}
+};
+#endif
+
 OSystem_iOS7::OSystem_iOS7() :
 	_mixer(NULL), _lastMouseTap(0), _queuedEventTime(0),
 	_mouseNeedTextureUpdate(false), _secondaryTapped(false), _lastSecondaryTap(0),
@@ -89,7 +116,8 @@ OSystem_iOS7::OSystem_iOS7() :
 	_queuedInputEvent.type = Common::EVENT_INVALID;
 	_touchpadModeEnabled = !iOS7_isBigDevice();
 #ifdef IPHONE_SANDBOXED
-	_fsFactory = new ChRootFilesystemFactory(iOS7_getDocumentsDir());
+	_chrootBasePath = iOS7_getDocumentsDir();
+	_fsFactory = new ChRootFilesystemFactory(_chrootBasePath);
 #else
 	_fsFactory = new POSIXFilesystemFactory();
 #endif
@@ -124,7 +152,7 @@ int OSystem_iOS7::timerHandler(int t) {
 
 void OSystem_iOS7::initBackend() {
 #ifdef IPHONE_SANDBOXED
-	_savefileManager = new DefaultSaveFileManager("/Savegames");
+	_savefileManager = new SandboxedSaveFileManager(_chrootBasePath, "/Savegames");
 #else
 	_savefileManager = new DefaultSaveFileManager(SCUMMVM_SAVE_PATH);
 #endif
diff --git a/backends/platform/ios7/ios7_osys_main.h b/backends/platform/ios7/ios7_osys_main.h
index cc2f1cc..174c160 100644
--- a/backends/platform/ios7/ios7_osys_main.h
+++ b/backends/platform/ios7/ios7_osys_main.h
@@ -111,6 +111,10 @@ protected:
 
 	char *_lastErrorMessage;
 
+#ifdef IPHONE_SANDBOXED
+	Common::String _chrootBasePath;
+#endif
+
 public:
 
 	OSystem_iOS7();


Commit: aa369ab48fba04f3315bff5fe3ecd300b7d75373
    https://github.com/scummvm/scummvm/commit/aa369ab48fba04f3315bff5fe3ecd300b7d75373
Author: Johannes Schickel (lordhoto at gmail.com)
Date: 2016-02-26T14:38:28+01:00

Commit Message:
Merge pull request #684 from bSr43/master

IOS: Fixes savegame deletion on sandboxed iOS devices

Changed paths:
    backends/platform/ios7/ios7_osys_main.cpp
    backends/platform/ios7/ios7_osys_main.h









More information about the Scummvm-git-logs mailing list