Introduce get_kick_reason() and switch all kick commands to use it
get_reason() is then used only for the implementation of get_kick_reason() and for the $getreason() scripting function. Add current nick as an explicit argument for get_reason(), which pushes all use of from_server out of the ransom reason functions. Also switch a few instances of send_to_server() to my_send_to_server() where the current server has been returned by prepare_command().
This commit is contained in:
@@ -102,7 +102,8 @@ ChannelList * BX_prepare_command (int *, char *, int);
|
|||||||
int are_you_opped (char *);
|
int are_you_opped (char *);
|
||||||
void error_not_opped (const char *);
|
void error_not_opped (const char *);
|
||||||
|
|
||||||
char *get_reason(const char *nick, const char *file);
|
char *get_reason(const char *target, const char *nick, const char *file);
|
||||||
|
char *get_kick_reason(const char *target, const char *nick);
|
||||||
char *get_kill_reason(const char *target, const char *nick);
|
char *get_kill_reason(const char *target, const char *nick);
|
||||||
char *get_realname(const char *nick);
|
char *get_realname(const char *nick);
|
||||||
char *get_signoffreason(const char *nick);
|
char *get_signoffreason(const char *nick);
|
||||||
|
|||||||
@@ -443,13 +443,15 @@ BUILT_IN_COMMAND(multkick)
|
|||||||
reason = strchr(temp, ':');
|
reason = strchr(temp, ':');
|
||||||
if (reason)
|
if (reason)
|
||||||
*reason++ = 0;
|
*reason++ = 0;
|
||||||
if (!reason || !*reason)
|
|
||||||
reason = get_reason(NULL, NULL);
|
|
||||||
|
|
||||||
while (temp && *temp)
|
while (temp && *temp)
|
||||||
{
|
{
|
||||||
|
const char *nick = next_arg(temp, &temp);
|
||||||
|
const char *this_reason = reason && *reason ? reason :
|
||||||
|
get_kick_reason(nick, get_server_nickname(server));
|
||||||
|
|
||||||
my_send_to_server(server, "KICK %s %s :\002%s\002", chan->channel,
|
my_send_to_server(server, "KICK %s %s :\002%s\002", chan->channel,
|
||||||
next_arg(temp, &temp), reason);
|
nick, this_reason);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -729,7 +731,9 @@ BUILT_IN_COMMAND(mknu)
|
|||||||
if (nicks->userlist || (nick_isop(nicks) && !kickops) || isme(nicks->nick))
|
if (nicks->userlist || (nick_isop(nicks) && !kickops) || isme(nicks->nick))
|
||||||
continue;
|
continue;
|
||||||
count++;
|
count++;
|
||||||
send_to_server("KICK %s %s :(non-users) \002%s\002", chan->channel, nicks->nick, rest ? rest : get_reason(nicks->nick, NULL));
|
my_send_to_server(server, "KICK %s %s :(non-users) \002%s\002",
|
||||||
|
chan->channel, nicks->nick, rest ? rest :
|
||||||
|
get_kick_reason(nicks->nick, get_server_nickname(server)));
|
||||||
}
|
}
|
||||||
if (!count)
|
if (!count)
|
||||||
say("No matches for masskick of non-users on %s", chan->channel);
|
say("No matches for masskick of non-users on %s", chan->channel);
|
||||||
@@ -774,7 +778,7 @@ BUILT_IN_COMMAND(masskickban)
|
|||||||
else
|
else
|
||||||
strcpy(tempbuf, spec);
|
strcpy(tempbuf, spec);
|
||||||
|
|
||||||
send_to_server("MODE %s +b %s", chan->channel, tempbuf);
|
my_send_to_server(server, "MODE %s +b %s", chan->channel, tempbuf);
|
||||||
for (nicks = next_nicklist(chan, NULL); nicks; nicks = next_nicklist(chan, nicks))
|
for (nicks = next_nicklist(chan, NULL); nicks; nicks = next_nicklist(chan, nicks))
|
||||||
{
|
{
|
||||||
*buffer = '\0';
|
*buffer = '\0';
|
||||||
@@ -783,7 +787,9 @@ BUILT_IN_COMMAND(masskickban)
|
|||||||
!isme(nicks->nick) && wild_match(tempbuf, buffer))
|
!isme(nicks->nick) && wild_match(tempbuf, buffer))
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
send_to_server("KICK %s %s :(%s) \002%s\002", chan->channel, nicks->nick, spec, rest ? rest : get_reason(nicks->nick, NULL));
|
my_send_to_server(server, "KICK %s %s :(%s) \002%s\002", chan->channel,
|
||||||
|
nicks->nick, spec, rest ? rest :
|
||||||
|
get_kick_reason(nicks->nick, get_server_nickname(server)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!count)
|
if (!count)
|
||||||
@@ -968,10 +974,10 @@ BUILT_IN_COMMAND(dokick)
|
|||||||
if (args && *args)
|
if (args && *args)
|
||||||
reason = args;
|
reason = args;
|
||||||
else
|
else
|
||||||
reason = get_reason(spec, NULL);
|
reason = get_kick_reason(spec, get_server_nickname(server));
|
||||||
|
|
||||||
set_display_target(chan->channel, LOG_KICK);
|
set_display_target(chan->channel, LOG_KICK);
|
||||||
send_to_server("KICK %s %s :%s", chan->channel, spec, reason);
|
my_send_to_server(server, "KICK %s %s :%s", chan->channel, spec, reason);
|
||||||
reset_display_target();
|
reset_display_target();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1043,13 +1049,13 @@ BUILT_IN_COMMAND(kickban)
|
|||||||
host = strchr(user, '@');
|
host = strchr(user, '@');
|
||||||
*host++ = 0;
|
*host++ = 0;
|
||||||
if (kick_first)
|
if (kick_first)
|
||||||
send_to_server("KICK %s %s :%s\r\nMODE %s +b %s",
|
my_send_to_server(server, "KICK %s %s :%s\r\nMODE %s +b %s",
|
||||||
chan->channel, nicks->nick, rest ? rest : get_reason(nicks->nick, NULL),
|
chan->channel, nicks->nick, rest ? rest : get_kick_reason(nicks->nick, get_server_nickname(server)),
|
||||||
chan->channel, ban_it(nicks->nick, user, host, nicks->ip));
|
chan->channel, ban_it(nicks->nick, user, host, nicks->ip));
|
||||||
else
|
else
|
||||||
send_to_server("MODE %s -o+b %s %s\r\nKICK %s %s :%s",
|
my_send_to_server(server, "MODE %s -o+b %s %s\r\nKICK %s %s :%s",
|
||||||
chan->channel, nicks->nick, ban_it(nicks->nick, user, host, nicks->ip),
|
chan->channel, nicks->nick, ban_it(nicks->nick, user, host, nicks->ip),
|
||||||
chan->channel, nicks->nick, rest ? rest : get_reason(nicks->nick, NULL));
|
chan->channel, nicks->nick, rest ? rest : get_kick_reason(nicks->nick, get_server_nickname(server)));
|
||||||
count++;
|
count++;
|
||||||
if (time >= 0)
|
if (time >= 0)
|
||||||
add_timer(0, empty_string, time * 1000.0, 1, timer_unban,
|
add_timer(0, empty_string, time * 1000.0, 1, timer_unban,
|
||||||
|
|||||||
@@ -3669,25 +3669,22 @@ BUILT_IN_COMMAND(send_kill)
|
|||||||
|
|
||||||
BUILT_IN_COMMAND(send_kick)
|
BUILT_IN_COMMAND(send_kick)
|
||||||
{
|
{
|
||||||
char *kickee,
|
const char *kickee, *comment;
|
||||||
*comment,
|
char *channel;
|
||||||
*channel = NULL;
|
ChannelList *chan;
|
||||||
ChannelList *chan;
|
int server = from_server;
|
||||||
int server = from_server;
|
|
||||||
|
|
||||||
|
|
||||||
if (!(channel = next_arg(args, &args)))
|
if (!(channel = next_arg(args, &args)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!(kickee = next_arg(args, &args)))
|
if (!(kickee = next_arg(args, &args)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
comment = args?args:get_reason(kickee, NULL);
|
|
||||||
|
|
||||||
reset_display_target();
|
reset_display_target();
|
||||||
if (!(chan = prepare_command(&server, (channel && !strcmp(channel, "*"))?NULL:channel, NEED_OP)))
|
if (!(chan = prepare_command(&server, !strcmp(channel, "*") ? NULL : channel, NEED_OP)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
comment = args ? args : get_kick_reason(kickee, get_server_nickname(server));
|
||||||
my_send_to_server(server, "%s %s %s :%s", command, chan->channel, kickee, comment);
|
my_send_to_server(server, "%s %s %s :%s", command, chan->channel, kickee, comment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5081,9 +5081,9 @@ char *blah;
|
|||||||
|
|
||||||
BUILT_IN_FUNCTION(function_getreason, word)
|
BUILT_IN_FUNCTION(function_getreason, word)
|
||||||
{
|
{
|
||||||
char *nick = NULL;
|
char *nick = NULL;
|
||||||
GET_STR_ARG(nick, word);
|
GET_STR_ARG(nick, word);
|
||||||
RETURN_STR(get_reason(nick, word));
|
RETURN_STR(get_reason(nick, get_server_nickname(from_server), word));
|
||||||
}
|
}
|
||||||
|
|
||||||
BUILT_IN_FUNCTION(function_chmod, words)
|
BUILT_IN_FUNCTION(function_chmod, words)
|
||||||
|
|||||||
@@ -1786,7 +1786,8 @@ static char *fread_random(const char *filename, char *line, size_t len)
|
|||||||
|
|
||||||
/* Read a random text format from a file, convert it and strip it. A default
|
/* Read a random text format from a file, convert it and strip it. A default
|
||||||
format is supplied if a format cannot be read from the file.
|
format is supplied if a format cannot be read from the file.
|
||||||
arg0 and arg1 replace $0 and $1 in the format. */
|
arg0 and arg1 replace $0 and $1 in the format.
|
||||||
|
*/
|
||||||
static char *random_text(const char *filename, const char *arg0,
|
static char *random_text(const char *filename, const char *arg0,
|
||||||
const char *arg1, const char *default_format)
|
const char *arg1, const char *default_format)
|
||||||
{
|
{
|
||||||
@@ -1799,24 +1800,40 @@ static char *random_text(const char *filename, const char *arg0,
|
|||||||
return stripansicodes(convert_output_format(format, "%s %s", arg0, arg1));
|
return stripansicodes(convert_output_format(format, "%s %s", arg0, arg1));
|
||||||
}
|
}
|
||||||
|
|
||||||
char *get_reason(const char *nick, const char *file)
|
/* Get a random reason from a specific reason file, defaulting to the kick
|
||||||
|
* file if none passed. Format it using target and nick to replace $0 and $1.
|
||||||
|
*/
|
||||||
|
char *get_reason(const char *target, const char *nick, const char *file)
|
||||||
{
|
{
|
||||||
if (!file || !*file)
|
if (!file || !*file)
|
||||||
file = DEFAULT_BITCHX_KICK_FILE;
|
file = DEFAULT_BITCHX_KICK_FILE;
|
||||||
|
|
||||||
return random_text(file, nick ? nick : "error", get_server_nickname(from_server), get_string_var(DEFAULT_REASON_VAR));
|
return random_text(file, target, nick, get_string_var(DEFAULT_REASON_VAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get a random kick reason. Format it using target and nick to replace $0
|
||||||
|
* and $1.
|
||||||
|
*/
|
||||||
|
char *get_kick_reason(const char *target, const char *nick)
|
||||||
|
{
|
||||||
|
return get_reason(target, nick, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get a random kill reason. Format it using target and nick to replace $0
|
||||||
|
* and $1.
|
||||||
|
*/
|
||||||
char *get_kill_reason(const char *target, const char *nick)
|
char *get_kill_reason(const char *target, const char *nick)
|
||||||
{
|
{
|
||||||
return random_text(DEFAULT_BITCHX_KILL_FILE, target, nick, get_string_var(DEFAULT_REASON_VAR));
|
return random_text(DEFAULT_BITCHX_KILL_FILE, target, nick, get_string_var(DEFAULT_REASON_VAR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get a random ircname. Format it using nick to replace $0 and $1. */
|
||||||
char *get_realname(const char *nick)
|
char *get_realname(const char *nick)
|
||||||
{
|
{
|
||||||
return random_text(DEFAULT_BITCHX_IRCNAME_FILE, nick, nick, "Who cares?");
|
return random_text(DEFAULT_BITCHX_IRCNAME_FILE, nick, nick, "Who cares?");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get a quit reason. Format it using nick to replace $0 and $1. */
|
||||||
char *get_signoffreason(const char *nick)
|
char *get_signoffreason(const char *nick)
|
||||||
{
|
{
|
||||||
return random_text(DEFAULT_BITCHX_QUIT_FILE, nick, nick, "$0 has no reason");
|
return random_text(DEFAULT_BITCHX_QUIT_FILE, nick, nick, "$0 has no reason");
|
||||||
|
|||||||
Reference in New Issue
Block a user