mirror of
https://github.com/znc/znc.git
synced 2026-03-28 17:42:41 +01:00
Some more fun with tabs
git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@1966 726aef4b-f618-498e-8847-2d620e286838
This commit is contained in:
106
Modules.cpp
106
Modules.cpp
@@ -18,62 +18,62 @@
|
||||
# warning "your crap box doesnt define RTLD_LOCAL !?"
|
||||
#endif
|
||||
|
||||
#define _MODUNLOADCHK(func, type) \
|
||||
for (unsigned int a = 0; a < size(); a++) { \
|
||||
try { \
|
||||
type* pMod = (type *) (*this)[a]; \
|
||||
CClient* pOldClient = pMod->GetClient(); \
|
||||
pMod->SetClient(m_pClient); \
|
||||
if (m_pUser) { \
|
||||
CUser* pOldUser = pMod->GetUser(); \
|
||||
pMod->SetUser(m_pUser); \
|
||||
pMod->func; \
|
||||
pMod->SetUser(pOldUser); \
|
||||
} else { \
|
||||
pMod->func; \
|
||||
} \
|
||||
pMod->SetClient(pOldClient); \
|
||||
} catch (CModule::EModException e) { \
|
||||
if (e == CModule::UNLOAD) { \
|
||||
UnloadModule((*this)[a]->GetModName()); \
|
||||
} \
|
||||
} \
|
||||
#define _MODUNLOADCHK(func, type) \
|
||||
for (unsigned int a = 0; a < size(); a++) { \
|
||||
try { \
|
||||
type* pMod = (type *) (*this)[a]; \
|
||||
CClient* pOldClient = pMod->GetClient(); \
|
||||
pMod->SetClient(m_pClient); \
|
||||
if (m_pUser) { \
|
||||
CUser* pOldUser = pMod->GetUser(); \
|
||||
pMod->SetUser(m_pUser); \
|
||||
pMod->func; \
|
||||
pMod->SetUser(pOldUser); \
|
||||
} else { \
|
||||
pMod->func; \
|
||||
} \
|
||||
pMod->SetClient(pOldClient); \
|
||||
} catch (CModule::EModException e) { \
|
||||
if (e == CModule::UNLOAD) { \
|
||||
UnloadModule((*this)[a]->GetModName()); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#define MODUNLOADCHK(func) _MODUNLOADCHK(func, CModule)
|
||||
#define GLOBALMODCALL(func) _MODUNLOADCHK(func, CGlobalModule)
|
||||
|
||||
#define _MODHALTCHK(func, type) \
|
||||
bool bHaltCore = false; \
|
||||
for (unsigned int a = 0; a < size(); a++) { \
|
||||
try { \
|
||||
type* pMod = (type*) (*this)[a]; \
|
||||
CModule::EModRet e = CModule::CONTINUE; \
|
||||
CClient* pOldClient = pMod->GetClient(); \
|
||||
pMod->SetClient(m_pClient); \
|
||||
if (m_pUser) { \
|
||||
CUser* pOldUser = pMod->GetUser(); \
|
||||
pMod->SetUser(m_pUser); \
|
||||
e = pMod->func; \
|
||||
pMod->SetUser(pOldUser); \
|
||||
} else { \
|
||||
e = pMod->func; \
|
||||
} \
|
||||
pMod->SetClient(pOldClient); \
|
||||
if (e == CModule::HALTMODS) { \
|
||||
break; \
|
||||
} else if (e == CModule::HALTCORE) { \
|
||||
bHaltCore = true; \
|
||||
} else if (e == CModule::HALT) { \
|
||||
bHaltCore = true; \
|
||||
break; \
|
||||
} \
|
||||
} catch (CModule::EModException e) { \
|
||||
if (e == CModule::UNLOAD) { \
|
||||
UnloadModule((*this)[a]->GetModName()); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
#define _MODHALTCHK(func, type) \
|
||||
bool bHaltCore = false; \
|
||||
for (unsigned int a = 0; a < size(); a++) { \
|
||||
try { \
|
||||
type* pMod = (type*) (*this)[a]; \
|
||||
CModule::EModRet e = CModule::CONTINUE; \
|
||||
CClient* pOldClient = pMod->GetClient(); \
|
||||
pMod->SetClient(m_pClient); \
|
||||
if (m_pUser) { \
|
||||
CUser* pOldUser = pMod->GetUser(); \
|
||||
pMod->SetUser(m_pUser); \
|
||||
e = pMod->func; \
|
||||
pMod->SetUser(pOldUser); \
|
||||
} else { \
|
||||
e = pMod->func; \
|
||||
} \
|
||||
pMod->SetClient(pOldClient); \
|
||||
if (e == CModule::HALTMODS) { \
|
||||
break; \
|
||||
} else if (e == CModule::HALTCORE) { \
|
||||
bHaltCore = true; \
|
||||
} else if (e == CModule::HALT) { \
|
||||
bHaltCore = true; \
|
||||
break; \
|
||||
} \
|
||||
} catch (CModule::EModException e) { \
|
||||
if (e == CModule::UNLOAD) { \
|
||||
UnloadModule((*this)[a]->GetModName()); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
return bHaltCore;
|
||||
|
||||
#define MODHALTCHK(func) _MODHALTCHK(func, CModule)
|
||||
@@ -751,7 +751,7 @@ bool CModules::UnloadModule(const CString& sModule) {
|
||||
}
|
||||
|
||||
bool CModules::UnloadModule(const CString& sModule, CString& sRetMsg) {
|
||||
CString sMod = sModule; // Make a copy incase the reference passed in is from CModule::GetModName()
|
||||
CString sMod = sModule; // Make a copy incase the reference passed in is from CModule::GetModName()
|
||||
CModule* pModule = FindModule(sMod);
|
||||
sRetMsg = "";
|
||||
|
||||
@@ -804,7 +804,7 @@ bool CModules::UnloadModule(const CString& sModule, CString& sRetMsg) {
|
||||
}
|
||||
|
||||
bool CModules::ReloadModule(const CString& sModule, const CString& sArgs, CUser* pUser, CString& sRetMsg) {
|
||||
CString sMod = sModule; // Make a copy incase the reference passed in is from CModule::GetModName()
|
||||
CString sMod = sModule; // Make a copy incase the reference passed in is from CModule::GetModName()
|
||||
sRetMsg = "";
|
||||
if (!UnloadModule(sMod, sRetMsg)) {
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user