+2000-04-28 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c: hack to support doing wallchops...
+
+ * ircd/m_whowas.c: convert to new send functions
+
+ * ircd/m_whois.c: convert to new send functions
+
+ * ircd/m_who.c: convert to new send functions
+
+ * ircd/m_wallops.c: convert to new send functions
+
+ * ircd/m_wallchops.c: convert to new send functions
+
+ * ircd/m_version.c: convert to new send functions
+
+ * ircd/m_userip.c: convert to new send functions
+
+ * ircd/m_userhost.c: convert to new send functions
+
+ * ircd/m_uping.c: convert to new send functions
+
+ * ircd/m_trace.c: convert to new send functions
+
+ * ircd/m_topic.c: convert to new send functions
+
+ * ircd/m_time.c: convert to new send functions
+
+ * ircd/m_squit.c: convert to new send functions
+
+ * ircd/m_silence.c: convert to new send functions
+
+ * ircd/m_settime.c: convert to new send functions
+
+ * ircd/m_restart.c: convert to new send functions
+
+ * ircd/m_rehash.c: convert to new send functions
+
+ * ircd/m_privmsg.c: convert to new send functions
+
+ * ircd/m_pong.c: convert to new send functions
+
+ * ircd/m_ping.c: convert to new send functions
+
+ * ircd/m_pass.c: convert to new send functions
+
+ * ircd/m_opmode.c: convert to new send functions
+
+ * ircd/m_oper.c: convert to new send functions
+
+ * ircd/m_notice.c: convert to new send functions
+
+ * ircd/m_nick.c: convert to new send functions
+
+ * ircd/m_names.c: convert to new send functions
+
+ * ircd/m_motd.c: convert to new send functions
+
+ * ircd/m_mode.c: convert to new send functions
+
+ * ircd/m_map.c: convert to new send functions
+
+ * ircd/m_lusers.c: convert to new send functions
+
+ * ircd/m_list.c: convert to new send functions
+
+ * ircd/m_links.c: convert to new send functions
+
+ * ircd/m_kill.c: convert to new send functions
+
+ * ircd/m_jupe.c: convert to new send functions
+
+ * ircd/m_invite.c: convert to new send functions
+
+ * ircd/m_info.c: convert to new send functions
+
+ * ircd/m_help.c: convert to new send functions
+
+ * ircd/m_gline.c: convert to new send functions
+
+ * ircd/m_error.c: convert to new send functions
+
+ * ircd/m_endburst.c: convert to new send functions
+
+ * ircd/m_die.c: convert to new send functions
+
+ * ircd/m_destruct.c: convert to new send functions
+
+ * ircd/m_defaults.c: convert to new send functions
+
+ * ircd/m_connect.c: convert to new send functions
+
2000-04-28 Perry Lorier <isomer@coders.net>
* RELEASE.NOTES: Describe a few more undocumented features.
* config/config-sh.in: change the default paths for logging
2000-04-27 Kevin L. Mitchell <klmitch@mit.edu>
+ * ircd/m_close.c: convert to send_reply
+
+ * ircd/m_clearmode.c: convert to send_reply, sendcmdto_serv_butone
+
+ * ircd/m_away.c: convert to send_reply and sendcmdto_serv_butone
+
+ * ircd/m_admin.c: convert to send_reply and hunt_server_cmd
+
+ * ircd/s_user.c (hunt_server_cmd): new hunt_server replacement
+ that takes cmd and tok arguments, etc. NOTE: THIS IMPLEMENTATION
+ HAS A MAJOR HACK!!! The whole hunt_server architecture should be
+ carefully rethought...
+
+ * ircd/s_stats.c (hunt_stats): use new hunt_server_cmd
+
+ * include/s_user.h: hunt_server_cmd -- replacement for hunt_server
+
* ircd/s_misc.c: *sigh* 2.10.10 doesn't support squitting by
numeric nick; therefore, we have to use the server name
conversions; use ircd_snprintf in a couple of cases to negate the
possibility of buffer overflow
->>>>>>> 1.106
2000-04-26 Kevin L. Mitchell <klmitch@mit.edu>
* ircd/channel.c: convert as much as possible to new send
#
# ChangeLog for ircu2.10.11
#
-# $Id: ChangeLog,v 1.107 2000-04-27 23:05:41 isomer Exp $
+# $Id: ChangeLog,v 1.108 2000-04-28 15:04:58 kev Exp $
#
# Insert new changes at beginning of the change list.
#
extern int is_silenced(struct Client *sptr, struct Client *acptr);
extern int hunt_server(int, struct Client *cptr, struct Client *sptr,
char *command, int server, int parc, char *parv[]);
+extern int hunt_server_cmd(struct Client *from, const char *cmd,
+ const char *tok, struct Client *one,
+ int MustBeOper, const char *pattern, int server,
+ int parc, char *parv[]);
extern struct Client* next_client(struct Client* next, const char* ch);
extern char *umode_str(struct Client *cptr);
extern void send_umode(struct Client *cptr, struct Client *sptr, int old, int sendmask);
if (parc > 1) {
struct Client *acptr;
if (!(acptr = find_match_server(parv[1])))
- return send_error_to_client(sptr, ERR_NOSUCHSERVER, parv[1]);
+ return send_reply(sptr, ERR_NOSUCHSERVER, parv[1]);
parv[1] = acptr->name;
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_ADMIN " :%s", 1, parc, parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_ADMIN, cptr, 0, ":%C", 1, parc, parv) !=
+ HUNTED_ISME)
return 0;
}
return send_admin_info(sptr, find_admin());
if (parc < 2)
return 0;
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_ADMIN " :%s", 1, parc, parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_ADMIN, cptr, 0, ":%C", 1, parc, parv) !=
+ HUNTED_ISME)
return 0;
return send_admin_info(sptr, find_admin());
assert(cptr == sptr);
if (user_set_away(sptr->user, away_message)) {
- sendto_serv_butone(cptr, "%s%s " TOK_AWAY " :%s", NumNick(sptr), away_message);
- sendto_one(sptr, rpl_str(RPL_NOWAWAY), me.name, parv[0]);
+ sendcmdto_serv_butone(sptr, CMD_AWAY, cptr, ":%s", away_message);
+ send_reply(sptr, RPL_NOWAWAY);
}
else {
- sendto_serv_butone(cptr, "%s%s " TOK_AWAY, NumNick(sptr));
- sendto_one(sptr, rpl_str(RPL_UNAWAY), me.name, parv[0]);
+ sendcmdto_serv_butone(sptr, CMD_AWAY, cptr, "");
+ send_reply(sptr, RPL_UNAWAY);
}
return 0;
}
return 0;
if (user_set_away(sptr->user, away_message))
- sendto_serv_butone(cptr, "%s%s " TOK_AWAY " :%s", NumNick(sptr), away_message);
+ sendcmdto_serv_butone(sptr, CMD_AWAY, cptr, ":%s", away_message);
else
- sendto_serv_butone(cptr, "%s%s " TOK_AWAY, NumNick(sptr));
+ sendcmdto_serv_butone(sptr, CMD_AWAY, cptr, "");
return 0;
}
control_buf[control_buf_i] = '\0';
#ifdef OPATH
- if (IsServer(sptr))
- write_log(OPATH, TIME_T_FMT " %s CLEARMODE %s %s\n", TStime(), sptr->name,
- chptr->chname, control_buf);
- else
- write_log(OPATH, TIME_T_FMT " %s!%s@%s CLEARMODE %s %s\n", TStime(),
- sptr->name, sptr->user->username, sptr->user->host,
- chptr->chname, control_buf);
+ write_log(OPATH, "%Tu %#C CLEARMODE %H %s\n", TStime(), sptr, chptr,
+ control_buf);
#endif
/* Then send it */
- if (!IsLocalChannel(chptr->chname)) {
- if (IsServer(sptr))
- sendto_serv_butone(cptr, "%s " TOK_CLEARMODE " %s %s", NumServ(sptr),
- chptr->chname, control_buf);
- else
- sendto_serv_butone(cptr, "%s%s " TOK_CLEARMODE " %s %s", NumNick(sptr),
- chptr->chname, control_buf);
- }
+ if (!IsLocalChannel(chptr->chname))
+ sendcmdto_serv_butone(sptr, CMD_CLEARMODE, cptr, "%H %s", chptr,
+ control_buf);
return 0;
}
return need_more_params(sptr, "CLEARMODE");
if (!IsPrivileged(sptr))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
if (!IsChannelName(parv[1]) || IsLocalChannel(parv[1]) ||
!(chptr = FindChannel(parv[1])))
- return send_error_to_client(sptr, ERR_NOSUCHCHANNEL, parv[1]);
+ return send_reply(sptr, ERR_NOSUCHCHANNEL, parv[1]);
return do_clearmode(cptr, sptr, chptr, parv[2]);
}
mo_clearmode(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
#ifndef CONFIG_OPERCMDS
- return send_error_to_client(sptr, ERR_DISABLED, "CLEARMODE");
+ return send_reply(sptr, ERR_DISABLED, "CLEARMODE");
#else
struct Channel *chptr;
char *control = "ovpsmikbl"; /* default control string */
clean_channelname(parv[1]);
if (!IsOper(sptr) && !IsLocalChannel(parv[1]))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
if (!IsChannelName(parv[1]) || !(chptr = FindChannel(parv[1])))
- return send_error_to_client(sptr, ERR_NOSUCHCHANNEL, parv[1]);
+ return send_reply(sptr, ERR_NOSUCHCHANNEL, parv[1]);
return do_clearmode(cptr, sptr, chptr, control);
#endif /* CONFIG_OPERCMDS */
assert(cptr == sptr);
assert(IsAnOper(sptr));
- sendto_one(sptr, rpl_str(RPL_CLOSEEND), me.name, parv[0],
- net_close_unregistered_connections(sptr));
- return 0;
+ return send_reply(sptr, RPL_CLOSEEND,
+ net_close_unregistered_connections(sptr));
}
-
-
assert(0 != sptr);
if (!IsPrivileged(sptr))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
if (parc < 4) {
/*
return need_more_params(sptr, "CONNECT");
}
- if (hunt_server(1, cptr, sptr,
- "%s%s " TOK_CONNECT " %s %s :%s", 3, parc, parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_CONNECT, cptr, 1, "%s %s :%C", 3, parc, parv)
+ != HUNTED_ISME)
return 0;
/*
* present below. --Bleep
*/
if (0 == (aconf = conf_find_server(parv[1]))) {
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Host %s not listed in ircd.conf",
- NumServ(&me), NumNick(sptr), parv[1]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Host %s not listed "
+ "in ircd.conf", sptr, parv[1]);
return 0;
}
/*
* use aconf->name to look up the server
*/
if ((acptr = FindServer(aconf->name))) {
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s %s %s.",
- NumServ(&me), NumNick(sptr), parv[1], "already exists from",
- acptr->from->name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Server %s already "
+ "exists from %s", sptr, parv[1], acptr->from->name);
return 0;
}
/*
* lines (CRULEALL) not d lines (CRULEAUTO).
*/
if ((crule_name = conf_eval_crule(aconf))) {
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Disallowed by rule: %s",
- NumServ(&me), NumNick(sptr), crule_name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Disallowed by rule: %s",
+ sptr, crule_name);
return 0;
}
/*
* Check to see if the server is juped; if it is, disallow the connect
*/
if ((ajupe = jupe_find(aconf->name)) && JupeIsActive(ajupe)) {
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s is juped: %s",
- NumServ(&me), NumNick(sptr), JupeServer(ajupe),
- JupeReason(ajupe));
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Server %s is juped: %s",
+ sptr, JupeServer(ajupe), JupeReason(ajupe));
return 0;
}
/*
* server.
*/
if ((port = atoi(parv[2])) == 0) {
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Invalid port number",
- NumServ(&me), NumNick(sptr));
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Invalid port number",
+ sptr);
return 0;
}
/*
/*
* Notify all operators about remote connect requests
*/
- sendto_ops_butone(0, &me, ":%s WALLOPS :Remote CONNECT %s %s from %s",
- me.name, parv[1], parv[2] ? parv[2] : "",
- get_client_name(sptr, HIDE_IP));
- ircd_log(L_INFO, "CONNECT From %s : %s %d", parv[0], parv[1], parv[2] ? parv[2] : "");
+ sendcmdto_flag_butone(&me, CMD_WALLOPS, 0, FLAGS_WALLOP,
+ ":Remote CONNECT %s %s from %s", parv[1],
+ parv[2] ? parv[2] : "",
+ get_client_name(sptr, HIDE_IP));
+ ircd_log(L_INFO, "CONNECT From %s : %s %d", parv[0], parv[1],
+ parv[2] ? parv[2] : "");
if (connect_server(aconf, sptr, 0)) {
- sendto_one(sptr, "%s NOTICE %s%s :*** Connecting to %s.",
- NumServ(&me), NumNick(sptr), aconf->name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :*** Connecting to %s.", sptr,
+ aconf->name);
}
else {
- sendto_one(sptr, "%s NOTICE %s%s :*** Connection to %s failed",
- NumServ(&me), NumNick(sptr), aconf->name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :*** Connection to %s failed",
+ sptr, aconf->name);
}
aconf->port = tmpport;
return 0;
struct Client* acptr3;
if (!(acptr3 = find_match_server(parv[3]))) {
- send_error_to_client(sptr, ERR_NOSUCHSERVER, parv[3]);
+ send_reply(sptr, ERR_NOSUCHSERVER, parv[3]);
return 0;
}
acptr3 = acptr2;
}
parv[3] = acptr3->name;
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_CONNECT " %s %s :%s",
- 3, parc, parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_CONNECT, cptr, 1, "%s %s :%C", 3, parc,
+ parv) != HUNTED_ISME)
return 0;
}
}
* present below. --Bleep
*/
if (0 == (aconf = conf_find_server(parv[1]))) {
- sendto_one(sptr,
- ":%s NOTICE %s :Connect: Host %s not listed in ircd.conf",
- me.name, parv[0], parv[1]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Host %s not listed "
+ "in ircd.conf", sptr, parv[1]);
return 0;
}
/*
* use aconf->name to look up the server, see above
*/
if ((acptr = FindServer(aconf->name))) {
- sendto_one(sptr, ":%s NOTICE %s :Connect: Server %s %s %s.",
- me.name, parv[0], parv[1], "already exists from",
- acptr->from->name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Server %s already "
+ "exists from %s", sptr, parv[1], acptr->from->name);
return 0;
}
/*
* lines (CRULEALL) not d lines (CRULEAUTO).
*/
if ((crule_name = conf_eval_crule(aconf))) {
- sendto_one(sptr, ":%s NOTICE %s :Connect: Disallowed by rule: %s",
- me.name, parv[0], crule_name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Disallowed by rule: %s",
+ sptr, crule_name);
return 0;
}
/*
* Check to see if the server is juped; if it is, disallow the connect
*/
if ((ajupe = jupe_find(aconf->name)) && JupeIsActive(ajupe)) {
- sendto_one(sptr, ":%s NOTICE %s%s :Connect: Server %s is juped: %s",
- me.name, NumNick(sptr), JupeServer(ajupe), JupeReason(ajupe));
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Server %s is juped: %s",
+ sptr, JupeServer(ajupe), JupeReason(ajupe));
return 0;
}
/*
if (parc > 2) {
assert(0 != parv[2]);
if (0 == (port = atoi(parv[2]))) {
- sendto_one(sptr, ":%s NOTICE %s :Connect: Invalid port number",
- me.name, parv[0]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: Invalid port number",
+ sptr);
return 0;
}
}
if (0 == port && 0 == (port = SERVER_PORT)) {
- sendto_one(sptr, ":%s NOTICE %s :Connect: missing port number",
- me.name, parv[0]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Connect: missing port number",
+ sptr);
return 0;
}
aconf->port = port;
if (connect_server(aconf, sptr, 0)) {
- sendto_one(sptr, ":%s NOTICE %s :*** Connecting to %s.",
- me.name, parv[0], aconf->name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :*** Connecting to %s.", sptr,
+ aconf->name);
}
else {
- sendto_one(sptr, ":%s NOTICE %s :*** Connection to %s failed",
- me.name, parv[0], aconf->name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :*** Connection to %s failed",
+ sptr, aconf->name);
}
aconf->port = tmpport;
return 0;
struct Jupe* ajupe;
if (!IsPrivileged(sptr)) {
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return -1;
}
struct Client* acptr2;
struct Client* acptr3;
if (!(acptr3 = find_match_server(parv[3]))) {
- sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[3]);
+ sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[3]); /* XXX DEAD */
return 0;
}
parv[3] = acptr3->name;
}
- if (hunt_server(1, cptr, sptr,
+ if (hunt_server(1, cptr, sptr, /* XXX DEAD */
"%s%s " TOK_CONNECT " %s %s :%s", 3, parc, parv) != HUNTED_ISME)
return 0;
if ((acptr = FindServer(parv[1]))) {
if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :Connect: Server %s %s %s.",
+ sendto_one(sptr, ":%s NOTICE %s :Connect: Server %s %s %s.", /* XXX DEAD */
me.name, parv[0], parv[1], "already exists from", acptr->from->name);
else
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s %s %s.",
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s %s %s.", /* XXX DEAD */
NumServ(&me), NumNick(sptr), parv[1], "already exists from",
acptr->from->name);
return 0;
#endif
if (!aconf) {
if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :Connect: Host %s not listed in ircd.conf",
+ sendto_one(sptr, ":%s NOTICE %s :Connect: Host %s not listed in ircd.conf", /* XXX DEAD */
me.name, parv[0], parv[1]);
else
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Host %s not listed in ircd.conf",
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: Host %s not listed in ircd.conf", /* XXX DEAD */
NumServ(&me), NumNick(sptr), parv[1]);
return 0;
}
if (parc > 2 && !BadPtr(parv[2])) {
if ((port = atoi(parv[2])) == 0) {
if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :Connect: Invalid port number", me.name, parv[0]);
+ sendto_one(sptr, ":%s NOTICE %s :Connect: Invalid port number", me.name, parv[0]); /* XXX DEAD */
else
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Invalid port number",
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: Invalid port number", /* XXX DEAD */
NumServ(&me), NumNick(sptr));
return 0;
}
}
else if (port == 0 && (port = PORTNUM) == 0) {
if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :Connect: missing port number",
+ sendto_one(sptr, ":%s NOTICE %s :Connect: missing port number", /* XXX DEAD */
me.name, parv[0]);
else
- sendto_one(sptr, "%s NOTICE %s%s :Connect: missing port number",
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: missing port number", /* XXX DEAD */
NumServ(&me), NumNick(sptr));
return 0;
}
(0 == match(cconf->host, aconf->name))) {
if (crule_eval(cconf->passwd)) {
if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :Connect: Disallowed by rule: %s",
+ sendto_one(sptr, ":%s NOTICE %s :Connect: Disallowed by rule: %s", /* XXX DEAD */
me.name, parv[0], cconf->name);
else
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Disallowed by rule: %s",
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: Disallowed by rule: %s", /* XXX DEAD */
NumServ(&me), NumNick(sptr), cconf->name);
return 0;
}
* Check to see if the server is juped; if it is, disallow the connect
*/
if ((ajupe = jupe_find(aconf->name)) && JupeIsActive(ajupe)) {
- sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s is juped: %s",
+ sendto_one(sptr, "%s NOTICE %s%s :Connect: Server %s is juped: %s", /* XXX DEAD */
NumServ(&me), NumNick(sptr), JupeServer(ajupe),
JupeReason(ajupe));
return 0;
* Notify all operators about remote connect requests
*/
if (!IsAnOper(cptr)) {
- sendto_ops_butone(0, &me, ":%s WALLOPS :Remote CONNECT %s %s from %s",
+ sendto_ops_butone(0, &me, ":%s WALLOPS :Remote CONNECT %s %s from %s", /* XXX DEAD */
me.name, parv[1], parv[2] ? parv[2] : "",
get_client_name(sptr, HIDE_IP));
ircd_log(L_INFO, "CONNECT From %s : %s %d",
aconf->port = port;
if (connect_server(aconf, sptr, 0)) {
if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :*** Connecting to %s.",
+ sendto_one(sptr, ":%s NOTICE %s :*** Connecting to %s.", /* XXX DEAD */
me.name, parv[0], aconf->name);
else
- sendto_one(sptr, "%s NOTICE %s%s :*** Connecting to %s.",
+ sendto_one(sptr, "%s NOTICE %s%s :*** Connecting to %s.", /* XXX DEAD */
NumServ(&me), NumNick(sptr), aconf->name);
}
else {
if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :*** Connection to %s failed",
+ sendto_one(sptr, ":%s NOTICE %s :*** Connection to %s failed", /* XXX DEAD */
me.name, parv[0], aconf->name);
else
- sendto_one(sptr, "%s NOTICE %s%s :*** Connection to %s failed",
+ sendto_one(sptr, "%s NOTICE %s%s :*** Connection to %s failed", /* XXX DEAD */
NumServ(&me), NumNick(sptr), aconf->name);
}
aconf->port = tmpport;
int m_not_oper(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- return send_error_to_client(cptr, ERR_NOPRIVILEGES);
+ return send_reply(cptr, ERR_NOPRIVILEGES);
}
int m_unregistered(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- sendto_one(cptr, ":%s %d * %s :Register first.",
- me.name, ERR_NOTREGISTERED, parv[0]);
+ send_reply(cptr, RPL_EXPLICIT | ERR_NOTREGISTERED, "%s :Register first.",
+ parv[0]);
return 0;
}
int m_registered(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- return send_error_to_client(sptr, ERR_ALREADYREGISTRED);
+ return send_reply(sptr, ERR_ALREADYREGISTRED);
}
int m_ignore(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
int m_unsupported(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
#if 0
- sendto_one(cptr, ":%s %d * %s :Unsupported command",
- me.name, ERR_UNSUPPORTED, parv[0]);
+ send_reply(cptr, RPL_EXPLICIT | ERR_UNSUPPORTED, "%s :Unsupported command",
+ parv[0]);
#endif
return 0;
}
chanTS = atoi(parv[2]);
/* Pass on DESTRUCT message */
- sendto_highprot_butone(cptr, 10, "%s " TOK_DESTRUCT " %s " TIME_T_FMT,
- NumServ(sptr), parv[1], chanTS);
+ sendcmdto_serv_butone(sptr, CMD_DESTRUCT, cptr, "%s %Tu", parv[1], chanTS);
return 0;
}
chanTS = atoi(parv[2]);
/* Pass on DESTRUCT message */
- sendto_highprot_butone(cptr, 10, "%s DESTRUCT %s " TIME_T_FMT,
+ sendto_highprot_butone(cptr, 10, "%s DESTRUCT %s " TIME_T_FMT, /* XXX DEAD */
NumServ(sptr), parv[1], chanTS);
return 0;
#include "ircd.h"
#include "ircd_reply.h"
#include "ircd_string.h"
+#include "msg.h"
#include "numeric.h"
#include "numnicks.h"
#include "s_bsd.h"
#endif
#endif
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
- return 0;
+ return send_reply(sptr, ERR_NOPRIVILEGES);
}
for (i = 0; i <= HighestFd; i++)
if (!(acptr = LocalClientArray[i]))
continue;
if (IsUser(acptr))
- sendto_one(acptr, ":%s NOTICE %s :Server Terminating. %s",
- me.name, acptr->name, get_client_name(sptr, HIDE_IP));
+ sendcmdto_one(&me, CMD_NOTICE, acptr, "%C :Server Terminating. %s",
+ acptr, get_client_name(sptr, HIDE_IP));
else if (IsServer(acptr))
- sendto_one(acptr, ":%s ERROR :Terminated by %s",
- me.name, get_client_name(sptr, HIDE_IP));
+ sendcmdto_one(&me, CMD_ERROR, acptr, ":Terminated by %s",
+ get_client_name(sptr, HIDE_IP));
}
server_die("received DIE");
#endif /* defined(OPER_DIE) || defined(LOCOP_DIE) */
#endif
#endif
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return 0;
}
if (!(acptr = LocalClientArray[i]))
continue;
if (IsUser(acptr))
- sendto_one(acptr, ":%s NOTICE %s :Server Terminating. %s",
+ sendto_one(acptr, ":%s NOTICE %s :Server Terminating. %s", /* XXX DEAD */
me.name, acptr->name, get_client_name(sptr, HIDE_IP));
else if (IsServer(acptr))
- sendto_one(acptr, ":%s ERROR :Terminated by %s",
+ sendto_one(acptr, ":%s ERROR :Terminated by %s", /* XXX DEAD */
me.name, get_client_name(sptr, HIDE_IP));
}
server_die("received DIE");
#include "ircd.h"
#include "ircd_reply.h"
#include "ircd_string.h"
+#include "msg.h"
#include "numeric.h"
#include "numnicks.h"
#include "send.h"
if (!IsServer(sptr))
return 0;
- sendto_op_mask(SNO_NETWORK, "Completed net.burst from %s.", sptr->name);
- sendto_serv_butone(cptr, "%s EB", NumServ(sptr));
+ sendto_opmask_butone(0, SNO_NETWORK, "Completed net.burst from %C.", sptr);
+ sendcmdto_serv_butone(sptr, CMD_END_OF_BURST, cptr, "");
ClearBurst(sptr);
SetBurstAck(sptr);
if (MyConnect(sptr))
- sendto_one(sptr, "%s EA", NumServ(&me));
+ sendcmdto_one(&me, CMD_END_OF_BURST_ACK, sptr, "");
return 0;
}
if (!IsServer(sptr))
return 0;
- sendto_op_mask(SNO_NETWORK, "%s acknowledged end of net.burst.", sptr->name);
- sendto_serv_butone(cptr, "%s EA", NumServ(sptr));
+ sendto_opmask_butone(0, SNO_NETWORK, "%C acknowledged end of net.burst.",
+ sptr);
+ sendcmdto_serv_butone(sptr, CMD_END_OF_BURST_ACK, cptr, "");
ClearBurstAck(sptr);
return 0;
if (!IsServer(sptr))
return 0;
- sendto_op_mask(SNO_NETWORK, "Completed net.burst from %s.", sptr->name);
- sendto_serv_butone(cptr, "%s EB", NumServ(sptr));
+ sendto_op_mask(SNO_NETWORK, "Completed net.burst from %s.", sptr->name); /* XXX DEAD */
+ sendto_serv_butone(cptr, "%s EB", NumServ(sptr)); /* XXX DEAD */
ClearBurst(sptr);
SetBurstAck(sptr);
if (MyConnect(sptr))
- sendto_one(sptr, "%s EA", NumServ(&me));
+ sendto_one(sptr, "%s EA", NumServ(&me)); /* XXX DEAD */
return 0;
}
if (!IsServer(sptr))
return 0;
- sendto_op_mask(SNO_NETWORK, "%s acknowledged end of net.burst.", sptr->name);
- sendto_serv_butone(cptr, "%s EA", NumServ(sptr));
+ sendto_op_mask(SNO_NETWORK, "%s acknowledged end of net.burst.", sptr->name); /* XXX DEAD */
+ sendto_serv_butone(cptr, "%s EA", NumServ(sptr)); /* XXX DEAD */
ClearBurstAck(sptr);
return 0;
return exit_client_msg(cptr, cptr, &me, "Register first");
if (cptr == sptr)
- sendto_ops("ERROR :from %s -- %s", cptr->name, para);
+ sendto_opmask_butone(0, SNO_OLDSNO, "ERROR :from %C -- %s", cptr, para);
else
- sendto_ops("ERROR :from %s via %s -- %s", sptr->name, cptr->name, para);
+ sendto_opmask_butone(0, SNO_OLDSNO, "ERROR :from %C via %C -- %s", sptr,
+ cptr, para);
if (sptr->serv)
{
return exit_client_msg(cptr, cptr, &me, "Register first");
if (cptr == sptr)
- sendto_ops("ERROR :from %s -- %s", cptr->name, para);
+ sendto_opmask_butone(0, SNO_OLDSNO, "ERROR :from %C -- %s", cptr, para);
else
- sendto_ops("ERROR :from %s via %s -- %s", sptr->name, cptr->name, para);
+ sendto_opmask_butone(0, SNO_OLDSNO, "ERROR :from %C via %C -- %s", sptr,
+ cptr, para);
if (sptr->serv)
{
return exit_client_msg(cptr, cptr, &me, "Register first");
if (cptr == sptr)
- sendto_ops("ERROR :from %s -- %s", cptr->name, para);
+ sendto_ops("ERROR :from %s -- %s", cptr->name, para); /* XXX DEAD */
else
- sendto_ops("ERROR :from %s via %s -- %s", sptr->name, cptr->name, para);
+ sendto_ops("ERROR :from %s via %s -- %s", sptr->name, cptr->name, para); /* XXX DEAD */
if (sptr->serv)
{
if (!IsMe(acptr)) { /* manually propagate */
if (!lastmod)
- sendcmdto_one(sptr, CMD_GLINE, acptr, "%s %s %s :%s", target, mask,
+ sendcmdto_one(sptr, CMD_GLINE, acptr, "%C %s %s :%s", acptr, mask,
parv[3], reason);
else
- sendcmdto_one(sptr, CMD_GLINE, acptr, "%s %s %s %s :%s", target, mask,
+ sendcmdto_one(sptr, CMD_GLINE, acptr, "%C %s %s %s :%s", acptr, mask,
parv[3], parv[4], reason);
return 0;
return gline_list(sptr, mask);
#ifndef LOCOP_LGLINE
- if (!IsOper(sptr)) {
- send_error_to_client(sptr, ERR_NOPRIVILEGES);
- return 0;
- }
+ if (!IsOper(sptr))
+ return send_reply(sptr, ERR_NOPRIVILEGES);
#endif
if (parc == 4) {
if (target) {
if (!(target[0] == '*' && target[1] == '\0')) {
if (!(acptr = find_match_server(target)))
- return send_error_to_client(sptr, ERR_NOSUCHSERVER, target);
+ return send_reply(sptr, ERR_NOSUCHSERVER, target);
if (!IsMe(acptr)) { /* manually propagate, since we don't set it */
#ifndef CONFIG_OPERCMDS
- return send_error_to_client(sptr, ERR_DISABLED, "GLINE");
+ return send_reply(sptr, ERR_DISABLED, "GLINE");
#else
if (!IsOper(sptr))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
sendcmdto_one(sptr, CMD_GLINE, acptr, "%C %c%s %s %Tu :%s", acptr,
flags & GLINE_ACTIVE ? '?' : '-', mask, parv[3],
flags |= GLINE_LOCAL;
} else if (!IsOper(sptr))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
}
#ifndef CONFIG_OPERCMDS
if (!(flags & GLINE_LOCAL))
- return send_error_to_client(sptr, ERR_DISABLED, "GLINE");
+ return send_reply(sptr, ERR_DISABLED, "GLINE");
#endif /* CONFIG_OPERCMDS */
agline = gline_find(mask, GLINE_ANY | GLINE_EXACT);
m_gline(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
{
if (parc < 2)
- return send_error_to_client(sptr, ERR_NOSUCHGLINE, "");
+ return send_reply(sptr, ERR_NOSUCHGLINE, "");
return gline_list(sptr, parv[1]);
}
int i;
for (i = 0; msgtab[i].cmd; i++)
- sendto_one(sptr, ":%s NOTICE %s :%s", me.name, parv[0], msgtab[i].cmd);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :%s", sptr, msgtab[i].cmd);
return 0;
}
int i;
for (i = 0; msgtab[i].cmd; i++)
- sendto_one(sptr, ":%s NOTICE %s :%s", me.name, parv[0], msgtab[i].cmd);
+ sendto_one(sptr, ":%s NOTICE %s :%s", me.name, parv[0], msgtab[i].cmd); /* XXX DEAD */
return 0;
}
#endif /* 0 */
{
const char **text = infotext;
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_INFO " :%s", 1, parc, parv) == HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_INFO, cptr, 1, ":%C", 1, parc, parv) ==
+ HUNTED_ISME)
{
while (text[2])
{
if (!IsOper(sptr))
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text);
+ send_reply(sptr, RPL_INFO, *text);
text++;
}
if (IsOper(sptr))
{
while (*text)
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text++);
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], "");
+ send_reply(sptr, RPL_INFO, *text++);
+ send_reply(sptr, RPL_INFO, "");
}
- sendto_one(sptr, ":%s %d %s :Birth Date: %s, compile # %s",
- me.name, RPL_INFO, parv[0], creation, generation);
- sendto_one(sptr, ":%s %d %s :On-line since %s",
- me.name, RPL_INFO, parv[0], myctime(me.firsttime));
- sendto_one(sptr, rpl_str(RPL_ENDOFINFO), me.name, parv[0]);
+ send_reply(sptr, RPL_EXPLICIT | RPL_INFO, ":Birth Date: %s, compile # %s",
+ creation, generation);
+ send_reply(sptr, RPL_EXPLICIT | RPL_INFO, ":On-line since %s",
+ myctime(me.firsttime));
+ send_reply(sptr, RPL_ENDOFINFO);
}
return 0;
}
if (IsServer(sptr))
return 0;
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_INFO " :%s", 1, parc, parv) == HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_INFO, cptr, 1, ":%C", 1, parc, parv) ==
+ HUNTED_ISME)
{
while (text[2])
{
if (!IsOper(sptr))
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text);
+ send_reply(sptr, RPL_INFO, *text);
text++;
}
if (IsOper(sptr))
{
while (*text)
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text++);
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], "");
+ send_reply(sptr, RPL_INFO, *text++);
+ send_reply(sptr, RPL_INFO, "");
}
- sendto_one(sptr, ":%s %d %s :Birth Date: %s, compile # %s",
- me.name, RPL_INFO, parv[0], creation, generation);
- sendto_one(sptr, ":%s %d %s :On-line since %s",
- me.name, RPL_INFO, parv[0], myctime(me.firsttime));
- sendto_one(sptr, rpl_str(RPL_ENDOFINFO), me.name, parv[0]);
+ send_reply(sptr, RPL_EXPLICIT | RPL_INFO, ":Birth Date: %s, compile # %s",
+ creation, generation);
+ send_reply(sptr, RPL_EXPLICIT | RPL_INFO, ":On-line since %s",
+ myctime(me.firsttime));
+ send_reply(sptr, RPL_ENDOFINFO);
}
return 0;
}
{
const char **text = infotext;
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_INFO " :%s", 1, parc, parv) == HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_INFO, cptr, 1, ":%C", 1, parc, parv) ==
+ HUNTED_ISME)
{
while (text[2])
{
if (!IsOper(sptr))
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text);
+ send_reply(sptr, RPL_INFO, *text);
text++;
}
if (IsOper(sptr))
{
while (*text)
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text++);
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], "");
+ send_reply(sptr, RPL_INFO, *text++);
+ send_reply(sptr, RPL_INFO, "");
}
- sendto_one(sptr, ":%s %d %s :Birth Date: %s, compile # %s",
- me.name, RPL_INFO, parv[0], creation, generation);
- sendto_one(sptr, ":%s %d %s :On-line since %s",
- me.name, RPL_INFO, parv[0], myctime(me.firsttime));
- sendto_one(sptr, rpl_str(RPL_ENDOFINFO), me.name, parv[0]);
+ send_reply(sptr, RPL_EXPLICIT | RPL_INFO, ":Birth Date: %s, compile # %s",
+ creation, generation);
+ send_reply(sptr, RPL_EXPLICIT | RPL_INFO, ":On-line since %s",
+ myctime(me.firsttime));
+ send_reply(sptr, RPL_ENDOFINFO);
}
return 0;
}
{
const char **text = infotext;
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_INFO " :%s", 1, parc, parv) == HUNTED_ISME)
+ if (hunt_server(1, cptr, sptr, "%s%s " TOK_INFO " :%s", 1, parc, parv) == HUNTED_ISME) /* XXX DEAD */
{
while (text[2])
{
if (!IsOper(sptr))
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text);
+ sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text); /* XXX DEAD */
text++;
}
if (IsOper(sptr))
{
while (*text)
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text++);
- sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], "");
+ sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], *text++); /* XXX DEAD */
+ sendto_one(sptr, rpl_str(RPL_INFO), me.name, parv[0], ""); /* XXX DEAD */
}
- sendto_one(sptr, ":%s %d %s :Birth Date: %s, compile # %s",
+ sendto_one(sptr, ":%s %d %s :Birth Date: %s, compile # %s", /* XXX DEAD */
me.name, RPL_INFO, parv[0], creation, generation);
- sendto_one(sptr, ":%s %d %s :On-line since %s",
+ sendto_one(sptr, ":%s %d %s :On-line since %s", /* XXX DEAD */
me.name, RPL_INFO, parv[0], myctime(me.firsttime));
- sendto_one(sptr, rpl_str(RPL_ENDOFINFO), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_ENDOFINFO), me.name, parv[0]); /* XXX DEAD */
}
return 0;
}
*/
struct SLink *lp;
for (lp = sptr->user->invited; lp; lp = lp->next)
- sendto_one(cptr, rpl_str(RPL_INVITELIST), me.name, cptr->name,
- lp->value.chptr->chname);
- sendto_one(cptr, rpl_str(RPL_ENDOFINVITELIST), me.name, cptr->name);
+ send_reply(cptr, RPL_INVITELIST, lp->value.chptr->chname);
+ send_reply(cptr, RPL_ENDOFINVITELIST);
return 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]);
+ send_reply(sptr, ERR_NOSUCHNICK, parv[1]);
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]);
+ send_reply(sptr, ERR_NOTONCHANNEL, parv[2]);
return 0;
}
if (check_target_limit(sptr, acptr, acptr->name, 0))
return 0;
- sendto_one(sptr, rpl_str(RPL_INVITING), me.name, parv[0],
- acptr->name, parv[2]);
+ send_reply(sptr, RPL_INVITING, acptr->name, parv[2]);
if (acptr->user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY), me.name, parv[0],
- acptr->name, acptr->user->away);
+ send_reply(sptr, RPL_AWAY, acptr->name, acptr->user->away);
- if (MyUser(acptr))
- sendto_prefix_one(acptr, sptr, ":%s " MSG_INVITE " %s :%s", sptr->name,
- acptr->name, parv[2]);
- else
- sendto_one(acptr, "%s%s " TOK_INVITE " %s :%s", NumNick(sptr),
- acptr->name, parv[2]);
+ sendcmdto_one(sptr, CMD_INVITE, acptr, "%C :%s", acptr, parv[2]);
return 0;
}
if (!find_channel_member(sptr, chptr)) {
- sendto_one(sptr, err_str(ERR_NOTONCHANNEL), me.name, parv[0],
- chptr->chname);
+ send_reply(sptr, ERR_NOTONCHANNEL, chptr->chname);
return 0;
}
if (find_channel_member(acptr, chptr)) {
- sendto_one(sptr, err_str(ERR_USERONCHANNEL),
- me.name, parv[0], acptr->name, chptr->chname);
+ send_reply(sptr, ERR_USERONCHANNEL, acptr->name, chptr->chname);
return 0;
}
if (!is_chan_op(sptr, chptr)) {
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED),
- me.name, parv[0], chptr->chname);
+ send_reply(sptr, ERR_CHANOPRIVSNEEDED, chptr->chname);
return 0;
}
if (check_target_limit(sptr, acptr, acptr->name, 0))
return 0;
- sendto_one(sptr, rpl_str(RPL_INVITING), me.name, parv[0],
- acptr->name, chptr->chname);
+ send_reply(sptr, RPL_INVITING, acptr->name, chptr->chname);
if (acptr->user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY), me.name, parv[0],
- acptr->name, acptr->user->away);
+ send_reply(sptr, RPL_AWAY, acptr->name, acptr->user->away);
- if (MyConnect(acptr)) {
+ if (MyConnect(acptr))
add_invite(acptr, chptr);
- sendto_prefix_one(acptr, sptr, ":%s " MSG_INVITE " %s :%s",
- sptr->name, acptr->name, chptr->chname);
- }
- else
- sendto_one(acptr, "%s%s " TOK_INVITE " %s :%s",
- NumNick(sptr), acptr->name, chptr->chname);
+
+ sendcmdto_one(sptr, CMD_INVITE, acptr, "%C :%H", acptr, chptr);
return 0;
}
return 0;
}
if (!(acptr = FindUser(parv[1]))) {
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], parv[1]);
+ send_reply(sptr, ERR_NOSUCHNICK, parv[1]);
return 0;
}
if (!MyUser(acptr)) {
/*
* just relay the message
*/
- sendto_one(acptr, "%s%s " TOK_INVITE " %s :%s",
- NumNick(sptr), acptr->name, parv[2]);
+ sendcmdto_one(sptr, CMD_INVITE, acptr, "%C :%s", acptr, parv[2]);
return 0;
}
* allow invites to non existant channels, bleah
* avoid JOIN, INVITE, PART abuse
*/
- sendto_prefix_one(acptr, sptr, ":%s " MSG_INVITE " %s :%s", sptr->name,
- acptr->name, parv[2]);
+ sendcmdto_one(sptr, CMD_INVITE, acptr, "%C :%s", acptr, parv[2]);
return 0;
}
if (!find_channel_member(sptr, chptr)) {
- sendto_one(sptr, err_str(ERR_NOTONCHANNEL), me.name, parv[0],
- chptr->chname);
+ send_reply(sptr, ERR_NOTONCHANNEL, chptr->chname);
return 0;
}
if (find_channel_member(acptr, chptr)) {
- sendto_one(sptr, err_str(ERR_USERONCHANNEL),
- me.name, parv[0], acptr->name, chptr->chname);
+ send_reply(sptr, ERR_USERONCHANNEL, acptr->name, chptr->chname);
return 0;
}
add_invite(acptr, chptr);
- sendto_prefix_one(acptr, sptr, ":%s " MSG_INVITE " %s :%s", sptr->name,
- acptr->name, chptr->chname);
+ sendcmdto_one(sptr, CMD_INVITE, acptr, "%C :%H", acptr, chptr);
return 0;
}
*/
struct SLink *lp;
for (lp = sptr->user->invited; lp; lp = lp->next)
- sendto_one(cptr, rpl_str(RPL_INVITELIST), me.name, cptr->name,
+ 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);
+ sendto_one(cptr, rpl_str(RPL_ENDOFINVITELIST), me.name, cptr->name); /* XXX DEAD */
return 0;
}
if (!(acptr = FindUser(parv[1])))
{
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], parv[1]);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], parv[1]); /* XXX DEAD */
return 0;
}
{
if (IsModelessChannel(parv[2]) || IsLocalChannel(parv[2]))
{
- sendto_one(sptr, err_str(ERR_NOTONCHANNEL), me.name, parv[0], parv[2]);
+ sendto_one(sptr, err_str(ERR_NOTONCHANNEL), me.name, parv[0], parv[2]); /* XXX DEAD */
return 0;
}
if (check_target_limit(sptr, acptr, acptr->name, 0))
return 0;
- sendto_one(sptr, rpl_str(RPL_INVITING), me.name, parv[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],
+ 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],
+ 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],
+ 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),
+ sendto_one(sptr, err_str(ERR_USERONCHANNEL), /* XXX DEAD */
me.name, parv[0], acptr->name, chptr->chname);
return 0;
}
{
if (!is_chan_op(sptr, chptr))
{
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED),
+ sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED), /* XXX DEAD */
me.name, parv[0], chptr->chname);
return 0;
}
if (check_target_limit(sptr, acptr, acptr->name, 0))
return 0;
- sendto_one(sptr, rpl_str(RPL_INVITING), me.name, parv[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],
+ 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],
+ 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",
+ sendto_highprot_butone(acptr, 10, "%s%s " TOK_INVITE " %s :%s", /* XXX DEAD */
NumNick(sptr), acptr->name, chptr->chname);
return 0;
if (target) {
if (!(target[0] == '*' && target[1] == '\0')) {
if (!(acptr = find_match_server(target)))
- return send_error_to_client(sptr, ERR_NOSUCHSERVER, target);
+ return send_reply(sptr, ERR_NOSUCHSERVER, target);
if (!IsMe(acptr)) { /* manually propagate, since we don't set it */
if (!IsOper(sptr))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
sendcmdto_one(sptr, CMD_JUPE, acptr, "%C %c%s %s %Tu :%s", acptr,
flags & JUPE_ACTIVE ? '+' : '-', server, parv[3],
flags |= JUPE_LOCAL;
} else if (!IsOper(sptr))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
}
ajupe = jupe_find(server);
if (!(victim = findNUser(parv[1]))) {
if (IsUser(sptr))
- sendto_one(sptr,
- "%s NOTICE %s%s :KILL target disconnected before I got him :(",
- NumServ(&me), NumNick(sptr));
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :KILL target disconnected "
+ "before I got him :(", sptr);
return 0;
}
#if 0
* is done before the message is propagated --Bleep
*/
if (IsServer(victim) || IsMe(victim)) {
- return send_error_to_client(sptr, ERR_CANTKILLSERVER);
+ return send_error_to_client(sptr, ERR_CANTKILLSERVER); /* XXX DEAD */
return 0;
}
if (IsLocOp(sptr) && !MyConnect(victim)) {
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_error_to_client(sptr, ERR_NOPRIVILEGES); /* XXX DEAD */
return 0;
}
/*
*/
inpath = cptr->name;
- sendto_op_mask(IsServer(sptr) ? SNO_SERVKILL : SNO_OPERKILL,
- "Received KILL message for %s. From %s Path: %s!%s",
- victim->name, parv[0], cptr->name, path);
+ sendto_opmask_butone(0, IsServer(sptr) ? SNO_SERVKILL : SNO_OPERKILL,
+ "Received KILL message for %C. From %s Path: %C!%s",
+ victim, parv[0], cptr, path);
#if defined(SYSLOG_KILL)
ircd_log_kill(victim, sptr, cptr->name, path);
* was changed, the message has to be sent to all links, also
* back.
*/
-#if defined(EVERYONE_SENDS_NUMERICS)
- /*
- * just pass parv[0] here, it's the numeric nick of the sender
- */
- sendto_highprot_butone(cptr, 10, "%s " TOK_KILL " %s%s :%s!%s",
- parv[0], NumNick(victim), cptr->name, path);
-#else
- /*
- * translate to numerics
- */
- if (IsServer(sptr))
- sendto_highprot_butone(cptr, 10, "%s " TOK_KILL " %s%s :%s!%s",
- NumServ(sptr), NumNick(victim), cptr->name, path);
- else
- sendto_highprot_butone(cptr, 10, "%s%s " TOK_KILL " %s%s :%s!%s",
- NumNick(sptr), NumNick(victim), cptr->name, path);
-#endif
+ sendcmdto_serv_butone(sptr, CMD_KILL, cptr, "%C :%s!%s", victim, cptr->name,
+ path);
/*
* We *can* have crossed a NICK with this numeric... --Run
*
* by the next hop (short lag) the bounce won't propagate further.
*/
if (MyConnect(victim))
- sendto_one(cptr, "%s " TOK_KILL " %s%s :%s!%s (Ghost 5 Numeric Collided)",
- NumServ(&me), NumNick(victim), cptr->name, path);
+ sendcmdto_one(&me, CMD_KILL, cptr, "%C :%s!%s (Ghost 5 Numeric Collided)",
+ victim, cptr->name, path);
/*
* Set FLAGS_KILLED. This prevents exit_one_client from sending
* the unnecessary QUIT for this. (This flag should never be
* anyway (as this user don't exist there any more either)
*/
if (MyConnect(victim))
- sendto_prefix_one(victim, sptr, ":%s KILL %s :%s!%s",
- sptr->name, victim->name, cptr->name, path);
+ sendcmdto_one(sptr, CMD_KILL, victim, "%C :%s!%s", victim, cptr->name,
+ path);
/*
* the first space in path will be at the end of the
* opers name:
* servers in synch when nick change and kill collide
*/
if (!(victim = get_history(user, (long)15)))
- return send_error_to_client(sptr, ERR_NOSUCHNICK, user);
+ return send_reply(sptr, ERR_NOSUCHNICK, user);
- sendto_one(sptr, ":%s NOTICE %s :Changed KILL %s into %s",
- me.name, parv[0], user, victim->name);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Changed KILL %s into %s", sptr,
+ user, victim->name);
}
if (!MyConnect(victim) && IsLocOp(cptr))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
if (IsServer(victim) || IsMe(victim)) {
- return send_error_to_client(sptr, ERR_CANTKILLSERVER);
+ return send_reply(sptr, ERR_CANTKILLSERVER);
}
/*
* if the user is +k, prevent a kill from local user
*/
if (IsChannelService(victim))
- return send_error_to_client(sptr, ERR_ISCHANSERVICE, "KILL", victim->name);
+ return send_reply(sptr, ERR_ISCHANSERVICE, "KILL", victim->name);
#ifdef LOCAL_KILL_ONLY
if (!MyConnect(victim)) {
- sendto_one(sptr, ":%s NOTICE %s :Nick %s isnt on your server",
- me.name, parv[0], victim->name);
+ send_reply(&me, CMD_NOTICE, sptr, "%C :Nick %s isnt on your server", sptr,
+ victim->name);
return 0;
}
#endif
* Note: "victim->name" is used instead of "user" because we may
* have changed the target because of the nickname change.
*/
- sendto_op_mask(SNO_OPERKILL,
- "Received KILL message for %s. From %s Path: %s!%s",
- victim->name, parv[0], inpath, path);
+ sendto_opmask_butone(0, SNO_OPERKILL,
+ "Received KILL message for %s. From %s Path: %s!%s",
+ victim->name, parv[0], inpath, path);
#if defined(SYSLOG_KILL)
ircd_log_kill(victim, sptr, inpath, path);
* Suicide kills are NOT passed on --SRB
*/
if (!MyConnect(victim)) {
- sendto_highprot_butone(cptr, 10, "%s%s " TOK_KILL " %s%s :%s!%s",
- NumNick(sptr), NumNick(victim), inpath, path);
+ sendcmdto_serv_butone(sptr, CMD_KILL, cptr, "%C :%s!%s", victim, inpath,
+ path);
/*
* Set FLAGS_KILLED. This prevents exit_one_client from sending
* notification chasing the above kill, it won't get far
* anyway (as this user don't exist there any more either)
*/
- sendto_prefix_one(victim, sptr, ":%s KILL %s :%s!%s",
- parv[0], victim->name, inpath, path);
+ sendcmdto_one(sptr, CMD_KILL, victim, "%C :%s!%s", victim, inpath, path);
sprintf_irc(buf, "Local kill by %s (%s)", sptr->name, comment);
}
#else /* !defined(OPER_KILL) */
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
#endif /* !defined(OPER_KILL) */
}
#ifdef OPER_KILL
if (!IsPrivileged(cptr))
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return 0;
}
#else
if (!IsServer(cptr))
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return 0;
}
#endif
*/
if (!(acptr = get_history(user, (long)15)))
{
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], user);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], user); /* XXX DEAD */
return 0;
}
- sendto_one(sptr, ":%s NOTICE %s :Changed KILL %s into %s",
+ sendto_one(sptr, ":%s NOTICE %s :Changed KILL %s into %s", /* XXX DEAD */
me.name, parv[0], user, acptr->name);
chasing = 1;
}
else if (!(acptr = findNUser(user)))
{
if (IsUser(sptr))
- sendto_one(sptr,
+ sendto_one(sptr, /* XXX DEAD */
"%s NOTICE %s%s :KILL target disconnected before I got him :(",
NumServ(&me), NumNick(sptr));
return 0;
}
if (!MyConnect(acptr) && IsLocOp(cptr))
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return 0;
}
if (IsServer(acptr) || IsMe(acptr))
{
- sendto_one(sptr, err_str(ERR_CANTKILLSERVER), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_CANTKILLSERVER), me.name, parv[0]); /* XXX DEAD */
return 0;
}
/* if the user is +k, prevent a kill from local user */
if (IsChannelService(acptr) && MyUser(sptr))
{
- sendto_one(sptr, err_str(ERR_ISCHANSERVICE), me.name,
+ sendto_one(sptr, err_str(ERR_ISCHANSERVICE), me.name, /* XXX DEAD */
parv[0], "KILL", acptr->name);
return 0;
}
#ifdef LOCAL_KILL_ONLY
if (MyConnect(sptr) && !MyConnect(acptr))
{
- sendto_one(sptr, ":%s NOTICE %s :Nick %s isnt on your server",
+ sendto_one(sptr, ":%s NOTICE %s :Nick %s isnt on your server", /* XXX DEAD */
me.name, parv[0], acptr->name);
return 0;
}
*/
if (IsLocOp(sptr) && !MyConnect(acptr))
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return 0;
}
- sendto_op_mask(IsServer(sptr) ? SNO_SERVKILL : SNO_OPERKILL,
+ sendto_op_mask(IsServer(sptr) ? SNO_SERVKILL : SNO_OPERKILL, /* XXX DEAD */
"Received KILL message for %s. From %s Path: %s!%s",
acptr->name, parv[0], inpath, path);
#if defined(USE_SYSLOG) && defined(SYSLOG_KILL)
*/
if (!MyConnect(acptr) || !MyConnect(sptr) || !IsAnOper(sptr))
{
- sendto_highprot_butone(cptr, 10, ":%s " TOK_KILL " %s%s :%s!%s",
+ sendto_highprot_butone(cptr, 10, ":%s " TOK_KILL " %s%s :%s!%s", /* XXX DEAD */
parv[0], NumNick(acptr), inpath, path);
/* We *can* have crossed a NICK with this numeric... --Run */
/* Note the following situation:
* Therefore we still need to detect numeric nick collisions too.
*/
if (MyConnect(acptr) && IsServer(cptr))
- sendto_one(cptr, "%s " TOK_KILL " %s%s :%s!%s (Ghost5)",
+ sendto_one(cptr, "%s " TOK_KILL " %s%s :%s!%s (Ghost5)", /* XXX DEAD */
NumServ(&me), NumNick(acptr), inpath, path);
acptr->flags |= FLAGS_KILLED;
}
* anyway (as this user don't exist there any more either)
*/
if (MyConnect(acptr))
- sendto_prefix_one(acptr, sptr, ":%s KILL %s :%s!%s",
+ sendto_prefix_one(acptr, sptr, ":%s KILL %s :%s!%s", /* XXX DEAD */
parv[0], acptr->name, inpath, path);
/*
* Set FLAGS_KILLED. This prevents exit_one_client from sending
if (parc > 2)
{
- if (hunt_server(1, cptr, sptr, "%s%s LINKS %s :%s", 1, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_LINKS, cptr, 1, "%C :%s", 1, parc, parv) !=
HUNTED_ISME)
return 0;
mask = parv[2];
continue;
if (!BadPtr(mask) && match(mask, acptr->name))
continue;
- sendto_one(sptr, rpl_str(RPL_LINKS),
- me.name, parv[0], acptr->name, acptr->serv->up->name,
+ send_reply(sptr, RPL_LINKS, acptr->name, acptr->serv->up->name,
#ifndef GODMODE
acptr->hopcount, acptr->serv->prot,
#else /* GODMODE */
(acptr->info[0] ? acptr->info : "(Unknown Location)"));
}
- sendto_one(sptr, rpl_str(RPL_ENDOFLINKS), me.name, parv[0],
- BadPtr(mask) ? "*" : mask);
+ send_reply(sptr, RPL_ENDOFLINKS, BadPtr(mask) ? "*" : mask);
return 0;
}
if (parc > 2)
{
- if (hunt_server(1, cptr, sptr, "%s%s LINKS %s :%s", 1, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_LINKS, cptr, 1, "%C :%s", 1, parc, parv) !=
HUNTED_ISME)
return 0;
mask = parv[2];
continue;
if (!BadPtr(mask) && match(mask, acptr->name))
continue;
- sendto_one(sptr, rpl_str(RPL_LINKS),
- me.name, parv[0], acptr->name, acptr->serv->up->name,
+ send_reply(sptr, RPL_LINKS, acptr->name, acptr->serv->up->name,
#ifndef GODMODE
acptr->hopcount, acptr->serv->prot,
#else /* GODMODE */
(acptr->info[0] ? acptr->info : "(Unknown Location)"));
}
- sendto_one(sptr, rpl_str(RPL_ENDOFLINKS), me.name, parv[0],
- BadPtr(mask) ? "*" : mask);
+ send_reply(sptr, RPL_ENDOFLINKS, BadPtr(mask) ? "*" : mask);
return 0;
}
if (parc > 2)
{
- if (hunt_server(1, cptr, sptr, "%s%s LINKS %s :%s", 1, parc, parv) !=
+ if (hunt_server(1, cptr, sptr, "%s%s LINKS %s :%s", 1, parc, parv) != /* XXX DEAD */
HUNTED_ISME)
return 0;
mask = parv[2];
continue;
if (!BadPtr(mask) && match(mask, acptr->name))
continue;
- sendto_one(sptr, rpl_str(RPL_LINKS),
+ sendto_one(sptr, rpl_str(RPL_LINKS), /* XXX DEAD */
me.name, parv[0], acptr->name, acptr->serv->up->name,
#ifndef GODMODE
acptr->hopcount, acptr->serv->prot,
(acptr->info[0] ? acptr->info : "(Unknown Location)"));
}
- sendto_one(sptr, rpl_str(RPL_ENDOFLINKS), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_ENDOFLINKS), me.name, parv[0], /* XXX DEAD */
BadPtr(mask) ? "*" : mask);
return 0;
}
sptr->listing->chptr->mode.mode &= ~MODE_LISTED;
MyFree(sptr->listing);
sptr->listing = 0;
- sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, sptr->name);
+ send_reply(sptr, RPL_LISTEND);
if (parc < 2)
return 0; /* Let LIST abort a listing. */
}
if (show_usage)
{
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- "Usage: \002/QUOTE LIST\002 \037parameters\037");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- "Where \037parameters\037 is a space or comma seperated "
- "list of one or more of:");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- " \002<\002\037max_users\037 ; Show all channels with less "
- "than \037max_users\037.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- " \002>\002\037min_users\037 ; Show all channels with more "
- "than \037min_users\037.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- " \002C<\002\037max_minutes\037 ; Channels that exist less "
- "than \037max_minutes\037.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- " \002C>\002\037min_minutes\037 ; Channels that exist more "
- "than \037min_minutes\037.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- " \002T<\002\037max_minutes\037 ; Channels with a topic last "
- "set less than \037max_minutes\037 ago.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- " \002T>\002\037min_minutes\037 ; Channels with a topic last "
- "set more than \037min_minutes\037 ago.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
- "Example: LIST <3,>1,C<10,T>0 ; 2 users, younger than 10 min., "
- "topic set.");
+ send_reply(sptr, RPL_LISTUSAGE,
+ "Usage: \002/QUOTE LIST\002 \037parameters\037");
+ send_reply(sptr, RPL_LISTUSAGE,
+ "Where \037parameters\037 is a space or comma seperated "
+ "list of one or more of:");
+ send_reply(sptr, RPL_LISTUSAGE,
+ " \002<\002\037max_users\037 ; Show all channels with less "
+ "than \037max_users\037.");
+ send_reply(sptr, RPL_LISTUSAGE,
+ " \002>\002\037min_users\037 ; Show all channels with more "
+ "than \037min_users\037.");
+ send_reply(sptr, RPL_LISTUSAGE,
+ " \002C<\002\037max_minutes\037 ; Channels that exist less "
+ "than \037max_minutes\037.");
+ send_reply(sptr, RPL_LISTUSAGE,
+ " \002C>\002\037min_minutes\037 ; Channels that exist more "
+ "than \037min_minutes\037.");
+ send_reply(sptr, RPL_LISTUSAGE,
+ " \002T<\002\037max_minutes\037 ; Channels with a topic last "
+ "set less than \037max_minutes\037 ago.");
+ send_reply(sptr, RPL_LISTUSAGE,
+ " \002T>\002\037min_minutes\037 ; Channels with a topic last "
+ "set more than \037min_minutes\037 ago.");
+ send_reply(sptr, RPL_LISTUSAGE,
+ "Example: LIST <3,>1,C<10,T>0 ; 2 users, younger than 10 "
+ "min., topic set.");
return 0;
}
- sendto_one(sptr, rpl_str(RPL_LISTSTART), me.name, parv[0]);
+ send_reply(sptr, RPL_LISTSTART);
if (!show_channels)
{
MyFree(sptr->listing);
sptr->listing = 0;
}
- sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, parv[0]);
+ send_reply(sptr, RPL_LISTEND);
return 0;
}
{
chptr = FindChannel(name);
if (chptr && ShowChannel(sptr, chptr) && sptr->user)
- sendto_one(sptr, rpl_str(RPL_LIST), me.name, parv[0],
- chptr->chname,
- chptr->users - number_of_zombies(chptr), chptr->topic);
+ send_reply(sptr, RPL_LIST, chptr->chname,
+ chptr->users - number_of_zombies(chptr), chptr->topic);
}
- sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, parv[0]);
+ send_reply(sptr, RPL_LISTEND);
return 0;
}
sptr->listing->chptr->mode.mode &= ~MODE_LISTED;
MyFree(sptr->listing);
sptr->listing = 0;
- sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, sptr->name);
+ sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, sptr->name); /* XXX DEAD */
if (parc < 2)
return 0; /* Let LIST abort a listing. */
}
if (show_usage)
{
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
"Usage: \002/QUOTE LIST\002 \037parameters\037");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
"Where \037parameters\037 is a space or comma seperated "
"list of one or more of:");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
" \002<\002\037max_users\037 ; Show all channels with less "
"than \037max_users\037.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
" \002>\002\037min_users\037 ; Show all channels with more "
"than \037min_users\037.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
" \002C<\002\037max_minutes\037 ; Channels that exist less "
"than \037max_minutes\037.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
" \002C>\002\037min_minutes\037 ; Channels that exist more "
"than \037min_minutes\037.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
" \002T<\002\037max_minutes\037 ; Channels with a topic last "
"set less than \037max_minutes\037 ago.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
" \002T>\002\037min_minutes\037 ; Channels with a topic last "
"set more than \037min_minutes\037 ago.");
- sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LISTUSAGE), me.name, parv[0], /* XXX DEAD */
"Example: LIST <3,>1,C<10,T>0 ; 2 users, younger than 10 min., "
"topic set.");
return 0;
}
- sendto_one(sptr, rpl_str(RPL_LISTSTART), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_LISTSTART), me.name, parv[0]); /* XXX DEAD */
if (!show_channels)
{
MyFree(sptr->listing);
sptr->listing = 0;
}
- sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, parv[0]); /* XXX DEAD */
return 0;
}
{
chptr = FindChannel(name);
if (chptr && ShowChannel(sptr, chptr) && sptr->user)
- sendto_one(sptr, rpl_str(RPL_LIST), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LIST), me.name, parv[0], /* XXX DEAD */
ShowChannel(sptr, chptr) ? chptr->chname : "*",
chptr->users - number_of_zombies(chptr), chptr->topic);
}
- sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_LISTEND), me.name, parv[0]); /* XXX DEAD */
return 0;
}
#endif /* 0 */
{
int longoutput = MyUser(sptr) || IsOper(sptr);
if (parc > 2)
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_LUSERS " %s :%s", 2, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_LUSERS, cptr, 0, "%s :%C", 2, parc, parv) !=
HUNTED_ISME)
return 0;
- sendto_one(sptr, rpl_str(RPL_LUSERCLIENT), me.name, parv[0],
- UserStats.clients - UserStats.inv_clients, UserStats.inv_clients, UserStats.servers);
+ send_reply(sptr, RPL_LUSERCLIENT, UserStats.clients - UserStats.inv_clients,
+ UserStats.inv_clients, UserStats.servers);
if (longoutput && UserStats.opers)
- sendto_one(sptr, rpl_str(RPL_LUSEROP), me.name, parv[0], UserStats.opers);
+ send_reply(sptr, RPL_LUSEROP, UserStats.opers);
if (UserStats.unknowns > 0)
- sendto_one(sptr, rpl_str(RPL_LUSERUNKNOWN), me.name, parv[0],
- UserStats.unknowns);
+ send_reply(sptr, RPL_LUSERUNKNOWN, UserStats.unknowns);
if (longoutput && UserStats.channels > 0)
- sendto_one(sptr, rpl_str(RPL_LUSERCHANNELS), me.name, parv[0],
- UserStats.channels);
- sendto_one(sptr, rpl_str(RPL_LUSERME), me.name, parv[0], UserStats.local_clients,
- UserStats.local_servers);
+ send_reply(sptr, RPL_LUSERCHANNELS, UserStats.channels);
+ send_reply(sptr, RPL_LUSERME, UserStats.local_clients,
+ UserStats.local_servers);
- if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr,
- ":%s NOTICE %s :Highest connection count: %d (%d clients)",
- me.name, parv[0], max_connection_count, max_client_count);
- else
- sendto_one(sptr,
- "%s NOTICE %s%s :Highest connection count: %d (%d clients)",
- NumServ(&me), NumNick(sptr), max_connection_count, max_client_count);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Highest connection count: "
+ "%d (%d clients)", max_connection_count, max_client_count);
return 0;
}
{
int longoutput = MyUser(sptr) || IsOper(sptr);
if (parc > 2)
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_LUSERS " %s :%s", 2, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_LUSERS, cptr, 0, "%s :%C", 2, parc, parv) !=
HUNTED_ISME)
return 0;
- sendto_one(sptr, rpl_str(RPL_LUSERCLIENT), me.name, parv[0],
- UserStats.clients - UserStats.inv_clients, UserStats.inv_clients, UserStats.servers);
+ send_reply(sptr, RPL_LUSERCLIENT, UserStats.clients - UserStats.inv_clients,
+ UserStats.inv_clients, UserStats.servers);
if (longoutput && UserStats.opers)
- sendto_one(sptr, rpl_str(RPL_LUSEROP), me.name, parv[0], UserStats.opers);
+ send_reply(sptr, RPL_LUSEROP, UserStats.opers);
if (UserStats.unknowns > 0)
- sendto_one(sptr, rpl_str(RPL_LUSERUNKNOWN), me.name, parv[0],
- UserStats.unknowns);
+ send_reply(sptr, RPL_LUSERUNKNOWN, UserStats.unknowns);
if (longoutput && UserStats.channels > 0)
- sendto_one(sptr, rpl_str(RPL_LUSERCHANNELS), me.name, parv[0],
- UserStats.channels);
- sendto_one(sptr, rpl_str(RPL_LUSERME), me.name, parv[0], UserStats.local_clients,
- UserStats.local_servers);
+ send_reply(sptr, RPL_LUSERCHANNELS, UserStats.channels);
+ send_reply(sptr, RPL_LUSERME, UserStats.local_clients,
+ UserStats.local_servers);
- if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr,
- ":%s NOTICE %s :Highest connection count: %d (%d clients)",
- me.name, parv[0], max_connection_count, max_client_count);
- else
- sendto_one(sptr,
- "%s NOTICE %s%s :Highest connection count: %d (%d clients)",
- NumServ(&me), NumNick(sptr), max_connection_count, max_client_count);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :Highest connection count: "
+ "%d (%d clients)", max_connection_count, max_client_count);
return 0;
}
{
int longoutput = MyUser(sptr) || IsOper(sptr);
if (parc > 2)
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_LUSERS " %s :%s", 2, parc, parv) !=
+ if (hunt_server(0, cptr, sptr, "%s%s " TOK_LUSERS " %s :%s", 2, parc, parv) != /* XXX DEAD */
HUNTED_ISME)
return 0;
- sendto_one(sptr, rpl_str(RPL_LUSERCLIENT), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LUSERCLIENT), me.name, parv[0], /* XXX DEAD */
UserStats.clients - UserStats.inv_clients, UserStats.inv_clients, UserStats.servers);
if (longoutput && UserStats.opers)
- sendto_one(sptr, rpl_str(RPL_LUSEROP), me.name, parv[0], UserStats.opers);
+ sendto_one(sptr, rpl_str(RPL_LUSEROP), me.name, parv[0], UserStats.opers); /* XXX DEAD */
if (UserStats.unknowns > 0)
- sendto_one(sptr, rpl_str(RPL_LUSERUNKNOWN), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LUSERUNKNOWN), me.name, parv[0], /* XXX DEAD */
UserStats.unknowns);
if (longoutput && UserStats.channels > 0)
- sendto_one(sptr, rpl_str(RPL_LUSERCHANNELS), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_LUSERCHANNELS), me.name, parv[0], /* XXX DEAD */
UserStats.channels);
- sendto_one(sptr, rpl_str(RPL_LUSERME), me.name, parv[0], UserStats.local_clients,
+ sendto_one(sptr, rpl_str(RPL_LUSERME), me.name, parv[0], UserStats.local_clients, /* XXX DEAD */
UserStats.local_servers);
if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr,
+ sendto_one(sptr, /* XXX DEAD */
":%s NOTICE %s :Highest connection count: %d (%d clients)",
me.name, parv[0], max_connection_count, max_client_count);
else
- sendto_one(sptr,
+ sendto_one(sptr, /* XXX DEAD */
"%s NOTICE %s%s :Highest connection count: %d (%d clients)",
NumServ(&me), NumNick(sptr), max_connection_count, max_client_count);
parv[1] = "*";
dump_map(sptr, &me, parv[1], 0);
- sendto_one(sptr, rpl_str(RPL_MAPEND), me.name, parv[0]);
+ send_reply(sptr, RPL_MAPEND);
return 0;
}
parv[1] = "*";
dump_map(sptr, &me, parv[1], 0);
- sendto_one(sptr, rpl_str(RPL_MAPEND), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_MAPEND), me.name, parv[0]); /* XXX DEAD */
return 0;
}
*modebuf = *parabuf = '\0';
modebuf[1] = '\0';
channel_modes(sptr, modebuf, parabuf, chptr);
- sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0],
- chptr->chname, modebuf, parabuf);
- sendto_one(sptr, rpl_str(RPL_CREATIONTIME), me.name, parv[0],
- chptr->chname, chptr->creationtime);
+ send_reply(sptr, RPL_CHANNELMODEIS, chptr->chname, modebuf, parabuf);
+ send_reply(sptr, RPL_CREATIONTIME, chptr->chname, chptr->creationtime);
return 0;
}
*/
if (IsModelessChannel(chptr->chname)) {
if (IsUser(sptr))
- sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0],
- chptr->chname, "+nt", "");
+ send_reply(sptr, RPL_CHANNELMODEIS, chptr->chname, "+nt", "");
return 0;
}
*modebuf = *parabuf = '\0';
modebuf[1] = '\0';
channel_modes(sptr, modebuf, parabuf, chptr);
- sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0],
- chptr->chname, modebuf, parabuf);
- sendto_one(sptr, rpl_str(RPL_CREATIONTIME), me.name, parv[0],
- chptr->chname, chptr->creationtime);
+ send_reply(sptr, RPL_CHANNELMODEIS, chptr->chname, modebuf, parabuf);
+ send_reply(sptr, RPL_CREATIONTIME, chptr->chname, chptr->creationtime);
return 0;
}
if (!(sendts = set_mode(cptr, sptr, chptr, parc - 2, parv + 2,
modebuf, parabuf, nparabuf, &badop))) {
- sendto_one(sptr, err_str(find_channel_member(sptr, chptr) ? ERR_CHANOPRIVSNEEDED :
- ERR_NOTONCHANNEL), me.name, parv[0], chptr->chname);
+ send_reply(sptr, (find_channel_member(sptr, chptr) ?
+ ERR_CHANOPRIVSNEEDED : ERR_NOTONCHANNEL), chptr->chname);
return 0;
}
if (badop >= 2)
- send_hack_notice(cptr, sptr, parc, parv, badop, 1);
+ send_hack_notice(cptr, sptr, parc, parv, badop, 1); /* XXX DYING */
if (strlen(modebuf) > 1 || sendts > 0) {
if (badop != 2 && strlen(modebuf) > 1) {
#ifdef OPER_MODE_LCHAN
if (LocalChanOperMode) {
- sendto_channel_butserv(chptr, &me, ":%s MODE %s %s %s",
- me.name, chptr->chname, modebuf, parabuf);
- sendto_op_mask(SNO_HACK4,"OPER MODE: %s MODE %s %s %s",
- sptr->name, chptr->chname, modebuf, parabuf);
+ sendcmdto_channel_butserv(&me, CMD_MODE, chptr, "%H %s %s", chptr,
+ modebuf, parabuf);
+ sendto_opmask_butone(0, SNO_HACK4, "OPER MODE: %C MODE %H %s %s",
+ sptr, chptr, modebuf, parabuf);
}
else
#endif
- sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s",
- parv[0], chptr->chname, modebuf, parabuf);
+ sendcmdto_channel_butserv(sptr, CMD_MODE, chptr, "%H %s %s", chptr,
+ modebuf, parabuf);
}
if (IsLocalChannel(chptr->chname))
return 0;
if (*modebuf == '\0')
strcpy(modebuf, "+");
if (badop != 2) {
- sendto_highprot_butone(cptr, 10, "%s " TOK_MODE " %s %s %s " TIME_T_FMT,
- NumServ(sptr), chptr->chname, modebuf, nparabuf,
- (badop == 4) ? (time_t) 0 : chptr->creationtime);
+ sendcmdto_serv_butone(sptr, CMD_MODE, cptr, "%H %s %s %Tu", chptr,
+ modebuf, nparabuf, (badop == 4) ? (time_t) 0 :
+ chptr->creationtime);
}
}
else {
- if (IsServer(sptr))
- sendto_highprot_butone(cptr, 10, "%s " TOK_MODE " %s %s %s",
- NumServ(sptr), chptr->chname, modebuf, nparabuf);
- else
- sendto_highprot_butone(cptr, 10, "%s%s " TOK_MODE " %s %s %s",
- NumNick(sptr), chptr->chname, modebuf, nparabuf);
+ sendcmdto_serv_butone(sptr, CMD_MODE, cptr, "%H %s %s", chptr, modebuf,
+ nparabuf);
}
}
return 0;
*/
if (IsModelessChannel(chptr->chname)) {
if (IsUser(sptr))
- sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0],
- chptr->chname, "+nt", "");
+ send_reply(sptr, RPL_CHANNELMODEIS, chptr->chname, "+nt", "");
return 0;
}
*modebuf = *parabuf = '\0';
modebuf[1] = '\0';
channel_modes(sptr, modebuf, parabuf, chptr);
- sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0],
- chptr->chname, modebuf, parabuf);
- sendto_one(sptr, rpl_str(RPL_CREATIONTIME), me.name, parv[0],
- chptr->chname, chptr->creationtime);
+ send_reply(sptr, RPL_CHANNELMODEIS, chptr->chname, modebuf, parabuf);
+ send_reply(sptr, RPL_CREATIONTIME, chptr->chname, chptr->creationtime);
return 0;
}
if (!(sendts = set_mode(cptr, sptr, chptr, parc - 2, parv + 2,
modebuf, parabuf, nparabuf, &badop))) {
- sendto_one(sptr, err_str(find_channel_member(sptr, chptr) ? ERR_CHANOPRIVSNEEDED :
- ERR_NOTONCHANNEL), me.name, parv[0], chptr->chname);
+ send_reply(sptr, (find_channel_member(sptr, chptr) ?
+ ERR_CHANOPRIVSNEEDED : ERR_NOTONCHANNEL), chptr->chname);
return 0;
}
if (badop >= 2)
- send_hack_notice(cptr, sptr, parc, parv, badop, 1);
+ send_hack_notice(cptr, sptr, parc, parv, badop, 1); /* XXX DYING */
if (strlen(modebuf) > 1 || sendts > 0) {
if (badop != 2 && strlen(modebuf) > 1) {
#ifdef OPER_MODE_LCHAN
if (LocalChanOperMode) {
- sendto_channel_butserv(chptr, &me, ":%s MODE %s %s %s",
- me.name, chptr->chname, modebuf, parabuf);
- sendto_op_mask(SNO_HACK4,"OPER MODE: %s MODE %s %s %s",
- me.name, chptr->chname, modebuf, parabuf);
+ sendcmdto_channel_butserv(&me, CMD_MODE, chptr, "%H %s %s", chptr,
+ modebuf, parabuf);
+ sendto_opmask_butone(0, SNO_HACK4, "OPER MODE: %C MODE %H %s %s",
+ sptr, chptr, modebuf, parabuf);
}
else
#endif
- sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s",
- parv[0], chptr->chname, modebuf, parabuf);
+ sendcmdto_channel_butserv(sptr, CMD_MODE, chptr, "%H %s %s", chptr,
+ modebuf, parabuf);
}
if (IsLocalChannel(chptr->chname))
return 0;
if (*modebuf == '\0')
strcpy(modebuf, "+");
if (badop != 2) {
- sendto_highprot_butone(cptr, 10, "%s " TOK_MODE " %s %s %s " TIME_T_FMT,
- NumServ(sptr), chptr->chname, modebuf, nparabuf,
- (badop == 4) ? (time_t) 0 : chptr->creationtime);
+ sendcmdto_serv_butone(sptr, CMD_MODE, cptr, "%H %s %s %Tu", chptr,
+ modebuf, nparabuf, (badop == 4) ? (time_t) 0 :
+ chptr->creationtime);
}
}
else {
- if (IsServer(sptr))
- sendto_highprot_butone(cptr, 10, "%s " TOK_MODE " %s %s %s",
- NumServ(sptr), chptr->chname, modebuf, nparabuf);
- else
- sendto_highprot_butone(cptr, 10, "%s%s " TOK_MODE " %s %s %s",
- NumNick(sptr), chptr->chname, modebuf, nparabuf);
+ sendcmdto_serv_butone(sptr, CMD_MODE, cptr, "%H %s %s", chptr, modebuf,
+ nparabuf);
}
}
return 0;
*/
if (IsModelessChannel(chptr->chname)) {
if (IsUser(sptr))
- sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0], /* XXX DEAD */
chptr->chname, "+nt", "");
return 0;
}
*modebuf = *parabuf = '\0';
modebuf[1] = '\0';
channel_modes(sptr, modebuf, parabuf, chptr);
- sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_CHANNELMODEIS), me.name, parv[0], /* XXX DEAD */
chptr->chname, modebuf, parabuf);
- sendto_one(sptr, rpl_str(RPL_CREATIONTIME), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_CREATIONTIME), me.name, parv[0], /* XXX DEAD */
chptr->chname, chptr->creationtime);
return 0;
}
if (!(sendts = set_mode(cptr, sptr, chptr, parc - 2, parv + 2,
modebuf, parabuf, nparabuf, &badop))) {
- sendto_one(sptr, err_str(find_channel_member(sptr, chptr) ? ERR_CHANOPRIVSNEEDED :
+ sendto_one(sptr, err_str(find_channel_member(sptr, chptr) ? ERR_CHANOPRIVSNEEDED : /* XXX DEAD */
ERR_NOTONCHANNEL), me.name, parv[0], chptr->chname);
return 0;
}
if (badop != 2 && strlen(modebuf) > 1) {
#ifdef OPER_MODE_LCHAN
if (LocalChanOperMode) {
- sendto_channel_butserv(chptr, &me, ":%s MODE %s %s %s",
+ sendto_channel_butserv(chptr, &me, ":%s MODE %s %s %s", /* XXX DEAD */
me.name, chptr->chname, modebuf, parabuf);
- sendto_op_mask(SNO_HACK4,"OPER MODE: %s MODE %s %s %s",
+ sendto_op_mask(SNO_HACK4,"OPER MODE: %s MODE %s %s %s", /* XXX DEAD */
me.name, chptr->chname, modebuf, parabuf);
}
else
#endif
- sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s",
+ sendto_channel_butserv(chptr, sptr, ":%s MODE %s %s %s", /* XXX DEAD */
parv[0], chptr->chname, modebuf, parabuf);
}
if (IsLocalChannel(chptr->chname))
if (*modebuf == '\0')
strcpy(modebuf, "+");
if (badop != 2) {
- sendto_highprot_butone(cptr, 10, "%s " TOK_MODE " %s %s %s " TIME_T_FMT,
+ sendto_highprot_butone(cptr, 10, "%s " TOK_MODE " %s %s %s " TIME_T_FMT, /* XXX DEAD */
NumServ(sptr), chptr->chname, modebuf, nparabuf,
(badop == 4) ? (time_t) 0 : chptr->creationtime);
}
}
else {
if (IsServer(sptr))
- sendto_highprot_butone(cptr, 10, "%s " TOK_MODE " %s %s %s",
+ sendto_highprot_butone(cptr, 10, "%s " TOK_MODE " %s %s %s", /* XXX DEAD */
NumServ(sptr), chptr->chname, modebuf, nparabuf);
else
- sendto_highprot_butone(cptr, 10, "%s%s " TOK_MODE " %s %s %s",
+ sendto_highprot_butone(cptr, 10, "%s%s " TOK_MODE " %s %s %s", /* XXX DEAD */
NumNick(sptr), chptr->chname, modebuf, nparabuf);
}
}
{
no_motd = 0;
#endif
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_MOTD " %s", 1, parc,
- parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_MODE, cptr, 0, "%C", 1, parc, parv) !=
+ HUNTED_ISME)
return 0;
#ifdef NODEFAULTMOTD
}
}
if (temp == 0)
{
- sendto_one(sptr, err_str(ERR_NOMOTD), me.name, parv[0]);
+ send_reply(sptr, ERR_NOMOTD);
return 0;
}
#ifdef NODEFAULTMOTD
#endif
if (tm) /* Not remote? */
{
- sendto_one(sptr, rpl_str(RPL_MOTDSTART), me.name, parv[0], me.name);
- sendto_one(sptr, ":%s %d %s :- %d/%d/%d %d:%02d", me.name, RPL_MOTD,
- parv[0], tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year,
- tm->tm_hour, tm->tm_min);
+ send_reply(sptr, RPL_MOTDSTART, me.name);
+ send_reply(sptr, RPL_EXPLICIT | RPL_MOTD, "- %d/%d/%d %d:%02d",
+ tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year, tm->tm_hour,
+ tm->tm_min);
count = 100;
}
else
count = 3;
for (; temp; temp = temp->next)
{
- sendto_one(sptr, rpl_str(RPL_MOTD), me.name, parv[0], temp->line);
+ send_reply(sptr, RPL_MOTD, temp->line);
if (--count == 0)
break;
}
}
else
{
- sendto_one(sptr, rpl_str(RPL_MOTDSTART), me.name, parv[0], me.name);
- sendto_one(sptr, ":%s %d %s :%s", me.name, RPL_MOTD, parv[0],
- "\ 2Type /MOTD to read the AUP before continuing using this service.\ 2");
- sendto_one(sptr,
- ":%s %d %s :The message of the day was last changed: %d/%d/%d", me.name,
- RPL_MOTD, parv[0], tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year);
+ send_reply(sptr, RPL_MOTDSTART, me.name);
+ send_reply(sptr, RPL_EXPLICIT | RPL_MOTD, ":\ 2Type /MOTD to read the "
+ "AUP before continuing using this service.\ 2");
+ send_reply(sptr, RPL_EXPLICIT | RPL_MOTD, ":The message of the day was "
+ "last changed: %d/%d/%d", tm->tm_mday, tm->tm_mon + 1,
+ 1900 + tm->tm_year);
}
#endif
- sendto_one(sptr, rpl_str(RPL_ENDOFMOTD), me.name, parv[0]);
+ send_reply(sptr, RPL_ENDOFMOTD);
return 0;
}
{
no_motd = 0;
#endif
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_MOTD " %s", 1, parc,
- parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_MOTD, cptr, 0, "%C", 1, parc, parv) !=
+ HUNTED_ISME)
return 0;
#ifdef NODEFAULTMOTD
}
}
if (temp == 0)
{
- sendto_one(sptr, err_str(ERR_NOMOTD), me.name, parv[0]);
+ send_reply(sptr, ERR_NOMOTD);
return 0;
}
#ifdef NODEFAULTMOTD
#endif
if (tm) /* Not remote? */
{
- sendto_one(sptr, rpl_str(RPL_MOTDSTART), me.name, parv[0], me.name);
- sendto_one(sptr, ":%s %d %s :- %d/%d/%d %d:%02d", me.name, RPL_MOTD,
- parv[0], tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year,
- tm->tm_hour, tm->tm_min);
+ send_reply(sptr, RPL_MOTDSTART, me.name);
+ send_reply(sptr, RPL_EXPLICIT | RPL_MOTD, ":- %d/%d/%d %d:%02d",
+ tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year, tm->tm_hour,
+ tm->tm_min);
count = 100;
}
else
count = 3;
for (; temp; temp = temp->next)
{
- sendto_one(sptr, rpl_str(RPL_MOTD), me.name, parv[0], temp->line);
+ send_reply(sptr, RPL_MOTD, temp->line);
if (--count == 0)
break;
}
}
else
{
- sendto_one(sptr, rpl_str(RPL_MOTDSTART), me.name, parv[0], me.name);
- sendto_one(sptr, ":%s %d %s :%s", me.name, RPL_MOTD, parv[0],
- "\ 2Type /MOTD to read the AUP before continuing using this service.\ 2");
- sendto_one(sptr,
- ":%s %d %s :The message of the day was last changed: %d/%d/%d", me.name,
- RPL_MOTD, parv[0], tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year);
+ send_reply(sptr, RPL_MOTDSTART, me.name);
+ send_reply(sptr, RPL_EXPLICIT | RPL_MOTD, ":\ 2Type /MOTD to read the "
+ "AUP before continuing using this service.\ 2");
+ send_reply(sptr, RPL_EXPLICIT | RPL_MOTD, ":The message of the day was "
+ "last changed: %d/%d/%d", tm->tm_mday, tm->tm_mon + 1,
+ 1900 + tm->tm_year);
}
#endif
- sendto_one(sptr, rpl_str(RPL_ENDOFMOTD), me.name, parv[0]);
+ send_reply(sptr, RPL_ENDOFMOTD);
return 0;
}
{
no_motd = 0;
#endif
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_MOTD " %s", 1, parc,
+ if (hunt_server(0, cptr, sptr, "%s%s " TOK_MOTD " %s", 1, parc, /* XXX DEAD */
parv) != HUNTED_ISME)
return 0;
#ifdef NODEFAULTMOTD
}
if (temp == 0)
{
- sendto_one(sptr, err_str(ERR_NOMOTD), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOMOTD), me.name, parv[0]); /* XXX DEAD */
return 0;
}
#ifdef NODEFAULTMOTD
#endif
if (tm) /* Not remote? */
{
- sendto_one(sptr, rpl_str(RPL_MOTDSTART), me.name, parv[0], me.name);
- sendto_one(sptr, ":%s %d %s :- %d/%d/%d %d:%02d", me.name, RPL_MOTD,
+ sendto_one(sptr, rpl_str(RPL_MOTDSTART), me.name, parv[0], me.name); /* XXX DEAD */
+ sendto_one(sptr, ":%s %d %s :- %d/%d/%d %d:%02d", me.name, RPL_MOTD, /* XXX DEAD */
parv[0], tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year,
tm->tm_hour, tm->tm_min);
count = 100;
count = 3;
for (; temp; temp = temp->next)
{
- sendto_one(sptr, rpl_str(RPL_MOTD), me.name, parv[0], temp->line);
+ sendto_one(sptr, rpl_str(RPL_MOTD), me.name, parv[0], temp->line); /* XXX DEAD */
if (--count == 0)
break;
}
}
else
{
- sendto_one(sptr, rpl_str(RPL_MOTDSTART), me.name, parv[0], me.name);
- sendto_one(sptr, ":%s %d %s :%s", me.name, RPL_MOTD, parv[0],
+ sendto_one(sptr, rpl_str(RPL_MOTDSTART), me.name, parv[0], me.name); /* XXX DEAD */
+ sendto_one(sptr, ":%s %d %s :%s", me.name, RPL_MOTD, parv[0], /* XXX DEAD */
"\ 2Type /MOTD to read the AUP before continuing using this service.\ 2");
- sendto_one(sptr,
+ sendto_one(sptr, /* XXX DEAD */
":%s %d %s :The message of the day was last changed: %d/%d/%d", me.name,
RPL_MOTD, parv[0], tm->tm_mday, tm->tm_mon + 1, 1900 + tm->tm_year);
}
#endif
- sendto_one(sptr, rpl_str(RPL_ENDOFMOTD), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_ENDOFMOTD), me.name, parv[0]); /* XXX DEAD */
return 0;
}
#endif /* 0 */
char* para = parc > 1 ? parv[1] : 0;
char buf[BUFSIZE];
- if (parc > 2 && hunt_server(1, cptr, sptr, "%s%s " TOK_NAMES " %s %s", 2, parc, parv))
+ if (parc > 2 && hunt_server_cmd(sptr, CMD_NAMES, cptr, 1, "%s %C", 2, parc,
+ parv))
return 0;
mlen = strlen(me.name) + 10 + strlen(sptr->name);
#endif
/* space, modifier, nick, \r \n \0 */
{
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ send_reply(sptr, RPL_NAMREPLY, buf);
strcpy(buf, "* ");
ircd_strncpy(buf + 2, chptr->chname, len + 1);
buf[len + 2] = 0;
}
}
if (flag)
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ send_reply(sptr, RPL_NAMREPLY, buf);
}
if (!EmptyString(para))
{
- sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name, parv[0],
- ch2ptr ? ch2ptr->chname : para);
+ send_reply(sptr, RPL_ENDOFNAMES, ch2ptr ? ch2ptr->chname : para);
return (1);
}
if (mlen + idx + NICKLEN + 3 > BUFSIZE) /* space, \r\n\0 */
#endif
{
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ send_reply(sptr, RPL_NAMREPLY, buf);
strcpy(buf, "* * :");
idx = 5;
flag = 0;
}
}
if (flag)
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
- sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name, parv[0], "*");
+ send_reply(sptr, RPL_NAMREPLY, buf);
+ send_reply(sptr, RPL_ENDOFNAMES, "*");
return 1;
return 0;
}
char *s, *para = parc > 1 ? parv[1] : 0;
char buf[BUFSIZE];
- if (parc > 2 && hunt_server(1, cptr, sptr, "%s%s " TOK_NAMES " %s %s", 2, parc, parv))
+ if (parc > 2 && hunt_server_cmd(sptr, CMD_NAMES, cptr, 1, "%s %C", 2, parc,
+ parv))
return 0;
mlen = strlen(me.name) + 10 + strlen(sptr->name);
#endif
/* space, modifier, nick, \r \n \0 */
{
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ send_reply(sptr, RPL_NAMREPLY, buf);
strcpy(buf, "* ");
ircd_strncpy(buf + 2, chptr->chname, len + 1);
buf[len + 2] = 0;
}
}
if (flag)
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ send_reply(sptr, RPL_NAMREPLY, buf);
}
if (!EmptyString(para))
{
- sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name, parv[0],
- ch2ptr ? ch2ptr->chname : para);
+ send_reply(sptr, RPL_ENDOFNAMES, ch2ptr ? ch2ptr->chname : para);
return (1);
}
if (mlen + idx + NICKLEN + 3 > BUFSIZE) /* space, \r\n\0 */
#endif
{
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ send_reply(sptr, RPL_NAMREPLY, buf);
strcpy(buf, "* * :");
idx = 5;
flag = 0;
}
}
if (flag)
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
- sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name, parv[0], "*");
+ send_reply(sptr, RPL_NAMREPLY, buf);
+ send_reply(sptr, RPL_ENDOFNAMES, "*");
return 1;
return 0;
}
char *s, *para = parc > 1 ? parv[1] : 0;
char buf[BUFSIZE];
- if (parc > 2 && hunt_server(1, cptr, sptr, "%s%s " TOK_NAMES " %s %s", 2, parc, parv))
+ if (parc > 2 && hunt_server(1, cptr, sptr, "%s%s " TOK_NAMES " %s %s", 2, parc, parv)) /* XXX DEAD */
return 0;
mlen = strlen(me.name) + 10 + strlen(sptr->name);
#endif
/* space, modifier, nick, \r \n \0 */
{
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf); /* XXX DEAD */
strcpy(buf, "* ");
ircd_strncpy(buf + 2, chptr->chname, len + 1);
buf[len + 2] = 0;
}
}
if (flag)
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf); /* XXX DEAD */
}
if (!EmptyString(para))
{
- sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name, parv[0], /* XXX DEAD */
ch2ptr ? ch2ptr->chname : para);
return (1);
}
if (mlen + idx + NICKLEN + 3 > BUFSIZE) /* space, \r\n\0 */
#endif
{
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
+ sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf); /* XXX DEAD */
strcpy(buf, "* * :");
idx = 5;
flag = 0;
}
}
if (flag)
- sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf);
- sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name, parv[0], "*");
+ sendto_one(sptr, rpl_str(RPL_NAMREPLY), me.name, parv[0], buf); /* XXX DEAD */
+ sendto_one(sptr, rpl_str(RPL_ENDOFNAMES), me.name, parv[0], "*"); /* XXX DEAD */
return 1;
}
#endif /* 0 */
client_name = (*sptr->name) ? sptr->name : "*";
if (parc < 2) {
- sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, client_name);
+ send_reply(sptr, ERR_NONICKNAMEGIVEN);
return 0;
}
/*
* and KILL it. -avalon 4/4/92
*/
if (0 == do_nick_name(nick)) {
- sendto_one(sptr, err_str(ERR_ERRONEUSNICKNAME), me.name, client_name, arg);
+ send_reply(sptr, ERR_ERRONEUSNICKNAME, arg);
return 0;
}
* nick, if so tell him that it's a nick in use...
*/
if (isNickJuped(nick)) {
- sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name, client_name, nick);
+ send_reply(sptr, ERR_NICKNAMEINUSE, nick);
return 0; /* NICK message ignored */
}
return set_nick_name(cptr, sptr, nick, parc, parv);
}
if (IsServer(acptr)) {
- sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name, client_name, nick);
+ send_reply(sptr, ERR_NICKNAMEINUSE, nick);
return 0; /* NICK message ignored */
}
/*
* NICK is coming from local client connection. Just
* send error reply and ignore the command.
*/
- sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name, client_name, nick);
+ send_reply(sptr, ERR_NICKNAMEINUSE, nick);
return 0; /* NICK message ignored */
}
assert(IsServer(cptr));
if ((IsServer(sptr) && parc < 8) || parc < 3) {
- sendto_ops("bad NICK param count for %s from %s", parv[1], cptr->name);
+ sendto_opmask_butone(0, SNO_OLDSNO, "bad NICK param count for %s from %C",
+ parv[1], cptr);
return need_more_params(sptr, "NICK");
}
* and KILL it. -avalon 4/4/92
*/
if (0 == do_nick_name(nick) || 0 != strcmp(nick, parv[1])) {
- sendto_one(sptr, err_str(ERR_ERRONEUSNICKNAME), me.name, parv[0], parv[1]);
+ send_reply(sptr, ERR_ERRONEUSNICKNAME, parv[1]);
++ServerStats->is_kill;
- sendto_ops("Bad Nick: %s From: %s %s", parv[1], parv[0], cptr->name);
- sendto_one(cptr, "%s " TOK_KILL " %s :%s (%s <- %s[%s])",
- NumServ(&me), IsServer(sptr) ? parv[parc - 2] : parv[0], me.name,
- parv[1], nick, cptr->name);
+ sendto_opmask_butone(0, SNO_OLDSNO, "Bad Nick: %s From: %s %C", parv[1],
+ parv[0], cptr);
+ sendcmdto_one(&me, CMD_KILL, cptr, "%s :%s (%s <- %s[%s])",
+ IsServer(sptr) ? parv[parc - 2] : parv[0], me.name, parv[1],
+ nick, cptr->name);
if (!IsServer(sptr)) {
/*
* bad nick _change_
*/
- sendto_highprot_butone(&me, 10, "%s " TOK_KILL " %s :%s (%s <- %s!%s@%s)",
- NumServ(&me), parv[0], me.name, cptr->name,
- parv[0], sptr->user ? sptr->username : "",
- sptr->user ? sptr->user->server->name : cptr->name);
+ sendcmdto_serv_butone(&me, CMD_KILL, 0, "%s :%s (%s <- %s!%s@%s)",
+ parv[0], me.name, cptr->name, parv[0],
+ sptr->user ? sptr->username : "",
+ sptr->user ? sptr->user->server->name :
+ cptr->name);
}
return 0;
}
* there is no danger of the server being disconnected.
* Ultimate way to jupiter a nick ? >;-). -avalon
*/
- sendto_ops("Nick collision on %s(%s <- %s)", sptr->name, acptr->from->name, cptr->name);
+ sendto_opmask_butone(0, SNO_OLDSNO, "Nick collision on %C(%C <- %C)", sptr,
+ acptr->from, cptr);
++ServerStats->is_kill;
- sendto_one(cptr, "%s " TOK_KILL " %s%s :%s (%s <- %s)",
- NumServ(&me), NumNick(sptr), me.name, acptr->from->name,
- cptr->name);
+ sendcmdto_one(&me, CMD_KILL, cptr, "%C :%s (%s <- %s)", sptr, me.name,
+ acptr->from->name, cptr->name);
sptr->flags |= FLAGS_KILLED;
/*
*/
differ = (acptr->ip.s_addr != htonl(base64toint(parv[parc - 3]))) ||
(0 != ircd_strcmp(acptr->user->username, parv[4]));
- sendto_ops("Nick collision on %s (%s " TIME_T_FMT " <- %s " TIME_T_FMT
- " (%s user@host))", acptr->name, acptr->from->name, acptr->lastnick,
- cptr->name, lastnick, differ ? "Different" : "Same");
+ sendto_opmask_butone(0, SNO_OLDSNO, "Nick collision on %C (%C %Tu <- "
+ "%C %Tu (%s user@host))", acptr, acptr->from,
+ acptr->lastnick, cptr, lastnick,
+ differ ? "Different" : "Same");
}
else {
/*
*/
differ = (acptr->ip.s_addr != sptr->ip.s_addr) ||
(0 != ircd_strcmp(acptr->user->username, sptr->user->username));
- sendto_ops("Nick change collision from %s to %s (%s " TIME_T_FMT " <- %s "
- TIME_T_FMT ")", sptr->name, acptr->name, acptr->from->name,
- acptr->lastnick, cptr->name, lastnick);
+ sendto_opmask_butone(0, SNO_OLDSNO, "Nick change collision from %C to "
+ "%C (%C %Tu <- %C %Tu)", sptr, acptr, acptr->from,
+ acptr->lastnick, cptr, lastnick);
}
/*
* Now remove (kill) the nick on our side if it is the youngest.
if ((differ && lastnick >= acptr->lastnick) || (!differ && lastnick <= acptr->lastnick)) {
if (!IsServer(sptr)) {
++ServerStats->is_kill;
- sendto_highprot_butone(&me, 10, /* Kill old from outgoing servers */
- "%s " TOK_KILL " %s%s :%s (%s <- %s (Nick collision))",
- NumServ(&me), NumNick(sptr), me.name, acptr->from->name,
- cptr->name);
+ sendcmdto_serv_butone(&me, CMD_KILL, sptr, "%C :%s (%s <- %s (Nick "
+ "collision))", sptr, me.name, acptr->from->name,
+ cptr->name);
assert(!MyConnect(sptr));
#if 0
/*
* XXX - impossible
*/
if (MyConnect(sptr))
- sendto_one(cptr, "%s " TOK_KILL " %s%s :%s (Ghost 2)",
+ sendto_one(cptr, "%s " TOK_KILL " %s%s :%s (Ghost 2)", /* XXX DEAD */
NumServ(&me), NumNick(sptr), me.name);
#endif
sptr->flags |= FLAGS_KILLED;
if (lastnick != acptr->lastnick)
return 0; /* Ignore the NICK */
}
- sendto_one(acptr, err_str(ERR_NICKCOLLISION), me.name, acptr->name, nick);
+ send_reply(acptr, ERR_NICKCOLLISION, nick);
}
++ServerStats->is_kill;
* This exits the client we had before getting the NICK message
*/
if (differ) {
- sendto_highprot_butone(&me, 10, /* Kill our old from outgoing servers */
- "%s " TOK_KILL " %s%s :%s (%s <- %s (older nick overruled))",
- NumServ(&me), NumNick(acptr), me.name, acptr->from->name,
- cptr->name);
+ sendcmdto_serv_butone(&me, CMD_KILL, acptr, "%C :%s (%s <- %s (older "
+ "nick overruled))", acptr, me.name,
+ acptr->from->name, cptr->name);
if (MyConnect(acptr))
- sendto_one(cptr, "%s%s " TOK_QUIT " :Local kill by %s (Ghost)",
- NumNick(acptr), me.name);
+ sendcmdto_one(acptr, CMD_QUIT, cptr, ":Local kill by %s (Ghost)",
+ me.name);
exit_client(cptr, acptr, &me, "Nick collision (older nick overruled)");
}
else {
- sendto_highprot_butone(&me, 10, /* Kill our old from outgoing servers */
- "%s " TOK_KILL " %s%s :%s (%s <- %s (nick collision from same user@host))",
- NumServ(&me), NumNick(acptr), me.name, acptr->from->name,
- cptr->name);
+ sendcmdto_serv_butone(&me, CMD_KILL, acptr, "%C :%s (%s <- %s (nick "
+ "collision from same user@host))", acptr, me.name,
+ acptr->from->name, cptr->name);
if (MyConnect(acptr))
- sendto_one(cptr,
- "%s%s " TOK_QUIT " :Local kill by %s (Ghost: switched servers too fast)",
- NumNick(acptr), me.name);
+ sendcmdto_one(acptr, CMD_QUIT, cptr, ":Local kill by %s (Ghost: ",
+ "switched servers too fast)", me.name);
exit_client(cptr, acptr, &me, "Nick collision (You collided yourself)");
}
if (lastnick == acptr->lastnick)
int differ = 1;
if (parc < 2) {
- sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]); /* XXX DEAD */
return 0;
}
else if ((IsServer(sptr) && parc < 8) || (IsServer(cptr) && parc < 3))
{
need_more_params(sptr, "NICK");
- sendto_ops("bad NICK param count for %s from %s", parv[1], cptr->name);
+ sendto_ops("bad NICK param count for %s from %s", parv[1], cptr->name); /* XXX DEAD */
return 0;
}
if (MyConnect(sptr) && (s = strchr(parv[1], '~')))
*/
if (do_nick_name(nick) == 0 || (IsServer(cptr) && strcmp(nick, parv[1])))
{
- sendto_one(sptr, err_str(ERR_ERRONEUSNICKNAME), me.name, parv[0], parv[1]);
+ sendto_one(sptr, err_str(ERR_ERRONEUSNICKNAME), me.name, parv[0], parv[1]); /* XXX DEAD */
if (IsServer(cptr))
{
ServerStats->is_kill++;
- sendto_ops("Bad Nick: %s From: %s %s",
+ sendto_ops("Bad Nick: %s From: %s %s", /* XXX DEAD */
parv[1], parv[0], cptr->name);
- sendto_one(cptr, "%s " TOK_KILL " %s :%s (%s <- %s[%s])",
+ sendto_one(cptr, "%s " TOK_KILL " %s :%s (%s <- %s[%s])", /* XXX DEAD */
NumServ(&me), IsServer(sptr) ? parv[parc - 2] : parv[0], me.name,
parv[1], nick, cptr->name);
if (!IsServer(sptr)) /* bad nick _change_ */
{
- sendto_highprot_butone(&me, 10, "%s " TOK_KILL " %s :%s (%s <- %s!%s@%s)",
+ sendto_highprot_butone(&me, 10, "%s " TOK_KILL " %s :%s (%s <- %s!%s@%s)", /* XXX DEAD */
NumServ(&me), parv[0], me.name, cptr->name,
parv[0], sptr->user ? sptr->username : "",
sptr->user ? sptr->user->server->name : cptr->name);
*/
if ((!IsServer(cptr)) && isNickJuped(nick))
{
- sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name,
+ sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name, /* XXX DEAD */
/* parv[0] is empty when connecting */
EmptyString(parv[0]) ? "*" : parv[0], nick);
return 0; /* NICK message ignored */
if ((acptr = FindServer(nick))) {
if (MyConnect(sptr))
{
- sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name,
+ sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name, /* XXX DEAD */
EmptyString(parv[0]) ? "*" : parv[0], nick);
return 0; /* NICK message ignored */
}
* there is no danger of the server being disconnected.
* Ultimate way to jupiter a nick ? >;-). -avalon
*/
- sendto_ops("Nick collision on %s(%s <- %s)",
+ sendto_ops("Nick collision on %s(%s <- %s)", /* XXX DEAD */
sptr->name, acptr->from->name, cptr->name);
ServerStats->is_kill++;
- sendto_one(cptr, "%s " TOK_KILL " %s%s :%s (%s <- %s)",
+ sendto_one(cptr, "%s " TOK_KILL " %s%s :%s (%s <- %s)", /* XXX DEAD */
NumServ(&me), NumNick(sptr), me.name, acptr->from->name,
cptr->name);
sptr->flags |= FLAGS_KILLED;
* NICK is coming from local client connection. Just
* send error reply and ignore the command.
*/
- sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name,
+ sendto_one(sptr, err_str(ERR_NICKNAMEINUSE), me.name, /* XXX DEAD */
/* parv[0] is empty when connecting */
EmptyString(parv[0]) ? "*" : parv[0], nick);
return 0; /* NICK message ignored */
*/
differ = (acptr->ip.s_addr != htonl(base64toint(parv[parc - 3]))) ||
(0 != ircd_strcmp(acptr->user->username, parv[4]));
- sendto_ops("Nick collision on %s (%s " TIME_T_FMT " <- %s " TIME_T_FMT
+ sendto_ops("Nick collision on %s (%s " TIME_T_FMT " <- %s " TIME_T_FMT /* XXX DEAD */
" (%s user@host))", acptr->name, acptr->from->name, acptr->lastnick,
cptr->name, lastnick, differ ? "Different" : "Same");
}
lastnick = atoi(parv[2]);
differ = (acptr->ip.s_addr != sptr->ip.s_addr) ||
(0 != ircd_strcmp(acptr->user->username, sptr->user->username));
- sendto_ops("Nick change collision from %s to %s (%s " TIME_T_FMT " <- %s "
+ sendto_ops("Nick change collision from %s to %s (%s " TIME_T_FMT " <- %s " /* XXX DEAD */
TIME_T_FMT ")", sptr->name, acptr->name, acptr->from->name,
acptr->lastnick, cptr->name, lastnick);
}
if (!IsServer(sptr))
{
ServerStats->is_kill++;
- sendto_highprot_butone(cptr, 10, /* Kill old from outgoing servers */
+ sendto_highprot_butone(cptr, 10, /* Kill old from outgoing servers */ /* XXX DEAD */
"%s " TOK_KILL " %s%s :%s (%s <- %s (Nick collision))",
NumServ(&me), NumNick(sptr), me.name, acptr->from->name,
cptr->name);
if (MyConnect(sptr) && IsServer(cptr) && Protocol(cptr) > 9)
- sendto_one(cptr, "%s " TOK_KILL " %s%s :%s (Ghost2)",
+ sendto_one(cptr, "%s " TOK_KILL " %s%s :%s (Ghost2)", /* XXX DEAD */
NumServ(&me), NumNick(sptr), me.name);
sptr->flags |= FLAGS_KILLED;
exit_client(cptr, sptr, &me, "Nick collision (you're a ghost)");
if (lastnick != acptr->lastnick)
return 0; /* Ignore the NICK */
}
- sendto_one(acptr, err_str(ERR_NICKCOLLISION), me.name, acptr->name, nick);
+ sendto_one(acptr, err_str(ERR_NICKCOLLISION), me.name, acptr->name, nick); /* XXX DEAD */
}
ServerStats->is_kill++;
acptr->flags |= FLAGS_KILLED;
if (differ)
{
- sendto_highprot_butone(cptr, 10, /* Kill our old from outgoing servers */
+ sendto_highprot_butone(cptr, 10, /* Kill our old from outgoing servers */ /* XXX DEAD */
"%s " TOK_KILL " %s%s :%s (%s <- %s (older nick overruled))",
NumServ(&me), NumNick(acptr), me.name, acptr->from->name,
cptr->name);
if (MyConnect(acptr) && IsServer(cptr) && Protocol(cptr) > 9)
- sendto_one(cptr, "%s%s " TOK_QUIT " :Local kill by %s (Ghost)",
+ sendto_one(cptr, "%s%s " TOK_QUIT " :Local kill by %s (Ghost)", /* XXX DEAD */
NumNick(acptr), me.name);
exit_client(cptr, acptr, &me, "Nick collision (older nick overruled)");
}
else
{
- sendto_highprot_butone(cptr, 10, /* Kill our old from outgoing servers */
+ sendto_highprot_butone(cptr, 10, /* Kill our old from outgoing servers */ /* XXX DEAD */
"%s " TOK_KILL " %s%s :%s (%s <- %s (nick collision from same user@host))",
NumServ(&me), NumNick(acptr), me.name, acptr->from->name,
cptr->name);
if (MyConnect(acptr) && IsServer(cptr) && Protocol(cptr) > 9)
- sendto_one(cptr,
+ sendto_one(cptr, /* XXX DEAD */
"%s%s " TOK_QUIT " :Local kill by %s (Ghost: switched servers too fast)",
NumNick(acptr), me.name);
exit_client(cptr, acptr, &me, "Nick collision (You collided yourself)");
sptr->flags &= ~FLAGS_TS8;
if (parc < 2 || EmptyString(parv[1]))
- return send_error_to_client(sptr, ERR_NORECIPIENT, MSG_NOTICE);
+ return send_reply(sptr, ERR_NORECIPIENT, MSG_NOTICE);
if (parc < 3 || EmptyString(parv[parc - 1]))
- return send_error_to_client(sptr, ERR_NOTEXTTOSEND);
+ return send_reply(sptr, ERR_NOTEXTTOSEND);
if (parv[1][0] == '@' && IsChannelPrefix(parv[1][1])) {
parv[1]++; /* Get rid of '@' */
sptr->flags &= ~FLAGS_TS8;
if (parc < 2 || EmptyString(parv[1]))
- return send_error_to_client(sptr, ERR_NORECIPIENT, MSG_NOTICE);
+ return send_reply(sptr, ERR_NORECIPIENT, MSG_NOTICE);
if (parc < 3 || EmptyString(parv[parc - 1]))
- return send_error_to_client(sptr, ERR_NOTEXTTOSEND);
+ return send_reply(sptr, ERR_NOTEXTTOSEND);
if (parv[1][0] == '@' && IsChannelPrefix(parv[1][1])) {
parv[1]++; /* Get rid of '@' */
cmd = notice ? MSG_NOTICE : MSG_PRIVATE;
if (parc < 2 || EmptyString(parv[1]))
- return send_error_to_client(sptr, ERR_NORECIPIENT, cmd);
+ 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);
+ return send_error_to_client(sptr, ERR_NOTEXTTOSEND); /* XXX DEAD */
#if 0
if (MyUser(sptr) && (chptr->mode.mode & MODE_NOPRIVMSGS) &&
check_target_limit(sptr, chptr, chptr->chname, 0))
continue;
- sendmsgto_channel_butone(cptr, sptr, chptr,
+ 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),
+ sendto_one(sptr, err_str(ERR_CANNOTSENDTOCHAN), /* XXX DEAD */
me.name, parv[0], chptr->chname);
continue;
}
if (!is_silenced(sptr, acptr))
{
if (!notice && MyConnect(sptr) && acptr->user && acptr->user->away)
- sendto_one(sptr, rpl_str(RPL_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",
+ 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",
+ 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);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); /* XXX DEAD */
else
- sendto_one(sptr,
+ 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;
{
if (!(s = strrchr(nick, '.')))
{
- sendto_one(sptr, err_str(ERR_NOTOPLEVEL), me.name, parv[0], nick);
+ sendto_one(sptr, err_str(ERR_NOTOPLEVEL), me.name, parv[0], nick); /* XXX DEAD */
continue;
}
while (*++s)
break;
if (*s == '*' || *s == '?')
{
- sendto_one(sptr, err_str(ERR_WILDTOPLEVEL), me.name, parv[0], nick);
+ sendto_one(sptr, err_str(ERR_WILDTOPLEVEL), me.name, parv[0], nick); /* XXX DEAD */
continue;
}
}
- sendto_match_butone(IsServer(cptr) ? cptr : 0,
+ 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;
*/
if (!IsMe(acptr))
{
- sendto_one(acptr, ":%s %s %s :%s", parv[0], cmd, nick, parv[parc - 1]);
+ sendto_one(acptr, ":%s %s %s :%s", parv[0], cmd, nick, parv[parc - 1]); /* XXX DEAD */
continue;
}
if (acptr)
{
if (!(is_silenced(sptr, acptr)))
- sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
+ 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);
+ 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);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); /* XXX DEAD */
}
return 0;
}
ircd_ntoa((const char*) &cptr->ip), CONF_OPS);
if (!aconf || IsIllegal(aconf)) {
- send_error_to_client(sptr, ERR_NOOPERHOST);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
- parv[0], sptr->user->username, sptr->sockhost);
+ send_reply(sptr, ERR_NOOPERHOST);
+ sendto_opmask_butone(0, SNO_OLDREALOP, "Failed OPER attempt by %s (%s@%s)",
+ parv[0], sptr->user->username, sptr->sockhost);
return 0;
}
assert(0 != (aconf->status & CONF_OPS));
unsigned int old_mode = (sptr->flags & ALL_UMODES);
if (ACR_OK != attach_conf(sptr, aconf)) {
- send_error_to_client(sptr, ERR_NOOPERHOST);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
- parv[0], sptr->user->username, sptr->sockhost);
+ send_reply(sptr, ERR_NOOPERHOST);
+ sendto_opmask_butone(0, SNO_OLDREALOP, "Failed OPER attempt by %s "
+ "(%s@%s)", parv[0], sptr->user->username,
+ sptr->sockhost);
return 0;
}
if (CONF_LOCOP == aconf->status) {
set_snomask(sptr, SNO_OPERDEFAULT, SNO_ADD);
send_umode_out(cptr, sptr, old_mode);
- sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]);
+ send_reply(sptr, RPL_YOUREOPER);
- sendto_ops("%s (%s@%s) is now operator (%c)", parv[0],
- sptr->user->username, sptr->sockhost,
- IsOper(sptr) ? 'O' : 'o');
+ sendto_opmask_butone(0, SNO_OLDSNO, "%s (%s@%s) is now operator (%c)",
+ parv[0], sptr->user->username, sptr->sockhost,
+ IsOper(sptr) ? 'O' : 'o');
ircd_log(L_INFO, "OPER (%s) by (%s!%s@%s)",
name, parv[0], sptr->user->username, sptr->sockhost);
#ifdef FNAME_OPERLOG
if (IsUser(sptr))
write_log(FNAME_OPERLOG,
- "%s OPER (%s) by (%s!%s@%s)\n", myctime(CurrentTime),
- name, parv[0], sptr->user->username, sptr->sockhost);
+ "%s OPER (%s) by (%#C)\n", myctime(CurrentTime), name, sptr);
#endif
}
else {
- sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name, parv[0]);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
- parv[0], sptr->user->username, sptr->sockhost);
+ send_reply(sptr, ERR_PASSWDMISMATCH);
+ sendto_opmask_butone(0, SNO_OLDREALOP, "Failed OPER attempt by %s (%s@%s)",
+ parv[0], sptr->user->username, sptr->sockhost);
}
return 0;
}
if (!IsServer(sptr) && !IsOper(sptr)) {
++UserStats.opers;
sptr->flags |= FLAGS_OPER;
- sendto_serv_butone(cptr, "%s%s " TOK_MODE " %s :+o", NumNick(sptr), parv[0]);
+ sendcmdto_serv_butone(sptr, CMD_MODE, cptr, "%s :+o", parv[0]);
}
return 0;
}
{
assert(0 != cptr);
assert(cptr == sptr);
- sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]);
+ send_reply(sptr, RPL_YOUREOPER);
return 0;
}
if (IsServer(cptr) && !IsOper(sptr)) {
++UserStats.opers;
sptr->flags |= FLAGS_OPER;
- sendto_serv_butone(cptr, "%s%s " TOK_MODE " %s :+o", NumNick(sptr), parv[0]);
+ sendto_serv_butone(cptr, "%s%s " TOK_MODE " %s :+o", NumNick(sptr), parv[0]); /* XXX DEAD */
return 0;
}
else if (IsAnOper(sptr)) {
if (MyConnect(sptr))
- sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]); /* XXX DEAD */
return 0;
}
assert(cptr == sptr);
ircd_ntoa((const char*) &cptr->ip), CONF_OPS);
if (!aconf || IsIllegal(aconf)) {
- sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
+ sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]); /* XXX DEAD */
+ sendto_realops("Failed OPER attempt by %s (%s@%s)", /* XXX DEAD */
parv[0], sptr->user->username, sptr->sockhost);
return 0;
}
int old = (sptr->flags & ALL_UMODES);
if (ACR_OK != attach_conf(sptr, aconf)) {
- sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
+ sendto_one(sptr, err_str(ERR_NOOPERHOST), me.name, parv[0]); /* XXX DEAD */
+ sendto_realops("Failed OPER attempt by %s (%s@%s)", /* XXX DEAD */
parv[0], sptr->user->username, sptr->sockhost);
return 0;
}
++UserStats.opers;
}
cptr->handler = OPER_HANDLER;
- sendto_ops("%s (%s@%s) is now operator (%c)", parv[0],
+ sendto_ops("%s (%s@%s) is now operator (%c)", parv[0], /* XXX DEAD */
sptr->user->username, sptr->sockhost, IsOper(sptr) ? 'O' : 'o');
sptr->flags |= (FLAGS_WALLOP | FLAGS_SERVNOTICE | FLAGS_DEBUG);
set_snomask(sptr, SNO_OPERDEFAULT, SNO_ADD);
send_umode_out(cptr, sptr, old);
- sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]);
+ sendto_one(sptr, rpl_str(RPL_YOUREOPER), me.name, parv[0]); /* XXX DEAD */
ircd_log(L_INFO, "OPER (%s) by (%s!%s@%s)",
name, parv[0], sptr->user->username, sptr->sockhost);
#endif
}
else {
- sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name, parv[0]);
- sendto_realops("Failed OPER attempt by %s (%s@%s)",
+ sendto_one(sptr, err_str(ERR_PASSWDMISMATCH), me.name, parv[0]); /* XXX DEAD */
+ sendto_realops("Failed OPER attempt by %s (%s@%s)", /* XXX DEAD */
parv[0], sptr->user->username, sptr->sockhost);
}
return 0;
return 0;
if ('#' != *parv[1] || !(chptr = FindChannel(parv[1])))
- return send_error_to_client(sptr, ERR_NOSUCHCHANNEL, parv[1]);
+ return send_reply(sptr, ERR_NOSUCHCHANNEL, parv[1]);
modebuf_init(&mbuf, sptr, cptr, chptr,
(MODEBUF_DEST_CHANNEL | /* Send MODE to channel */
int mo_opmode(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
#ifndef CONFIG_OPERCMDS
- return send_error_to_client(sptr, ERR_DISABLED, "OPMODE");
+ return send_reply(sptr, ERR_DISABLED, "OPMODE");
#else
struct Channel *chptr = 0;
struct ModeBuf mbuf;
clean_channelname(parv[1]);
if (('#' != *parv[1] && '&' != *parv[1]) || !(chptr = FindChannel(parv[1])))
- return send_error_to_client(sptr, ERR_NOSUCHCHANNEL, parv[1]);
+ return send_reply(sptr, ERR_NOSUCHCHANNEL, parv[1]);
if (!(member = find_member_link(chptr, sptr)))
- return send_error_to_client(sptr, ERR_NOTONCHANNEL, chptr->chname);
+ return send_reply(sptr, ERR_NOTONCHANNEL, chptr->chname);
modebuf_init(&mbuf, sptr, cptr, chptr,
(MODEBUF_DEST_CHANNEL | /* Send MODE to channel */
if (!MyConnect(sptr) || (!IsUnknown(cptr) && !IsHandshake(cptr)))
{
- sendto_one(cptr, err_str(ERR_ALREADYREGISTRED), me.name, parv[0]);
+ sendto_one(cptr, err_str(ERR_ALREADYREGISTRED), me.name, parv[0]); /* XXX DEAD */
return 0;
}
ircd_strncpy(cptr->passwd, password, PASSWDLEN);
assert(cptr == sptr);
if (parc < 2 || EmptyString(parv[1]))
- return send_error_to_client(sptr, ERR_NOORIGIN);
+ return send_reply(sptr, ERR_NOORIGIN);
destination = parv[2]; /* Will get NULL or pointer (parc >= 2!!) */
if (!EmptyString(destination) && 0 != ircd_strcmp(destination, me.name)) {
if ((acptr = FindServer(destination)))
- /*
- * NOTE: can't send the origin string to servers, since this is a client,
- * we could get garbage, and the link between us and the pingee wouldn't
- * know who to send it to.
- * sendto_one(acptr, "%s%s PING %s :%s", NumNick(sptr), parv[1], destination);
- */
- sendto_one(acptr, "%s%s " TOK_PING " %s :%s", NumNick(sptr), sptr->name, destination);
+ sendcmdto_one(sptr, CMD_PING, acptr, "%C :%s", sptr, destination);
else
- sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, sptr->name, destination);
+ send_reply(sptr, ERR_NOSUCHSERVER, destination);
}
else {
/*
if (strlen(origin) > 64)
origin[64] = '\0';
- sendto_one(sptr, ":%s PONG %s :%s", me.name, me.name, origin);
+ sendcmdto_one(&me, CMD_PONG, sptr, "%C :%s", &me, origin);
}
return 0;
}
* don't bother sending the error back
*/
#if 0
- sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]); /* XXX DEAD */
#endif
return 0;
}
/*
* Servers can just forward the origin
*/
- if (IsServer(sptr))
- /*
- * servers don't normally send pings to remote servers
- */
- sendto_one(acptr, "%s " TOK_PING " %s :%s", NumServ(sptr), origin, destination);
- else
- sendto_one(acptr, "%s%s " TOK_PING " %s :%s", NumNick(sptr), origin, destination);
+ sendcmdto_one(sptr, CMD_PING, acptr, "%s :%s", origin, destination);
}
else {
/*
* this can happen if server split before the ping got here
*/
- sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, sptr->name, destination);
+ send_reply(sptr, ERR_NOSUCHSERVER, destination);
}
}
else {
* NOTE: sptr is never local so if pong handles numerics everywhere we
* could send a numeric here.
*/
- sendto_one(sptr, "%s " TOK_PONG " %s :%s", NumServ(&me), me.name, origin);
+ sendcmdto_one(&me, CMD_PONG, sptr, "%C :%s", &me, origin);
}
return 0;
}
if (parc < 2 || *parv[1] == '\0')
{
- sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]); /* XXX DEAD */
return 0;
}
origin = parv[1];
if (!EmptyString(destination) && 0 != ircd_strcmp(destination, me.name) != 0)
{
if ((acptr = FindServer(destination)))
- sendto_one(acptr, ":%s PING %s :%s", parv[0], origin, destination);
+ sendto_one(acptr, ":%s PING %s :%s", parv[0], origin, destination); /* XXX DEAD */
else
{
- sendto_one(sptr, err_str(ERR_NOSUCHSERVER),
+ sendto_one(sptr, err_str(ERR_NOSUCHSERVER), /* XXX DEAD */
me.name, parv[0], destination);
return 0;
}
}
else
- sendto_one(sptr, ":%s PONG %s :%s", me.name, me.name, origin);
+ sendto_one(sptr, ":%s PONG %s :%s", me.name, me.name, origin); /* XXX DEAD */
return 0;
}
#endif
/*
* ignore there is nothing the server sending it can do about it
*/
- sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]); /* XXX DEAD */
#endif
return 0;
}
return register_user(cptr, sptr, sptr->name, sptr->user->username);
}
else
- sendto_one(sptr, ":%s %d %s :To connect, type /QUOTE PONG %u",
+ sendto_one(sptr, ":%s %d %s :To connect, type /QUOTE PONG %u", /* XXX DEAD */
me.name, ERR_BADPING, sptr->name, sptr->cookie);
return 0;
if (parc < 2 || *parv[1] == '\0')
{
- sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOORIGIN), me.name, parv[0]); /* XXX DEAD */
return 0;
}
if (!EmptyString(destination) && 0 != ircd_strcmp(destination, me.name))
{
if ((acptr = FindClient(destination)))
- sendto_one(acptr, ":%s PONG %s %s", parv[0], origin, destination);
+ sendto_one(acptr, ":%s PONG %s %s", parv[0], origin, destination); /* XXX DEAD */
else
{
- sendto_one(sptr, err_str(ERR_NOSUCHSERVER),
+ sendto_one(sptr, err_str(ERR_NOSUCHSERVER), /* XXX DEAD */
me.name, parv[0], destination);
return 0;
}
#endif
if (parc < 2 || EmptyString(parv[1]))
- return send_error_to_client(sptr, ERR_NORECIPIENT, MSG_PRIVATE);
+ return send_reply(sptr, ERR_NORECIPIENT, MSG_PRIVATE);
if (parc < 3 || EmptyString(parv[parc - 1]))
- return send_error_to_client(sptr, ERR_NOTEXTTOSEND);
+ return send_reply(sptr, ERR_NOTEXTTOSEND);
count = unique_name_vector(parv[1], ',', vector, MAXTARGETS);
#endif
if (parc < 2 || EmptyString(parv[1]))
- return send_error_to_client(sptr, ERR_NORECIPIENT, MSG_PRIVATE);
+ return send_reply(sptr, ERR_NORECIPIENT, MSG_PRIVATE);
if (parc < 3 || EmptyString(parv[parc - 1]))
- return send_error_to_client(sptr, ERR_NOTEXTTOSEND);
+ return send_reply(sptr, ERR_NOTEXTTOSEND);
count = unique_name_vector(parv[1], ',', vector, MAXTARGETS);
cmd = notice ? MSG_NOTICE : MSG_PRIVATE;
if (parc < 2 || EmptyString(parv[1]))
- return send_error_to_client(sptr, ERR_NORECIPIENT, cmd);
+ 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);
+ return send_error_to_client(sptr, ERR_NOTEXTTOSEND); /* XXX DEAD */
#if 0
if (MyUser(sptr) && (chptr->mode.mode & MODE_NOPRIVMSGS) &&
check_target_limit(sptr, chptr, chptr->chname, 0))
continue;
- sendmsgto_channel_butone(cptr, sptr, chptr,
+ 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),
+ sendto_one(sptr, err_str(ERR_CANNOTSENDTOCHAN), /* XXX DEAD */
me.name, parv[0], chptr->chname);
continue;
}
if (!is_silenced(sptr, acptr))
{
if (!notice && MyConnect(sptr) && acptr->user && acptr->user->away)
- sendto_one(sptr, rpl_str(RPL_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",
+ 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",
+ 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);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); /* XXX DEAD */
else
- sendto_one(sptr,
+ 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;
{
if (!(s = strrchr(nick, '.')))
{
- sendto_one(sptr, err_str(ERR_NOTOPLEVEL), me.name, parv[0], nick);
+ sendto_one(sptr, err_str(ERR_NOTOPLEVEL), me.name, parv[0], nick); /* XXX DEAD */
continue;
}
while (*++s)
break;
if (*s == '*' || *s == '?')
{
- sendto_one(sptr, err_str(ERR_WILDTOPLEVEL), me.name, parv[0], nick);
+ sendto_one(sptr, err_str(ERR_WILDTOPLEVEL), me.name, parv[0], nick); /* XXX DEAD */
continue;
}
}
- sendto_match_butone(IsServer(cptr) ? cptr : 0,
+ 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;
*/
if (!IsMe(acptr))
{
- sendto_one(acptr, ":%s %s %s :%s", parv[0], cmd, nick, parv[parc - 1]);
+ sendto_one(acptr, ":%s %s %s :%s", parv[0], cmd, nick, parv[parc - 1]); /* XXX DEAD */
continue;
}
if (acptr)
{
if (!(is_silenced(sptr, acptr)))
- sendto_prefix_one(acptr, sptr, ":%s %s %s :%s",
+ 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);
+ 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);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); /* XXX DEAD */
}
return 0;
}
#endif
#endif
{
+ send_reply(sptr, ERR_NOPRIVILEGES);
sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
return 0;
}
- sendto_one(sptr, rpl_str(RPL_REHASHING), me.name, parv[0], configfile);
- sendto_ops("%s is rehashing Server config file", parv[0]);
+ send_reply(sptr, RPL_REHASHING, configfile);
+ sendto_opmask_butone(0, SNO_OLDSNO, "%C is rehashing Server config file",
+ sptr);
ircd_log(L_INFO, "REHASH From %s\n", get_client_name(sptr, HIDE_IP));
return rehash(cptr, (parc > 1) ? ((*parv[1] == 'q') ? 2 : 0) : 0);
#endif /* defined(OPER_REHASH) || defined(LOCOP_REHASH) */
#endif
#endif
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return 0;
}
- sendto_one(sptr, rpl_str(RPL_REHASHING), me.name, parv[0], configfile);
- sendto_ops("%s is rehashing Server config file", parv[0]);
+ sendto_one(sptr, rpl_str(RPL_REHASHING), me.name, parv[0], configfile); /* XXX DEAD */
+ sendto_ops("%s is rehashing Server config file", parv[0]); /* XXX DEAD */
ircd_log(L_INFO, "REHASH From %s\n", get_client_name(sptr, HIDE_IP));
return rehash(cptr, (parc > 1) ? ((*parv[1] == 'q') ? 2 : 0) : 0);
}
#endif
#endif
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ send_reply(sptr, ERR_NOPRIVILEGES);
return 0;
}
ircd_log(L_NOTICE, "Server RESTART by %s\n", get_client_name(sptr, HIDE_IP));
#endif
#endif
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return 0;
}
ircd_log(L_NOTICE, "Server RESTART by %s\n", get_client_name(sptr, HIDE_IP));
if (t < OLDEST_TS || dt < -9000000)
{
- sendto_one(sptr, ":%s NOTICE %s :SETTIME: Bad value", me.name, parv[0]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :SETTIME: Bad value", sptr);
return 0;
}
#endif
for (lp = me.serv->down; lp; lp = lp->next)
if (cptr != lp->value.cptr && DBufLength(&lp->value.cptr->sendQ) < 8000)
- sendto_one(lp->value.cptr, ":%s SETTIME %s", parv[0], parv[1]);
+ sendcmdto_one(sptr, CMD_NOTICE, lp->value.cptr, "%s", parv[1]);
}
else
{
sprintf_irc(tbuf, TIME_T_FMT, TStime());
parv[1] = tbuf;
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_SETTIME " %s %s", 2, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_SETTIME, cptr, 1, "%s %C", 2, parc, parv) !=
HUNTED_ISME)
return 0;
}
#ifdef RELIABLE_CLOCK
if ((dt > 600) || (dt < -600))
- sendto_serv_butone(0, ":%s " TOK_WALLOPS " :Bad SETTIME from %s: " TIME_T_FMT,
- me.name, sptr->name, t);
+ sendcmdto_serv_butone(&me, CMD_WALLOPS, 0, ":Bad SETTIME from %s: %Tu",
+ sptr->name, t);
if (IsUser(sptr))
{
- if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :clock is not set %ld seconds %s : "
- "RELIABLE_CLOCK is defined", me.name, parv[0],
- (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
- else
- sendto_one(sptr, "%s NOTICE %s%s :clock is not set %ld seconds %s : "
- "RELIABLE_CLOCK is defined", NumServ(&me), NumNick(sptr),
- (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :clock is not set %ld seconds %s "
+ ": RELIABLE_CLOCK is defined", sptr, (dt < 0) ? -dt : dt,
+ (dt < 0) ? "forwards" : "backwards");
}
#else
- sendto_ops("SETTIME from %s, clock is set %ld seconds %s",
- sptr->name, (dt < 0) ? -dt : dt,
- (dt < 0) ? "forwards" : "backwards");
+ sendto_opmask_butone(0, SNO_OLDSNO, "SETTIME from %s, clock is set %ld "
+ "seconds %s", sptr->name, (dt < 0) ? -dt : dt,
+ (dt < 0) ? "forwards" : "backwards");
TSoffset -= dt;
if (IsUser(sptr))
{
- if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :clock is set %ld seconds %s", me.name,
- parv[0], (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
- else
- sendto_one(sptr, "%s NOTICE %s%s :clock is set %ld seconds %s",
- NumServ(&me), NumNick(sptr),
- (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :clock is set %ld seconds %s",
+ sptr, (dt < 0) ? -dt : dt,
+ (dt < 0) ? "forwards" : "backwards");
}
#endif
return 0;
if (t < OLDEST_TS || dt < -9000000)
{
- sendto_one(sptr, ":%s NOTICE %s :SETTIME: Bad value", me.name, parv[0]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :SETTIME: Bad value", sptr);
return 0;
}
#endif
for (lp = me.serv->down; lp; lp = lp->next)
if (cptr != lp->value.cptr && DBufLength(&lp->value.cptr->sendQ) < 8000)
- sendto_one(lp->value.cptr, ":%s SETTIME %s", parv[0], parv[1]);
+ sendcmdto_one(sptr, CMD_SETTIME, lp->value.cptr, "%s", parv[1]);
}
else
{
sprintf_irc(tbuf, TIME_T_FMT, TStime());
parv[1] = tbuf;
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_SETTIME " %s %s", 2, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_SETTIME, cptr, 1, "%s %C", 2, parc, parv) !=
HUNTED_ISME)
return 0;
}
#ifdef RELIABLE_CLOCK
if ((dt > 600) || (dt < -600))
- sendto_serv_butone(0, ":%s " TOK_WALLOPS " :Bad SETTIME from %s: " TIME_T_FMT,
- me.name, sptr->name, t);
+ sendcmdto_serv_butone(&me, CMD_WALLOPS, 0, ":Bad SETTIME from %s: %Tu",
+ sptr->name, t);
if (IsUser(sptr))
{
- if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :clock is not set %ld seconds %s : "
- "RELIABLE_CLOCK is defined", me.name, parv[0],
- (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
- else
- sendto_one(sptr, "%s NOTICE %s%s :clock is not set %ld seconds %s : "
- "RELIABLE_CLOCK is defined", NumServ(&me), NumNick(sptr),
- (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :clock is not set %ld seconds %s "
+ ": RELIABLE_CLOCK is defined", sptr, (dt < 0) ? -dt : dt,
+ (dt < 0) ? "forwards" : "backwards");
}
#else
- sendto_ops("SETTIME from %s, clock is set %ld seconds %s",
- sptr->name, (dt < 0) ? -dt : dt,
- (dt < 0) ? "forwards" : "backwards");
+ sendto_opmask_butone(0, SNO_OLDSNO, "SETTIME from %s, clock is set %ld "
+ "seconds %s", sptr->name, (dt < 0) ? -dt : dt,
+ (dt < 0) ? "forwards" : "backwards");
TSoffset -= dt;
if (IsUser(sptr))
{
- if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :clock is set %ld seconds %s", me.name,
- parv[0], (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
- else
- sendto_one(sptr, "%s NOTICE %s%s :clock is set %ld seconds %s",
- NumServ(&me), NumNick(sptr),
- (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :clock is set %ld seconds %s",
+ sptr, (dt < 0) ? -dt : dt,
+ (dt < 0) ? "forwards" : "backwards");
}
#endif
return 0;
if (t < OLDEST_TS || dt < -9000000)
{
- sendto_one(sptr, ":%s NOTICE %s :SETTIME: Bad value", me.name, parv[0]);
+ sendto_one(sptr, ":%s NOTICE %s :SETTIME: Bad value", me.name, parv[0]); /* XXX DEAD */
return 0;
}
#endif
for (lp = me.serv->down; lp; lp = lp->next)
if (cptr != lp->value.cptr && DBufLength(&lp->value.cptr->sendQ) < 8000)
- sendto_one(lp->value.cptr, ":%s SETTIME %s", parv[0], parv[1]);
+ sendto_one(lp->value.cptr, ":%s SETTIME %s", parv[0], parv[1]); /* XXX DEAD */
}
else
{
sprintf_irc(tbuf, TIME_T_FMT, TStime());
parv[1] = tbuf;
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_SETTIME " %s %s", 2, parc, parv) !=
+ if (hunt_server(1, cptr, sptr, "%s%s " TOK_SETTIME " %s %s", 2, parc, parv) != /* XXX DEAD */
HUNTED_ISME)
return 0;
}
#ifdef RELIABLE_CLOCK
if ((dt > 600) || (dt < -600))
- sendto_serv_butone(0, ":%s " TOK_WALLOPS " :Bad SETTIME from %s: " TIME_T_FMT,
+ sendto_serv_butone(0, ":%s " TOK_WALLOPS " :Bad SETTIME from %s: " TIME_T_FMT, /* XXX DEAD */
me.name, sptr->name, t);
if (IsUser(sptr))
{
if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :clock is not set %ld seconds %s : "
+ sendto_one(sptr, ":%s NOTICE %s :clock is not set %ld seconds %s : " /* XXX DEAD */
"RELIABLE_CLOCK is defined", me.name, parv[0],
(dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
else
- sendto_one(sptr, "%s NOTICE %s%s :clock is not set %ld seconds %s : "
+ sendto_one(sptr, "%s NOTICE %s%s :clock is not set %ld seconds %s : " /* XXX DEAD */
"RELIABLE_CLOCK is defined", NumServ(&me), NumNick(sptr),
(dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
}
#else
- sendto_ops("SETTIME from %s, clock is set %ld seconds %s",
+ sendto_ops("SETTIME from %s, clock is set %ld seconds %s", /* XXX DEAD */
sptr->name, (dt < 0) ? -dt : dt,
(dt < 0) ? "forwards" : "backwards");
TSoffset -= dt;
if (IsUser(sptr))
{
if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :clock is set %ld seconds %s", me.name,
+ sendto_one(sptr, ":%s NOTICE %s :clock is set %ld seconds %s", me.name, /* XXX DEAD */
parv[0], (dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
else
- sendto_one(sptr, "%s NOTICE %s%s :clock is set %ld seconds %s",
+ sendto_one(sptr, "%s NOTICE %s%s :clock is set %ld seconds %s", /* XXX DEAD */
NumServ(&me), NumNick(sptr),
(dt < 0) ? -dt : dt, (dt < 0) ? "forwards" : "backwards");
}
if (!(acptr->user))
return 0;
for (lp = acptr->user->silence; lp; lp = lp->next)
- sendto_one(sptr, rpl_str(RPL_SILELIST), me.name,
- sptr->name, acptr->name, lp->value.cp);
- sendto_one(sptr, rpl_str(RPL_ENDOFSILELIST), me.name, sptr->name,
- acptr->name);
+ send_reply(sptr, RPL_SILELIST, acptr->name, lp->value.cp);
+ send_reply(sptr, RPL_ENDOFSILELIST, acptr->name);
return 0;
}
cp = parv[1];
if (c == '-' || c == '+')
cp++;
else if (!(strchr(cp, '@') || strchr(cp, '.') || strchr(cp, '!') || strchr(cp, '*'))) {
- return send_error_to_client(sptr, ERR_NOSUCHNICK, parv[1]);
+ return send_reply(sptr, ERR_NOSUCHNICK, parv[1]);
}
else
c = '+';
cp = pretty_mask(cp);
if ((c == '-' && !del_silence(sptr, cp)) || (c != '-' && !add_silence(sptr, cp))) {
- sendto_prefix_one(sptr, sptr, ":%s " MSG_SILENCE " %c%s", parv[0], c, cp);
+ sendcmdto_one(sptr, CMD_SILENCE, sptr, "%c%s", c, cp);
if (c == '-')
- sendto_serv_butone(0, "%s%s " TOK_SILENCE " * -%s", NumNick(sptr), cp);
+ sendcmdto_serv_butone(sptr, CMD_SILENCE, 0, " * -%s", cp);
}
return 0;
}
if (*parv[2] == '-') {
if (!del_silence(sptr, parv[2] + 1))
- sendto_serv_butone(cptr, ":%s SILENCE * %s", parv[0], parv[2]);
+ sendcmdto_serv_butone(sptr, CMD_SILENCE, cptr, "* %s", parv[2]);
}
else {
add_silence(sptr, parv[2]);
if (acptr && IsServer(acptr->from)) {
- if (IsServer(acptr))
- sendto_one(acptr, ":%s SILENCE %s %s",
- parv[0], NumServ(acptr), parv[2]);
- else
- sendto_one(acptr, ":%s SILENCE %s%s %s",
- parv[0], NumNick(acptr), parv[2]);
+ sendcmdto_one(sptr, CMD_SILENCE, acptr, "%C %s", acptr, parv[2]);
}
}
return 0;
if (!(acptr->user))
return 0;
for (lp = acptr->user->silence; lp; lp = lp->next)
- sendto_one(sptr, rpl_str(RPL_SILELIST), me.name,
+ sendto_one(sptr, rpl_str(RPL_SILELIST), me.name, /* XXX DEAD */
sptr->name, acptr->name, lp->value.cp);
- sendto_one(sptr, rpl_str(RPL_ENDOFSILELIST), me.name, sptr->name,
+ sendto_one(sptr, rpl_str(RPL_ENDOFSILELIST), me.name, sptr->name, /* XXX DEAD */
acptr->name);
return 0;
}
else if (!(strchr(cp, '@') || strchr(cp, '.') ||
strchr(cp, '!') || strchr(cp, '*')))
{
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], parv[1]);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], parv[1]); /* XXX DEAD */
return -1;
}
else
if ((c == '-' && !del_silence(sptr, cp)) ||
(c != '-' && !add_silence(sptr, cp)))
{
- sendto_prefix_one(sptr, sptr, ":%s SILENCE %c%s", parv[0], c, cp);
+ sendto_prefix_one(sptr, sptr, ":%s SILENCE %c%s", parv[0], c, cp); /* XXX DEAD */
if (c == '-')
- sendto_serv_butone(0, ":%s SILENCE * -%s", sptr->name, cp);
+ sendto_serv_butone(0, ":%s SILENCE * -%s", sptr->name, cp); /* XXX DEAD */
}
}
else if (parc < 3 || *parv[2] == '\0')
if (*parv[2] == '-')
{
if (!del_silence(sptr, parv[2] + 1))
- sendto_serv_butone(cptr, ":%s SILENCE * %s", parv[0], parv[2]);
+ sendto_serv_butone(cptr, ":%s SILENCE * %s", parv[0], parv[2]); /* XXX DEAD */
}
else
{
if (acptr && IsServer(acptr->from))
{
if (IsServer(acptr))
- sendto_one(acptr, ":%s SILENCE %s %s",
+ sendto_one(acptr, ":%s SILENCE %s %s", /* XXX DEAD */
parv[0], NumServ(acptr), parv[2]);
else
- sendto_one(acptr, ":%s SILENCE %s%s %s",
+ sendto_one(acptr, ":%s SILENCE %s%s %s", /* XXX DEAD */
parv[0], NumNick(acptr), parv[2]);
}
}
/* Not found? Bugger. */
if (!acptr || IsMe(acptr))
- return send_error_to_client(sptr, ERR_NOSUCHSERVER, server);
+ return send_reply(sptr, ERR_NOSUCHSERVER, server);
/*
* Look for a matching server that is closer,
/* Disallow local opers to squit remote servers */
if (IsLocOp(sptr) && !MyConnect(acptr))
- return send_error_to_client(sptr, ERR_NOPRIVILEGES);
+ return send_reply(sptr, ERR_NOPRIVILEGES);
return exit_client(cptr, acptr, sptr, comment);
}
*/
int m_time(struct Client* cptr, struct Client* sptr, int parc, char* parv[])
{
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_TIME " :%s", 1, parc, parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_TIME, cptr, 0, ":%C", 1, parc, parv) !=
+ HUNTED_ISME)
return 0;
- sendto_one(sptr, rpl_str(RPL_TIME), me.name,
- parv[0], me.name, TStime(), TSoffset, date((long)0));
+ send_reply(sptr, RPL_TIME, me.name, TStime(), TSoffset, date((long)0));
return 0;
}
*/
int m_time(struct Client *cptr, struct Client *sptr, int parc, char *parv[])
{
- if (hunt_server(0, cptr, sptr, "%s%s TIME :%s", 1, parc, parv) == HUNTED_ISME)
- sendto_one(sptr, rpl_str(RPL_TIME), me.name,
+ if (hunt_server(0, cptr, sptr, "%s%s TIME :%s", 1, parc, parv) == HUNTED_ISME) /* XXX DEAD */
+ sendto_one(sptr, rpl_str(RPL_TIME), me.name, /* XXX DEAD */
parv[0], me.name, TStime(), TSoffset, date((long)0));
return 0;
}
if (!IsChannelName(name) || !(chptr = FindChannel(name)) ||
((topic || SecretChannel(chptr)) && !find_channel_member(sptr, chptr)))
{
- sendto_one(sptr, err_str(chptr ? ERR_NOTONCHANNEL : ERR_NOSUCHCHANNEL),
- me.name, parv[0], chptr ? chptr->chname : name);
+ send_reply(sptr, (chptr ? ERR_NOTONCHANNEL : ERR_NOSUCHCHANNEL),
+ chptr ? chptr->chname : name);
continue;
}
if (IsModelessChannel(name))
{
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED), me.name, parv[0],
- chptr->chname);
+ send_reply(sptr, ERR_CHANOPRIVSNEEDED, chptr->chname);
continue;
}
if (IsLocalChannel(name) && !MyUser(sptr))
if (!topic) /* only asking for topic */
{
if (chptr->topic[0] == '\0')
- sendto_one(sptr, rpl_str(RPL_NOTOPIC), me.name, parv[0], chptr->chname);
+ send_reply(sptr, RPL_NOTOPIC, chptr->chname);
else
{
- sendto_one(sptr, rpl_str(RPL_TOPIC),
- me.name, parv[0], chptr->chname, chptr->topic);
- sendto_one(sptr, rpl_str(RPL_TOPICWHOTIME),
- me.name, parv[0], chptr->chname,
- chptr->topic_nick, chptr->topic_time);
+ send_reply(sptr, RPL_TOPIC, chptr->chname, chptr->topic);
+ send_reply(sptr, RPL_TOPICWHOTIME, chptr->chname, chptr->topic_nick,
+ chptr->topic_time);
}
}
else if (((chptr->mode.mode & MODE_TOPICLIMIT) == 0 ||
ircd_strncpy(chptr->topic, topic, TOPICLEN);
ircd_strncpy(chptr->topic_nick, sptr->name, NICKLEN);
chptr->topic_time = CurrentTime;
- sendto_serv_butone(cptr, "%s%s " TOK_TOPIC " %s :%s",
- NumNick(sptr), chptr->chname, chptr->topic);
- sendto_channel_butserv(chptr, sptr, ":%s TOPIC %s :%s",
- parv[0], chptr->chname, chptr->topic);
+ sendcmdto_serv_butone(sptr, CMD_TOPIC, cptr, "%H :%s", chptr,
+ chptr->topic);
+ sendcmdto_channel_butserv(sptr, CMD_TOPIC, chptr, "%H :%s", chptr,
+ chptr->topic);
}
else
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED),
- me.name, parv[0], chptr->chname);
+ send_reply(sptr, ERR_CHANOPRIVSNEEDED, chptr->chname);
}
return 0;
}
if (!IsChannelName(name) || !(chptr = FindChannel(name)) ||
((topic || SecretChannel(chptr)) && !find_channel_member(sptr, chptr)))
{
- sendto_one(sptr, err_str(chptr ? ERR_NOTONCHANNEL : ERR_NOSUCHCHANNEL),
- me.name, parv[0], chptr ? chptr->chname : name);
+ send_reply(sptr, (chptr ? ERR_NOTONCHANNEL : ERR_NOSUCHCHANNEL),
+ chptr ? chptr->chname : name);
continue;
}
if (IsModelessChannel(name))
{
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED), me.name, parv[0],
- chptr->chname);
+ send_reply(sptr, ERR_CHANOPRIVSNEEDED, chptr->chname);
continue;
}
if (IsLocalChannel(name) && !MyUser(sptr))
if (!topic) /* only asking for topic */
{
if (chptr->topic[0] == '\0')
- sendto_one(sptr, rpl_str(RPL_NOTOPIC), me.name, parv[0], chptr->chname);
+ send_reply(sptr, RPL_NOTOPIC, chptr->chname);
else
{
- sendto_one(sptr, rpl_str(RPL_TOPIC),
- me.name, parv[0], chptr->chname, chptr->topic);
- sendto_one(sptr, rpl_str(RPL_TOPICWHOTIME),
- me.name, parv[0], chptr->chname,
- chptr->topic_nick, chptr->topic_time);
+ send_reply(sptr, RPL_TOPIC, chptr->chname, chptr->topic);
+ send_reply(sptr, RPL_TOPICWHOTIME, chptr->chname, chptr->topic_nick,
+ chptr->topic_time);
}
}
else if (((chptr->mode.mode & MODE_TOPICLIMIT) == 0 ||
ircd_strncpy(chptr->topic, topic, TOPICLEN);
ircd_strncpy(chptr->topic_nick, sptr->name, NICKLEN);
chptr->topic_time = CurrentTime;
- sendto_serv_butone(cptr, "%s%s " TOK_TOPIC " %s :%s",
- NumNick(sptr), chptr->chname, chptr->topic);
- sendto_channel_butserv(chptr, sptr, ":%s TOPIC %s :%s",
- parv[0], chptr->chname, chptr->topic);
+ sendcmdto_serv_butone(sptr, CMD_TOPIC, cptr, "%H :%s", chptr,
+ chptr->topic);
+ sendcmdto_channel_butserv(sptr, CMD_TOPIC, chptr, "%H :%s", chptr,
+ chptr->topic);
}
else
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED),
- me.name, parv[0], chptr->chname);
+ send_reply(sptr, ERR_CHANOPRIVSNEEDED, chptr->chname);
}
return 0;
}
if (!IsChannelName(name) || !(chptr = FindChannel(name)) ||
((topic || SecretChannel(chptr)) && !find_channel_member(sptr, chptr)))
{
- sendto_one(sptr, err_str(chptr ? ERR_NOTONCHANNEL : ERR_NOSUCHCHANNEL),
+ sendto_one(sptr, err_str(chptr ? ERR_NOTONCHANNEL : ERR_NOSUCHCHANNEL), /* XXX DEAD */
me.name, parv[0], chptr ? chptr->chname : name);
continue;
}
if (IsModelessChannel(name))
{
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED), me.name, parv[0],
+ sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED), me.name, parv[0], /* XXX DEAD */
chptr->chname);
continue;
}
if (!topic) /* only asking for topic */
{
if (chptr->topic[0] == '\0')
- sendto_one(sptr, rpl_str(RPL_NOTOPIC), me.name, parv[0], chptr->chname);
+ sendto_one(sptr, rpl_str(RPL_NOTOPIC), me.name, parv[0], chptr->chname); /* XXX DEAD */
else
{
- sendto_one(sptr, rpl_str(RPL_TOPIC),
+ sendto_one(sptr, rpl_str(RPL_TOPIC), /* XXX DEAD */
me.name, parv[0], chptr->chname, chptr->topic);
- sendto_one(sptr, rpl_str(RPL_TOPICWHOTIME),
+ sendto_one(sptr, rpl_str(RPL_TOPICWHOTIME), /* XXX DEAD */
me.name, parv[0], chptr->chname,
chptr->topic_nick, chptr->topic_time);
}
ircd_strncpy(chptr->topic, topic, TOPICLEN);
ircd_strncpy(chptr->topic_nick, sptr->name, NICKLEN);
chptr->topic_time = CurrentTime;
- sendto_serv_butone(cptr, "%s%s " TOK_TOPIC " %s :%s",
+ sendto_serv_butone(cptr, "%s%s " TOK_TOPIC " %s :%s", /* XXX DEAD */
NumNick(sptr), chptr->chname, chptr->topic);
- sendto_channel_butserv(chptr, sptr, ":%s TOPIC %s :%s",
+ sendto_channel_butserv(chptr, sptr, ":%s TOPIC %s :%s", /* XXX DEAD */
parv[0], chptr->chname, chptr->topic);
}
else
- sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED),
+ sendto_one(sptr, err_str(ERR_CHANOPRIVSNEEDED), /* XXX DEAD */
me.name, parv[0], chptr->chname);
}
return 0;
int doall, link_s[MAXCONNECTIONS], link_u[MAXCONNECTIONS];
int cnt = 0, wilds, dow;
- if (parc < 2 || BadPtr(parv[1]))
- {
+ if (parc < 2 || BadPtr(parv[1])) {
/* just "TRACE" without parameters. Must be from local client */
parc = 1;
acptr = &me;
tname = me.name;
i = HUNTED_ISME;
- }
- else if (parc < 3 || BadPtr(parv[2]))
- {
+ } else if (parc < 3 || BadPtr(parv[2])) {
/* No target specified. Make one before propagating. */
parc = 2;
tname = parv[1];
if ((acptr = find_match_server(parv[1])) ||
- ((acptr = FindClient(parv[1])) && !MyUser(acptr)))
- {
+ ((acptr = FindClient(parv[1])) && !MyUser(acptr))) {
if (IsUser(acptr))
parv[2] = acptr->user->server->name;
else
parv[2] = acptr->name;
parc = 3;
parv[3] = 0;
- if ((i = hunt_server(IsServer(acptr), cptr, sptr,
- "%s%s " TOK_TRACE " %s :%s", 2, parc, parv)) == HUNTED_NOSUCH)
+ if ((i = hunt_server_cmd(sptr, CMD_TRACE, cptr, IsServer(acptr),
+ "%s :%C", 2, parc, parv)) == HUNTED_NOSUCH)
return 0;
- }
- else
+ } else
i = HUNTED_ISME;
- }
- else
- {
+ } else {
/* Got "TRACE <tname> :<target>" */
parc = 3;
if (MyUser(sptr) || Protocol(cptr) < 10)
acptr = find_match_server(parv[2]);
else
acptr = FindNServer(parv[2]);
- if ((i = hunt_server(0, cptr, sptr,
- "%s%s " TOK_TRACE " %s :%s", 2, parc, parv)) == HUNTED_NOSUCH)
+ if ((i = hunt_server_cmd(sptr, CMD_TRACE, cptr, 0, "%s :%C", 2, parc,
+ parv)) == HUNTED_NOSUCH)
return 0;
tname = parv[1];
}
- if (i == HUNTED_PASS)
- {
+ if (i == HUNTED_PASS) {
if (!acptr)
acptr = next_client(GlobalClientList, tname);
else
acptr = acptr->from;
- sendto_one(sptr, rpl_str(RPL_TRACELINK), me.name, parv[0],
+ send_reply(sptr, RPL_TRACELINK,
#ifndef GODMODE
- version, debugmode, tname, acptr ? acptr->from->name : "<No_match>");
+ version, debugmode, tname, acptr ? acptr->from->name : "<No_match>"
#else /* GODMODE */
version, debugmode, tname, acptr ? acptr->from->name : "<No_match>",
- (acptr && acptr->from->serv) ? acptr->from->serv->timestamp : 0);
+ (acptr && acptr->from->serv) ? acptr->from->serv->timestamp : 0
#endif /* GODMODE */
+ ); /* I really could do without GODMODE */
return 0;
}
for (i = 0; i < MAXCONNECTIONS; i++)
link_s[i] = 0, link_u[i] = 0;
- if (doall)
- {
+ if (doall) {
for (acptr = GlobalClientList; acptr; acptr = acptr->next) {
if (IsUser(acptr))
link_u[acptr->from->fd]++;
/* report all direct connections */
- for (i = 0; i <= HighestFd; i++)
- {
+ for (i = 0; i <= HighestFd; i++) {
unsigned int conClass;
if (!(acptr = LocalClientArray[i])) /* Local Connection? */
conClass = get_client_class(acptr);
- switch (acptr->status)
- {
+ switch (acptr->status) {
case STAT_CONNECTING:
- sendto_one(sptr, rpl_str(RPL_TRACECONNECTING),
- me.name, parv[0], conClass, acptr->name);
+ send_reply(sptr, RPL_TRACECONNECTING, conClass, acptr->name);
cnt++;
break;
case STAT_HANDSHAKE:
- sendto_one(sptr, rpl_str(RPL_TRACEHANDSHAKE),
- me.name, parv[0], conClass, acptr->name);
+ send_reply(sptr, RPL_TRACEHANDSHAKE, conClass, acptr->name);
cnt++;
break;
case STAT_ME:
break;
case STAT_UNKNOWN:
case STAT_UNKNOWN_USER:
- sendto_one(sptr, rpl_str(RPL_TRACEUNKNOWN),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP));
+ send_reply(sptr, RPL_TRACEUNKNOWN, conClass,
+ get_client_name(acptr, HIDE_IP));
cnt++;
break;
case STAT_UNKNOWN_SERVER:
- sendto_one(sptr, rpl_str(RPL_TRACEUNKNOWN),
- me.name, parv[0], conClass, "Unknown Server");
+ send_reply(sptr, RPL_TRACEUNKNOWN, conClass, "Unknown Server");
cnt++;
break;
case STAT_USER:
/* Only opers see users if there is a wildcard
but anyone can see all the opers. */
if ((IsAnOper(sptr) && (MyUser(sptr) ||
- !(dow && IsInvisible(acptr)))) || !dow || IsAnOper(acptr))
- {
+ !(dow && IsInvisible(acptr)))) || !dow || IsAnOper(acptr)) {
if (IsAnOper(acptr))
- sendto_one(sptr, rpl_str(RPL_TRACEOPERATOR),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP),
- CurrentTime - acptr->lasttime);
+ send_reply(sptr, RPL_TRACEOPERATOR, conClass,
+ get_client_name(acptr, HIDE_IP),
+ CurrentTime - acptr->lasttime);
else
- sendto_one(sptr, rpl_str(RPL_TRACEUSER),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP),
- CurrentTime - acptr->lasttime);
+ send_reply(sptr, RPL_TRACEUSER, conClass,
+ get_client_name(acptr, HIDE_IP),
+ CurrentTime - acptr->lasttime);
cnt++;
}
break;
case STAT_SERVER:
if (acptr->serv->user)
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], conClass, link_s[i],
+ send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i],
link_u[i], acptr->name,
(*acptr->serv->by) ? acptr->serv->by : "*",
acptr->serv->user->username, acptr->serv->user->host,
CurrentTime - acptr->lasttime,
CurrentTime - acptr->serv->timestamp);
- else
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], conClass, link_s[i],
+ else
+ send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i],
link_u[i], acptr->name,
(*acptr->serv->by) ? acptr->serv->by : "*", "*",
me.name, CurrentTime - acptr->lasttime,
- CurrentTime - acptr->serv->timestamp);
+ CurrentTime - acptr->serv->timestamp);
cnt++;
break;
default: /* We actually shouldn't come here, -msa */
- sendto_one(sptr, rpl_str(RPL_TRACENEWTYPE), me.name, parv[0],
- get_client_name(acptr, HIDE_IP));
+ send_reply(sptr, RPL_TRACENEWTYPE, get_client_name(acptr, HIDE_IP));
cnt++;
break;
}
* Add these lines to summarize the above which can get rather long
* and messy when done remotely - Avalon
*/
- if (!IsAnOper(sptr) || !cnt)
- {
+ if (!IsAnOper(sptr) || !cnt) {
if (!cnt)
/* let the user have some idea that its at the end of the trace */
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], 0, link_s[me.fd],
+ send_reply(sptr, RPL_TRACESERVER, 0, link_s[me.fd],
link_u[me.fd], "<No_match>", *(me.serv->by) ?
me.serv->by : "*", "*", me.name, 0, 0);
return 0;
}
for (cltmp = FirstClass(); doall && cltmp; cltmp = NextClass(cltmp))
if (Links(cltmp) > 0)
- sendto_one(sptr, rpl_str(RPL_TRACECLASS), me.name,
- parv[0], ConClass(cltmp), Links(cltmp));
+ send_reply(sptr, RPL_TRACECLASS, ConClass(cltmp), Links(cltmp));
return 0;
}
int doall, link_s[MAXCONNECTIONS], link_u[MAXCONNECTIONS];
int cnt = 0, wilds, dow;
- if (parc < 2 || BadPtr(parv[1]))
- {
+ if (parc < 2 || BadPtr(parv[1])) {
/* just "TRACE" without parameters. Must be from local client */
parc = 1;
acptr = &me;
tname = me.name;
i = HUNTED_ISME;
- }
- else if (parc < 3 || BadPtr(parv[2]))
- {
+ } else if (parc < 3 || BadPtr(parv[2])) {
/* No target specified. Make one before propagating. */
parc = 2;
tname = parv[1];
if ((acptr = find_match_server(parv[1])) ||
- ((acptr = FindClient(parv[1])) && !MyUser(acptr)))
- {
+ ((acptr = FindClient(parv[1])) && !MyUser(acptr))) {
if (IsUser(acptr))
parv[2] = acptr->user->server->name;
else
parv[2] = acptr->name;
parc = 3;
parv[3] = 0;
- if ((i = hunt_server(IsServer(acptr), cptr, sptr,
- "%s%s " TOK_TRACE " %s :%s", 2, parc, parv)) == HUNTED_NOSUCH)
+
+ if ((i = hunt_server_cmd(sptr, CMD_TRACE, cptr, IsServer(acptr),
+ "%s :%C", 2, parc, parv)) == HUNTED_NOSUCH)
return 0;
- }
- else
+ } else
i = HUNTED_ISME;
- }
- else
- {
+ } else {
/* Got "TRACE <tname> :<target>" */
parc = 3;
if (MyUser(sptr) || Protocol(cptr) < 10)
acptr = find_match_server(parv[2]);
else
acptr = FindNServer(parv[2]);
- if ((i = hunt_server(0, cptr, sptr,
- "%s%s " TOK_TRACE " %s :%s", 2, parc, parv)) == HUNTED_NOSUCH)
+ if ((i = hunt_server_cmd(sptr, CMD_TRACE, cptr, 0, "%s :%C", 2, parc,
+ parv)) == HUNTED_NOSUCH)
return 0;
tname = parv[1];
}
- if (i == HUNTED_PASS)
- {
+ if (i == HUNTED_PASS) {
if (!acptr)
acptr = next_client(GlobalClientList, tname);
else
acptr = acptr->from;
- sendto_one(sptr, rpl_str(RPL_TRACELINK), me.name, parv[0],
+ send_reply(sptr, RPL_TRACELINK,
#ifndef GODMODE
- version, debugmode, tname, acptr ? acptr->from->name : "<No_match>");
+ version, debugmode, tname, acptr ? acptr->from->name : "<No_match>"
#else /* GODMODE */
version, debugmode, tname, acptr ? acptr->from->name : "<No_match>",
- (acptr && acptr->from->serv) ? acptr->from->serv->timestamp : 0);
+ (acptr && acptr->from->serv) ? acptr->from->serv->timestamp : 0
#endif /* GODMODE */
+ ); /* I really could do without GODMODE */
return 0;
}
for (i = 0; i < MAXCONNECTIONS; i++)
link_s[i] = 0, link_u[i] = 0;
- if (doall)
- {
+ if (doall) {
for (acptr = GlobalClientList; acptr; acptr = acptr->next) {
if (IsUser(acptr))
link_u[acptr->from->fd]++;
/* report all direct connections */
- for (i = 0; i <= HighestFd; i++)
- {
+ for (i = 0; i <= HighestFd; i++) {
unsigned int conClass;
if (!(acptr = LocalClientArray[i])) /* Local Connection? */
continue;
conClass = get_client_class(acptr);
- switch (acptr->status)
- {
+ switch (acptr->status) {
case STAT_CONNECTING:
- sendto_one(sptr, rpl_str(RPL_TRACECONNECTING),
- me.name, parv[0], conClass, acptr->name);
+ send_reply(sptr, RPL_TRACECONNECTING, conClass, acptr->name);
cnt++;
break;
case STAT_HANDSHAKE:
- sendto_one(sptr, rpl_str(RPL_TRACEHANDSHAKE),
- me.name, parv[0], conClass, acptr->name);
+ send_reply(sptr, RPL_TRACEHANDSHAKE, conClass, acptr->name);
cnt++;
break;
case STAT_ME:
break;
case STAT_UNKNOWN:
case STAT_UNKNOWN_USER:
- sendto_one(sptr, rpl_str(RPL_TRACEUNKNOWN),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP));
+ send_reply(sptr, RPL_TRACEUNKNOWN, conClass,
+ get_client_name(acptr, HIDE_IP));
cnt++;
break;
case STAT_UNKNOWN_SERVER:
- sendto_one(sptr, rpl_str(RPL_TRACEUNKNOWN),
- me.name, parv[0], conClass, "Unknown Server");
+ send_reply(sptr, RPL_TRACEUNKNOWN, conClass, "Unknown Server");
cnt++;
break;
case STAT_USER:
/* Only opers see users if there is a wildcard
but anyone can see all the opers. */
if ((IsAnOper(sptr) && (MyUser(sptr) ||
- !(dow && IsInvisible(acptr)))) || !dow || IsAnOper(acptr))
- {
+ !(dow && IsInvisible(acptr)))) || !dow || IsAnOper(acptr)) {
if (IsAnOper(acptr))
- sendto_one(sptr, rpl_str(RPL_TRACEOPERATOR),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP),
- CurrentTime - acptr->lasttime);
+ send_reply(sptr, RPL_TRACEOPERATOR, conClass,
+ get_client_name(acptr, HIDE_IP),
+ CurrentTime - acptr->lasttime);
else
- sendto_one(sptr, rpl_str(RPL_TRACEUSER),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP),
- CurrentTime - acptr->lasttime);
+ send_reply(sptr, RPL_TRACEUSER, conClass,
+ get_client_name(acptr, HIDE_IP),
+ CurrentTime - acptr->lasttime);
cnt++;
}
break;
case STAT_SERVER:
if (acptr->serv->user)
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], conClass, link_s[i],
+ send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i],
link_u[i], acptr->name,
(*acptr->serv->by) ? acptr->serv->by : "*",
acptr->serv->user->username, acptr->serv->user->host,
CurrentTime - acptr->lasttime,
CurrentTime - acptr->serv->timestamp);
else
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], conClass, link_s[i],
+ send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i],
link_u[i], acptr->name,
(*acptr->serv->by) ? acptr->serv->by : "*", "*",
me.name, CurrentTime - acptr->lasttime,
cnt++;
break;
default: /* We actually shouldn't come here, -msa */
- sendto_one(sptr, rpl_str(RPL_TRACENEWTYPE), me.name, parv[0],
- get_client_name(acptr, HIDE_IP));
+ send_reply(sptr, RPL_TRACENEWTYPE, get_client_name(acptr, HIDE_IP));
cnt++;
break;
}
* Add these lines to summarize the above which can get rather long
* and messy when done remotely - Avalon
*/
- if (!IsAnOper(sptr) || !cnt)
- {
+ if (!IsAnOper(sptr) || !cnt) {
if (!cnt)
/* let the user have some idea that its at the end of the trace */
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], 0, link_s[me.fd],
+ send_reply(sptr, RPL_TRACESERVER, 0, link_s[me.fd],
link_u[me.fd], "<No_match>", *(me.serv->by) ?
me.serv->by : "*", "*", me.name, 0, 0);
return 0;
}
for (cltmp = FirstClass(); doall && cltmp; cltmp = NextClass(cltmp))
if (Links(cltmp) > 0)
- sendto_one(sptr, rpl_str(RPL_TRACECLASS), me.name,
- parv[0], ConClass(cltmp), Links(cltmp));
+ send_reply(sptr, RPL_TRACECLASS, ConClass(cltmp), Links(cltmp));
return 0;
}
int doall, link_s[MAXCONNECTIONS], link_u[MAXCONNECTIONS];
int cnt = 0, wilds, dow;
- if (parc < 2 || BadPtr(parv[1]))
- {
+ if (parc < 2 || BadPtr(parv[1])) {
/* just "TRACE" without parameters. Must be from local client */
parc = 1;
acptr = &me;
tname = me.name;
i = HUNTED_ISME;
- }
- else if (parc < 3 || BadPtr(parv[2]))
- {
+ } else if (parc < 3 || BadPtr(parv[2])) {
/* No target specified. Make one before propagating. */
parc = 2;
tname = parv[1];
if ((acptr = find_match_server(parv[1])) ||
- ((acptr = FindClient(parv[1])) && !MyUser(acptr)))
- {
+ ((acptr = FindClient(parv[1])) && !MyUser(acptr))) {
if (IsUser(acptr))
parv[2] = acptr->user->server->name;
else
parv[2] = acptr->name;
parc = 3;
parv[3] = 0;
- if ((i = hunt_server(IsServer(acptr), cptr, sptr,
- "%s%s " TOK_TRACE " %s :%s", 2, parc, parv)) == HUNTED_NOSUCH)
+ if ((i = hunt_server_cmd(sptr, CMD_TRACE, cptr, IsServer(acptr),
+ "%s :%C", 2, parc, parv)) == HUNTED_NOSUCH)
return 0;
- }
- else
+ } else
i = HUNTED_ISME;
- }
- else
- {
+ } else {
/* Got "TRACE <tname> :<target>" */
parc = 3;
if (MyUser(sptr) || Protocol(cptr) < 10)
acptr = find_match_server(parv[2]);
else
acptr = FindNServer(parv[2]);
- if ((i = hunt_server(0, cptr, sptr,
- "%s%s " TOK_TRACE " %s :%s", 2, parc, parv)) == HUNTED_NOSUCH)
+ if ((i = hunt_server_cmd(sptr, CMD_TRACE, cptr, 0, "%s :%C", 2, parc,
+ parv)) == HUNTED_NOSUCH)
return 0;
tname = parv[1];
}
- if (i == HUNTED_PASS)
- {
+ if (i == HUNTED_PASS) {
if (!acptr)
acptr = next_client(GlobalClientList, tname);
else
acptr = acptr->from;
- sendto_one(sptr, rpl_str(RPL_TRACELINK), me.name, parv[0],
+ send_reply(sptr, RPL_TRACELINK,
#ifndef GODMODE
- version, debugmode, tname, acptr ? acptr->from->name : "<No_match>");
+ version, debugmode, tname, acptr ? acptr->from->name : "<No_match>"
#else /* GODMODE */
version, debugmode, tname, acptr ? acptr->from->name : "<No_match>",
- (acptr && acptr->from->serv) ? acptr->from->serv->timestamp : 0);
+ (acptr && acptr->from->serv) ? acptr->from->serv->timestamp : 0
#endif /* GODMODE */
+ ); /* I really could do without GODMODE */
return 0;
}
for (i = 0; i < MAXCONNECTIONS; i++)
link_s[i] = 0, link_u[i] = 0;
- if (doall)
- {
+ if (doall) {
for (acptr = GlobalClientList; acptr; acptr = acptr->next) {
if (IsUser(acptr))
link_u[acptr->from->fd]++;
/* report all direct connections */
- for (i = 0; i <= HighestFd; i++)
- {
+ for (i = 0; i <= HighestFd; i++) {
unsigned int conClass;
if (!(acptr = LocalClientArray[i])) /* Local Connection? */
continue;
conClass = get_client_class(acptr);
- switch (acptr->status)
- {
+ switch (acptr->status) {
case STAT_CONNECTING:
- sendto_one(sptr, rpl_str(RPL_TRACECONNECTING),
- me.name, parv[0], conClass, acptr->name);
+ send_reply(sptr, RPL_TRACECONNECTING, conClass, acptr->name);
cnt++;
break;
case STAT_HANDSHAKE:
- sendto_one(sptr, rpl_str(RPL_TRACEHANDSHAKE),
- me.name, parv[0], conClass, acptr->name);
+ send_reply(sptr, RPL_TRACEHANDSHAKE, conClass, acptr->name);
cnt++;
break;
case STAT_ME:
break;
case STAT_UNKNOWN:
case STAT_UNKNOWN_USER:
- sendto_one(sptr, rpl_str(RPL_TRACEUNKNOWN),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP));
+ send_reply(sptr, RPL_TRACEUNKNOWN, conClass,
+ get_client_name(acptr, HIDE_IP));
cnt++;
break;
case STAT_UNKNOWN_SERVER:
- sendto_one(sptr, rpl_str(RPL_TRACEUNKNOWN),
- me.name, parv[0], conClass, "Unknown Server");
+ send_reply(sptr, RPL_TRACEUNKNOWN, conClass, "Unknown Server");
cnt++;
break;
case STAT_USER:
/* Only opers see users if there is a wildcard
but anyone can see all the opers. */
if ((IsAnOper(sptr) && (MyUser(sptr) ||
- !(dow && IsInvisible(acptr)))) || !dow || IsAnOper(acptr))
- {
+ !(dow && IsInvisible(acptr)))) || !dow || IsAnOper(acptr)) {
if (IsAnOper(acptr))
- sendto_one(sptr, rpl_str(RPL_TRACEOPERATOR),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP),
+ send_reply(sptr, RPL_TRACEOPERATOR, conClass,
+ get_client_name(acptr, HIDE_IP),
CurrentTime - acptr->lasttime);
else
- sendto_one(sptr, rpl_str(RPL_TRACEUSER),
- me.name, parv[0], conClass, get_client_name(acptr, HIDE_IP),
+ send_reply(sptr, RPL_TRACEUSER, conClass,
+ get_client_name(acptr, HIDE_IP),
CurrentTime - acptr->lasttime);
cnt++;
}
case STAT_SERVER:
if (acptr->serv->user)
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], conClass, link_s[i],
+ send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i],
link_u[i], acptr->name,
(*acptr->serv->by) ? acptr->serv->by : "*",
acptr->serv->user->username, acptr->serv->user->host,
CurrentTime - acptr->lasttime,
CurrentTime - acptr->serv->timestamp);
else
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], conClass, link_s[i],
+ send_reply(sptr, RPL_TRACESERVER, conClass, link_s[i],
link_u[i], acptr->name,
(*acptr->serv->by) ? acptr->serv->by : "*", "*",
me.name, CurrentTime - acptr->lasttime,
cnt++;
break;
default: /* We actually shouldn't come here, -msa */
- sendto_one(sptr, rpl_str(RPL_TRACENEWTYPE), me.name, parv[0],
- get_client_name(acptr, HIDE_IP));
+ send_reply(sptr, RPL_TRACENEWTYPE, get_client_name(acptr, HIDE_IP));
cnt++;
break;
}
* Add these lines to summarize the above which can get rather long
* and messy when done remotely - Avalon
*/
- if (!IsAnOper(sptr) || !cnt)
- {
+ if (!IsAnOper(sptr) || !cnt) {
if (!cnt)
/* let the user have some idea that its at the end of the trace */
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
- me.name, parv[0], 0, link_s[me.fd],
+ send_reply(sptr, RPL_TRACESERVER, 0, link_s[me.fd],
link_u[me.fd], "<No_match>", *(me.serv->by) ?
me.serv->by : "*", "*", me.name, 0, 0);
return 0;
}
for (cltmp = FirstClass(); doall && cltmp; cltmp = NextClass(cltmp))
if (Links(cltmp) > 0)
- sendto_one(sptr, rpl_str(RPL_TRACECLASS), me.name,
- parv[0], ConClass(cltmp), Links(cltmp));
+ send_reply(sptr, RPL_TRACECLASS, ConClass(cltmp), Links(cltmp));
return 0;
}
parv[2] = acptr->name;
parc = 3;
parv[3] = 0;
- if ((i = hunt_server(IsServer(acptr), cptr, sptr,
+ if ((i = hunt_server(IsServer(acptr), cptr, sptr, /* XXX DEAD */
"%s%s " TOK_TRACE " %s :%s", 2, parc, parv)) == HUNTED_NOSUCH)
return 0;
}
acptr = find_match_server(parv[2]);
else
acptr = FindNServer(parv[2]);
- if ((i = hunt_server(0, cptr, sptr,
+ if ((i = hunt_server(0, cptr, sptr, /* XXX DEAD */
"%s%s " TOK_TRACE " %s :%s", 2, parc, parv)) == HUNTED_NOSUCH)
return 0;
tname = parv[1];
acptr = next_client(GlobalClientList, tname);
else
acptr = acptr->from;
- sendto_one(sptr, rpl_str(RPL_TRACELINK), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_TRACELINK), me.name, parv[0], /* XXX DEAD */
#ifndef GODMODE
version, debugmode, tname, acptr ? acptr->from->name : "<No_match>");
#else /* GODMODE */
switch (acptr->status)
{
case STAT_CONNECTING:
- sendto_one(sptr, rpl_str(RPL_TRACECONNECTING),
+ sendto_one(sptr, rpl_str(RPL_TRACECONNECTING), /* XXX DEAD */
me.name, parv[0], conClass, name);
cnt++;
break;
case STAT_HANDSHAKE:
- sendto_one(sptr, rpl_str(RPL_TRACEHANDSHAKE),
+ sendto_one(sptr, rpl_str(RPL_TRACEHANDSHAKE), /* XXX DEAD */
me.name, parv[0], conClass, name);
cnt++;
break;
case STAT_UNKNOWN:
case STAT_UNKNOWN_USER:
case STAT_UNKNOWN_SERVER:
- sendto_one(sptr, rpl_str(RPL_TRACEUNKNOWN),
+ sendto_one(sptr, rpl_str(RPL_TRACEUNKNOWN), /* XXX DEAD */
me.name, parv[0], conClass, name);
cnt++;
break;
!(dow && IsInvisible(acptr)))) || !dow || IsAnOper(acptr))
{
if (IsAnOper(acptr))
- sendto_one(sptr, rpl_str(RPL_TRACEOPERATOR),
+ sendto_one(sptr, rpl_str(RPL_TRACEOPERATOR), /* XXX DEAD */
me.name, parv[0], conClass, name, CurrentTime - acptr->lasttime);
else
- sendto_one(sptr, rpl_str(RPL_TRACEUSER),
+ sendto_one(sptr, rpl_str(RPL_TRACEUSER), /* XXX DEAD */
me.name, parv[0], conClass, name, CurrentTime - acptr->lasttime);
cnt++;
}
case STAT_SERVER:
if (acptr->serv->user)
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
+ sendto_one(sptr, rpl_str(RPL_TRACESERVER), /* XXX DEAD */
me.name, parv[0], conClass, link_s[i],
link_u[i], name, (*acptr->serv->by) ? acptr->serv->by : "*",
acptr->serv->user->username, acptr->serv->user->host,
CurrentTime - acptr->lasttime,
CurrentTime - acptr->serv->timestamp);
else
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
+ sendto_one(sptr, rpl_str(RPL_TRACESERVER), /* XXX DEAD */
me.name, parv[0], conClass, link_s[i],
link_u[i], name, (*acptr->serv->by) ? acptr->serv->by : "*", "*",
me.name, CurrentTime - acptr->lasttime,
cnt++;
break;
default: /* We actually shouldn't come here, -msa */
- sendto_one(sptr, rpl_str(RPL_TRACENEWTYPE), me.name, parv[0], name);
+ sendto_one(sptr, rpl_str(RPL_TRACENEWTYPE), me.name, parv[0], name); /* XXX DEAD */
cnt++;
break;
}
{
if (!cnt)
/* let the user have some idea that its at the end of the trace */
- sendto_one(sptr, rpl_str(RPL_TRACESERVER),
+ sendto_one(sptr, rpl_str(RPL_TRACESERVER), /* XXX DEAD */
me.name, parv[0], 0, link_s[me.fd],
link_u[me.fd], "<No_match>", *(me.serv->by) ?
me.serv->by : "*", "*", me.name, 0, 0);
}
for (cltmp = FirstClass(); doall && cltmp; cltmp = NextClass(cltmp))
if (Links(cltmp) > 0)
- sendto_one(sptr, rpl_str(RPL_TRACECLASS), me.name,
+ sendto_one(sptr, rpl_str(RPL_TRACECLASS), me.name, /* XXX DEAD */
parv[0], ConClass(cltmp), Links(cltmp));
return 0;
}
assert(0 != sptr);
if (!IsAnOper(sptr)) {
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ send_reply(sptr, ERR_NOPRIVILEGES);
return 0;
}
if (parc < 5) {
- sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "UPING");
+ send_reply(sptr, ERR_NEEDMOREPARAMS, "UPING");
return 0;
}
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_UPING " %s %s %s %s", 3, parc, parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_UPING, cptr, 1, "%s %s %C %s", 3, parc, parv)
+ != HUNTED_ISME)
return 0;
/*
* Determine port: First user supplied, then default : 7007
if (EmptyString(parv[4]) || (count = atoi(parv[4])) <= 0)
{
- if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :UPING: Illegal number of packets: %s",
- me.name, parv[0], parv[4]);
- else
- sendto_one(sptr, "%s " TOK_NOTICE " %s%s :UPING: Illegal number of packets: %s",
- NumServ(&me), NumNick(sptr), parv[4]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :UPING : Illegal number of "
+ "packets: %s", sptr, parv[4]);
return 0;
}
/*
*/
if ((aconf = conf_find_server(parv[1])))
uping_server(sptr, aconf, port, count);
- else {
- if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :UPING: Host %s not listed in ircd.conf",
- me.name, parv[0], parv[1]);
- else
- sendto_one(sptr, "%s " TOK_NOTICE " %s%s :UPING: Host %s not listed in ircd.conf",
- NumServ(&me), NumNick(sptr), parv[1]);
- }
+ else
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :UPING: Host %s not listed in "
+ "ircd.conf", sptr, parv[1]);
+
return 0;
}
assert(IsAnOper(sptr));
if (parc < 2) {
- sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "UPING");
+ send_reply(sptr, ERR_NEEDMOREPARAMS, "UPING");
return 0;
}
parv[2] = UDP_PORT;
}
}
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_UPING " %s %s %s %s", 3, parc, parv) != HUNTED_ISME)
+ if (hunt_server_cmd(sptr, CMD_UPING, sptr, 1, "%s %s %C %s", 3, parc, parv)
+ != HUNTED_ISME)
return 0;
/*
* Determine port: First user supplied, then default : 7007
if (EmptyString(parv[4]) || (count = atoi(parv[4])) <= 0)
{
- if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :UPING: Illegal number of packets: %s",
- me.name, parv[0], parv[4]);
- else
- sendto_one(sptr, "%s " TOK_NOTICE " %s%s :UPING: Illegal number of packets: %s",
- NumServ(&me), NumNick(sptr), parv[4]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :UPING: Illegal number of "
+ "packets: %s", sptr, parv[4]);
return 0;
}
/*
if ((aconf = conf_find_server(parv[1])))
uping_server(sptr, aconf, port, count);
else {
- if (MyUser(sptr))
- sendto_one(sptr, ":%s NOTICE %s :UPING: Host %s not listed in ircd.conf",
- me.name, parv[0], parv[1]);
- else
- sendto_one(sptr, "%s " TOK_NOTICE " %s%s :UPING: Host %s not listed in ircd.conf",
- NumServ(&me), NumNick(sptr), parv[1]);
+ sendcmdto_one(&me, CMD_NOTICE, sptr, "%C :UPING: Host %s not listed in "
+ "ircd.conf", sptr, parv[1]);
}
return 0;
}
if (!IsPrivileged(sptr))
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return -1;
}
if (parc < 2)
{
- sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "UPING");
+ sendto_one(sptr, err_str(ERR_NEEDMOREPARAMS), me.name, parv[0], "UPING"); /* XXX DEAD */
return 0;
}
}
}
}
- if (hunt_server(1, cptr, sptr, ":%s UPING %s %s %s %s", 3, parc, parv) != HUNTED_ISME)
+ if (hunt_server(1, cptr, sptr, ":%s UPING %s %s %s %s", 3, parc, parv) != HUNTED_ISME) /* XXX DEAD */
return 0;
if (BadPtr(parv[4]) || atoi(parv[4]) <= 0)
{
if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :UPING: Illegal number of packets: %s",
+ sendto_one(sptr, ":%s NOTICE %s :UPING: Illegal number of packets: %s", /* XXX DEAD */
me.name, parv[0], parv[4]);
else
- sendto_one(sptr, "%s NOTICE %s%s :UPING: Illegal number of packets: %s",
+ sendto_one(sptr, "%s NOTICE %s%s :UPING: Illegal number of packets: %s", /* XXX DEAD */
NumServ(&me), NumNick(sptr), parv[4]);
return 0;
}
if (!aconf)
{
if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :UPING: Host %s not listed in ircd.conf",
+ sendto_one(sptr, ":%s NOTICE %s :UPING: Host %s not listed in ircd.conf", /* XXX DEAD */
me.name, parv[0], parv[1]);
else
- sendto_one(sptr,
+ sendto_one(sptr, /* XXX DEAD */
"%s NOTICE %s%s :UPING: Host %s not listed in ircd.conf",
NumServ(&me), NumNick(sptr), parv[1]);
return 0;
if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
int err = errno;
- sendto_ops("m_uping: socket: %s", (err != EMFILE)
+ sendto_ops("m_uping: socket: %s", (err != EMFILE) /* XXX DEAD */
? ((strerror(err)) ? strerror(err) : "Unknown error") : "No more sockets");
if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr,
+ sendto_one(sptr, /* XXX DEAD */
":%s NOTICE %s :UPING: Unable to create udp ping socket",
me.name, parv[0]);
else
- sendto_one(sptr,
+ sendto_one(sptr, /* XXX DEAD */
"%s NOTICE %s%s :UPING: Unable to create udp ping socket",
NumServ(&me), NumNick(sptr));
ircd_log(L_ERROR, "UPING: Unable to create UDP socket");
if (!os_set_nonblocking(fd)) {
if (MyUser(sptr) || Protocol(cptr) < 10)
- sendto_one(sptr, ":%s NOTICE %s :UPING: Can't set fd non-blocking",
+ sendto_one(sptr, ":%s NOTICE %s :UPING: Can't set fd non-blocking", /* XXX DEAD */
me.name, parv[0]);
else
- sendto_one(sptr, "%s NOTICE %s%s :UPING: Can't set fd non-blocking",
+ sendto_one(sptr, "%s NOTICE %s%s :UPING: Can't set fd non-blocking", /* XXX DEAD */
NumServ(&me), NumNick(sptr));
close(fd);
return 0;
{
if (i < j)
sendbufto_one(sptr);
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], s);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], s); /* XXX DEAD */
sbuf = sprintf_irc(sendbuf, rpl_str(RPL_USERHOST), me.name, parv[0]);
j = i - 1;
}
if (j)
- sendbufto_one(sptr);
+ sendbufto_one(sptr); /* XXX DEAD */
return 0;
}
#endif
else
{
if (i < j)
- sendbufto_one(sptr);
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], s);
+ sendbufto_one(sptr); /* XXX DEAD */
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], s); /* XXX DEAD */
sbuf = sprintf_irc(sendbuf, rpl_str(RPL_USERIP), me.name, parv[0]);
j = i - 1;
}
if (i < j)
- sendbufto_one(sptr);
+ sendbufto_one(sptr); /* XXX DEAD */
return 0;
}
#endif /* 0 */
{
if (!(acptr = find_match_server(parv[1])))
{
- sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]);
+ send_reply(sptr, ERR_NOSUCHSERVER, parv[1]);
return 0;
}
parv[1] = acptr->name;
}
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) ==
+ if (hunt_server_cmd(sptr, CMD_VERSION, cptr, 0, ":%C", 1, parc, parv) ==
HUNTED_ISME)
{
char featurebuf[512];
sprintf_irc(featurebuf,FEATURES,FEATURESVALUES);
- sendto_one(sptr, rpl_str(RPL_VERSION),
- me.name, parv[0], version, debugmode, me.name, serveropts);
- sendto_one(sptr, rpl_str(RPL_ISUPPORT),
- me.name, parv[0], featurebuf);
+ send_reply(sptr, RPL_VERSION, version, debugmode, me.name, serveropts);
+ send_reply(sptr, RPL_ISUPPORT, featurebuf);
}
return 0;
{
if (!(acptr = find_match_server(parv[1])))
{
- sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]);
+ send_reply(sptr, ERR_NOSUCHSERVER, parv[1]);
return 0;
}
parv[1] = acptr->name;
}
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) ==
+ if (hunt_server_cmd(sptr, CMD_VERSION, cptr, 0, ":%C", 1, parc, parv) ==
HUNTED_ISME)
{
char featurebuf[512];
sprintf_irc(featurebuf,FEATURES,FEATURESVALUES);
- sendto_one(sptr, rpl_str(RPL_VERSION),
- me.name, parv[0], version, debugmode, me.name, serveropts);
- sendto_one(sptr, rpl_str(RPL_ISUPPORT),
- me.name, parv[0], featurebuf);
+ send_reply(sptr, RPL_VERSION, version, debugmode, me.name, serveropts);
+ send_reply(sptr, RPL_ISUPPORT, featurebuf);
}
return 0;
{
if (!(acptr = find_match_server(parv[1])))
{
- sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]);
+ sendto_one(sptr, err_str(ERR_NOSUCHSERVER), me.name, parv[0], parv[1]); /* XXX DEAF */
return 0;
}
parv[1] = acptr->name;
}
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) ==
+ if (hunt_server(0, cptr, sptr, "%s%s " TOK_VERSION " :%s", 1, parc, parv) == /* XXX DEAF */
HUNTED_ISME)
- sendto_one(sptr, rpl_str(RPL_VERSION),
+ sendto_one(sptr, rpl_str(RPL_VERSION), /* XXX DEAF */
me.name, parv[0], version, debugmode, me.name, serveropts);
return 0;
sptr->flags &= ~FLAGS_TS8;
if (parc < 2 || EmptyString(parv[1]))
- return send_error_to_client(sptr, ERR_NORECIPIENT, "WALLCHOPS");
+ return send_reply(sptr, ERR_NORECIPIENT, "WALLCHOPS");
if (parc < 3 || EmptyString(parv[parc - 1]))
- return send_error_to_client(sptr, ERR_NOTEXTTOSEND);
+ return send_reply(sptr, ERR_NOTEXTTOSEND);
if (IsChannelName(parv[1]) && (chptr = FindChannel(parv[1]))) {
if (client_can_send_to_channel(sptr, chptr)) {
if ((chptr->mode.mode & MODE_NOPRIVMSGS) &&
check_target_limit(sptr, chptr, chptr->chname, 0))
return 0;
- /* Send to local clients: */
- sendto_lchanops_butone(cptr, sptr, chptr,
- ":%s " MSG_NOTICE " @%s :%s", sptr->name, parv[1], parv[parc - 1]);
- /* And to other servers: */
- sendto_chanopsserv_butone(cptr, sptr, chptr,
- "%s%s " TOK_WALLCHOPS " %s :%s", NumNick(sptr), parv[1], parv[parc - 1]);
+ sendcmdto_channel_butone(sptr, CMD_WALLCHOPS, chptr, cptr,
+ SKIP_DEAF | SKIP_BURST | SKIP_NONOPS,
+ "%H :%s", chptr, parv[parc - 1]);
}
else
- send_error_to_client(sptr, ERR_CANNOTSENDTOCHAN, parv[1]);
+ send_reply(sptr, ERR_CANNOTSENDTOCHAN, parv[1]);
}
else
- send_error_to_client(sptr, ERR_NOSUCHCHANNEL, parv[1]);
+ send_reply(sptr, ERR_NOSUCHCHANNEL, parv[1]);
return 0;
}
if ((chptr = FindChannel(parv[1]))) {
if (client_can_send_to_channel(sptr, chptr)) {
- /*
- * Send to local clients:
- */
- sendto_lchanops_butone(cptr, sptr, chptr,
- ":%s " MSG_NOTICE " @%s :%s", sptr->name, parv[1], parv[parc - 1]);
- /*
- * And to other servers:
- */
- sendto_chanopsserv_butone(cptr, sptr, chptr,
- "%s%s " TOK_WALLCHOPS " %s :%s", NumNick(sptr), parv[1], parv[parc - 1]);
- }
- else
- sendto_one(sptr, err_str(ERR_CANNOTSENDTOCHAN), me.name, sptr->name, parv[1]);
+ sendcmdto_channel_butone(sptr, CMD_WALLCHOPS, chptr, cptr,
+ SKIP_DEAF | SKIP_BURST | SKIP_NONOPS,
+ "%H :%s", chptr, parv[parc - 1]);
+ } else
+ send_reply(sptr, ERR_CANNOTSENDTOCHAN, parv[1]);
}
return 0;
}
if (parc < 2 || *parv[1] == '\0')
{
- sendto_one(sptr, err_str(ERR_NORECIPIENT), me.name, parv[0], "WALLCHOPS");
+ sendto_one(sptr, err_str(ERR_NORECIPIENT), me.name, parv[0], "WALLCHOPS"); /* XXX DEAD */
return -1;
}
if (parc < 3 || *parv[parc - 1] == '\0')
{
- sendto_one(sptr, err_str(ERR_NOTEXTTOSEND), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOTEXTTOSEND), me.name, parv[0]); /* XXX DEAD */
return -1;
}
check_target_limit(sptr, chptr, chptr->chname, 0))
return 0;
/* Send to local clients: */
- sendto_lchanops_butone(cptr, sptr, chptr,
+ sendto_lchanops_butone(cptr, sptr, chptr, /* XXX DEAD */
":%s NOTICE @%s :%s", parv[0], parv[1], parv[parc - 1]);
/* And to other servers: */
- sendto_chanopsserv_butone(cptr, sptr, chptr,
+ sendto_chanopsserv_butone(cptr, sptr, chptr, /* XXX DEAD */
":%s WC %s :%s", parv[0], parv[1], parv[parc - 1]);
}
else
- sendto_one(sptr, err_str(ERR_CANNOTSENDTOCHAN),
+ sendto_one(sptr, err_str(ERR_CANNOTSENDTOCHAN), /* XXX DEAD */
me.name, parv[0], parv[1]);
}
}
else
- sendto_one(sptr, err_str(ERR_NOSUCHCHANNEL), me.name, parv[0], parv[1]);
+ sendto_one(sptr, err_str(ERR_NOSUCHCHANNEL), me.name, parv[0], parv[1]); /* XXX DEAD */
return 0;
}
#include "client.h"
#include "ircd_reply.h"
#include "ircd_string.h"
+#include "msg.h"
#include "numeric.h"
#include "send.h"
if (EmptyString(message))
return need_more_params(sptr, "WALLOPS");
- sendto_ops_butone(cptr, sptr, ":%s WALLOPS :%s", parv[0], message);
+ sendcmdto_flag_butone(sptr, CMD_WALLOPS, cptr, FLAGS_WALLOP, ":%s", message);
return 0;
}
if (EmptyString(message))
return need_more_params(sptr, "WALLOPS");
- sendto_ops_butone(0, sptr, ":%s WALLOPS :%s", parv[0], message);
+ sendcmdto_flag_butone(sptr, CMD_WALLOPS, 0, FLAGS_WALLOP, ":%s", message);
return 0;
}
if (!IsServer(sptr) && MyConnect(sptr) && !IsAnOper(sptr))
{
- sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); /* XXX DEAD */
return 0;
}
- sendto_ops_butone(IsServer(cptr) ? cptr : 0, sptr,
+ sendto_ops_butone(IsServer(cptr) ? cptr : 0, sptr, /* XXX DEAD */
":%s WALLOPS :%s", parv[0], message);
return 0;
}
bitsel |= WHOSELECT_EXTRA;
#ifdef WPATH
if (IsAnOper(sptr))
- write_log(WPATH, "# " TIME_T_FMT " %s!%s@%s WHO %s %s\n",
- CurrentTime, sptr->name, sptr->user->username, sptr->user->host,
- (BadPtr(parv[3]) ? parv[1] : parv[3]), parv[2]);
+ write_log(WPATH, "# " TIME_T_FMT " %#C WHO %s %s\n",
+ CurrentTime, sptr, (BadPtr(parv[3]) ? parv[1] : parv[3]),
+ parv[2]);
#endif /* WPATH */
continue;
case 'n':
/* Make a clean mask suitable to be sent in the "end of" */
if (mask && (p = strchr(mask, ' ')))
*p = '\0';
- sendto_one(sptr, rpl_str(RPL_ENDOFWHO),
- me.name, parv[0], BadPtr(mask) ? "*" : mask);
+ send_reply(sptr, RPL_ENDOFWHO, BadPtr(mask) ? "*" : mask);
/* Notify the user if we decided that his query was too long */
if (counter < 0)
- sendto_one(sptr, err_str(ERR_QUERYTOOLONG), me.name, parv[0], "WHO");
+ send_reply(sptr, ERR_QUERYTOOLONG, "WHO");
return 0;
}
/* Make a clean mask suitable to be sent in the "end of" */
if (mask && (p = strchr(mask, ' ')))
*p = '\0';
- sendto_one(sptr, rpl_str(RPL_ENDOFWHO),
+ sendto_one(sptr, rpl_str(RPL_ENDOFWHO), /* XXX DEAD */
me.name, parv[0], BadPtr(mask) ? "*" : mask);
/* Notify the user if we decided that his query was too long */
if (counter < 0)
- sendto_one(sptr, err_str(ERR_QUERYTOOLONG), me.name, parv[0], "WHO");
+ sendto_one(sptr, err_str(ERR_QUERYTOOLONG), me.name, parv[0], "WHO"); /* XXX DEAD */
return 0;
}
if (parc < 2)
{
- sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]);
+ send_reply(sptr, ERR_NONICKNAMEGIVEN);
return 0;
}
it with the correct servername - as is needed by hunt_server() */
if (MyUser(sptr) && (acptr = FindUser(parv[1])))
parv[1] = acptr->user->server->name;
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_WHOIS " %s :%s", 1, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_WHOIS, cptr, 0, "%C :%s", 1, parc, parv) !=
HUNTED_ISME)
return 0;
parv[1] = parv[2];
if (user)
{
a2cptr = user->server;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, user->username, user->host, acptr->info);
+ send_reply(sptr, RPL_WHOISUSER, name, user->username, user->host,
+ acptr->info);
}
else
{
a2cptr = &me;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, "<unknown>", "<unknown>", "<unknown>");
+ send_reply(sptr, RPL_WHOISUSER, name, "<unknown>", "<unknown>",
+ "<unknown>");
}
found = 1;
{
if (len + strlen(chptr->chname) + mlen > BUFSIZE - 5)
{
- sendto_one(sptr, ":%s %d %s %s :%s",
- me.name, RPL_WHOISCHANNELS, parv[0], name, buf);
+ send_reply(sptr, RPL_EXPLICIT | RPL_WHOISCHANNELS,
+ "%s :%s", name, buf);
*buf = '\0';
len = 0;
}
}
}
if (buf[0] != '\0')
- sendto_one(sptr, rpl_str(RPL_WHOISCHANNELS),
- me.name, parv[0], name, buf);
+ send_reply(sptr, RPL_WHOISCHANNELS, name, buf);
}
- sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name,
- parv[0], name, a2cptr->name, a2cptr->info);
+ send_reply(sptr, RPL_WHOISSERVER, name, a2cptr->name, a2cptr->info);
if (user)
{
if (user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY), me.name,
- parv[0], name, user->away);
+ send_reply(sptr, RPL_AWAY, name, user->away);
if (IsAnOper(acptr))
- sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR),
- me.name, parv[0], name);
+ send_reply(sptr, RPL_WHOISOPERATOR, name);
if (MyConnect(acptr))
- sendto_one(sptr, rpl_str(RPL_WHOISIDLE), me.name,
- parv[0], name, CurrentTime - user->last, acptr->firsttime);
+ send_reply(sptr, RPL_WHOISIDLE, name, CurrentTime - user->last,
+ acptr->firsttime);
}
if (found == 2 || total++ >= MAX_WHOIS_LINES)
break;
user = acptr->user;
name = (!*acptr->name) ? "?" : acptr->name;
a2cptr = user->server;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, user->username, user->host, acptr->info);
+ send_reply(sptr, RPL_WHOISUSER, name, user->username, user->host,
+ acptr->info);
goto exact_match;
}
}
if (!found)
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick);
+ send_reply(sptr, ERR_NOSUCHNICK, nick);
if (p)
p[-1] = ',';
if (!MyConnect(sptr) || total >= MAX_WHOIS_LINES)
break;
}
- sendto_one(sptr, rpl_str(RPL_ENDOFWHOIS), me.name, parv[0], parv[1]);
+ send_reply(sptr, RPL_ENDOFWHOIS, parv[1]);
return 0;
}
if (parc < 2)
{
- sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]);
+ send_reply(sptr, ERR_NONICKNAMEGIVEN);
return 0;
}
it with the correct servername - as is needed by hunt_server() */
if (MyUser(sptr) && (acptr = FindUser(parv[1])))
parv[1] = acptr->user->server->name;
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_WHOIS " %s :%s", 1, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_WHOIS, cptr, 0, "%C :%s", 1, parc, parv) !=
HUNTED_ISME)
return 0;
parv[1] = parv[2];
if (user)
{
a2cptr = user->server;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, user->username, user->host, acptr->info);
+ send_reply(sptr, RPL_WHOISUSER, name, user->username, user->host,
+ acptr->info);
}
else
{
a2cptr = &me;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, "<unknown>", "<unknown>", "<unknown>");
+ send_reply(sptr, RPL_WHOISUSER, name, "<unknown>", "<unknown>",
+ "<unknown>");
}
found = 1;
{
if (len + strlen(chptr->chname) + mlen > BUFSIZE - 5)
{
- sendto_one(sptr, ":%s %d %s %s :%s",
- me.name, RPL_WHOISCHANNELS, parv[0], name, buf);
+ send_reply(sptr, RPL_EXPLICIT | RPL_WHOISCHANNELS,
+ "%s :%s", name, buf);
*buf = '\0';
len = 0;
}
}
}
if (buf[0] != '\0')
- sendto_one(sptr, rpl_str(RPL_WHOISCHANNELS),
- me.name, parv[0], name, buf);
+ send_reply(sptr, RPL_WHOISCHANNELS, name, buf);
}
- sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name,
- parv[0], name, a2cptr->name, a2cptr->info);
+ send_reply(sptr, RPL_WHOISSERVER, name, a2cptr->name, a2cptr->info);
if (user)
{
if (user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY), me.name,
- parv[0], name, user->away);
+ send_reply(sptr, RPL_AWAY, name, user->away);
if (IsAnOper(acptr))
- sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR),
- me.name, parv[0], name);
+ send_reply(sptr, RPL_WHOISOPERATOR, name);
if (MyConnect(acptr))
- sendto_one(sptr, rpl_str(RPL_WHOISIDLE), me.name,
- parv[0], name, CurrentTime - user->last, acptr->firsttime);
+ send_reply(sptr, RPL_WHOISIDLE, name, CurrentTime - user->last,
+ acptr->firsttime);
}
if (found == 2 || total++ >= MAX_WHOIS_LINES)
break;
user = acptr->user;
name = (!*acptr->name) ? "?" : acptr->name;
a2cptr = user->server;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, user->username, user->host, acptr->info);
+ send_reply(sptr, RPL_WHOISUSER, name, user->username, user->host,
+ acptr->info);
goto exact_match;
}
}
if (!found)
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick);
+ send_reply(sptr, ERR_NOSUCHNICK, nick);
if (p)
p[-1] = ',';
if (!MyConnect(sptr) || total >= MAX_WHOIS_LINES)
break;
}
- sendto_one(sptr, rpl_str(RPL_ENDOFWHOIS), me.name, parv[0], parv[1]);
+ send_reply(sptr, RPL_ENDOFWHOIS, parv[1]);
return 0;
}
if (parc < 2)
{
- sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]);
+ send_reply(sptr, ERR_NONICKNAMEGIVEN);
return 0;
}
it with the correct servername - as is needed by hunt_server() */
if (MyUser(sptr) && (acptr = FindUser(parv[1])))
parv[1] = acptr->user->server->name;
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_WHOIS " %s :%s", 1, parc, parv) !=
+ if (hunt_server_cmd(sptr, CMD_WHOIS, cptr, 0, "%C :%s", 1, parc, parv) !=
HUNTED_ISME)
return 0;
parv[1] = parv[2];
if (user)
{
a2cptr = user->server;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, user->username, user->host, acptr->info);
+ send_reply(sptr, RPL_WHOISUSER, name, user->username, user->host,
+ acptr->info);
}
else
{
a2cptr = &me;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, "<unknown>", "<unknown>", "<unknown>");
+ send_reply(sptr, RPL_WHOISUSER, name, "<unknown>", "<unknown>",
+ "<unknown>");
}
found = 1;
{
if (len + strlen(chptr->chname) + mlen > BUFSIZE - 5)
{
- sendto_one(sptr, ":%s %d %s %s :%s",
- me.name, RPL_WHOISCHANNELS, parv[0], name, buf);
+ send_reply(sptr, RPL_EXPLICIT | RPL_WHOISCHANNELS,
+ "%s :%s", name, buf);
*buf = '\0';
len = 0;
}
}
}
if (buf[0] != '\0')
- sendto_one(sptr, rpl_str(RPL_WHOISCHANNELS),
- me.name, parv[0], name, buf);
+ send_reply(sptr, RPL_WHOISCHANNELS, name, buf);
}
- sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name,
- parv[0], name, a2cptr->name, a2cptr->info);
+ send_reply(sptr, RPL_WHOISSERVER, name, a2cptr->name, a2cptr->info);
if (user)
{
if (user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY), me.name,
- parv[0], name, user->away);
+ send_reply(sptr, RPL_AWAY, name, user->away);
if (IsAnOper(acptr))
- sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR),
- me.name, parv[0], name);
+ send_reply(sptr, RPL_WHOISOPERATOR, name);
if (MyConnect(acptr))
- sendto_one(sptr, rpl_str(RPL_WHOISIDLE), me.name,
- parv[0], name, CurrentTime - user->last, acptr->firsttime);
+ send_reply(sptr, RPL_WHOISIDLE, name, CurrentTime - user->last,
+ acptr->firsttime);
}
if (found == 2 || total++ >= MAX_WHOIS_LINES)
break;
user = acptr->user;
name = (!*acptr->name) ? "?" : acptr->name;
a2cptr = user->server;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
- parv[0], name, user->username, user->host, acptr->info);
+ send_reply(sptr, RPL_WHOISUSER, name, user->username, user->host,
+ acptr->info);
goto exact_match;
}
}
if (!found)
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick);
+ send_reply(sptr, ERR_NOSUCHNICK, nick);
if (p)
p[-1] = ',';
if (!MyConnect(sptr) || total >= MAX_WHOIS_LINES)
break;
}
- sendto_one(sptr, rpl_str(RPL_ENDOFWHOIS), me.name, parv[0], parv[1]);
+ send_reply(sptr, RPL_ENDOFWHOIS, parv[1]);
return 0;
}
if (parc < 2)
{
- sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]); /* XXX DEAD */
return 0;
}
it with the correct servername - as is needed by hunt_server() */
if (MyUser(sptr) && (acptr = FindUser(parv[1])))
parv[1] = acptr->user->server->name;
- if (hunt_server(0, cptr, sptr, "%s%s " TOK_WHOIS " %s :%s", 1, parc, parv) !=
+ if (hunt_server(0, cptr, sptr, "%s%s " TOK_WHOIS " %s :%s", 1, parc, parv) != /* XXX DEAD */
HUNTED_ISME)
return 0;
parv[1] = parv[2];
if (user)
{
a2cptr = user->server;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
+ sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name, /* XXX DEAD */
parv[0], name, user->username, user->host, acptr->info);
}
else
{
a2cptr = &me;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
+ sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name, /* XXX DEAD */
parv[0], name, "<unknown>", "<unknown>", "<unknown>");
}
{
if (len + strlen(chptr->chname) + mlen > BUFSIZE - 5)
{
- sendto_one(sptr, ":%s %d %s %s :%s",
+ sendto_one(sptr, ":%s %d %s %s :%s", /* XXX DEAD */
me.name, RPL_WHOISCHANNELS, parv[0], name, buf);
*buf = '\0';
len = 0;
}
}
if (buf[0] != '\0')
- sendto_one(sptr, rpl_str(RPL_WHOISCHANNELS),
+ sendto_one(sptr, rpl_str(RPL_WHOISCHANNELS), /* XXX DEAD */
me.name, parv[0], name, buf);
}
- sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name,
+ sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name, /* XXX DEAD */
parv[0], name, a2cptr->name, a2cptr->info);
if (user)
{
if (user->away)
- sendto_one(sptr, rpl_str(RPL_AWAY), me.name,
+ sendto_one(sptr, rpl_str(RPL_AWAY), me.name, /* XXX DEAD */
parv[0], name, user->away);
if (IsAnOper(acptr))
- sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR),
+ sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR), /* XXX DEAD */
me.name, parv[0], name);
if (MyConnect(acptr))
- sendto_one(sptr, rpl_str(RPL_WHOISIDLE), me.name,
+ sendto_one(sptr, rpl_str(RPL_WHOISIDLE), me.name, /* XXX DEAD */
parv[0], name, CurrentTime - user->last, acptr->firsttime);
}
if (found == 2 || total++ >= MAX_WHOIS_LINES)
user = acptr->user;
name = (!*acptr->name) ? "?" : acptr->name;
a2cptr = user->server;
- sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name,
+ sendto_one(sptr, rpl_str(RPL_WHOISUSER), me.name, /* XXX DEAD */
parv[0], name, user->username, user->host, acptr->info);
goto exact_match;
}
}
if (!found)
- sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick);
+ sendto_one(sptr, err_str(ERR_NOSUCHNICK), me.name, parv[0], nick); /* XXX DEAD */
if (p)
p[-1] = ',';
if (!MyConnect(sptr) || total >= MAX_WHOIS_LINES)
break;
}
- sendto_one(sptr, rpl_str(RPL_ENDOFWHOIS), me.name, parv[0], parv[1]);
+ sendto_one(sptr, rpl_str(RPL_ENDOFWHOIS), me.name, parv[0], parv[1]); /* XXX DEAD */
return 0;
}
if (parc < 2)
{
- sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]);
+ send_reply(sptr, ERR_NONICKNAMEGIVEN);
return 0;
}
if (parc > 2)
max = atoi(parv[2]);
if (parc > 3)
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_WHOWAS " %s %s :%s", 3, parc, parv))
+ if (hunt_server_cmd(sptr, CMD_WHOWAS, cptr, 1, "%s %s :%C", 3, parc, parv))
return 0;
parv[1] = canonize(parv[1]);
{
if (0 == ircd_strcmp(nick, temp->name))
{
- sendto_one(sptr, rpl_str(RPL_WHOWASUSER),
- me.name, parv[0], temp->name, temp->username,
- temp->hostname, temp->realname);
- sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name, parv[0],
- temp->name, temp->servername, myctime(temp->logoff));
+ send_reply(sptr, RPL_WHOWASUSER, temp->name, temp->username,
+ temp->hostname, temp->realname);
+ send_reply(sptr, RPL_WHOISSERVER, temp->name, temp->servername,
+ myctime(temp->logoff));
if (temp->away)
- sendto_one(sptr, rpl_str(RPL_AWAY),
- me.name, parv[0], temp->name, temp->away);
+ send_reply(sptr, RPL_AWAY, temp->name, temp->away);
cur++;
found++;
}
break;
}
if (!found)
- sendto_one(sptr, err_str(ERR_WASNOSUCHNICK), me.name, parv[0], nick);
+ send_reply(sptr, ERR_WASNOSUCHNICK, nick);
/* To keep parv[1] intact for ENDOFWHOWAS */
if (p)
p[-1] = ',';
}
- sendto_one(sptr, rpl_str(RPL_ENDOFWHOWAS), me.name, parv[0], parv[1]);
+ send_reply(sptr, RPL_ENDOFWHOWAS, parv[1]);
return 0;
}
if (parc < 2)
{
- sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]);
+ sendto_one(sptr, err_str(ERR_NONICKNAMEGIVEN), me.name, parv[0]); /* XXX DEAD */
return 0;
}
if (parc > 2)
max = atoi(parv[2]);
if (parc > 3)
- if (hunt_server(1, cptr, sptr, "%s%s " TOK_WHOWAS " %s %s :%s", 3, parc, parv))
+ if (hunt_server(1, cptr, sptr, "%s%s " TOK_WHOWAS " %s %s :%s", 3, parc, parv)) /* XXX DEAD */
return 0;
parv[1] = canonize(parv[1]);
{
if (0 == ircd_strcmp(nick, temp->name))
{
- sendto_one(sptr, rpl_str(RPL_WHOWASUSER),
+ sendto_one(sptr, rpl_str(RPL_WHOWASUSER), /* XXX DEAD */
me.name, parv[0], temp->name, temp->username,
temp->hostname, temp->realname);
- sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name, parv[0],
+ sendto_one(sptr, rpl_str(RPL_WHOISSERVER), me.name, parv[0], /* XXX DEAD */
temp->name, temp->servername, myctime(temp->logoff));
if (temp->away)
- sendto_one(sptr, rpl_str(RPL_AWAY),
+ sendto_one(sptr, rpl_str(RPL_AWAY), /* XXX DEAD */
me.name, parv[0], temp->name, temp->away);
cur++;
found++;
break;
}
if (!found)
- sendto_one(sptr, err_str(ERR_WASNOSUCHNICK), me.name, parv[0], nick);
+ sendto_one(sptr, err_str(ERR_WASNOSUCHNICK), me.name, parv[0], nick); /* XXX DEAD */
/* To keep parv[1] intact for ENDOFWHOWAS */
if (p)
p[-1] = ',';
}
- sendto_one(sptr, rpl_str(RPL_ENDOFWHOWAS), me.name, parv[0], parv[1]);
+ sendto_one(sptr, rpl_str(RPL_ENDOFWHOWAS), me.name, parv[0], parv[1]); /* XXX DEAD */
return 0;
}
#endif /* 0 */
/* open to all, standard # of params */
case 'U':
case 'u':
- return hunt_server(0, cptr, sptr, "%s%s " TOK_STATS " %s :%s", 2, parc, parv);
+ return hunt_server_cmd(sptr, CMD_STATS, cptr, 0, "%s :%C", 2, parc,
+ parv);
/* open to all, varying # of params */
case 'k':
case 'P':
{
if (parc > 3)
- return hunt_server(0, cptr, sptr, "%s%s " TOK_STATS " %s %s :%s", 2, parc, parv);
+ return hunt_server_cmd(sptr, CMD_STATS, cptr, 0, "%s %C :%s", 2, parc,
+ parv);
else
- return hunt_server(0, cptr, sptr, "%s%s " TOK_STATS " %s :%s", 2, parc, parv);
+ return hunt_server_cmd(sptr, CMD_STATS, cptr, 0, "%s :%C", 2, parc,
+ parv);
}
/* oper only, varying # of params */
case 'M':
{
if (parc == 4)
- return hunt_server(1, cptr, sptr, "%s%s " TOK_STATS " %s %s :%s", 2, parc, parv);
+ return hunt_server_cmd(sptr, CMD_STATS, cptr, 1, "%s %C :%s", 2, parc,
+ parv);
else if (parc > 4)
- return hunt_server(1, cptr, sptr, "%s%s " TOK_STATS " %s %s %s :%s", 2, parc, parv);
+ return hunt_server_cmd(sptr, CMD_STATS, cptr, 1, "%s %C %s :%s", 2,
+ parc, parv);
else
- return hunt_server(1, cptr, sptr, "%s%s " TOK_STATS " %s :%s", 2, parc, parv);
+ return hunt_server_cmd(sptr, CMD_STATS, cptr, 1, "%s :%C", 2, parc,
+ parv);
}
/* oper only, standard # of params */
default:
- return hunt_server(1, cptr, sptr, "%s%s " TOK_STATS " %s :%s", 2, parc, parv);
+ return hunt_server_cmd(sptr, CMD_STATS, cptr, 1, "%s :%C", 2, parc,
+ parv);
}
}
return (HUNTED_PASS);
}
+int hunt_server_cmd(struct Client *from, const char *cmd, const char *tok,
+ struct Client *one, int MustBeOper, const char *pattern,
+ int server, int parc, char *parv[])
+{
+ struct Client *acptr;
+ char *to;
+
+ /* Assume it's me, if no server or an unregistered client */
+ if (parc <= server || EmptyString((to = parv[server])) || IsUnknown(from))
+ return (HUNTED_ISME);
+
+ /* Make sure it's a server */
+ if (MyUser(from)) {
+ /* Make sure it's a server */
+ if (!strchr(to, '*')) {
+ if (0 == (acptr = FindClient(to)))
+ return HUNTED_NOSUCH;
+
+ if (acptr->user)
+ acptr = acptr->user->server;
+ } else if (!(acptr = find_match_server(to))) {
+ send_reply(from, ERR_NOSUCHSERVER, to);
+ return (HUNTED_NOSUCH);
+ }
+ } else if (!(acptr = FindNServer(to)))
+ return (HUNTED_NOSUCH); /* Server broke off in the meantime */
+
+ if (IsMe(acptr))
+ return (HUNTED_ISME);
+
+ if (MustBeOper && !IsPrivileged(from)) {
+ send_reply(from, ERR_NOPRIVILEGES);
+ return HUNTED_NOSUCH;
+ }
+
+ assert(!IsServer(from));
+
+ parv[server] = (char *) acptr; /* HACK! HACK! HACK! ARGH! */
+
+ sendcmdto_one(from, cmd, tok, acptr, pattern, parv[1], parv[2], parv[3],
+ parv[4], parv[5], parv[6], parv[7], parv[8]);
+
+ return (HUNTED_PASS);
+}
+
/*
* 'do_nick_name' ensures that the given parameter (nick) is really a proper
* string for a nickname (note, the 'nick' may be modified in the process...)
/* Build buffer to send to users */
va_start(vd.vd_args, pattern);
- ircd_snprintf(0, userbuf, sizeof(userbuf) - 2, "%:#C %s %v", from, cmd, &vd);
+ ircd_snprintf(0, userbuf, sizeof(userbuf) - 2,
+ skip & SKIP_NONOPS ? "%:#C %s @%v" : "%:#C %s %v", from,
+ skip & SKIP_NONOPS ? MSG_NOTICE : cmd, &vd);
va_end(vd.vd_args);
/* Build buffer to send to servers */