Port CConsole::Init() from the upstream code

Partial port of upstream commit c0bf37fb48
This commit is contained in:
Alexander Akulich 2021-01-10 16:02:54 +03:00
parent 77b2b22dd2
commit 09c05ab99f
6 changed files with 29 additions and 21 deletions

View file

@ -4317,6 +4317,7 @@ int main(int argc, const char **argv) // ignore_convention
pEngine->Init();
pConfig->Init();
pConsole->Init();
pEngineMasterServer->Init();
pEngineMasterServer->Load();

View file

@ -81,6 +81,7 @@ public:
typedef void (*FCommandCallback)(IResult *pResult, void *pUserData);
typedef void (*FChainCommandCallback)(IResult *pResult, void *pUserData, FCommandCallback pfnCallback, void *pCallbackUserData);
virtual void Init() = 0;
virtual const CCommandInfo *FirstCommandInfo(int AccessLevel, int Flagmask) const = 0;
virtual const CCommandInfo *GetCommandInfo(const char *pName, int FlagMask, bool Temp) = 0;
virtual void PossibleCommands(const char *pStr, int FlagMask, bool Temp, FPossibleCallback pfnCallback, void *pUser) = 0;

View file

@ -3525,6 +3525,7 @@ int main(int argc, const char **argv) // ignore_convention
pEngine->Init();
pConfig->Init();
pConsole->Init();
pEngineMasterServer->Init();
pEngineMasterServer->Load();

View file

@ -571,8 +571,6 @@ void CConsole::ExecuteFile(const char *pFilename, int ClientID, bool LogFailure,
if(str_comp(pFilename, pCur->m_pFilename) == 0)
return;
if(!m_pStorage)
m_pStorage = Kernel()->RequestInterface<IStorage>();
if(!m_pStorage)
return;
@ -951,6 +949,30 @@ CConsole::CConsole(int FlagMask)
Register("access_status", "i[accesslevel]", CFGFLAG_SERVER, ConCommandStatus, this, "List all commands which are accessible for admin = 0, moderator = 1, helper = 2, all = 3");
Register("cmdlist", "", CFGFLAG_SERVER | CFGFLAG_CHAT, ConUserCommandStatus, this, "List all commands which are accessible for users");
// DDRace
m_Cheated = false;
}
CConsole::~CConsole()
{
CCommand *pCommand = m_pFirstCommand;
while(pCommand)
{
CCommand *pNext = pCommand->m_pNext;
if(pCommand->m_pfnCallback == Con_Chain)
delete static_cast<CChain *>(pCommand->m_pUserData);
// Temp commands are on m_TempCommands heap, so don't delete them
if(!pCommand->m_Temp)
delete pCommand;
pCommand = pNext;
}
}
void CConsole::Init()
{
m_pStorage = Kernel()->RequestInterface<IStorage>();
// TODO: this should disappear
#define MACRO_CONFIG_INT(Name, ScriptName, Def, Min, Max, Flags, Desc) \
{ \
@ -977,25 +999,6 @@ CConsole::CConsole(int FlagMask)
#undef MACRO_CONFIG_INT
#undef MACRO_CONFIG_COL
#undef MACRO_CONFIG_STR
// DDRace
m_Cheated = false;
}
CConsole::~CConsole()
{
CCommand *pCommand = m_pFirstCommand;
while(pCommand)
{
CCommand *pNext = pCommand->m_pNext;
if(pCommand->m_pfnCallback == Con_Chain)
delete static_cast<CChain *>(pCommand->m_pUserData);
// Temp commands are on m_TempCommands heap, so don't delete them
if(!pCommand->m_Temp)
delete pCommand;
pCommand = pNext;
}
}
void CConsole::ParseArguments(int NumArgs, const char **ppArguments)

View file

@ -196,6 +196,7 @@ public:
CConsole(int FlagMask);
~CConsole();
virtual void Init();
virtual const CCommandInfo *FirstCommandInfo(int AccessLevel, int FlagMask) const;
virtual const CCommandInfo *GetCommandInfo(const char *pName, int FlagMask, bool Temp);
virtual void PossibleCommands(const char *pStr, int FlagMask, bool Temp, FPossibleCallback pfnCallback, void *pUser);

View file

@ -343,6 +343,7 @@ int main(int argc, const char **argv) // ignore_convention
return -1;
pConfig->Init();
m_pConsole->Init();
m_NetBan.Init(m_pConsole, pStorage);
if(argc > 1) // ignore_convention
m_pConsole->ParseArguments(argc - 1, &argv[1]); // ignore_convention