/*
* should have been handled upstream, ignore it.
*/
+ protocol_violation(sptr,"Too few arguments to invite");
return need_more_params(sptr,"INVITE");
}
if ('#' != *parv[2]) {
}
-#if 0
-/*
- * m_invite
- *
- * parv[0] - sender prefix
- * parv[1] - user to invite
- * parv[2] - channel name
- *
- * - INVITE now is accepted only if who does it is chanop (this of course
- * implies that channel must exist and he must be on it).
- *
- * - On the other side it IS processed even if channel is NOT invite only
- * leaving room for other enhancements like inviting banned ppl. -- Nemesi
- *
- * - Invite with no parameters now lists the channels you are invited to.
- * - Isomer 23 Oct 99
- */
-int m_invite(struct Client* cptr, struct Client *sptr, int parc, char *parv[])
-{
- struct Client *acptr;
- struct Channel *chptr;
-
- if (parc < 2 ) {
- /*
- * list the channels you have an invite to.
- */
- struct SLink *lp;
- for (lp = sptr->user->invited; lp; lp = lp->next)
- sendto_one(cptr, rpl_str(RPL_INVITELIST), me.name, cptr->name, /* XXX DEAD */
- lp->value.chptr->chname);
- sendto_one(cptr, rpl_str(RPL_ENDOFINVITELIST), me.name, cptr->name); /* XXX DEAD */
- return 0;
- }
-
- if (parc < 3 || *parv[2] == '\0')
- return need_more_params(sptr, "INVITE");
-
- if (!(acptr = FindUser(parv[1])))
- {
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], parv[1]); /* XXX DEAD */
- return 0;
- }
-
- if (is_silenced(sptr, acptr))
- return 0;
-
- if (MyUser(sptr))
- clean_channelname(parv[2]);
- else if (IsLocalChannel(parv[2]))
- return 0;
-
- if (*parv[2] == '0' || !IsChannelName(parv[2]))
- return 0;
-
- if (!(chptr = FindChannel(parv[2])))
- {
- if (IsModelessChannel(parv[2]) || IsLocalChannel(parv[2]))
- {
- sendto_one(sptr, err_str(ERR_NOTONCHANNEL), me.name, parv[0], parv[2]); /* XXX DEAD */
- return 0;
- }
-
- /* Do not disallow to invite to non-existant #channels, otherwise they
- would simply first be created, causing only MORE bandwidth usage. */
- if (MyConnect(sptr))
- {
- if (check_target_limit(sptr, acptr, acptr->name, 0))
- return 0;
-
- sendto_one(sptr, rpl_str(RPL_INVITING), me.name, parv[0], /* XXX DEAD */
- acptr->name, parv[2]);
-
- if (acptr->user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY), me.name, parv[0], /* XXX DEAD */
- acptr->name, acptr->user->away);
- }
-
- sendto_prefix_one(acptr, sptr, ":%s INVITE %s :%s", parv[0], /* XXX DEAD */
- acptr->name, parv[2]);
-
- return 0;
- }
-
- if (!find_channel_member(sptr, chptr))
- {
- sendto_one(sptr, err_str(ERR_NOTONCHANNEL), me.name, parv[0], /* XXX DEAD */
- chptr->chname);
- return 0;
- }
-
- if (find_channel_member(acptr, chptr))
- {
- sendto_one(sptr, err_str(ERR_USERONCHANNEL), /* XXX DEAD */
- me.name, parv[0], acptr->name, chptr->chname);
- return 0;
- }
-
- if (MyConnect(sptr))
- {
- if (!is_chan_op(sptr, chptr))
- {
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED), /* XXX DEAD */
- me.name, parv[0], chptr->chname);
- return 0;
- }
-
- /* If we get here, it was a VALID and meaningful INVITE */
-
- if (check_target_limit(sptr, acptr, acptr->name, 0))
- return 0;
-
- sendto_one(sptr, rpl_str(RPL_INVITING), me.name, parv[0], /* XXX DEAD */
- acptr->name, chptr->chname);
-
- if (acptr->user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY), me.name, parv[0], /* XXX DEAD */
- acptr->name, acptr->user->away);
- }
-
- if (MyConnect(acptr)) {
- add_invite(acptr, chptr);
- sendto_prefix_one(acptr, sptr, ":%s INVITE %s :%s", parv[0], /* XXX DEAD */
- acptr->name, chptr->chname);
- }
- else
- sendto_highprot_butone(acptr, 10, "%s%s " TOK_INVITE " %s :%s", /* XXX DEAD */
- NumNick(sptr), acptr->name, chptr->chname);
-
- return 0;
-}
-#endif /* 0 */
-