- case '-':
- *outl++ = '-';
- mdir = 0;
- break;
-
- case '+':
- *outl++ = '+';
- mdir = 1;
- break;
-
- case 'o':
- log(DEBUG,"Ops");
- if ((param >= pcnt)) break;
- log(DEBUG,"Enough parameters left");
- r = NULL;
- if (mdir == 1)
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'o', parameters[param], true, 1));
- if (!MOD_RESULT)
- {
- r = GiveOps(user,parameters[param++],chan,status);
- }
- else param++;
- }
- else
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'o', parameters[param], false, 1));
- if (!MOD_RESULT)
- {
- r = TakeOps(user,parameters[param++],chan,status);
- }
- else param++;
- }
- if (r)
- {
- *outl++ = 'o';
- outpars[pc++] = r;
- }
- break;
-
- case 'h':
- if (((param >= pcnt)) || (!Config->AllowHalfop)) break;
- r = NULL;
- if (mdir == 1)
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'h', parameters[param], true, 1));
- if (!MOD_RESULT)
- {
- r = GiveHops(user,parameters[param++],chan,status);
- }
- else param++;
- }
- else
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'h', parameters[param], false, 1));
- if (!MOD_RESULT)
- {
- r = TakeHops(user,parameters[param++],chan,status);
- }
- else param++;
- }
- if (r)
- {
- *outl++ = 'h';
- outpars[pc++] = r;
- }
- break;
-
-
- case 'v':
- if ((param >= pcnt)) break;
- r = NULL;
- if (mdir == 1)
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'v', parameters[param], true, 1));
- if (!MOD_RESULT)
- {
- r = GiveVoice(user,parameters[param++],chan,status);
- }
- else param++;
- }
- else
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'v', parameters[param], false, 1));
- if (!MOD_RESULT)
- {
- r = TakeVoice(user,parameters[param++],chan,status);
- }
- else param++;
- }
- if (r)
- {
- *outl++ = 'v';
- outpars[pc++] = r;
- }
- break;
-
- case 'b':
- if ((param >= pcnt)) break;
- r = NULL;
- if (mdir == 1)
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'b', parameters[param], true, 1));
- if (!MOD_RESULT)
- {
- r = AddBan(user,parameters[param++],chan,status);
- }
- else param++;
- }
- else
- {
- MOD_RESULT = 0;
- FOREACH_RESULT(I_OnRawMode,OnRawMode(user, chan, 'b', parameters[param], false, 1));
- if (!MOD_RESULT)
- {
- r = TakeBan(user,parameters[param++],chan,status);
- }
- else param++;
- }
- if (r)
- {
- *outl++ = 'b';
- outpars[pc++] = parameters[param-1];
- }
- break;