mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 10:37:02 +00:00
[10082] Drop now unused dotconfpp lib code.
This commit is contained in:
parent
41d178ca7b
commit
1eed65d5ac
29 changed files with 30 additions and 1237 deletions
1
NEWS
1
NEWS
|
|
@ -17,6 +17,7 @@ Version 0.16
|
||||||
* Under discussion.
|
* Under discussion.
|
||||||
* OpenSSL lib upgrade to OpenSSL 1.0.0.
|
* OpenSSL lib upgrade to OpenSSL 1.0.0.
|
||||||
* Sockets lib use dropped.
|
* Sockets lib use dropped.
|
||||||
|
* dotconfpp lib use dropped.
|
||||||
* Upgrade to client version 3.3.3a (build 11723).
|
* Upgrade to client version 3.3.3a (build 11723).
|
||||||
|
|
||||||
Version 0.15
|
Version 0.15
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@
|
||||||
#include "GridStates.h"
|
#include "GridStates.h"
|
||||||
#include "CellImpl.h"
|
#include "CellImpl.h"
|
||||||
#include "Map.h"
|
#include "Map.h"
|
||||||
#include "Config/ConfigEnv.h"
|
|
||||||
#include "DBCEnums.h"
|
#include "DBCEnums.h"
|
||||||
#include "DBCStores.h"
|
#include "DBCStores.h"
|
||||||
#include "GridMap.h"
|
#include "GridMap.h"
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@
|
||||||
#include "InstanceSaveMgr.h"
|
#include "InstanceSaveMgr.h"
|
||||||
#include "Timer.h"
|
#include "Timer.h"
|
||||||
#include "GridNotifiersImpl.h"
|
#include "GridNotifiersImpl.h"
|
||||||
#include "Config/ConfigEnv.h"
|
|
||||||
#include "Transports.h"
|
#include "Transports.h"
|
||||||
#include "ObjectMgr.h"
|
#include "ObjectMgr.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@
|
||||||
#include "SkillDiscovery.h"
|
#include "SkillDiscovery.h"
|
||||||
#include "SkillExtraItems.h"
|
#include "SkillExtraItems.h"
|
||||||
#include "SystemConfig.h"
|
#include "SystemConfig.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Mail.h"
|
#include "Mail.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "ItemEnchantmentMgr.h"
|
#include "ItemEnchantmentMgr.h"
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,6 @@
|
||||||
#include "InstanceData.h"
|
#include "InstanceData.h"
|
||||||
#include "Map.h"
|
#include "Map.h"
|
||||||
#include "GridNotifiersImpl.h"
|
#include "GridNotifiersImpl.h"
|
||||||
#include "Config/ConfigEnv.h"
|
|
||||||
#include "Transports.h"
|
#include "Transports.h"
|
||||||
#include "ObjectAccessor.h"
|
#include "ObjectAccessor.h"
|
||||||
#include "ObjectMgr.h"
|
#include "ObjectMgr.h"
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "SystemConfig.h"
|
#include "SystemConfig.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "Opcodes.h"
|
#include "Opcodes.h"
|
||||||
|
|
@ -402,9 +402,9 @@ Weather* World::AddWeather(uint32 zone_id)
|
||||||
/// Initialize config values
|
/// Initialize config values
|
||||||
void World::LoadConfigSettings(bool reload)
|
void World::LoadConfigSettings(bool reload)
|
||||||
{
|
{
|
||||||
if(reload)
|
if (reload)
|
||||||
{
|
{
|
||||||
if(!sConfig.Reload())
|
if (!sConfig.Reload())
|
||||||
{
|
{
|
||||||
sLog.outError("World settings reload fail: can't read settings from %s.",sConfig.GetFilename().c_str());
|
sLog.outError("World settings reload fail: can't read settings from %s.",sConfig.GetFilename().c_str());
|
||||||
return;
|
return;
|
||||||
|
|
@ -413,7 +413,7 @@ void World::LoadConfigSettings(bool reload)
|
||||||
|
|
||||||
///- Read the version of the configuration file and warn the user in case of emptiness or mismatch
|
///- Read the version of the configuration file and warn the user in case of emptiness or mismatch
|
||||||
uint32 confVersion = sConfig.GetIntDefault("ConfVersion", 0);
|
uint32 confVersion = sConfig.GetIntDefault("ConfVersion", 0);
|
||||||
if(!confVersion)
|
if (!confVersion)
|
||||||
{
|
{
|
||||||
sLog.outError("*****************************************************************************");
|
sLog.outError("*****************************************************************************");
|
||||||
sLog.outError(" WARNING: mangosd.conf does not include a ConfVersion variable.");
|
sLog.outError(" WARNING: mangosd.conf does not include a ConfVersion variable.");
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
|
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
#include "WorldSocket.h"
|
#include "WorldSocket.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
#include "ScriptCalls.h"
|
#include "ScriptCalls.h"
|
||||||
#include "ObjectMgr.h"
|
#include "ObjectMgr.h"
|
||||||
#include "WorldSession.h"
|
#include "WorldSession.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "AccountMgr.h"
|
#include "AccountMgr.h"
|
||||||
#include "CliRunnable.h"
|
#include "CliRunnable.h"
|
||||||
|
|
@ -629,7 +629,7 @@ void CliRunnable::run()
|
||||||
///- Display the list of available CLI functions then beep
|
///- Display the list of available CLI functions then beep
|
||||||
sLog.outString();
|
sLog.outString();
|
||||||
|
|
||||||
if(sConfig.GetBoolDefault("BeepAtStart", true))
|
if (sConfig.GetBoolDefault("BeepAtStart", true))
|
||||||
printf("\a"); // \a = Alert
|
printf("\a"); // \a = Alert
|
||||||
|
|
||||||
// print this here the first time
|
// print this here the first time
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "Master.h"
|
#include "Master.h"
|
||||||
#include "SystemConfig.h"
|
#include "SystemConfig.h"
|
||||||
|
|
@ -78,11 +78,11 @@ extern int main(int argc, char **argv)
|
||||||
///- Command line parsing to get the configuration file name
|
///- Command line parsing to get the configuration file name
|
||||||
char const* cfg_file = _MANGOSD_CONFIG;
|
char const* cfg_file = _MANGOSD_CONFIG;
|
||||||
int c=1;
|
int c=1;
|
||||||
while( c < argc )
|
while(c < argc)
|
||||||
{
|
{
|
||||||
if( strcmp(argv[c],"-c") == 0)
|
if (strcmp(argv[c],"-c") == 0)
|
||||||
{
|
{
|
||||||
if( ++c >= argc )
|
if (++c >= argc)
|
||||||
{
|
{
|
||||||
sLog.outError("Runtime-Error: -c option requires an input argument");
|
sLog.outError("Runtime-Error: -c option requires an input argument");
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
|
|
@ -92,7 +92,7 @@ extern int main(int argc, char **argv)
|
||||||
cfg_file = argv[c];
|
cfg_file = argv[c];
|
||||||
}
|
}
|
||||||
|
|
||||||
if( strcmp(argv[c],"--version") == 0)
|
if (strcmp(argv[c],"--version") == 0)
|
||||||
{
|
{
|
||||||
printf("%s\n", _FULLVERSION(REVISION_DATE,REVISION_TIME,REVISION_NR,REVISION_ID));
|
printf("%s\n", _FULLVERSION(REVISION_DATE,REVISION_TIME,REVISION_NR,REVISION_ID));
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -102,22 +102,22 @@ extern int main(int argc, char **argv)
|
||||||
////////////
|
////////////
|
||||||
//Services//
|
//Services//
|
||||||
////////////
|
////////////
|
||||||
if( strcmp(argv[c],"-s") == 0)
|
if (strcmp(argv[c],"-s") == 0)
|
||||||
{
|
{
|
||||||
if( ++c >= argc )
|
if (++c >= argc)
|
||||||
{
|
{
|
||||||
sLog.outError("Runtime-Error: -s option requires an input argument");
|
sLog.outError("Runtime-Error: -s option requires an input argument");
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
Log::WaitBeforeContinueIfNeed();
|
Log::WaitBeforeContinueIfNeed();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if( strcmp(argv[c],"install") == 0)
|
else if (strcmp(argv[c],"install") == 0)
|
||||||
{
|
{
|
||||||
if (WinServiceInstall())
|
if (WinServiceInstall())
|
||||||
sLog.outString("Installing service");
|
sLog.outString("Installing service");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if( strcmp(argv[c],"uninstall") == 0)
|
else if ( strcmp(argv[c],"uninstall") == 0)
|
||||||
{
|
{
|
||||||
if(WinServiceUninstall())
|
if(WinServiceUninstall())
|
||||||
sLog.outString("Uninstalling service");
|
sLog.outString("Uninstalling service");
|
||||||
|
|
@ -131,7 +131,7 @@ extern int main(int argc, char **argv)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( strcmp(argv[c],"--service") == 0)
|
if (strcmp(argv[c],"--service") == 0)
|
||||||
{
|
{
|
||||||
WinServiceRun();
|
WinServiceRun();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@
|
||||||
#include "Timer.h"
|
#include "Timer.h"
|
||||||
#include "Policies/SingletonImp.h"
|
#include "Policies/SingletonImp.h"
|
||||||
#include "SystemConfig.h"
|
#include "SystemConfig.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
#include "CliRunnable.h"
|
#include "CliRunnable.h"
|
||||||
#include "RASocket.h"
|
#include "RASocket.h"
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "RASocket.h"
|
#include "RASocket.h"
|
||||||
#include "World.h"
|
#include "World.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "AccountMgr.h"
|
#include "AccountMgr.h"
|
||||||
#include "Language.h"
|
#include "Language.h"
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "RealmList.h"
|
#include "RealmList.h"
|
||||||
#include "AuthSocket.h"
|
#include "AuthSocket.h"
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
#include "RealmList.h"
|
#include "RealmList.h"
|
||||||
|
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "AuthSocket.h"
|
#include "AuthSocket.h"
|
||||||
#include "SystemConfig.h"
|
#include "SystemConfig.h"
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ConfigEnv.h"
|
#include "Config.h"
|
||||||
#include "ace/Configuration_Import_Export.h"
|
#include "ace/Configuration_Import_Export.h"
|
||||||
|
|
||||||
#include "Policies/SingletonImp.h"
|
#include "Policies/SingletonImp.h"
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
#ifndef CONFIG_H
|
#ifndef CONFIG_H
|
||||||
#define CONFIG_H
|
#define CONFIG_H
|
||||||
|
|
||||||
|
#include "Common.h"
|
||||||
#include <Policies/Singleton.h>
|
#include <Policies/Singleton.h>
|
||||||
#include "Platform/Define.h"
|
#include "Platform/Define.h"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2005-2010 MaNGOS <http://getmangos.com/>
|
|
||||||
*
|
|
||||||
* 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 2 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, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if !defined(CONFIGENVIRONMENT_H)
|
|
||||||
|
|
||||||
#define CONFIGENVIRONMENT_H
|
|
||||||
|
|
||||||
#include "Common.h"
|
|
||||||
#include "Config.h"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,137 +0,0 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="7.10"
|
|
||||||
Name="ConfigLibrary"
|
|
||||||
ProjectGUID="{C849D54F-32A6-4025-95BE-E64D1CF0686E}"
|
|
||||||
Keyword="Win32Proj">
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"/>
|
|
||||||
</Platforms>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory="Debug"
|
|
||||||
IntermediateDirectory="Debug"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="2">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories=""
|
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
|
||||||
MinimalRebuild="TRUE"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="1"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="TRUE"
|
|
||||||
DebugInformationFormat="4"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
OutputFile="$(OutDir)/ConfigLibrary.lib"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedWrapperGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="Release"
|
|
||||||
IntermediateDirectory="Release"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="2">
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalIncludeDirectories=""
|
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
|
||||||
RuntimeLibrary="0"
|
|
||||||
UsePrecompiledHeader="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="TRUE"
|
|
||||||
DebugInformationFormat="3"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
OutputFile="$(OutDir)/ConfigLibrary.lib"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedWrapperGeneratorTool"/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
|
||||||
<File
|
|
||||||
RelativePath=".\Config.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\dotconfpp\dotconfpp.cpp">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\dotconfpp\mempool.cpp">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
|
||||||
<File
|
|
||||||
RelativePath=".\Config.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\ConfigEnv.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\dotconfpp\dotconfpp.h">
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath=".\dotconfpp\mempool.h">
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
## Sub-directories to parse
|
## Sub-directories to parse
|
||||||
|
|
||||||
## CPP flags for includes, defines, etc.
|
## CPP flags for includes, defines, etc.
|
||||||
AM_CPPFLAGS = $(MANGOS_INCLUDES) -I$(top_builddir)/src/shared -I$(srcdir) -I$(srcdir)/../../../dep/include -I$(srcdir)/../../framework -I$(srcdir)/../../shared -I$(srcdir)/../../../dep/include/g3dlite
|
AM_CPPFLAGS = $(MANGOS_INCLUDES) -I$(top_builddir)/src/shared -I$(srcdir) -I$(srcdir)/../../../dep/include -I$(srcdir)/../../framework -I$(srcdir)/../../shared
|
||||||
|
|
||||||
## Build MaNGOS shared library and its parts as convenience library.
|
## Build MaNGOS shared library and its parts as convenience library.
|
||||||
# All libraries will be convenience libraries. Might be changed to shared
|
# All libraries will be convenience libraries. Might be changed to shared
|
||||||
|
|
@ -27,14 +27,5 @@ AM_CPPFLAGS = $(MANGOS_INCLUDES) -I$(top_builddir)/src/shared -I$(srcdir) -I$(sr
|
||||||
noinst_LIBRARIES = libmangosconfig.a
|
noinst_LIBRARIES = libmangosconfig.a
|
||||||
|
|
||||||
libmangosconfig_a_SOURCES = \
|
libmangosconfig_a_SOURCES = \
|
||||||
dotconfpp/dotconfpp.cpp \
|
|
||||||
dotconfpp/dotconfpp.h \
|
|
||||||
dotconfpp/mempool.cpp \
|
|
||||||
dotconfpp/mempool.h \
|
|
||||||
Config.cpp \
|
Config.cpp \
|
||||||
Config.h \
|
Config.h
|
||||||
ConfigEnv.h
|
|
||||||
|
|
||||||
# VC++ project workspace for dotconfpp
|
|
||||||
EXTRA_DIST = \
|
|
||||||
ConfigLibrary.vcproj
|
|
||||||
|
|
|
||||||
|
|
@ -1,703 +0,0 @@
|
||||||
#include "Common.h"
|
|
||||||
#include "dotconfpp.h"
|
|
||||||
#include <ace/OS_NS_stdlib.h>
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
# define strcasecmp stricmp
|
|
||||||
# include <io.h>
|
|
||||||
#else
|
|
||||||
# include <unistd.h>
|
|
||||||
# include <limits.h>
|
|
||||||
# include <stdint.h>
|
|
||||||
# include <strings.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(R_OK)
|
|
||||||
# define R_OK 04
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DOTCONFDocumentNode::DOTCONFDocumentNode()
|
|
||||||
: previousNode(NULL), nextNode(NULL), parentNode(NULL), childNode(NULL),
|
|
||||||
values(NULL), valuesCount(0), name(NULL), lineNum(0),
|
|
||||||
fileName(NULL), closed(true)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
DOTCONFDocumentNode::~DOTCONFDocumentNode()
|
|
||||||
{
|
|
||||||
free(name);
|
|
||||||
|
|
||||||
if (values != NULL)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < valuesCount; ++i)
|
|
||||||
free(values[i]);
|
|
||||||
|
|
||||||
free(values);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DOTCONFDocumentNode::pushValue(char* _value)
|
|
||||||
{
|
|
||||||
++valuesCount;
|
|
||||||
values = (char**)realloc(values, valuesCount * sizeof(char*));
|
|
||||||
values[valuesCount - 1] = strdup(_value);
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* DOTCONFDocumentNode::getValue(int index) const
|
|
||||||
{
|
|
||||||
if (index >= valuesCount)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
return values[index];
|
|
||||||
}
|
|
||||||
|
|
||||||
DOTCONFDocument::DOTCONFDocument(DOTCONFDocument::CaseSensitive caseSensitivity)
|
|
||||||
: mempool(NULL), curParent(NULL), curPrev(NULL), curLine(0), file(NULL), fileName(NULL)
|
|
||||||
{
|
|
||||||
switch (caseSensitivity)
|
|
||||||
{
|
|
||||||
case CASESENSITIVE:
|
|
||||||
cmp_func = strcmp;
|
|
||||||
break;
|
|
||||||
case CASEINSENSETIVE:
|
|
||||||
cmp_func = strcasecmp;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
mempool = new AsyncDNSMemPool(1024);
|
|
||||||
mempool->initialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
DOTCONFDocument::~DOTCONFDocument()
|
|
||||||
{
|
|
||||||
for (NodeList::iterator i = nodeTree.begin(); i != nodeTree.end(); ++i)
|
|
||||||
delete(*i);
|
|
||||||
|
|
||||||
for (CharList::iterator i = requiredOptions.begin(); i != requiredOptions.end(); ++i)
|
|
||||||
free(*i);
|
|
||||||
|
|
||||||
for (CharList::iterator i = processedFiles.begin(); i != processedFiles.end(); ++i)
|
|
||||||
free(*i);
|
|
||||||
|
|
||||||
free(fileName);
|
|
||||||
delete mempool;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DOTCONFDocument::cleanupLine(char* line)
|
|
||||||
{
|
|
||||||
char* start = line;
|
|
||||||
char* bg = line;
|
|
||||||
bool multiline = false;
|
|
||||||
bool concat = false;
|
|
||||||
char* word = NULL;
|
|
||||||
|
|
||||||
if (!words.empty() && quoted)
|
|
||||||
concat = true;
|
|
||||||
|
|
||||||
while (*line)
|
|
||||||
{
|
|
||||||
if ((*line == '#' || *line == ';') && !quoted)
|
|
||||||
{
|
|
||||||
*bg = 0;
|
|
||||||
if (strlen(start))
|
|
||||||
{
|
|
||||||
if (concat)
|
|
||||||
{
|
|
||||||
word = (char*)mempool->Alloc(strlen(words.back()) + strlen(start) + 1);
|
|
||||||
strcpy(word, words.back());
|
|
||||||
strcat(word, start);
|
|
||||||
words.pop_back();
|
|
||||||
concat = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
word = mempool->Strdup(start);
|
|
||||||
|
|
||||||
words.push_back(word);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*line == '=' && !quoted)
|
|
||||||
{
|
|
||||||
*line = ' ';
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Allowing \" in there causes problems with directory paths
|
|
||||||
// like "C:\MaNGOS\"
|
|
||||||
//if(*line == '\\' && (*(line+1) == '"' || *(line+1) == '\'')){
|
|
||||||
if (*line == '\\' && (*(line + 1) == '\''))
|
|
||||||
{
|
|
||||||
*bg++ = *(line + 1);
|
|
||||||
line += 2;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*line == '\\' && *(line + 1) == 'n')
|
|
||||||
{
|
|
||||||
*bg++ = '\n';
|
|
||||||
line += 2;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*line == '\\' && *(line + 1) == 'r')
|
|
||||||
{
|
|
||||||
*bg++ = '\r';
|
|
||||||
line += 2;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*line == '\\' && (*(line + 1) == '\n' || *(line + 1) == '\r'))
|
|
||||||
{
|
|
||||||
*bg = 0;
|
|
||||||
if (strlen(start))
|
|
||||||
{
|
|
||||||
if (concat)
|
|
||||||
{
|
|
||||||
word = (char*)mempool->Alloc(strlen(words.back()) + strlen(start) + 1);
|
|
||||||
strcpy(word, words.back());
|
|
||||||
strcat(word, start);
|
|
||||||
words.pop_back();
|
|
||||||
concat = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
word = mempool->Strdup(start);
|
|
||||||
|
|
||||||
words.push_back(word);
|
|
||||||
}
|
|
||||||
|
|
||||||
multiline = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*line == '"' || *line == '\'')
|
|
||||||
{
|
|
||||||
quoted = !quoted;
|
|
||||||
++line;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isspace((unsigned char)*line) && !quoted)
|
|
||||||
{
|
|
||||||
*bg++ = 0;
|
|
||||||
if (strlen(start))
|
|
||||||
{
|
|
||||||
if (concat)
|
|
||||||
{
|
|
||||||
word = (char*)mempool->Alloc(strlen(words.back()) + strlen(start) + 1);
|
|
||||||
strcpy(word, words.back());
|
|
||||||
strcat(word, start);
|
|
||||||
words.pop_back();
|
|
||||||
concat = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
word = mempool->Strdup(start);
|
|
||||||
|
|
||||||
words.push_back(word);
|
|
||||||
}
|
|
||||||
|
|
||||||
start = bg;
|
|
||||||
while (isspace((unsigned char)*++line))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
*bg++ = *line++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (quoted && !multiline)
|
|
||||||
{
|
|
||||||
error(curLine, fileName, "unterminated quote");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return multiline ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DOTCONFDocument::parseLine()
|
|
||||||
{
|
|
||||||
char* word = NULL;
|
|
||||||
char* nodeName = NULL;
|
|
||||||
char* nodeValue = NULL;
|
|
||||||
DOTCONFDocumentNode* tagNode = NULL;
|
|
||||||
bool newNode = false;
|
|
||||||
|
|
||||||
for (CharList::iterator i = words.begin(); i != words.end(); ++i)
|
|
||||||
{
|
|
||||||
word = *i;
|
|
||||||
|
|
||||||
if (*word == '<')
|
|
||||||
newNode = true;
|
|
||||||
|
|
||||||
if (newNode)
|
|
||||||
{
|
|
||||||
nodeValue = NULL;
|
|
||||||
nodeName = NULL;
|
|
||||||
newNode = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t wordLen = strlen(word);
|
|
||||||
if (word[wordLen - 1] == '>')
|
|
||||||
{
|
|
||||||
word[wordLen - 1] = 0;
|
|
||||||
newNode = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nodeName == NULL)
|
|
||||||
{
|
|
||||||
nodeName = word;
|
|
||||||
bool closed = true;
|
|
||||||
if (*nodeName == '<')
|
|
||||||
{
|
|
||||||
if (*(nodeName + 1) != '/')
|
|
||||||
{
|
|
||||||
++nodeName;
|
|
||||||
closed = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
NodeList::reverse_iterator itr = nodeTree.rbegin();
|
|
||||||
nodeName += 2;
|
|
||||||
for (; itr != nodeTree.rend(); ++itr)
|
|
||||||
{
|
|
||||||
if (!cmp_func(nodeName, (*itr)->name) && !(*itr)->closed)
|
|
||||||
{
|
|
||||||
(*itr)->closed = true;
|
|
||||||
curParent = (*itr)->parentNode;
|
|
||||||
curPrev = *itr;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(itr == nodeTree.rend())
|
|
||||||
{
|
|
||||||
error(curLine, fileName, "not matched closing tag </%s>", nodeName);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tagNode = new DOTCONFDocumentNode;
|
|
||||||
tagNode->name = strdup(nodeName);
|
|
||||||
tagNode->document = this;
|
|
||||||
tagNode->fileName = processedFiles.back();
|
|
||||||
tagNode->lineNum = curLine;
|
|
||||||
tagNode->closed = closed;
|
|
||||||
|
|
||||||
if(!nodeTree.empty())
|
|
||||||
{
|
|
||||||
DOTCONFDocumentNode* prev = nodeTree.back();
|
|
||||||
if (prev->closed)
|
|
||||||
{
|
|
||||||
curPrev->nextNode = tagNode;
|
|
||||||
tagNode->previousNode = curPrev;
|
|
||||||
tagNode->parentNode = curParent;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
prev->childNode = tagNode;
|
|
||||||
tagNode->parentNode = prev;
|
|
||||||
curParent = prev;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nodeTree.push_back(tagNode);
|
|
||||||
curPrev = tagNode;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nodeValue = word;
|
|
||||||
tagNode->pushValue(nodeValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DOTCONFDocument::parseFile(DOTCONFDocumentNode* _parent)
|
|
||||||
{
|
|
||||||
char str[512];
|
|
||||||
int ret = 0;
|
|
||||||
curLine = 0;
|
|
||||||
curParent = _parent;
|
|
||||||
|
|
||||||
quoted = false;
|
|
||||||
size_t slen = 0;
|
|
||||||
|
|
||||||
while (fgets(str, 511, file))
|
|
||||||
{
|
|
||||||
++curLine;
|
|
||||||
slen = strlen(str);
|
|
||||||
if (slen >= 510)
|
|
||||||
error(curLine, fileName, "warning: line too long");
|
|
||||||
|
|
||||||
if (str[slen - 1] != '\n')
|
|
||||||
{
|
|
||||||
str[slen] = '\n';
|
|
||||||
str[slen + 1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((ret = cleanupLine(str)) == -1)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (ret == 0)
|
|
||||||
{
|
|
||||||
if (!words.empty())
|
|
||||||
{
|
|
||||||
ret = parseLine();
|
|
||||||
mempool->Free();
|
|
||||||
words.clear();
|
|
||||||
|
|
||||||
if(ret == -1)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DOTCONFDocument::checkConfig(const NodeList::iterator& from)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
DOTCONFDocumentNode* tagNode = NULL;
|
|
||||||
int vi = 0;
|
|
||||||
for (NodeList::iterator i = from; i != nodeTree.end(); ++i)
|
|
||||||
{
|
|
||||||
tagNode = *i;
|
|
||||||
if (!tagNode->closed)
|
|
||||||
{
|
|
||||||
error(tagNode->lineNum, tagNode->fileName, "unclosed tag %s", tagNode->name);
|
|
||||||
ret = -1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
vi = 0;
|
|
||||||
while (vi < tagNode->valuesCount)
|
|
||||||
{
|
|
||||||
if (strstr(tagNode->values[vi], "${") && strchr(tagNode->values[vi], '}'))
|
|
||||||
{
|
|
||||||
ret = macroSubstitute(tagNode, vi);
|
|
||||||
mempool->Free();
|
|
||||||
if (ret == -1)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
++vi;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ret == -1)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DOTCONFDocument::setContent(const char* _fileName)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
char realpathBuf[MANGOS_PATH_MAX];
|
|
||||||
|
|
||||||
if (ACE_OS::realpath(_fileName, realpathBuf) == NULL)
|
|
||||||
{
|
|
||||||
error(0, NULL, "realpath (%s) failed: %s", _fileName, strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fileName = strdup(realpathBuf);
|
|
||||||
|
|
||||||
processedFiles.push_back(strdup(realpathBuf));
|
|
||||||
|
|
||||||
if ((file = fopen(fileName, "r")) == NULL)
|
|
||||||
{
|
|
||||||
error(0, NULL, "failed to open file '%s': %s", fileName, strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try read utf8 header and skip it if exist
|
|
||||||
unsigned int utf8header = 0;
|
|
||||||
fgets((char*)&utf8header, 4, file); // Try read header
|
|
||||||
if (utf8header != 0x00BFBBEF) // If not exist
|
|
||||||
fseek(file, 0, SEEK_SET); // Reset read position
|
|
||||||
|
|
||||||
ret = parseFile();
|
|
||||||
|
|
||||||
fclose(file);
|
|
||||||
|
|
||||||
if (!ret)
|
|
||||||
{
|
|
||||||
if ((ret = checkConfig(nodeTree.begin())) == -1)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
NodeList::iterator from;
|
|
||||||
DOTCONFDocumentNode* tagNode = NULL;
|
|
||||||
int vi = 0;
|
|
||||||
for (NodeList::iterator i = nodeTree.begin(); i != nodeTree.end(); ++i)
|
|
||||||
{
|
|
||||||
tagNode = *i;
|
|
||||||
if (!cmp_func("DOTCONFPPIncludeFile", tagNode->name))
|
|
||||||
{
|
|
||||||
vi = 0;
|
|
||||||
while (vi < tagNode->valuesCount)
|
|
||||||
{
|
|
||||||
if (access(tagNode->values[vi], R_OK) == -1)
|
|
||||||
{
|
|
||||||
error(tagNode->lineNum, tagNode->fileName, "%s: %s", tagNode->values[vi], strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ACE_OS::realpath(tagNode->values[vi], realpathBuf) == NULL)
|
|
||||||
{
|
|
||||||
error(tagNode->lineNum, tagNode->fileName, "realpath (%s) failed: %s", tagNode->values[vi], strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool processed = false;
|
|
||||||
for (CharList::const_iterator itInode = processedFiles.begin(); itInode != processedFiles.end(); ++itInode)
|
|
||||||
{
|
|
||||||
if (!strcmp(*itInode, realpathBuf))
|
|
||||||
{
|
|
||||||
processed = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(processed)
|
|
||||||
break;
|
|
||||||
|
|
||||||
processedFiles.push_back(strdup(realpathBuf));
|
|
||||||
|
|
||||||
file = fopen(tagNode->values[vi], "r");
|
|
||||||
if(file == NULL)
|
|
||||||
{
|
|
||||||
error(tagNode->lineNum, fileName, "failed to open file '%s': %s", tagNode->values[vi], strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
fileName = strdup(realpathBuf);
|
|
||||||
from = nodeTree.end();
|
|
||||||
--from;
|
|
||||||
|
|
||||||
ret = parseFile();
|
|
||||||
fclose(file);
|
|
||||||
|
|
||||||
if (ret == -1)
|
|
||||||
return -1;
|
|
||||||
if (checkConfig(++from) == -1)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
++vi;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!requiredOptions.empty())
|
|
||||||
ret = checkRequiredOptions();
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DOTCONFDocument::checkRequiredOptions()
|
|
||||||
{
|
|
||||||
for (CharList::const_iterator ci = requiredOptions.begin(); ci != requiredOptions.end(); ++ci)
|
|
||||||
{
|
|
||||||
bool matched = false;
|
|
||||||
for (NodeList::iterator i = nodeTree.begin(); i != nodeTree.end(); ++i)
|
|
||||||
{
|
|
||||||
if (!cmp_func((*i)->name, *ci))
|
|
||||||
{
|
|
||||||
matched = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!matched)
|
|
||||||
{
|
|
||||||
error(0, NULL, "required option '%s' not specified", *ci);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DOTCONFDocument::error(int lineNum, const char* fileName_, const char* fmt, ...)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
va_start(args, fmt);
|
|
||||||
|
|
||||||
size_t len = (lineNum != 0 ? strlen(fileName_) : 0) + strlen(fmt) + 50;
|
|
||||||
char* buf = (char*)mempool->Alloc(len);
|
|
||||||
|
|
||||||
if (lineNum)
|
|
||||||
snprintf(buf, len, "DOTCONF++: file '%s', line %d: %s\n", fileName_, lineNum, fmt);
|
|
||||||
else
|
|
||||||
snprintf(buf, len, "DOTCONF++: %s\n", fmt);
|
|
||||||
|
|
||||||
vfprintf(stderr, buf, args);
|
|
||||||
|
|
||||||
va_end(args);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* DOTCONFDocument::getSubstitution(char* macro, int lineNum)
|
|
||||||
{
|
|
||||||
char* buf = NULL;
|
|
||||||
char* variable = macro + 2;
|
|
||||||
|
|
||||||
char* endBr = strchr(macro, '}');
|
|
||||||
|
|
||||||
if (!endBr)
|
|
||||||
{
|
|
||||||
error(lineNum, fileName, "unterminated '{'");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
*endBr = 0;
|
|
||||||
|
|
||||||
char* defaultValue = strchr(variable, ':');
|
|
||||||
|
|
||||||
if (defaultValue)
|
|
||||||
{
|
|
||||||
*defaultValue++ = 0;
|
|
||||||
if (*defaultValue != '-')
|
|
||||||
{
|
|
||||||
error(lineNum, fileName, "incorrect macro substitution syntax");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
++defaultValue;
|
|
||||||
if (*defaultValue == '"' || *defaultValue == '\'')
|
|
||||||
{
|
|
||||||
++defaultValue;
|
|
||||||
defaultValue[strlen(defaultValue) - 1] = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
defaultValue = NULL;
|
|
||||||
|
|
||||||
char* subs = getenv(variable);
|
|
||||||
if (subs)
|
|
||||||
buf = mempool->Strdup(subs);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
NodeList::iterator i = nodeTree.begin();
|
|
||||||
DOTCONFDocumentNode* tagNode = NULL;
|
|
||||||
for (; i != nodeTree.end(); ++i)
|
|
||||||
{
|
|
||||||
tagNode = *i;
|
|
||||||
if (!cmp_func(tagNode->name, variable))
|
|
||||||
{
|
|
||||||
if (tagNode->valuesCount != 0)
|
|
||||||
{
|
|
||||||
buf = mempool->Strdup(tagNode->values[0]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (i == nodeTree.end())
|
|
||||||
{
|
|
||||||
if (defaultValue)
|
|
||||||
buf = mempool->Strdup(defaultValue);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
error(lineNum, fileName, "substitution not found and default value not given");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
int DOTCONFDocument::macroSubstitute(DOTCONFDocumentNode* tagNode, int valueIndex)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
char* macro = tagNode->values[valueIndex];
|
|
||||||
size_t valueLen = strlen(tagNode->values[valueIndex]) + 1;
|
|
||||||
char* value = (char*)mempool->Alloc(valueLen);
|
|
||||||
char* v = value;
|
|
||||||
char* subs = NULL;
|
|
||||||
|
|
||||||
while (*macro)
|
|
||||||
{
|
|
||||||
if (*macro == '$' && *(macro + 1) == '{')
|
|
||||||
{
|
|
||||||
char* m = strchr(macro, '}');
|
|
||||||
subs = getSubstitution(macro, tagNode->lineNum);
|
|
||||||
if(subs == NULL)
|
|
||||||
{
|
|
||||||
ret = -1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
macro = m + 1;
|
|
||||||
*v = 0;
|
|
||||||
v = (char*)mempool->Alloc(strlen(value) + strlen(subs) + valueLen);
|
|
||||||
strcpy(v, value);
|
|
||||||
value = strcat(v, subs);
|
|
||||||
v = value + strlen(value);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
*v++ = *macro++;
|
|
||||||
}
|
|
||||||
|
|
||||||
*v = 0;
|
|
||||||
|
|
||||||
free(tagNode->values[valueIndex]);
|
|
||||||
tagNode->values[valueIndex] = strdup(value);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
const DOTCONFDocumentNode* DOTCONFDocument::getFirstNode() const
|
|
||||||
{
|
|
||||||
if (!nodeTree.empty())
|
|
||||||
return *nodeTree.begin();
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
const DOTCONFDocumentNode* DOTCONFDocument::findNode(const char* nodeName, const DOTCONFDocumentNode* parentNode, const DOTCONFDocumentNode* startNode) const
|
|
||||||
{
|
|
||||||
NodeList::const_iterator i = nodeTree.begin();
|
|
||||||
|
|
||||||
if (startNode == NULL)
|
|
||||||
startNode = parentNode;
|
|
||||||
|
|
||||||
if (startNode != NULL)
|
|
||||||
{
|
|
||||||
while (i != nodeTree.end() && (*i) != startNode)
|
|
||||||
++i;
|
|
||||||
|
|
||||||
if (i != nodeTree.end())
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (; i != nodeTree.end(); ++i)
|
|
||||||
{
|
|
||||||
if ((*i)->parentNode != parentNode)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!cmp_func(nodeName, (*i)->name))
|
|
||||||
return *i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DOTCONFDocument::setRequiredOptionNames(const char** requiredOptionNames)
|
|
||||||
{
|
|
||||||
while (*requiredOptionNames)
|
|
||||||
{
|
|
||||||
requiredOptions.push_back(strdup(*requiredOptionNames));
|
|
||||||
++requiredOptionNames;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,111 +0,0 @@
|
||||||
#ifndef DOTCONFPP_H
|
|
||||||
#define DOTCONFPP_H
|
|
||||||
|
|
||||||
#include <list>
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include "mempool.h"
|
|
||||||
|
|
||||||
class DOTCONFDocument;
|
|
||||||
|
|
||||||
class DOTCONFDocumentNode
|
|
||||||
{
|
|
||||||
friend class DOTCONFDocument;
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
DOTCONFDocumentNode* previousNode;
|
|
||||||
DOTCONFDocumentNode* nextNode;
|
|
||||||
DOTCONFDocumentNode* parentNode;
|
|
||||||
DOTCONFDocumentNode* childNode;
|
|
||||||
char** values;
|
|
||||||
int valuesCount;
|
|
||||||
char* name;
|
|
||||||
const DOTCONFDocument* document;
|
|
||||||
int lineNum;
|
|
||||||
char* fileName;
|
|
||||||
bool closed;
|
|
||||||
|
|
||||||
void pushValue(char* _value);
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
DOTCONFDocumentNode();
|
|
||||||
~DOTCONFDocumentNode();
|
|
||||||
|
|
||||||
const char* getConfigurationFileName() const { return fileName; }
|
|
||||||
int getConfigurationLineNumber() const { return lineNum; }
|
|
||||||
|
|
||||||
const DOTCONFDocumentNode* getNextNode() const { return nextNode; }
|
|
||||||
const DOTCONFDocumentNode* getPreviuosNode() const { return previousNode; }
|
|
||||||
const DOTCONFDocumentNode* getParentNode() const { return parentNode; }
|
|
||||||
const DOTCONFDocumentNode* getChildNode() const { return childNode; }
|
|
||||||
const char* getValue(int index = 0) const;
|
|
||||||
const char* getName() const { return name; }
|
|
||||||
const DOTCONFDocument * getDocument() const { return document; }
|
|
||||||
};
|
|
||||||
|
|
||||||
class DOTCONFDocument
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
enum CaseSensitive
|
|
||||||
{
|
|
||||||
CASESENSITIVE,
|
|
||||||
CASEINSENSETIVE
|
|
||||||
};
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
AsyncDNSMemPool* mempool;
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
typedef std::list<char*> CharList;
|
|
||||||
typedef std::list<DOTCONFDocumentNode*> NodeList;
|
|
||||||
|
|
||||||
DOTCONFDocumentNode* curParent;
|
|
||||||
DOTCONFDocumentNode* curPrev;
|
|
||||||
int curLine;
|
|
||||||
bool quoted;
|
|
||||||
NodeList nodeTree;
|
|
||||||
CharList requiredOptions;
|
|
||||||
CharList processedFiles;
|
|
||||||
FILE* file;
|
|
||||||
char* fileName;
|
|
||||||
CharList words;
|
|
||||||
int (*cmp_func)(const char*, const char*);
|
|
||||||
|
|
||||||
int checkRequiredOptions();
|
|
||||||
int parseLine();
|
|
||||||
int parseFile(DOTCONFDocumentNode* _parent = NULL);
|
|
||||||
int checkConfig(const NodeList::iterator& from);
|
|
||||||
int cleanupLine(char* line);
|
|
||||||
char* getSubstitution(char* macro, int lineNum);
|
|
||||||
int macroSubstitute(DOTCONFDocumentNode* tagNode, int valueIndex);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
virtual void error(int lineNum, const char* fileName, const char* fmt, ...) ATTR_PRINTF(4,5);
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
DOTCONFDocument(CaseSensitive caseSensitivity = CASESENSITIVE);
|
|
||||||
virtual ~DOTCONFDocument();
|
|
||||||
|
|
||||||
int setContent(const char* _fileName);
|
|
||||||
|
|
||||||
void setRequiredOptionNames(const char** requiredOptionNames);
|
|
||||||
const DOTCONFDocumentNode * getFirstNode() const;
|
|
||||||
const DOTCONFDocumentNode * findNode(const char* nodeName, const DOTCONFDocumentNode* parentNode = NULL, const DOTCONFDocumentNode* startNode = NULL) const;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,106 +0,0 @@
|
||||||
#include "mempool.h"
|
|
||||||
|
|
||||||
AsyncDNSMemPool::PoolChunk::PoolChunk(size_t _size)
|
|
||||||
: pool(NULL), pos(0), size(_size)
|
|
||||||
{
|
|
||||||
pool = malloc(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
AsyncDNSMemPool::PoolChunk::~PoolChunk()
|
|
||||||
{
|
|
||||||
::free(pool);
|
|
||||||
}
|
|
||||||
|
|
||||||
AsyncDNSMemPool::AsyncDNSMemPool(size_t _defaultSize)
|
|
||||||
: chunks(NULL), chunksCount(0), defaultSize(_defaultSize),
|
|
||||||
poolUsage(0), poolUsageCounter(0)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
AsyncDNSMemPool::~AsyncDNSMemPool()
|
|
||||||
{
|
|
||||||
for (size_t i = 0; i < chunksCount; ++i)
|
|
||||||
delete chunks[i];
|
|
||||||
|
|
||||||
::free(chunks);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool AsyncDNSMemPool::initialize()
|
|
||||||
{
|
|
||||||
chunksCount = 1;
|
|
||||||
chunks = (PoolChunk**)malloc(sizeof(PoolChunk*));
|
|
||||||
if (chunks == NULL)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
chunks[chunksCount - 1] = new PoolChunk(defaultSize);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AsyncDNSMemPool::addNewChunk(size_t size)
|
|
||||||
{
|
|
||||||
++chunksCount;
|
|
||||||
|
|
||||||
chunks = (PoolChunk**)realloc(chunks, chunksCount * sizeof(PoolChunk*));
|
|
||||||
if (size <= defaultSize)
|
|
||||||
chunks[chunksCount - 1] = new PoolChunk(defaultSize);
|
|
||||||
else
|
|
||||||
chunks[chunksCount - 1] = new PoolChunk(size);
|
|
||||||
}
|
|
||||||
|
|
||||||
void* AsyncDNSMemPool::Alloc(size_t size)
|
|
||||||
{
|
|
||||||
PoolChunk* chunk = NULL;
|
|
||||||
for (size_t i = 0; i < chunksCount; ++i)
|
|
||||||
{
|
|
||||||
chunk = chunks[i];
|
|
||||||
if ((chunk->size - chunk->pos) >= size)
|
|
||||||
{
|
|
||||||
chunk->pos += size;
|
|
||||||
return ((char*)chunk->pool) + chunk->pos - size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
addNewChunk(size);
|
|
||||||
chunks[chunksCount - 1]->pos = size;
|
|
||||||
return chunks[chunksCount - 1]->pool;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AsyncDNSMemPool::Free()
|
|
||||||
{
|
|
||||||
size_t pu = 0;
|
|
||||||
size_t psz = 0;
|
|
||||||
++poolUsageCounter;
|
|
||||||
|
|
||||||
for (size_t i = 0; i < chunksCount; ++i)
|
|
||||||
{
|
|
||||||
pu += chunks[i]->pos;
|
|
||||||
psz += chunks[i]->size;
|
|
||||||
chunks[i]->pos = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
poolUsage = poolUsage > pu ? poolUsage : pu;
|
|
||||||
|
|
||||||
if (poolUsageCounter >= 10 && chunksCount > 1)
|
|
||||||
{
|
|
||||||
psz -= chunks[chunksCount - 1]->size;
|
|
||||||
if (poolUsage < psz)
|
|
||||||
{
|
|
||||||
--chunksCount;
|
|
||||||
delete chunks[chunksCount];
|
|
||||||
}
|
|
||||||
|
|
||||||
poolUsage = 0;
|
|
||||||
poolUsageCounter = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void* AsyncDNSMemPool::Calloc(size_t size)
|
|
||||||
{
|
|
||||||
return ::memset(Alloc(size), 0, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* AsyncDNSMemPool::Strdup(const char *str)
|
|
||||||
{
|
|
||||||
return ::strcpy((char*)Alloc(strlen(str) + 1), str);
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
#ifndef ASYNC_DNS_MEMPOOL_H
|
|
||||||
#define ASYNC_DNS_MEMPOOL_H
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
class AsyncDNSMemPool
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
|
|
||||||
struct PoolChunk
|
|
||||||
{
|
|
||||||
void* pool;
|
|
||||||
size_t pos;
|
|
||||||
size_t size;
|
|
||||||
|
|
||||||
PoolChunk(size_t _size);
|
|
||||||
~PoolChunk();
|
|
||||||
};
|
|
||||||
|
|
||||||
PoolChunk** chunks;
|
|
||||||
size_t chunksCount;
|
|
||||||
size_t defaultSize;
|
|
||||||
|
|
||||||
size_t poolUsage;
|
|
||||||
size_t poolUsageCounter;
|
|
||||||
|
|
||||||
void addNewChunk(size_t size);
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
AsyncDNSMemPool(size_t _defaultSize = 4096);
|
|
||||||
virtual ~AsyncDNSMemPool();
|
|
||||||
|
|
||||||
bool initialize();
|
|
||||||
void Free();
|
|
||||||
void* Alloc(size_t size);
|
|
||||||
void* Calloc(size_t size);
|
|
||||||
char* Strdup(const char *str);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "DatabaseEnv.h"
|
#include "DatabaseEnv.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
|
|
||||||
#include <ctime>
|
#include <ctime>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
#include "Policies/SingletonImp.h"
|
#include "Policies/SingletonImp.h"
|
||||||
#include "Config/ConfigEnv.h"
|
#include "Config/Config.h"
|
||||||
#include "Util.h"
|
#include "Util.h"
|
||||||
#include "ByteBuffer.h"
|
#include "ByteBuffer.h"
|
||||||
#include "ProgressBar.h"
|
#include "ProgressBar.h"
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "10081"
|
#define REVISION_NR "10082"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
|
|
@ -437,8 +437,6 @@
|
||||||
<ClCompile Include="..\..\src\shared\Auth\Sha1.cpp" />
|
<ClCompile Include="..\..\src\shared\Auth\Sha1.cpp" />
|
||||||
<ClCompile Include="..\..\src\shared\Common.cpp" />
|
<ClCompile Include="..\..\src\shared\Common.cpp" />
|
||||||
<ClCompile Include="..\..\src\shared\Config\Config.cpp" />
|
<ClCompile Include="..\..\src\shared\Config\Config.cpp" />
|
||||||
<ClCompile Include="..\..\src\shared\Config\dotconfpp\dotconfpp.cpp" />
|
|
||||||
<ClCompile Include="..\..\src\shared\Config\dotconfpp\mempool.cpp" />
|
|
||||||
<ClCompile Include="..\..\src\shared\Database\Database.cpp" />
|
<ClCompile Include="..\..\src\shared\Database\Database.cpp" />
|
||||||
<ClCompile Include="..\..\src\shared\Database\DatabaseMysql.cpp" />
|
<ClCompile Include="..\..\src\shared\Database\DatabaseMysql.cpp" />
|
||||||
<ClCompile Include="..\..\src\shared\Database\DBCFileLoader.cpp" />
|
<ClCompile Include="..\..\src\shared\Database\DBCFileLoader.cpp" />
|
||||||
|
|
@ -475,9 +473,6 @@
|
||||||
<ClInclude Include="..\..\src\shared\WorldPacket.h" />
|
<ClInclude Include="..\..\src\shared\WorldPacket.h" />
|
||||||
<ClInclude Include="..\..\src\shared\Common.h" />
|
<ClInclude Include="..\..\src\shared\Common.h" />
|
||||||
<ClInclude Include="..\..\src\shared\Config\Config.h" />
|
<ClInclude Include="..\..\src\shared\Config\Config.h" />
|
||||||
<ClInclude Include="..\..\src\shared\Config\ConfigEnv.h" />
|
|
||||||
<ClInclude Include="..\..\src\shared\Config\dotconfpp\dotconfpp.h" />
|
|
||||||
<ClInclude Include="..\..\src\shared\Config\dotconfpp\mempool.h" />
|
|
||||||
<ClInclude Include="..\..\src\shared\Database\Database.h" />
|
<ClInclude Include="..\..\src\shared\Database\Database.h" />
|
||||||
<ClInclude Include="..\..\src\shared\Database\DatabaseEnv.h" />
|
<ClInclude Include="..\..\src\shared\Database\DatabaseEnv.h" />
|
||||||
<ClInclude Include="..\..\src\shared\Database\DatabaseImpl.h" />
|
<ClInclude Include="..\..\src\shared\Database\DatabaseImpl.h" />
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,6 @@
|
||||||
<Filter Include="Config">
|
<Filter Include="Config">
|
||||||
<UniqueIdentifier>{adb98dec-d22a-40b3-84be-51eaf2974a15}</UniqueIdentifier>
|
<UniqueIdentifier>{adb98dec-d22a-40b3-84be-51eaf2974a15}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter Include="Config\dotconfpp">
|
|
||||||
<UniqueIdentifier>{dff0e90b-cab5-4d0b-bd5d-3cacbb638630}</UniqueIdentifier>
|
|
||||||
</Filter>
|
|
||||||
<Filter Include="Auth">
|
<Filter Include="Auth">
|
||||||
<UniqueIdentifier>{e35fd108-bd39-46ae-83f9-09cf1ebf4ea8}</UniqueIdentifier>
|
<UniqueIdentifier>{e35fd108-bd39-46ae-83f9-09cf1ebf4ea8}</UniqueIdentifier>
|
||||||
</Filter>
|
</Filter>
|
||||||
|
|
@ -66,12 +63,6 @@
|
||||||
<ClCompile Include="..\..\src\shared\Config\Config.cpp">
|
<ClCompile Include="..\..\src\shared\Config\Config.cpp">
|
||||||
<Filter>Config</Filter>
|
<Filter>Config</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="..\..\src\shared\Config\dotconfpp\dotconfpp.cpp">
|
|
||||||
<Filter>Config\dotconfpp</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\shared\Config\dotconfpp\mempool.cpp">
|
|
||||||
<Filter>Config\dotconfpp</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="..\..\src\shared\Auth\AuthCrypt.cpp">
|
<ClCompile Include="..\..\src\shared\Auth\AuthCrypt.cpp">
|
||||||
<Filter>Auth</Filter>
|
<Filter>Auth</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
|
@ -194,15 +185,6 @@
|
||||||
<ClInclude Include="..\..\src\shared\Config\Config.h">
|
<ClInclude Include="..\..\src\shared\Config\Config.h">
|
||||||
<Filter>Config</Filter>
|
<Filter>Config</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
<ClInclude Include="..\..\src\shared\Config\ConfigEnv.h">
|
|
||||||
<Filter>Config</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\shared\Config\dotconfpp\dotconfpp.h">
|
|
||||||
<Filter>Config\dotconfpp</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\shared\Config\dotconfpp\mempool.h">
|
|
||||||
<Filter>Config\dotconfpp</Filter>
|
|
||||||
</ClInclude>
|
|
||||||
<ClInclude Include="..\..\src\shared\Auth\AuthCrypt.h">
|
<ClInclude Include="..\..\src\shared\Auth\AuthCrypt.h">
|
||||||
<Filter>Auth</Filter>
|
<Filter>Auth</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
|
|
||||||
|
|
@ -672,30 +672,6 @@
|
||||||
RelativePath="..\..\src\shared\Config\Config.h"
|
RelativePath="..\..\src\shared\Config\Config.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\ConfigEnv.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<Filter
|
|
||||||
Name="dotconfpp"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\dotconfpp\dotconfpp.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\dotconfpp\dotconfpp.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\dotconfpp\mempool.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\dotconfpp\mempool.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Auth"
|
Name="Auth"
|
||||||
|
|
|
||||||
|
|
@ -678,30 +678,6 @@
|
||||||
RelativePath="..\..\src\shared\Config\Config.h"
|
RelativePath="..\..\src\shared\Config\Config.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\ConfigEnv.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<Filter
|
|
||||||
Name="dotconfpp"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\dotconfpp\dotconfpp.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\dotconfpp\dotconfpp.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\dotconfpp\mempool.cpp"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\src\shared\Config\dotconfpp\mempool.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Auth"
|
Name="Auth"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue