aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHubert Maier2016-04-28 21:24:12 +0300
committerHubert Maier2016-04-28 21:24:12 +0300
commitd9d5ea40df3e8e85c8298dfff3b293cd664d4fd4 (patch)
treef99e335b4cf2c042ea6012455fddd01b6affb0ef
parent5f301b24002fffb3e8e05061a92ae2e0ee3a92ec (diff)
downloadscummvm-rg350-d9d5ea40df3e8e85c8298dfff3b293cd664d4fd4.tar.gz
scummvm-rg350-d9d5ea40df3e8e85c8298dfff3b293cd664d4fd4.tar.bz2
scummvm-rg350-d9d5ea40df3e8e85c8298dfff3b293cd664d4fd4.zip
AMIGAOS: Preparations for use with AmiUpdate
Adding a bit of code to make ScummVM AmiUpdate aware. Everything else will be dealt with through a (yet to finish) AmigaOS installer script and the entries in AmiUpdate's database. I'd like to ask for hints regarding - Code Formatting - Optimizations - Comments - Obivous errors or - Ill-designed code. It's not much code, but i'm sure i still messed up glorious either way
-rw-r--r--backends/platform/sdl/amigaos/amigaos-main.cpp35
1 files changed, 33 insertions, 2 deletions
diff --git a/backends/platform/sdl/amigaos/amigaos-main.cpp b/backends/platform/sdl/amigaos/amigaos-main.cpp
index 65da6bbf85..7117efc310 100644
--- a/backends/platform/sdl/amigaos/amigaos-main.cpp
+++ b/backends/platform/sdl/amigaos/amigaos-main.cpp
@@ -24,13 +24,44 @@
#if defined(__amigaos4__)
+#include "backends/fs/amigaos4/amigaos4-fs.h"
#include "backends/platform/sdl/amigaos/amigaos.h"
#include "backends/plugins/sdl/sdl-provider.h"
#include "base/main.h"
int main(int argc, char *argv[]) {
- // Set up a stack cookie to avoid crashes due to too few stack set by users
+ // The following will gather the application name and add the install path
+ // to a variable in AmigaOS4's ENV(ARC) system. It will be placed in AppPaths
+ // so that ScummVM can become AmiUpdate aware
+ const char *const appname = "ScummVM";
+
+ BPTR lock;
+ APTR oldwin;
+
+ // Obtain the lock to the home directory
+ if(( lock = IDOS->GetProgramDir() )) {
+ TEXT progpath[2048];
+ TEXT apppath[1024] = "AppPaths";
+
+ if( IDOS->DevNameFromLock( lock,
+ progpath,
+ sizeof(progpath),
+ DN_FULLPATH )) {
+
+ // Stop any "Insert volume..." type requesters
+ oldwin = IDOS->SetProcWindow((APTR)-1);
+
+ // Finally, set the variable to the path the executable was run from
+ IDOS->AddPart( apppath, appname, 1024);
+ IDOS->SetVar( apppath, progpath, -1, GVF_GLOBAL_ONLY|GVF_SAVE_VAR );
+
+ // Turn system requesters back on
+ IDOS->SetProcWindow( oldwin );
+ }
+ }
+
+ // Set up a stack cookie to avoid crashes from a stack set too low
static const char *stack_cookie __attribute__((used)) = "$STACK: 600000";
// Create our OSystem instance
@@ -44,7 +75,7 @@ int main(int argc, char *argv[]) {
PluginManager::instance().addPluginProvider(new SDLPluginProvider());
#endif
- // Invoke the actual ScummVM main entry point:
+ // Invoke the actual ScummVM main entry point
int res = scummvm_main(argc, argv);
// Free OSystem