* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
- * $Id: chmode.c 3131 2007-01-21 15:36:31Z jilles $
+ * $Id: chmode.c 3580 2007-11-07 23:45:14Z jilles $
*/
#include "stdinc.h"
dlink_list * list, long mode_type)
{
struct Ban *actualBan;
- static char who[BANLEN];
+ static char who[USERHOST_REPLYLEN];
char *realban = LOCAL_COPY(banid);
dlink_node *ptr;
return 0;
}
- collapse(realban);
-
DLINK_FOREACH(ptr, list->head)
{
actualBan = ptr->data;
- if(match(actualBan->banstr, realban))
+ if(mask_match(actualBan->banstr, realban))
return 0;
}
}
*errors |= SM_ERR_NOPRIVS;
return;
}
+ if(MyClient(source_p) && !IsOperResv(source_p))
+ {
+ if(!(*errors & SM_ERR_NOPRIVS))
+ sendto_one(source_p, form_str(ERR_NOPRIVS), me.name,
+ source_p->name, "resv");
+ *errors |= SM_ERR_NOPRIVS;
+ return;
+ }
/* setting + */
if((dir == MODE_ADD) && !(chptr->mode.mode & mode_type))
me.name, source_p->name, chptr->chname,
banptr->banstr, banptr->who, banptr->when);
}
- sendto_one(source_p, form_str(rpl_endlist), me.name, source_p->name, chptr->chname);
+ if (mode_type == CHFL_QUIET)
+ sendto_one(source_p, ":%s %d %s %s :End of Channel Quiet List", me.name, rpl_endlist, source_p->name, chptr->chname);
+ else
+ sendto_one(source_p, form_str(rpl_endlist), me.name, source_p->name, chptr->chname);
return;
}
else
mask = pretty_mask(raw_mask);
- /* we'd have problems parsing this, hyb6 does it too */
- if(strlen(mask) > (MODEBUFLEN - 2))
+ /* we'd have problems parsing this, hyb6 does it too
+ * also make sure it will always fit on a line with channel
+ * name etc.
+ */
+ if(strlen(mask) > IRCD_MIN(BANLEN, MODEBUFLEN - 5))
return;
/* if we're adding a NEW id */
if (!(*errors & SM_ERR_RPL_F))
{
if (*chptr->mode.forward == '\0')
- sendto_one(source_p, ":%s NOTICE %s :%s has no forward channel", me.name, source_p->name, chptr->chname);
+ sendto_one_notice(source_p, ":%s has no forward channel", chptr->chname);
else
- sendto_one(source_p, ":%s NOTICE %s :%s forward channel is %s", me.name, source_p->name, chptr->chname, chptr->mode.forward);
+ sendto_one_notice(source_p, ":%s forward channel is %s", chptr->chname, chptr->mode.forward);
*errors |= SM_ERR_RPL_F;
}
return;