diff options
| author | oy <Tom_Adams@web.de> | 2010-08-05 20:26:03 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2010-08-05 20:26:03 +0200 |
| commit | 665205327d0db5765de4b6d7576f7dad0be305a9 (patch) | |
| tree | 1f726f552908e5b3d57665b5c591266a8c0abd58 /src/engine | |
| parent | e79bfb243cd24f2b97467d2d087782d61e985753 (diff) | |
| download | zcatch-665205327d0db5765de4b6d7576f7dad0be305a9.tar.gz zcatch-665205327d0db5765de4b6d7576f7dad0be305a9.zip | |
added lost datadir override feature
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/client/client.cpp | 2 | ||||
| -rw-r--r-- | src/engine/server/server.cpp | 2 | ||||
| -rw-r--r-- | src/engine/shared/storage.cpp | 20 | ||||
| -rw-r--r-- | src/engine/storage.h | 2 |
4 files changed, 18 insertions, 8 deletions
diff --git a/src/engine/client/client.cpp b/src/engine/client/client.cpp index 92590472..bfe3f8ae 100644 --- a/src/engine/client/client.cpp +++ b/src/engine/client/client.cpp @@ -1964,7 +1964,7 @@ int main(int argc, const char **argv) // ignore_convention // create the components IConsole *pConsole = CreateConsole(CFGFLAG_CLIENT); - IStorage *pStorage = CreateStorage("Teeworlds", argv[0]); // ignore_convention + IStorage *pStorage = CreateStorage("Teeworlds", argc, argv); // ignore_convention IConfig *pConfig = CreateConfig(); IEngineGraphics *pEngineGraphics = CreateEngineGraphics(); IEngineSound *pEngineSound = CreateEngineSound(); diff --git a/src/engine/server/server.cpp b/src/engine/server/server.cpp index c45b2dd4..59e03d06 100644 --- a/src/engine/server/server.cpp +++ b/src/engine/server/server.cpp @@ -1393,7 +1393,7 @@ int main(int argc, const char **argv) // ignore_convention IGameServer *pGameServer = CreateGameServer(); IConsole *pConsole = CreateConsole(CFGFLAG_SERVER); IEngineMasterServer *pEngineMasterServer = CreateEngineMasterServer(); - IStorage *pStorage = CreateStorage("Teeworlds", argv[0]); // ignore_convention + IStorage *pStorage = CreateStorage("Teeworlds", argc, argv); // ignore_convention IConfig *pConfig = CreateConfig(); pServer->InitRegister(&pServer->m_NetServer, pEngineMasterServer); diff --git a/src/engine/shared/storage.cpp b/src/engine/shared/storage.cpp index 1d0e2f78..6f2399d7 100644 --- a/src/engine/shared/storage.cpp +++ b/src/engine/shared/storage.cpp @@ -18,7 +18,7 @@ public: m_aDatadir[0] = 0; } - int Init(const char *pApplicationName, const char *pArgv0) + int Init(const char *pApplicationName, int NumArgs, const char **ppArguments) { char aPath[1024] = {0}; fs_storage_path(pApplicationName, m_aApplicationSavePath, sizeof(m_aApplicationSavePath)); @@ -39,8 +39,18 @@ public: str_format(aPath, sizeof(aPath), "%s/demos", m_aApplicationSavePath); fs_makedir(aPath); } + + // check for datadir override + for(int i = 1; i < NumArgs; i++) + { + if(ppArguments[i][0] == '-' && ppArguments[i][1] == 'd' && ppArguments[i][2] == 0 && NumArgs - i > 1) + { + str_copy(m_aDatadir, ppArguments[i+1], sizeof(m_aDatadir)); + break; + } + } - return FindDatadir(pArgv0); + return FindDatadir(ppArguments[0]); } int FindDatadir(const char *pArgv0) @@ -184,10 +194,10 @@ public: return 0; } - static IStorage *Create(const char *pApplicationName, const char *pArgv0) + static IStorage *Create(const char *pApplicationName, int NumArgs, const char **ppArguments) { CStorage *p = new CStorage(); - if(p->Init(pApplicationName, pArgv0)) + if(p->Init(pApplicationName, NumArgs, ppArguments)) { delete p; p = 0; @@ -196,4 +206,4 @@ public: } }; -IStorage *CreateStorage(const char *pApplicationName, const char *pArgv0) { return CStorage::Create(pApplicationName, pArgv0); } +IStorage *CreateStorage(const char *pApplicationName, int NumArgs, const char **ppArguments) { return CStorage::Create(pApplicationName, NumArgs, ppArguments); } diff --git a/src/engine/storage.h b/src/engine/storage.h index 4f875d40..4c80446e 100644 --- a/src/engine/storage.h +++ b/src/engine/storage.h @@ -19,7 +19,7 @@ public: virtual IOHANDLE OpenFile(const char *pFilename, int Flags, char *pBuffer = 0, int BufferSize = 0) = 0; }; -extern IStorage *CreateStorage(const char *pApplicationName, const char *pArgv0); +extern IStorage *CreateStorage(const char *pApplicationName, int NumArgs, const char **ppArguments); #endif |