diff options
author | Hubert Maier | 2016-04-28 21:24:12 +0300 |
---|---|---|
committer | Hubert Maier | 2016-04-28 21:24:12 +0300 |
commit | d9d5ea40df3e8e85c8298dfff3b293cd664d4fd4 (patch) | |
tree | f99e335b4cf2c042ea6012455fddd01b6affb0ef /backends | |
parent | 5f301b24002fffb3e8e05061a92ae2e0ee3a92ec (diff) | |
download | scummvm-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
Diffstat (limited to 'backends')
-rw-r--r-- | backends/platform/sdl/amigaos/amigaos-main.cpp | 35 |
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 |