diff --git a/Sources/Plasma/NucleusLib/CMakeLists.txt b/Sources/Plasma/NucleusLib/CMakeLists.txt index 4c1b29b0..315f923f 100644 --- a/Sources/Plasma/NucleusLib/CMakeLists.txt +++ b/Sources/Plasma/NucleusLib/CMakeLists.txt @@ -10,7 +10,6 @@ add_subdirectory(pnDispatch) add_subdirectory(pnEncryption) add_subdirectory(pnFactory) add_subdirectory(pnGameMgr) -add_subdirectory(pnIni) add_subdirectory(pnInputCore) add_subdirectory(pnKeyedObject) add_subdirectory(pnMessage) diff --git a/Sources/Plasma/NucleusLib/pnIni/CMakeLists.txt b/Sources/Plasma/NucleusLib/pnIni/CMakeLists.txt deleted file mode 100644 index ce8c66b4..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -include_directories("../../CoreLib") -include_directories("../../NucleusLib") - -set(pnIni_HEADERS - Intern.h - Pch.h - pnIni.h -) - -set(pnIni_PRIVATE - Private/pnIniAllIncludes.h - Private/pnIniChange.h - Private/pnIniCore.h - Private/pnIniCore.cpp - Private/pnIniSrv.h -) - -add_library(pnIni STATIC ${pnIni_HEADERS} ${pnIni_PRIVATE}) - -source_group("Header Files" FILES ${pnIni_HEADERS}) -source_group("Private" FILES ${pnIni_PRIVATE}) diff --git a/Sources/Plasma/NucleusLib/pnIni/Intern.h b/Sources/Plasma/NucleusLib/pnIni/Intern.h deleted file mode 100644 index 53a319cc..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/Intern.h +++ /dev/null @@ -1,101 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Intern.h -* -***/ - -#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_INTERN_H -#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Intern.h included more than once" -#endif -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_INTERN_H - - -/***************************************************************************** -* -* Ini -* -***/ - -struct IniValue { - ARRAY(wchar_t *) fArgs; - IniKey * fKey; - unsigned fIndex; - unsigned fLineNum; - - IniValue (IniKey * key, unsigned lineNum); - ~IniValue (); -}; - -struct IniKey { - HASHLINK(IniKey) fLink; - ARRAY(IniValue *) fValues; - IniSection * fSection; - wchar_t fName[1]; // variable length - // no more fields - - IniKey (IniSection * section, const wchar_t name[]); - ~IniKey (); - - unsigned GetHash () const; - bool operator== (const CHashKeyStrPtrI & rhs) const; -}; - -struct IniSection { - HASHTABLEDECL(IniKey, CHashKeyStrPtrI, fLink) fKeys; - HASHLINK(IniSection) fLink; - wchar_t fName[1]; // variable length - // no more fields - - IniSection (const wchar_t name[]); - ~IniSection (); - - unsigned GetHash () const; - bool operator== (const CHashKeyStrPtrI & rhs) const; -}; - -struct Ini { - HASHTABLEDECL(IniSection, CHashKeyStrPtrI, fLink) fSections; - - ~Ini (); -}; diff --git a/Sources/Plasma/NucleusLib/pnIni/Pch.h b/Sources/Plasma/NucleusLib/pnIni/Pch.h deleted file mode 100644 index 63866068..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/Pch.h +++ /dev/null @@ -1,63 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Pch.h -* -***/ - -#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PCH_H -#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Pch.h included more than once" -#endif -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PCH_H - - -#include "pnUtils/pnUtils.h" -#include "pnProduct/pnProduct.h" -#include "pnNetBase/pnNetBase.h" -#include "pnAsyncCore/pnAsyncCore.h" - -#include "Private/pnIniAllIncludes.h" -#include "Intern.h" - - -#include diff --git a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniAllIncludes.h b/Sources/Plasma/NucleusLib/pnIni/Private/pnIniAllIncludes.h deleted file mode 100644 index 93e302aa..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniAllIncludes.h +++ /dev/null @@ -1,56 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniAllIncludes.h -* -***/ - -#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PRIVATE_PNINIALLINCLUDES_H -#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniAllIncludes.h included more than once" -#endif -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PRIVATE_PNINIALLINCLUDES_H - - -#include "pnIniCore.h" -#include "pnIniChange.h" -#include "pnIniSrv.h" diff --git a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniChange.h b/Sources/Plasma/NucleusLib/pnIni/Private/pnIniChange.h deleted file mode 100644 index 1b8c7028..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniChange.h +++ /dev/null @@ -1,81 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniChange.h -* -***/ - -#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PRIVATE_PNINICHANGE_H -#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniChange.h included more than once" -#endif -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PRIVATE_PNINICHANGE_H - - -/***************************************************************************** -* -* Change notifications for files in the "./Config" directory -* -***/ - -struct IniChangeReg; - -typedef void (* FIniFileChangeCallback)(const wchar_t fullPath[]); - -void IniChangeInitialize ( - const wchar_t dir[] = L"Config" -); -void IniChangeDestroy (); - -void IniChangeAdd ( - const wchar_t filename[], // just filename, no path or extension - FIniFileChangeCallback callback, - IniChangeReg ** reg -); -void IniChangeRemove ( - IniChangeReg * reg, - bool wait -); -void IniChangeSignal ( - IniChangeReg * reg, - bool wait -); diff --git a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.cpp b/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.cpp deleted file mode 100644 index b958cd2c..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.cpp +++ /dev/null @@ -1,785 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.cpp -* -***/ - -#include "../Pch.h" -#pragma hdrstop - - -/***************************************************************************** -* -* Internal functions -* -***/ - -//=========================================================================== -static wchar_t * TrimWhitespace (wchar_t * name) { - while (isspace((char) *name)) - ++name; - - for (wchar_t * term = name; *term; ++term) { - if (isspace((char) *term)) { - *term = 0; - break; - } - } - - return name; -} - - -/**************************************************************************** -* -* IniValue -* -***/ - -//=========================================================================== -IniValue::IniValue (IniKey * key, unsigned lineNum) -: fKey(key) -, fLineNum(lineNum) -{ - fIndex = key->fValues.Add(this); -} - -//=========================================================================== -IniValue::~IniValue () { - wchar_t ** cur = fArgs.Ptr(); - wchar_t ** end = fArgs.Term(); - for (; cur < end; ++cur) - free(*cur); -} - -//=========================================================================== -static void AddValueString ( - IniValue * value, - const wchar_t src[] -) { - unsigned chars = StrLen(src) + 1; - wchar_t * dst = (wchar_t*)malloc(sizeof(wchar_t) * chars); - StrTokenize(&src, dst, chars, L" \t\r\n\""); - value->fArgs.Add(StrDup(dst)); - - free(dst); -} - - -/**************************************************************************** -* -* IniKey -* -***/ - -//=========================================================================== -IniKey::IniKey (IniSection * section, const wchar_t name[]) -: fSection(section) -{ - StrCopy(fName, name, (unsigned) -1); - fSection->fKeys.Add(this); -} - -//=========================================================================== -IniKey::~IniKey () { - IniValue ** cur = fValues.Ptr(); - IniValue ** end = fValues.Term(); - for (; cur < end; ++cur) - delete *cur; -} - -//=========================================================================== -inline unsigned IniKey::GetHash () const { - return StrHashI(fName); -} - -//=========================================================================== -inline bool IniKey::operator== (const CHashKeyStrPtrI & rhs) const { - return !StrCmpI(fName, rhs.GetString()); -} - -//=========================================================================== -static IniValue * AddKeyValue ( - IniSection * section, - wchar_t * string, - unsigned lineNum -) { - string = TrimWhitespace(string); - - // Find or create the key - IniKey * key = section->fKeys.Find(string); - if (!key) { - key = new(malloc( - sizeof(*key) - sizeof(key->fName) + StrBytes(string) - )) IniKey(section, string); - } - - // Add a new value holder for the key - return new IniValue(key, lineNum); -} - - -/**************************************************************************** -* -* IniSection -* -***/ - -//=========================================================================== -IniSection::IniSection (const wchar_t name[]) { - StrCopy(fName, name, (unsigned) -1); -} - -//=========================================================================== -IniSection::~IniSection () { - fKeys.Clear(); -} - -//=========================================================================== -inline unsigned IniSection::GetHash () const { - return StrHashI(fName); -} - -//=========================================================================== -inline bool IniSection::operator== (const CHashKeyStrPtrI & rhs) const { - return !StrCmpI(fName, rhs.GetString()); -} - -//=========================================================================== -static IniSection * AddSection ( - Ini * ini, - wchar_t * string -) { - // Find or create the section - IniSection * section = ini->fSections.Find(string); - if (!section) { - section = new(malloc( - sizeof(*section) - sizeof(section->fName) + StrBytes(string) - )) IniSection(string); - ini->fSections.Add(section); - } - return section; -} - - -/**************************************************************************** -* -* Ini -* -***/ - -//=========================================================================== -Ini::~Ini () { - fSections.Clear(); -} - - -/**************************************************************************** -* -* ParseBuffer -* -***/ - -//=========================================================================== -static void ParseBuffer ( - Ini * ini, - const wchar_t buffer[] -) { - - const wchar_t SECTION_OPEN_CHAR = '['; - const wchar_t SECTION_CLOSE_CHAR = ']'; - const wchar_t EQUIVALENCE_CHAR = '='; - const wchar_t VALUE_SEPARATOR = ','; - const wchar_t COMMENT_CHAR = ';'; - const wchar_t QUOTE_CHAR = '\"'; - const wchar_t NEWLINE = '\n'; - - enum { - STATE_BEGIN, - STATE_NEWLINE, - STATE_SECTION, - STATE_STRIP_TRAILING, - STATE_KEY, - STATE_VALUE, - } state = STATE_BEGIN; - - IniSection * section = nil; - IniValue * value = nil; - const wchar_t * start = nil; - bool valInQuotes = false; - wchar_t dst[512]; - dst[0] = 0; - - for (unsigned lineNum = 1;; ++buffer) { - - // Get next character - unsigned chr = *buffer; - if (!chr) - break; - if (chr == '\r') - continue; - if (chr == '\n') - ++lineNum; - if (chr == '\t') - chr = ' '; - - switch (state) { - case STATE_BEGIN: - ASSERT(chr == UNICODE_BOM); - state = STATE_NEWLINE; - break; - - case STATE_NEWLINE: - if (chr == NEWLINE) - break; - if (chr == ' ') - break; - if (chr == SECTION_OPEN_CHAR) { - start = buffer + 1; - state = STATE_SECTION; - } - else if (chr == COMMENT_CHAR) { - state = STATE_STRIP_TRAILING; - } - else { - start = buffer; - state = STATE_KEY; - } - break; - - case STATE_SECTION: - if (chr == NEWLINE) { - state = STATE_NEWLINE; - break; - } - - if (chr == SECTION_CLOSE_CHAR) { - StrCopy(dst, start, min((unsigned long)(buffer - start + 1), arrsize(dst))); - section = AddSection(ini, dst); - state = STATE_STRIP_TRAILING; - } - break; - - case STATE_STRIP_TRAILING: - if (chr == NEWLINE) - state = STATE_NEWLINE; - break; - - case STATE_KEY: - if (chr == NEWLINE) { - state = STATE_NEWLINE; - break; - } - if (chr != EQUIVALENCE_CHAR) - break; - - if (!section) { - state = STATE_STRIP_TRAILING; - break; - } - - StrCopy(dst, start, min((unsigned long)(buffer - start + 1), arrsize(dst))); - value = AddKeyValue(section, dst, lineNum); - start = buffer + 1; - state = STATE_VALUE; - valInQuotes = false; - break; - - case STATE_VALUE: - if (chr == QUOTE_CHAR) - valInQuotes = !valInQuotes; - if ((valInQuotes || chr != VALUE_SEPARATOR) && (chr != NEWLINE)) - break; - if (!value) { - state = chr == NEWLINE ? STATE_NEWLINE : STATE_STRIP_TRAILING; - break; - } - if (valInQuotes) { - state = chr == NEWLINE ? STATE_NEWLINE : STATE_STRIP_TRAILING; - break; - } - - StrCopy(dst, start, min((unsigned long)(buffer - start + 1), arrsize(dst))); - AddValueString(value, dst); - if (chr == VALUE_SEPARATOR) - start = buffer + 1; - else - state = STATE_NEWLINE; - break; - } - } - - // cleanup current value - if (state == STATE_VALUE) { - StrCopy(dst, start, min((unsigned long)(buffer - start + 1), arrsize(dst))); - AddValueString(value, dst); - } -} - - -/**************************************************************************** -* -* ParseFile -* -***/ - -//=========================================================================== -static void IniFileNotifyProc ( - AsyncFile , - EAsyncNotifyFile , - AsyncNotifyFile * , - void ** -) { -} - -//=========================================================================== -static bool ParseFile ( - Ini * ini, - const wchar_t fileName[] -) { - // Open file - uint64_t fileSize; - uint64_t fileLastWriteTime; - EFileError error; - AsyncFile file = AsyncFileOpen( - fileName, - IniFileNotifyProc, - &error, - kAsyncFileReadAccess, - kAsyncFileModeOpenExisting, - kAsyncFileShareRead, - nil, - &fileSize, - &fileLastWriteTime - ); - if (!file) - return false; - - bool result; - if (fileSize > 256 * 1024) { - result = false; - } - else if (!fileSize) { - result = true; - } - else { - // Read entire file into memory and NULL terminate wchar_t - uint8_t * buffer = (uint8_t *) malloc((unsigned) fileSize + sizeof(wchar_t)); - AsyncFileRead(file, 0, buffer, (unsigned) fileSize, kAsyncFileRwSync, nil); - * (wchar_t *) &buffer[fileSize] = 0; - - // Convert to unicode if necessary - if (* (wchar_t *) buffer != UNICODE_BOM) { - uint8_t * src = buffer; - // Allocate two extra spaces for UNICODE_BOM and terminator - unsigned newBufferSize = ((unsigned) fileSize + 2) * sizeof(wchar_t); - - // Allocate new buffer - wchar_t * dst = (wchar_t *) malloc(newBufferSize); - - // If it's UTF-8 file,convert to Unicode - if (StrCmpI((char *)buffer, UTF8_BOM, StrLen(UTF8_BOM)) == 0) { - // StrUtf8ToUnicode will convert UTF8_BOM to UNICODE_BOM - StrUtf8ToUnicode(dst, (char *)src, newBufferSize); - } - else { - // do simple conversion to Unicode - dst[0] = UNICODE_BOM; - for (unsigned index = 0;; ++index) { - if (0 == (dst[index + 1] = src[index])) - break; - } - } - - free(src); - buffer = (uint8_t *) dst; - } - - ParseBuffer(ini, (const wchar_t *) buffer); - free(buffer); - result = true; - } - - AsyncFileClose(file, kAsyncFileDontTruncate); - return result; -} - - -/***************************************************************************** -* -* Exports -* -***/ - -//=========================================================================== -Ini * IniOpen ( - const wchar_t fileName[] -) { - Ini * ini = new Ini; - if (!ParseFile(ini, fileName)) { - IniClose(ini); - return nil; - } - return ini; -} - -//=========================================================================== -void IniClose (Ini * ini) { - delete ini; -} - -//=========================================================================== -const IniSection * IniGetFirstSection ( - const Ini * ini, - wchar_t * name, - unsigned chars -) { - if (chars) - *name = 0; - if (!ini) - return nil; - - const IniSection * section = ini->fSections.Head(); - if (section) - StrCopy(name, section->fName, chars); - return section; -} - -//=========================================================================== -const IniSection * IniGetNextSection ( - const IniSection * section, - wchar_t * name, - unsigned chars -) { - if (chars) - *name = 0; - if (!section) - return nil; - - section = section->fLink.Next(); - if (section) - StrCopy(name, section->fName, chars); - return section; -} - -//=========================================================================== -const IniSection * IniGetSection ( - const Ini * ini, - const wchar_t name[] -) { - if (!ini) - return nil; - - return ini->fSections.Find( - CHashKeyStrPtrI(name) - ); -} - -//=========================================================================== -const IniKey * IniGetFirstKey ( - const IniSection * section, - wchar_t * name, - unsigned chars -) { - if (chars) - *name = 0; - if (!section) - return nil; - - const IniKey * key = section->fKeys.Head(); - if (key) - StrCopy(name, key->fName, chars); - return key; -} - -//============================================================================ -const IniKey * IniGetFirstKey ( - const Ini * ini, - const wchar_t sectionName[], - wchar_t * name, - unsigned chars -) { - if (const IniSection * section = IniGetSection(ini, sectionName)) - return IniGetFirstKey(section, name, chars); - - return nil; -} - -//=========================================================================== -const IniKey * IniGetNextKey ( - const IniKey * key, - wchar_t * name, - unsigned chars -) { - if (chars) - *name = 0; - if (!key) - return nil; - - key = key->fLink.Next(); - if (key) - StrCopy(name, key->fName, chars); - return key; -} - -//=========================================================================== -const IniKey * IniGetKey ( - const IniSection * section, - const wchar_t name[] -) { - if (!section) - return nil; - - return section->fKeys.Find( - CHashKeyStrPtrI(name) - ); -} - -//=========================================================================== -const IniValue * IniGetFirstValue ( - const IniKey * key, - unsigned * lineNum -) { - if (lineNum) - *lineNum = 0; - - const IniValue * value = nil; - for (;;) { - if (!key) - break; - - value = key->fValues[0]; - if (lineNum) - *lineNum = value->fLineNum; - break; - } - - return value; -} - -//=========================================================================== -const IniValue * IniGetFirstValue ( - const IniSection * section, - const wchar_t keyName[], - unsigned * lineNum -) { - const IniValue * value = nil; - if (lineNum) - *lineNum = 0; - - for (;;) { - if (!section) - break; - - const IniKey * key = section->fKeys.Find( - CHashKeyStrPtrI(keyName) - ); - value = IniGetFirstValue(key, lineNum); - break; - } - - return value; -} - -//=========================================================================== -const IniValue * IniGetFirstValue ( - const Ini * ini, - const wchar_t sectionName[], - const wchar_t keyName[], - unsigned * lineNum -) { - const IniValue * value = nil; - if (lineNum) - *lineNum = 0; - - for (;;) { - if (!ini) - break; - - const IniSection * section = ini->fSections.Find( - CHashKeyStrPtrI(sectionName) - ); - - value = IniGetFirstValue(section, keyName, lineNum); - break; - } - - return value; -} - -//=========================================================================== -const IniValue * IniGetNextValue ( - const IniValue * value, - unsigned * lineNum -) { - if (lineNum) - *lineNum = 0; - - const IniKey * key = value->fKey; - if (value->fIndex + 1 < key->fValues.Count()) { - value = key->fValues[value->fIndex + 1]; - if (lineNum) - *lineNum = value->fLineNum; - } - else { - value = nil; - } - - return value; -} - -//=========================================================================== -bool IniGetUnsigned ( - const IniValue * value, - unsigned * result, - unsigned index, - unsigned defaultValue -) { - ASSERT(result); - - for (;;) { - if (!value) - break; - - wchar_t str[32]; - if (!IniGetString(value, str, arrsize(str), index, nil)) - break; - - if (!str[0]) - break; - - *result = StrToUnsigned(str, nil, 0); - return true; - } - - *result = defaultValue; - return false; -} - -//=========================================================================== -bool IniGetString ( - const IniValue * value, - wchar_t * result, - unsigned resultChars, - unsigned index, - const wchar_t defaultValue[] -) { - ASSERT(result); - - bool found = value && index < value->fArgs.Count(); - - if (found) - StrCopy(result, value->fArgs[index], resultChars); - else if (defaultValue) - StrCopy(result, defaultValue, resultChars); - - return found; -} - -//=========================================================================== -bool IniGetUuid ( - const IniValue * value, - Uuid * uuid, - unsigned index, - const Uuid & defaultValue -) { - wchar_t str[128]; - if (IniGetString(value, str, arrsize(str), index, nil)) - return GuidFromString(str, uuid); - else - *uuid = defaultValue; - - return false; -} - -//=========================================================================== -unsigned IniGetBoundedValue ( - const IniValue * value, - const wchar_t section[], - const wchar_t key[], - unsigned index, - unsigned minVal, - unsigned maxVal, - unsigned defVal -) { - if (!value) - return defVal; - - unsigned result; - IniGetUnsigned(value, &result, index, defVal); - if ((result < minVal) || (result > maxVal)) { - result = defVal; - } - - return result; -} - -//=========================================================================== -unsigned IniGetBoundedValue ( - const Ini * ini, - const wchar_t section[], - const wchar_t key[], - unsigned index, - unsigned minVal, - unsigned maxVal, - unsigned defVal -) { - unsigned lineNum; - const IniValue * value = IniGetFirstValue( - ini, - section, - key, - &lineNum - ); - - return IniGetBoundedValue( - value, - section, - key, - index, - minVal, - maxVal, - defVal - ); -} diff --git a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.h b/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.h deleted file mode 100644 index 10ff2963..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.h +++ /dev/null @@ -1,170 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.h -* -***/ - -#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PRIVATE_PNINICORE_H -#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniCore.h included more than once" -#endif -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PRIVATE_PNINICORE_H - - -/***************************************************************************** -* -* Ini file parsing functions -* -***/ - -struct Ini; -struct IniKey; -struct IniValue; -struct IniSection; - - -// File -Ini * IniOpen ( - const wchar_t filename[] -); -void IniClose ( - Ini * ini -); - -// Section -const IniSection * IniGetFirstSection ( - const Ini * ini, - wchar_t * name, - unsigned chars -); -const IniSection * IniGetNextSection ( - const IniSection * section, - wchar_t * name, - unsigned chars -); -const IniSection * IniGetSection ( - const Ini * ini, - const wchar_t name[] -); - -// Key -const IniKey * IniGetFirstKey ( - const IniSection * section, - wchar_t * name, - unsigned chars -); -const IniKey * IniGetFirstKey ( - const Ini * ini, - const wchar_t sectionName[], - wchar_t * name, - unsigned chars -); -const IniKey * IniGetNextKey ( - const IniKey * key, - wchar_t * name, - unsigned chars -); -const IniKey * IniGetKey ( - const IniSection * ini, - const wchar_t name[] -); - -// Value -const IniValue * IniGetFirstValue ( - const IniKey * key, - unsigned * iter -); -const IniValue * IniGetFirstValue ( - const IniSection * section, - const wchar_t keyName[], - unsigned * iter -); -const IniValue * IniGetFirstValue ( - const Ini * ini, - const wchar_t sectionName[], - const wchar_t keyName[], - unsigned * iter -); -const IniValue * IniGetNextValue ( - const IniValue * value, - unsigned * iter -); - -// Data -bool IniGetUnsigned ( - const IniValue * value, - unsigned * result, - unsigned index = 0, - unsigned defaultValue = 0 -); -bool IniGetString ( - const IniValue * value, - wchar_t * result, - unsigned resultChars, - unsigned index = 0, - const wchar_t defaultValue[] = nil -); -bool IniGetUuid ( - const IniValue * value, - Uuid * result, - unsigned index = 0, - const Uuid & defaultValue = kNilGuid -); - -// Bounded values -unsigned IniGetBoundedValue ( - const Ini * ini, - const wchar_t sectionName[], - const wchar_t keyName[], - unsigned index, - unsigned minVal, - unsigned maxVal, - unsigned defVal -); -unsigned IniGetBoundedValue ( - const IniValue * value, - unsigned index, - unsigned minVal, - unsigned maxVal, - unsigned defVal -); diff --git a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.cpp b/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.cpp deleted file mode 100644 index da8358c9..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.cpp +++ /dev/null @@ -1,56 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.cpp -* -***/ - -#include "../Pch.h" -#pragma hdrstop - - -#ifdef SERVER - - - -#endif diff --git a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.h b/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.h deleted file mode 100644 index cfed7b41..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.h +++ /dev/null @@ -1,77 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.h -* -***/ - -#ifdef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PRIVATE_PNINISRV_H -#error "Header $/Plasma20/Sources/Plasma/NucleusLib/pnIni/Private/pnIniSrv.h included more than once" -#endif -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PRIVATE_PNINISRV_H - - -#ifdef SERVER - - -/***************************************************************************** -* -* ServerRights API -* -***/ - -// These values may never change because server modules -// must use the same values as plServer.exe -enum EServerRights { - kSrvRightsNone = 0, - kSrvRightsBasic = 1, - kSrvRightsServer = 2, - kNumSrvRights -}; - -EServerRights SrvIniGetServerRightsByNode (NetAddressNode addrNode); -EServerRights SrvIniGetServerRights (const NetAddress & addr); -void SrvIniParseServerRights (Ini * ini); - - -#endif diff --git a/Sources/Plasma/NucleusLib/pnIni/pnIni.h b/Sources/Plasma/NucleusLib/pnIni/pnIni.h deleted file mode 100644 index fa10b7d4..00000000 --- a/Sources/Plasma/NucleusLib/pnIni/pnIni.h +++ /dev/null @@ -1,53 +0,0 @@ -/*==LICENSE==* - -CyanWorlds.com Engine - MMOG client, server and tools -Copyright (C) 2011 Cyan Worlds, Inc. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . - -Additional permissions under GNU GPL version 3 section 7 - -If you modify this Program, or any covered work, by linking or -combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, -NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent -JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK -(or a modified version of those libraries), -containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, -PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG -JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the -licensors of this Program grant you additional -permission to convey the resulting work. Corresponding Source for a -non-source form of such a combination shall include the source code for -the parts of OpenSSL and IJG JPEG Library used as well as that of the covered -work. - -You can contact Cyan Worlds, Inc. by email legal@cyan.com - or by snail mail at: - Cyan Worlds, Inc. - 14617 N Newport Hwy - Mead, WA 99021 - -*==LICENSE==*/ -/***************************************************************************** -* -* $/Plasma20/Sources/Plasma/NucleusLib/pnIni/pnIni.h -* -***/ - -#ifndef PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PNINI_H -#define PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PNINI_H - -#include "Private/pnIniAllIncludes.h" - -#endif // PLASMA20_SOURCES_PLASMA_NUCLEUSLIB_PNINI_PNINI_H