X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fm_notice.c;h=6f2d295f37ab1616f4053ee9a296d5f870ed9145;hb=refs%2Fheads%2Fupstream;hp=caff3d0757cce13532aedc8dedc8eefa57e8ad38;hpb=fda0e2796ececf42f7a36f8066cc63fa1ef736fc;p=ircu2.10.12-pk.git diff --git a/ircd/m_notice.c b/ircd/m_notice.c index caff3d0..6f2d295 100644 --- a/ircd/m_notice.c +++ b/ircd/m_notice.c @@ -79,16 +79,11 @@ * note: it is guaranteed that parv[0]..parv[parc-1] are all * non-NULL pointers. */ -#if 0 -/* - * No need to include handlers.h here the signatures must match - * and we don't need to force a rebuild of all the handlers everytime - * we add a new one to the list. --Bleep - */ -#include "handlers.h" -#endif /* 0 */ +#include "config.h" + #include "client.h" #include "ircd_chattr.h" +#include "ircd_log.h" #include "ircd_relay.h" #include "ircd_reply.h" #include "ircd_string.h" @@ -97,7 +92,7 @@ #include "numeric.h" #include "send.h" -#include +/* #include -- Now using assert in ircd_log.h */ #include #if !defined(XXX_BOGUS_TEMP_HACK) @@ -118,7 +113,7 @@ int m_notice(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) assert(0 != cptr); assert(cptr == sptr); - cli_flags(sptr) &= ~FLAGS_TS8; + ClrFlag(sptr, FLAG_TS8); if (parc < 2 || EmptyString(parv[1])) return send_reply(sptr, ERR_NORECIPIENT, MSG_NOTICE); @@ -154,14 +149,14 @@ int m_notice(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) } /* - * ms_notice - server message handler template + * ms_notice - server message handler */ int ms_notice(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) { char* name; char* server; - cli_flags(sptr) &= ~FLAGS_TS8; + ClrFlag(sptr, FLAG_TS8); if (parc < 3) { /* @@ -208,7 +203,7 @@ int mo_notice(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) assert(0 != cptr); assert(cptr == sptr); - cli_flags(sptr) &= ~FLAGS_TS8; + ClrFlag(sptr, FLAG_TS8); if (parc < 2 || EmptyString(parv[1])) return send_reply(sptr, ERR_NORECIPIENT, MSG_NOTICE); @@ -242,217 +237,3 @@ int mo_notice(struct Client* cptr, struct Client* sptr, int parc, char* parv[]) } return 0; } - - -#if 0 -/* - * m_message (used in m_private() and m_notice()) - * - * The general function to deliver MSG's between users/channels - * - * parv[0] = sender prefix - * parv[1] = receiver list - * parv[parc-1] = message text - * - * massive cleanup - * rev argv 6/91 - */ -static int m_message(struct Client *cptr, struct Client *sptr, - int parc, char *parv[], int notice) -{ - struct Client* acptr; - char* s; - struct Channel* chptr; - char* nick; - char* server; - char* cmd; - char* host; - int i; - int count; - char* vector[MAXTARGETS]; - - sptr->flags &= ~FLAGS_TS8; - - cmd = notice ? MSG_NOTICE : MSG_PRIVATE; - - if (parc < 2 || EmptyString(parv[1])) - return send_error_to_client(sptr, ERR_NORECIPIENT, cmd); /* XXX DEAD */ - - if (parc < 3 || EmptyString(parv[parc - 1])) - return send_error_to_client(sptr, ERR_NOTEXTTOSEND); /* XXX DEAD */ - - -#if 0 - if (MyUser(sptr)) - parv[1] = canonize(parv[1]); - for (p = 0, nick = ircd_strtok(&p, parv[1], ","); nick; - nick = ircd_strtok(&p, 0, ",")) -#endif - - count = unique_name_vector(parv[1], ',', vector, MAXTARGETS); - for (i = 0; i < count; ++i) { - nick = vector[i]; - /* - * channel msg? - */ - if (IsChannelName(nick)) - { - if ((chptr = FindChannel(nick))) - { - /* This first: Almost never a server/service */ - if (client_can_send_to_channel(sptr, chptr) || IsChannelService(sptr)) - { - if (MyUser(sptr) && (chptr->mode.mode & MODE_NOPRIVMSGS) && - check_target_limit(sptr, chptr, chptr->chname, 0)) - continue; - sendmsgto_channel_butone(cptr, sptr, chptr, /* XXX DEAD */ - parv[0], (notice ? TOK_NOTICE : TOK_PRIVATE), - chptr->chname, parv[parc - 1]); - } - else if (!notice) - sendto_one(sptr, err_str(ERR_CANNOTSENDTOCHAN), /* XXX DEAD */ - me.name, parv[0], chptr->chname); - continue; - } - } - else if (*nick != '$' && !strchr(nick, '@')) - { - /* - * nickname addressed? - */ - if (MyUser(sptr)) - acptr = FindUser(nick); - else if ((acptr = findNUser(nick)) && !IsUser(acptr)) - acptr = 0; - if (acptr) - { - if (MyUser(sptr) && check_target_limit(sptr, acptr, acptr->name, 0)) - continue; - if (!is_silenced(sptr, acptr)) - { - if (!notice && MyConnect(sptr) && acptr->user && acptr->user->away) - sendto_one(sptr, rpl_str(RPL_AWAY), /* XXX DEAD */ - me.name, parv[0], acptr->name, acptr->user->away); - if (MyUser(acptr)) - { - add_target(acptr, sptr); - sendto_prefix_one(acptr, sptr, ":%s %s %s :%s", /* XXX DEAD */ - parv[0], cmd, acptr->name, parv[parc - 1]); - } - else - sendto_prefix_one(acptr, sptr, ":%s %s %s%s :%s", /* XXX DEAD */ - parv[0], (notice ? TOK_NOTICE : TOK_PRIVATE), - NumNick(acptr), parv[parc - 1]); - } - } - else if (MyUser(sptr)) - sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); /* XXX DEAD */ - else - sendto_one(sptr, /* XXX DEAD */ - ":%s %d %s * :Target left UnderNet. Failed to deliver: [%.50s]", - me.name, ERR_NOSUCHNICK, sptr->name, parv[parc - 1]); - continue; - } - /* - * The following two cases allow masks in NOTICEs - * (for OPERs only) - * - * Armin, 8Jun90 (gruner@informatik.tu-muenchen.de) - */ - if ((*nick == '$' || *nick == '#') && IsAnOper(sptr)) - { - if (MyConnect(sptr)) - { - if (!(s = strrchr(nick, '.'))) - { - sendto_one(sptr, err_str(ERR_NOTOPLEVEL), me.name, parv[0], nick); /* XXX DEAD */ - continue; - } - while (*++s) - if (*s == '.' || *s == '*' || *s == '?') - break; - if (*s == '*' || *s == '?') - { - sendto_one(sptr, err_str(ERR_WILDTOPLEVEL), me.name, parv[0], nick); /* XXX DEAD */ - continue; - } - } - sendto_match_butone(IsServer(cptr) ? cptr : 0, /* XXX DEAD */ - sptr, nick + 1, (*nick == '#') ? MATCH_HOST : MATCH_SERVER, - ":%s %s %s :%s", parv[0], cmd, nick, parv[parc - 1]); - continue; - } - else if ((server = strchr(nick, '@')) && (acptr = FindServer(server + 1))) - { - /* - * NICK[%host]@server addressed? See if is me first - */ - if (!IsMe(acptr)) - { - sendto_one(acptr, ":%s %s %s :%s", parv[0], cmd, nick, parv[parc - 1]); /* XXX DEAD */ - continue; - } - - /* Look for an user whose NICK is equal to and then - * check if it's hostname matches and if it's a local - * user. */ - *server = '\0'; - if ((host = strchr(nick, '%'))) - *host++ = '\0'; - - if ((!(acptr = FindUser(nick))) || - (!(MyUser(acptr))) || - ((!(EmptyString(host))) && match(host, acptr->user->host))) - acptr = 0; - - *server = '@'; - if (host) - *--host = '%'; - - if (acptr) - { - if (!(is_silenced(sptr, acptr))) - sendto_prefix_one(acptr, sptr, ":%s %s %s :%s", /* XXX DEAD */ - parv[0], cmd, nick, parv[parc - 1]); - continue; - } - } - if (IsChannelName(nick)) - sendto_one(sptr, err_str(ERR_NOSUCHCHANNEL), me.name, parv[0], nick); /* XXX DEAD */ - else - sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); /* XXX DEAD */ - } - return 0; -} - -/* - * m_private - * - * parv[0] = sender prefix - * parv[1] = receiver list - * parv[parc-1] = message text - */ -int m_private(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) -{ - return m_message(cptr, sptr, parc, parv, 0); -} - -/* - * m_notice - * - * parv[0] = sender prefix - * parv[1] = receiver list - * parv[parc-1] = notice text - */ -int m_notice(struct Client *cptr, struct Client *sptr, int parc, char *parv[]) -{ - if (MyUser(sptr) && parv[1] && parv[1][0] == '@' && - IsChannelName(&parv[1][1])) - { - parv[1]++; /* Get rid of '@' */ - return m_wallchops(cptr, sptr, parc, parv); - } - return m_message(cptr, sptr, parc, parv, 1); -} - -#endif