diff options
author | rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2006-06-22 19:37:46 +0000 |
---|---|---|
committer | rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b <rob rob@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2006-06-22 19:37:46 +0000 |
commit | cc4984f262ddd0e8f366c76cc0bf5945004a8d85 (patch) | |
tree | 99ab238576ffe695858e47acc1d1af2acb020dc7 /src | |
parent | 3e27318fcf810733dd46cb878aff7e9596055295 (diff) |
BUILD : 1.7.14 (1071) BUGS : N/A NOTES : plexus3 now uses the ircd struct when deciding which modes to send for svid_umode3 calls
git-svn-id: svn://svn.anope.org/anope/trunk@1071 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@795 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/protocol/plexus3.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/protocol/plexus3.c b/src/protocol/plexus3.c index d658cf400..3bcc04b8c 100644 --- a/src/protocol/plexus3.c +++ b/src/protocol/plexus3.c @@ -1558,14 +1558,23 @@ plexus_cmd_svid_umode2 (User * u, char *ts) void plexus_cmd_svid_umode3 (User * u, char *ts) { - if (u->svid != u->timestamp) - { - common_svsmode (u, is_services_root (u) ? "+Nrd" : "+rd", ts); - } - else - { - common_svsmode (u, is_services_root (u) ? "+Nr" : "+r", NULL); - } + char modes[512]; + int len; + strncpy(modes,ircd->modeonreg,512); + len = strlen(ircd->modeonreg); + if(ircd->rootmodeonid && is_services_root(u)) { + strncat(modes,ircd->rootmodeonid,512-len); + } else if(ircd->adminmodeonid && is_services_admin(u)) { + strncat(modes,ircd->adminmodeonid,512-len); + } else if(ircd->opermodeonid && is_services_oper(u)) { + strncat(modes,ircd->opermodeonid,512-len); + } + if (u->svid != u->timestamp) { + strncat(modes,"d",1); + common_svsmode (u, modes, ts); + } else { + common_svsmode (u, modes, NULL); + } } /* NICK <newnick> */ |