ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/modules/m_svsmode.c
(Generate patch)

Comparing ircd-hybrid/trunk/modules/m_svsmode.c (file contents):
Revision 1809 by michael, Wed Apr 10 16:51:34 2013 UTC vs.
Revision 2022 by michael, Sun May 12 18:07:07 2013 UTC

# Line 54 | Line 54
54   *      - parv[1] = nickname
55   *      - parv[2] = TS
56   *      - parv[3] = mode
57 < *      - parv[4] = optional argument (services id)
57 > *      - parv[4] = optional argument (services id, hostname)
58   */
59   static void
60   ms_svsmode(struct Client *client_p, struct Client *source_p,
# Line 63 | Line 63 | ms_svsmode(struct Client *client_p, stru
63    struct Client *target_p = NULL;
64    const char *m = NULL, *extarg = NULL;
65    int what = MODE_ADD;
66 <  unsigned int flag = 0, setmodes = 0;
66 >  unsigned int flag = 0, setflags = 0;
67    time_t ts = 0;
68  
69    if (!HasFlag(source_p, FLAGS_SERVICE))
# Line 78 | Line 78 | ms_svsmode(struct Client *client_p, stru
78    if (parc > 4 && !EmptyString(parv[4]))
79      extarg = parv[4];
80  
81 <  setmodes = target_p->umodes;
81 >  setflags = target_p->umodes;
82  
83    for (m = parv[3]; *m; ++m)
84    {
# Line 96 | Line 96 | ms_svsmode(struct Client *client_p, stru
96            strlcpy(target_p->svid, extarg, sizeof(target_p->svid));
97          break;
98  
99 +      case 'x':
100 +        if (what == MODE_ADD && extarg)
101 +          user_set_hostmask(target_p, extarg);
102 +        break;
103 +
104        case 'o':
105          if (what == MODE_DEL && HasUMode(target_p, UMODE_OPER))
106          {
# Line 139 | Line 144 | ms_svsmode(struct Client *client_p, stru
144          break;
145        default:
146          if ((flag = user_modes[(unsigned char)*m]))
147 <          execute_callback(umode_cb, client_p, target_p, what, flag);
147 >        {
148 >          if (what == MODE_ADD)
149 >            AddUMode(target_p, flag);
150 >          else
151 >            DelUMode(target_p, flag);
152 >        }
153 >
154          break;
155      }
156    }
# Line 163 | Line 174 | ms_svsmode(struct Client *client_p, stru
174                    target_p->name, (unsigned long)target_p->tsinfo, parv[3]);
175    }
176  
177 <  if (MyConnect(target_p) && (setmodes != target_p->umodes))
177 >  if (MyConnect(target_p) && (setflags != target_p->umodes))
178    {
179      char modebuf[IRCD_BUFSIZE];
180  
181 <    send_umode(target_p, target_p, setmodes, 0xffffffff, modebuf);
181 >    send_umode(target_p, target_p, setflags, 0xffffffff, modebuf);
182    }
183   }
184  

Diff Legend

– Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)