Add get_kill_reason() that uses BitchX.kill, and convert all /KILL users to it
Previously only send_kill() used BitchX.kill - the other KILL commands (eg. /WHOKILL) were using the random kick reasons. Standardise them all on BitchX.kill, and add this file to the source so it can be installed along with the other random reason files.
This commit is contained in:
+26
-50
@@ -3625,65 +3625,41 @@ BUILT_IN_COMMAND(send_2comm)
|
||||
|
||||
BUILT_IN_COMMAND(send_kill)
|
||||
{
|
||||
char *reason = NULL;
|
||||
char *r_file;
|
||||
char *nick;
|
||||
char *arg = NULL, *save_arg = NULL;
|
||||
|
||||
#if 0
|
||||
args = next_arg(args, &reason);
|
||||
if (!args)
|
||||
args = empty_string;
|
||||
#endif
|
||||
|
||||
#if defined(WINNT)
|
||||
r_file = m_sprintf("%s/BitchX.kil",get_string_var(CTOOLZ_DIR_VAR));
|
||||
#else
|
||||
r_file = m_sprintf("%s/BitchX.kill",get_string_var(CTOOLZ_DIR_VAR));
|
||||
#endif
|
||||
|
||||
if ((reason = strchr(args, ' ')) != NULL)
|
||||
*reason++ = '\0';
|
||||
else
|
||||
if ((reason = get_reason(args, r_file)))
|
||||
reason = empty_string;
|
||||
new_free(&r_file);
|
||||
char *target;
|
||||
|
||||
if (!strcmp(args, "*"))
|
||||
target = next_arg(args, &args);
|
||||
|
||||
if (!strcmp(target, "*"))
|
||||
{
|
||||
ChannelList *chan = NULL;
|
||||
ChannelList *chan = lookup_channel("*", from_server, 0);
|
||||
NickList *n = NULL;
|
||||
arg = get_current_channel_by_refnum(0);
|
||||
if (!arg || !*arg)
|
||||
return; /* what-EVER */
|
||||
else
|
||||
|
||||
if (!chan)
|
||||
return;
|
||||
for (n = next_nicklist(chan, NULL); n; n = next_nicklist(chan, n))
|
||||
{
|
||||
if (!(chan = lookup_channel(arg, from_server, 0)))
|
||||
return;
|
||||
arg = NULL;
|
||||
for (n = next_nicklist(chan, NULL); n; n = next_nicklist(chan, n))
|
||||
{
|
||||
if (isme(n->nick)) continue;
|
||||
m_s3cat(&arg, ",", n->nick);
|
||||
}
|
||||
save_arg = arg;
|
||||
if (isme(n->nick))
|
||||
continue;
|
||||
|
||||
if (args && *args)
|
||||
send_to_server("%s %s :%s", command, n->nick, args);
|
||||
else
|
||||
send_to_server("%s %s :%s", command, n->nick,
|
||||
get_kill_reason(n->nick, get_server_nickname(from_server)));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
malloc_strcpy(&arg, args);
|
||||
save_arg = arg;
|
||||
const char *nick;
|
||||
while ((nick = next_in_comma_list(target, &target)) && *nick)
|
||||
{
|
||||
if (args && *args)
|
||||
send_to_server("%s %s :%s", command, nick, args);
|
||||
else
|
||||
send_to_server("%s %s :%s", command, nick,
|
||||
get_kill_reason(nick, get_server_nickname(from_server)));
|
||||
}
|
||||
}
|
||||
while ((nick = next_in_comma_list(arg, &arg)))
|
||||
{
|
||||
if (!nick || !*nick)
|
||||
break;
|
||||
if (reason && *reason)
|
||||
send_to_server("%s %s :%s", command, nick, reason);
|
||||
else
|
||||
send_to_server("%s %s", command, nick);
|
||||
}
|
||||
new_free(&save_arg);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+16
-10
@@ -977,14 +977,14 @@ char *reason = NULL;
|
||||
|
||||
void who_user_killend(WhoEntry *w, char *unused, char **unused1)
|
||||
{
|
||||
char *pattern, *match, *who_buff, *reason;
|
||||
int server = -1;
|
||||
char *pattern, *match, *who_buff, *who_reason;
|
||||
int server = -1;
|
||||
|
||||
if (w->who_buff)
|
||||
{
|
||||
who_buff = LOCAL_COPY(w->who_buff);
|
||||
reason = strchr(who_buff, ':');
|
||||
*reason++ = 0;
|
||||
who_reason = strchr(who_buff, ':');
|
||||
*who_reason++ = 0;
|
||||
server = atol(next_arg(who_buff, &who_buff));
|
||||
pattern = next_arg(who_buff, &who_buff);
|
||||
match = next_arg(who_buff, &who_buff);
|
||||
@@ -1008,6 +1008,9 @@ int server = -1;
|
||||
m_s3cat(&buffer, ",", nick);
|
||||
if (num >= get_int_var(NUM_KILLS_VAR))
|
||||
{
|
||||
const char *reason = who_reason;
|
||||
if (!*reason)
|
||||
reason = get_kill_reason(buffer, get_server_nickname(from_server));
|
||||
bitchsay("Killing %s :%s[%d]", save_buffer, reason, count);
|
||||
my_send_to_server(server, "KILL %s :%s(%d)", buffer, reason, count);
|
||||
new_free(&buffer);
|
||||
@@ -1016,6 +1019,9 @@ int server = -1;
|
||||
}
|
||||
if (buffer)
|
||||
{
|
||||
const char *reason = who_reason;
|
||||
if (!*reason)
|
||||
reason = get_kill_reason(buffer, get_server_nickname(from_server));
|
||||
bitchsay("Killing %s %s[%d]", save_buffer, reason, count);
|
||||
my_send_to_server(server, "KILL %s :%s(%d)", buffer, reason, count);
|
||||
}
|
||||
@@ -1034,19 +1040,19 @@ BUILT_IN_COMMAND(whokill)
|
||||
char *reason = NULL;
|
||||
char *nick_arg = NULL;
|
||||
|
||||
if (!args || !*args)
|
||||
if (!args || !*args)
|
||||
return;
|
||||
if ((reason = strchr(args, ':')))
|
||||
*reason++ = 0;
|
||||
else
|
||||
reason = get_reason(empty_string, NULL);
|
||||
reason = empty_string;
|
||||
|
||||
while ((pattern = next_arg(args, &args)))
|
||||
{
|
||||
malloc_sprintf(&nick_arg, "%s%s%s", *pattern != '*'?"*":empty_string, pattern, *(pattern+strlen(pattern)-1) != '*'?"*":empty_string);
|
||||
if ((p = strchr(nick_arg, '@')))
|
||||
p++;
|
||||
whobase(p ? p : nick_arg, who_user_kill, who_user_killend, "%d %s :%s", from_server, nick_arg, (reason && *reason) ? reason : empty_string);
|
||||
whobase(p ? p : nick_arg, who_user_kill, who_user_killend, "%d %s :%s", from_server, nick_arg, reason);
|
||||
new_free(&nick_arg);
|
||||
}
|
||||
}
|
||||
@@ -1056,8 +1062,7 @@ static char *treason = NULL;
|
||||
|
||||
void trace_handlekill(int comm, char *nick)
|
||||
{
|
||||
static int count = 0;
|
||||
|
||||
static int count = 0;
|
||||
|
||||
if (!nick || !*nick)
|
||||
{
|
||||
@@ -1077,7 +1082,8 @@ static int count = 0;
|
||||
return;
|
||||
bitchsay("Killing %s[%s] %d", nick, tnick_arg, ++count);
|
||||
if (!treason)
|
||||
malloc_strcpy(&treason, get_reason(nick, NULL));
|
||||
malloc_strcpy(&treason,
|
||||
get_kill_reason(nick, get_server_nickname(from_server)));
|
||||
send_to_server("KILL %s :%s (%d)", nick, treason, count);
|
||||
}
|
||||
|
||||
|
||||
+14
-11
@@ -1799,22 +1799,25 @@ static char *random_text(const char *filename, const char *arg0,
|
||||
return stripansicodes(convert_output_format(format, "%s %s", arg0, arg1));
|
||||
}
|
||||
|
||||
char *get_reason(char *nick, char *file)
|
||||
char *get_reason(const char *nick, const char *file)
|
||||
{
|
||||
char *filename = file;
|
||||
|
||||
if (!file || !*file)
|
||||
filename = DEFAULT_BITCHX_KICK_FILE;
|
||||
file = DEFAULT_BITCHX_KICK_FILE;
|
||||
|
||||
return random_text(filename, nick ? nick : "error", get_server_nickname(from_server), get_string_var(DEFAULT_REASON_VAR));
|
||||
return random_text(file, nick ? nick : "error", get_server_nickname(from_server), get_string_var(DEFAULT_REASON_VAR));
|
||||
}
|
||||
|
||||
char *get_realname(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));
|
||||
}
|
||||
|
||||
char *get_realname(const char *nick)
|
||||
{
|
||||
return random_text(DEFAULT_BITCHX_IRCNAME_FILE, nick, nick, "Who cares?");
|
||||
}
|
||||
|
||||
char *get_signoffreason(char *nick)
|
||||
char *get_signoffreason(const char *nick)
|
||||
{
|
||||
return random_text(DEFAULT_BITCHX_QUIT_FILE, nick, nick, "$0 has no reason");
|
||||
}
|
||||
@@ -4231,8 +4234,8 @@ int count = 0,
|
||||
{
|
||||
if (!isme(nicks->nick))
|
||||
my_send_to_server(server, "KILL %s :%s (%i", nicks->nick,
|
||||
args && *args ? args : get_reason(nicks->nick, NULL),
|
||||
count + 1);
|
||||
args && *args ? args : get_kill_reason(nicks->nick,
|
||||
get_server_nickname(from_server)), count + 1);
|
||||
else
|
||||
count--;
|
||||
break;
|
||||
@@ -4310,8 +4313,8 @@ int count = 0,
|
||||
if (!isme(nicks->nick))
|
||||
{
|
||||
my_send_to_server(server, "KILL %s :%s (%i", nicks->nick,
|
||||
args && *args ? args : get_reason(nicks->nick, NULL),
|
||||
count);
|
||||
args && *args ? args : get_kill_reason(nicks->nick,
|
||||
get_server_nickname(from_server)), count);
|
||||
}
|
||||
else
|
||||
count--;
|
||||
|
||||
Reference in New Issue
Block a user