summaryrefslogtreecommitdiff
path: root/src/channels.c
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-02-10 23:40:54 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-02-10 23:40:54 +0000
commit2eb2cb7650e78612d8096b13f7cf075b1ec82a07 (patch)
tree0b0a7a3cfb5cd0fa429b95b61eab5c4259da0d00 /src/channels.c
parentfcc08f61bc50f1f73bc1e3fe7d8e7c5b9a608668 (diff)
Changed up a small part of the mode API for preparation for dynamic mode support at runtime
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2789 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/channels.c')
-rw-r--r--src/channels.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/channels.c b/src/channels.c
index 594388c2f..564989bd3 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -978,25 +978,25 @@ char *chan_get_modes(Channel * chan, int complete, int plus)
char params[BUFSIZE];
char *end = res, *value, *pend = params, *pend2 = params;
std::string param;
- ChannelMode *cm;
- ChannelModeParam *cmp;
- std::map<char, ChannelMode *>::iterator it;
if (chan->HasModes())
{
- for (it = ModeManager::ChannelModesByChar.begin(); it != ModeManager::ChannelModesByChar.end(); ++it)
+ for (std::list<Mode *>::iterator it = ModeManager::Modes.begin(); it != ModeManager::Modes.end(); ++it)
{
- cm = it->second;
+ if ((*it)->Class != MC_CHANNEL)
+ continue;
+
+ ChannelMode *cm = dynamic_cast<ChannelMode *>(*it);
if (chan->HasMode(cm->Name))
{
- *end++ = it->first;
+ *end++ = cm->ModeChar;
if (complete)
{
if (cm->Type == MODE_PARAM)
{
- cmp = dynamic_cast<ChannelModeParam *>(cm);
+ ChannelModeParam *cmp = dynamic_cast<ChannelModeParam *>(cm);
if (plus || !cmp->MinusNoArg)
{