diff options
| author | oy <Tom_Adams@web.de> | 2011-06-09 22:44:22 +0200 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-06-09 22:44:22 +0200 |
| commit | 9845d757ef2a11f4fc37f0f438bca9adb47cacaf (patch) | |
| tree | 906c87e8e812d495f34d4b5743530da20804c7b6 /src/engine | |
| parent | 348806d993598a26025fc90dbfa022f495232420 (diff) | |
| download | zcatch-9845d757ef2a11f4fc37f0f438bca9adb47cacaf.tar.gz zcatch-9845d757ef2a11f4fc37f0f438bca9adb47cacaf.zip | |
removed file extension from the demo name in the demo player
Diffstat (limited to 'src/engine')
| -rw-r--r-- | src/engine/demo.h | 2 | ||||
| -rw-r--r-- | src/engine/shared/demo.cpp | 26 | ||||
| -rw-r--r-- | src/engine/shared/demo.h | 2 |
3 files changed, 19 insertions, 11 deletions
diff --git a/src/engine/demo.h b/src/engine/demo.h index 891c78d6..a9e4f700 100644 --- a/src/engine/demo.h +++ b/src/engine/demo.h @@ -46,7 +46,7 @@ public: virtual void Pause() = 0; virtual void Unpause() = 0; virtual const CInfo *BaseInfo() const = 0; - virtual char *GetDemoName() = 0; + virtual void GetDemoName(char *pBuffer, int BufferSize) const = 0; virtual bool GetDemoInfo(class IStorage *pStorage, const char *pFilename, int StorageType, CDemoHeader *pDemoHeader) const = 0; virtual int GetDemoType() const = 0; }; diff --git a/src/engine/shared/demo.cpp b/src/engine/shared/demo.cpp index e48c2f1e..51dd51d9 100644 --- a/src/engine/shared/demo.cpp +++ b/src/engine/shared/demo.cpp @@ -1,13 +1,16 @@ /* (c) Magnus Auvinen. See licence.txt in the root of the distribution for more information. */ /* If you are missing that file, acquire a complete release at teeworlds.com. */ +#include <base/math.h> #include <base/system.h> + #include <engine/console.h> #include <engine/storage.h> + +#include "compression.h" #include "demo.h" #include "memheap.h" -#include "snapshot.h" -#include "compression.h" #include "network.h" +#include "snapshot.h" static const unsigned char gs_aHeaderMarker[7] = {'T', 'W', 'D', 'E', 'M', 'O', 0}; static const unsigned char gs_ActVersion = 3; @@ -760,16 +763,21 @@ int CDemoPlayer::Stop() return 0; } -char *CDemoPlayer::GetDemoName() +void CDemoPlayer::GetDemoName(char *pBuffer, int BufferSize) const { - // get the name of the demo without its path - char *pDemoShortName = &m_aFilename[0]; - for(int i = 0; i < str_length(m_aFilename)-1; i++) + const char *pFileName = m_aFilename; + const char *pExtractedName = pFileName; + const char *pEnd = 0; + for(; *pFileName; ++pFileName) { - if(m_aFilename[i] == '/' || m_aFilename[i] == '\\') - pDemoShortName = &m_aFilename[i+1]; + if(*pFileName == '/' || *pFileName == '\\') + pExtractedName = pFileName+1; + else if(*pFileName == '.') + pEnd = pFileName; } - return pDemoShortName; + + int Length = pEnd > pExtractedName ? min(BufferSize, (int)(pEnd-pExtractedName+1)) : BufferSize; + str_copy(pBuffer, pExtractedName, Length); } bool CDemoPlayer::GetDemoInfo(class IStorage *pStorage, const char *pFilename, int StorageType, CDemoHeader *pDemoHeader) const diff --git a/src/engine/shared/demo.h b/src/engine/shared/demo.h index f1897f21..f4ac5685 100644 --- a/src/engine/shared/demo.h +++ b/src/engine/shared/demo.h @@ -110,7 +110,7 @@ public: void SetSpeed(float Speed); int SetPos(float Precent); const CInfo *BaseInfo() const { return &m_Info.m_Info; } - char *GetDemoName(); + void GetDemoName(char *pBuffer, int BufferSize) const; bool GetDemoInfo(class IStorage *pStorage, const char *pFilename, int StorageType, CDemoHeader *pDemoHeader) const; int GetDemoType() const; |