summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrob 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
committerrob 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
commitcc4984f262ddd0e8f366c76cc0bf5945004a8d85 (patch)
tree99ab238576ffe695858e47acc1d1af2acb020dc7 /src
parent3e27318fcf810733dd46cb878aff7e9596055295 (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.c25
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> */