assert(0 != text);
if (0 == (chptr = FindChannel(name))) {
- send_error_to_client(sptr, ERR_NOSUCHCHANNEL, name);
+ send_reply(sptr, ERR_NOSUCHCHANNEL, name);
return;
}
/*
* This first: Almost never a server/service
*/
if (!client_can_send_to_channel(sptr, chptr)) {
- send_error_to_client(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
+ send_reply(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
return;
}
if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
check_target_limit(sptr, chptr, chptr->chname, 0))
return;
- sendmsgto_channel_butone(sptr->from, sptr, chptr, sptr->name,
- TOK_PRIVATE, chptr->chname, text);
+ sendcmdto_channel_butone(sptr, CMD_PRIVATE, chptr, sptr->from,
+ SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
}
void relay_channel_notice(struct Client* sptr, const char* name, const char* text)
check_target_limit(sptr, chptr, chptr->chname, 0))
return;
- sendmsgto_channel_butone(sptr->from, sptr, chptr, sptr->name,
- TOK_NOTICE, chptr->chname, text);
+ sendcmdto_channel_butone(sptr, CMD_NOTICE, chptr, sptr->from,
+ SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
}
void server_relay_channel_message(struct Client* sptr, const char* name, const char* text)
/*
* XXX - do we need to send this back from a remote server?
*/
- send_error_to_client(sptr, ERR_NOSUCHCHANNEL, name);
+ send_reply(sptr, ERR_NOSUCHCHANNEL, name);
return;
}
/*
* Servers may have channel services, need to check for it here
*/
if (client_can_send_to_channel(sptr, chptr) || IsChannelService(sptr)) {
- sendmsgto_channel_butone(sptr->from, sptr, chptr, sptr->name,
- TOK_PRIVATE, chptr->chname, text);
+ sendcmdto_channel_butone(sptr, CMD_PRIVATE, chptr, sptr->from,
+ SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
}
else
- send_error_to_client(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
+ send_reply(sptr, ERR_CANNOTSENDTOCHAN, chptr->chname);
}
void server_relay_channel_notice(struct Client* sptr, const char* name, const char* text)
* Servers may have channel services, need to check for it here
*/
if (client_can_send_to_channel(sptr, chptr) || IsChannelService(sptr)) {
- sendmsgto_channel_butone(sptr->from, sptr, chptr, sptr->name,
- TOK_NOTICE, chptr->chname, text);
+ sendcmdto_channel_butone(sptr, CMD_NOTICE, chptr, sptr->from,
+ SKIP_DEAF | SKIP_BURST, "%H :%s", chptr, text);
}
}
assert(0 != server);
if (0 == (acptr = FindServer(server + 1))) {
- send_error_to_client(sptr, ERR_NOSUCHNICK, name);
+ send_reply(sptr, ERR_NOSUCHNICK, name);
return;
}
/*
* NICK[%host]@server addressed? See if <server> is me first
*/
if (!IsMe(acptr)) {
- sendto_one(acptr, ":%s %s %s :%s", sptr->name, MSG_PRIVATE, name, text);
+ sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%s :%s", name, text);
return;
}
/*
if (!(acptr = FindUser(name)) || !MyUser(acptr) ||
(!EmptyString(host) && 0 != match(host, acptr->user->host))) {
- send_error_to_client(sptr, ERR_NOSUCHNICK, name);
+ send_reply(sptr, ERR_NOSUCHNICK, name);
return;
}
*--host = '%';
if (!(is_silenced(sptr, acptr)))
- sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
- sptr->name, MSG_PRIVATE, name, text);
+ sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%s :%s", name, text);
}
void relay_directed_notice(struct Client* sptr, char* name, char* server, const char* text)
* NICK[%host]@server addressed? See if <server> is me first
*/
if (!IsMe(acptr)) {
- sendto_one(acptr, ":%s %s %s :%s", sptr->name, MSG_NOTICE, name, text);
+ sendcmdto_one(sptr, CMD_NOTICE, acptr, "%s :%s", name, text);
return;
}
/*
*--host = '%';
if (!(is_silenced(sptr, acptr)))
- sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
- sptr->name, MSG_NOTICE, name, text);
+ sendcmdto_one(sptr, CMD_NOTICE, acptr, "%s :%s", name, text);
}
void relay_private_message(struct Client* sptr, const char* name, const char* text)
assert(0 != text);
if (0 == (acptr = FindUser(name))) {
- send_error_to_client(sptr, ERR_NOSUCHNICK, name);
+ send_reply(sptr, ERR_NOSUCHNICK, name);
return;
}
if (check_target_limit(sptr, acptr, acptr->name, 0) ||
* send away message if user away
*/
if (acptr->user && acptr->user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY),
- me.name, sptr->name, acptr->name, acptr->user->away);
+ send_reply(sptr, RPL_AWAY, acptr->name, acptr->user->away);
/*
* deliver the message
*/
- if (MyUser(acptr)) {
+ if (MyUser(acptr))
add_target(acptr, sptr);
- sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
- sptr->name, MSG_PRIVATE, acptr->name, text);
- }
- else
- sendto_one(acptr, "%s%s %s %s%s :%s", NumNick(sptr),
- TOK_PRIVATE, NumNick(acptr), text);
+
+ sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%C :%s", acptr, text);
}
void relay_private_notice(struct Client* sptr, const char* name, const char* text)
/*
* deliver the message
*/
- if (MyUser(acptr)) {
+ if (MyUser(acptr))
add_target(acptr, sptr);
- sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
- sptr->name, MSG_NOTICE, acptr->name, text);
- }
- else
- sendto_one(acptr, "%s%s %s %s%s :%s", NumNick(sptr),
- TOK_NOTICE, NumNick(acptr), text);
+
+ sendcmdto_one(sptr, CMD_NOTICE, acptr, "%C :%s", acptr, text);
}
void server_relay_private_message(struct Client* sptr, const char* name, const char* text)
* nickname addressed?
*/
if (0 == (acptr = findNUser(name)) || !IsUser(acptr)) {
- sendto_one(sptr,
- ":%s %d %s * :Target left UnderNet. Failed to deliver: [%.20s]",
- me.name, ERR_NOSUCHNICK, sptr->name, text);
+ send_reply(sptr, RPL_EXPLICIT | ERR_NOSUCHNICK, "* :Target left UnderNet. "
+ "Failed to deliver: [%.20s]", text);
return;
}
if (is_silenced(sptr, acptr))
return;
- if (MyUser(acptr)) {
+ if (MyUser(acptr))
add_target(acptr, sptr);
- sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
- sptr->name, MSG_PRIVATE, acptr->name, text);
- }
- else {
- if (IsServer(sptr))
- sendto_one(acptr, "%s %s %s%s :%s", NumServ(sptr),
- TOK_PRIVATE, NumNick(acptr), text);
- else
- sendto_one(acptr, "%s%s %s %s%s :%s", NumNick(sptr),
- TOK_PRIVATE, NumNick(acptr), text);
- }
+
+ sendcmdto_one(sptr, CMD_PRIVATE, acptr, "%C :%s", acptr, text);
}
if (is_silenced(sptr, acptr))
return;
- if (MyUser(acptr)) {
+ if (MyUser(acptr))
add_target(acptr, sptr);
- sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
- sptr->name, MSG_NOTICE, acptr->name, text);
- }
- else {
- if (IsServer(sptr))
- sendto_one(acptr, "%s %s %s%s :%s", NumServ(sptr),
- TOK_NOTICE, NumNick(acptr), text);
- else
- sendto_one(acptr, "%s%s %s %s%s :%s", NumNick(sptr),
- TOK_NOTICE, NumNick(acptr), text);
- }
+
+ sendcmdto_one(sptr, CMD_NOTICE, acptr, "%C :%s", acptr, text);
}
void relay_masked_message(struct Client* sptr, const char* mask, const char* text)
* look for the last '.' in mask and scan forward
*/
if (0 == (s = strrchr(mask, '.'))) {
- send_error_to_client(sptr, ERR_NOTOPLEVEL, mask);
+ send_reply(sptr, ERR_NOTOPLEVEL, mask);
return;
}
while (*++s) {
break;
}
if (*s == '*' || *s == '?') {
- send_error_to_client(sptr, ERR_WILDTOPLEVEL, mask);
+ send_reply(sptr, ERR_WILDTOPLEVEL, mask);
return;
}
s = mask;
host_mask = 1;
++s;
}
- sendto_match_butone(IsServer(sptr->from) ? sptr->from : 0,
- sptr, s, host_mask ? MATCH_HOST : MATCH_SERVER,
- ":%s %s %s :%s", sptr->name, MSG_PRIVATE, mask, text);
+
+ sendcmdto_match_butone(sptr, CMD_PRIVATE, s,
+ IsServer(sptr->from) ? sptr->from : 0,
+ host_mask ? MATCH_HOST : MATCH_SERVER,
+ "%s :%s", mask, text);
}
void relay_masked_notice(struct Client* sptr, const char* mask, const char* text)
* look for the last '.' in mask and scan forward
*/
if (0 == (s = strrchr(mask, '.'))) {
- send_error_to_client(sptr, ERR_NOTOPLEVEL, mask);
+ send_reply(sptr, ERR_NOTOPLEVEL, mask);
return;
}
while (*++s) {
break;
}
if (*s == '*' || *s == '?') {
- send_error_to_client(sptr, ERR_WILDTOPLEVEL, mask);
+ send_reply(sptr, ERR_WILDTOPLEVEL, mask);
return;
}
s = mask;
host_mask = 1;
++s;
}
- sendto_match_butone(IsServer(sptr->from) ? sptr->from : 0,
- sptr, s, host_mask ? MATCH_HOST : MATCH_SERVER,
- ":%s %s %s :%s", sptr->name, MSG_NOTICE, mask, text);
+
+ sendcmdto_match_butone(sptr, CMD_NOTICE, s,
+ IsServer(sptr->from) ? sptr->from : 0,
+ host_mask ? MATCH_HOST : MATCH_SERVER,
+ "%s :%s", mask, text);
}
void server_relay_masked_message(struct Client* sptr, const char* mask, const char* text)
host_mask = 1;
++s;
}
- sendto_match_butone(sptr->from, sptr, s, host_mask ? MATCH_HOST : MATCH_SERVER,
- ":%s %s %s :%s", sptr->name, MSG_PRIVATE, mask, text);
+ sendcmdto_match_butone(sptr, CMD_PRIVATE, s,
+ IsServer(sptr->from) ? sptr->from : 0,
+ host_mask ? MATCH_HOST : MATCH_SERVER,
+ "%s :%s", mask, text);
}
void server_relay_masked_notice(struct Client* sptr, const char* mask, const char* text)
host_mask = 1;
++s;
}
- sendto_match_butone(sptr->from, sptr, s, host_mask ? MATCH_HOST : MATCH_SERVER,
- ":%s %s %s :%s", sptr->name, MSG_NOTICE, mask, text);
+ sendcmdto_match_butone(sptr, CMD_NOTICE, s,
+ IsServer(sptr->from) ? sptr->from : 0,
+ host_mask ? MATCH_HOST : MATCH_SERVER,
+ "%s :%s", mask, text);
}