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:
Kevin Easton 2015-06-27 23:18:38 +10:00
parent 27e32a0319
commit ff251080da
10 changed files with 90 additions and 80 deletions

2
BitchX.kill Normal file
View File

@ -0,0 +1,2 @@
# You can populate this file for randomly-chosen /KILL reasons.
# $0 is replaced by the target nick and $1 by your nick.

View File

@ -1,7 +1,10 @@
[Changes 1.2.2]
* Use BitchX.kill in all cases for random /KILL messages, and install a
copy of this file. (caf)
* Fix potential crash in /unban, and change it so that it correctly matches
the user@ portion of the hostmask.
the user@ portion of the hostmask. (caf)
* Clean up the build by fixing up the (unsigned char *) / (char *) mismatches
that the compiler warns about. (caf)

View File

@ -92,6 +92,7 @@ DEFAULT_MSGLOGFILE = @DEFAULT_MSGLOGFILE@
DEFAULT_BITCHX_HELP_FILE = @DEFAULT_BITCHX_HELP_FILE@
DEFAULT_SCRIPT_HELP_FILE = @DEFAULT_SCRIPT_HELP_FILE@
DEFAULT_BITCHX_KICK_FILE = @DEFAULT_BITCHX_KICK_FILE@
DEFAULT_BITCHX_KILL_FILE = @DEFAULT_BITCHX_KILL_FILE@
DEFAULT_BITCHX_QUIT_FILE = @DEFAULT_BITCHX_QUIT_FILE@
DEFAULT_BITCHX_IRCNAME_FILE = @DEFAULT_BITCHX_IRCNAME_FILE@
@ -238,6 +239,7 @@ installirc: installdirs $(_VERSION_)
$(INSTALL_DATA) $(top_srcdir)/BitchX.ircnames $(DESTDIR)$(IRCLIB)/$(DEFAULT_BITCHX_IRCNAME_FILE)
$(INSTALL_DATA) $(top_srcdir)/BitchX.quit $(DESTDIR)$(IRCLIB)/$(DEFAULT_BITCHX_QUIT_FILE)
$(INSTALL_DATA) $(top_srcdir)/BitchX.reasons $(DESTDIR)$(IRCLIB)/$(DEFAULT_BITCHX_KICK_FILE)
$(INSTALL_DATA) $(top_srcdir)/BitchX.kill $(DESTDIR)$(IRCLIB)/$(DEFAULT_BITCHX_KILL_FILE)
$(WINNT_INSTALL)
install_local: all local_installdirs installdll_local
@ -248,6 +250,7 @@ install_local: all local_installdirs installdll_local
$(INSTALL_DATA) $(top_srcdir)/BitchX.ircnames $(DEFAULT_CTOOLZ_DIR)/$(DEFAULT_BITCHX_IRCNAME_FILE)
$(INSTALL_DATA) $(top_srcdir)/BitchX.quit $(DEFAULT_CTOOLZ_DIR)/$(DEFAULT_BITCHX_QUIT_FILE)
$(INSTALL_DATA) $(top_srcdir)/BitchX.reasons $(DEFAULT_CTOOLZ_DIR)/$(DEFAULT_BITCHX_KICK_FILE)
$(INSTALL_DATA) $(top_srcdir)/BitchX.kill $(DEFAULT_CTOOLZ_DIR)/$(DEFAULT_BITCHX_KILL_FILE)
wserv: .config.h $(srcdir)/source/wserv.c $(srcdir)/source/term.c $(srcdir)/Makefile
cd source \

11
configure vendored
View File

@ -309,7 +309,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS topdir VERSION_NUMBER CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S MAKE SET_MAKE CPP EGREP AWK ALLOCA GLIB_CONFIG GLIB_CFLAGS GLIB_LIBS GTK_CONFIG GTK_CFLAGS GTK_LIBS IMLIB_CONFIG GDK_IMLIB_CFLAGS GDK_IMLIB_LIBS GNOME_CONFIG GNOME_CFLAGS GNOME_LIBS X_O ESD_CONFIG ESD_CFLAGS ESD_LIBS AUDIOFILE_CONFIG AUDIOFILE_CFLAGS AUDIOFILE_LIBS VERSION _VERSION_ EXTRAS INSTALL_EXTRAS TCL_LIBS TCL_SRCS TCL_OBJS CD_SRCS CD_OBJS XMMS_CONFIG XMMS_CFLAGS XMMS_LIBS XMMS_VERSION XMMS_DATA_DIR XMMS_PLUGIN_DIR XMMS_VISUALIZATION_PLUGIN_DIR XMMS_INPUT_PLUGIN_DIR XMMS_OUTPUT_PLUGIN_DIR XMMS_GENERAL_PLUGIN_DIR XMMS_EFFECT_PLUGIN_DIR MYSQL_LIBS PLUGINS SHLIB_CFLAGS SHLIB_LD SHLIB_SUFFIX RM CP MV GZIP_ENV BZIP2 INSTALL_IRC IRCLIB IRCPATH TRANSLATION_PATH HELPDIR INSTALL_WSERV INSTALL_SCRBX PLUGINDIR INCLUDES GUI_SRCS HAVE_INET_ATON DEFAULT_CTOOLZ_DIR DEFAULT_MSGLOGFILE DEFAULT_BITCHX_HELP_FILE DEFAULT_SCRIPT_HELP_FILE DEFAULT_BITCHX_KICK_FILE DEFAULT_BITCHX_QUIT_FILE DEFAULT_BITCHX_IRCNAME_FILE HINT_FILE WINNT_INSTALL LIBOBJS LTLIBOBJS'
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS topdir VERSION_NUMBER CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S MAKE SET_MAKE CPP EGREP AWK ALLOCA GLIB_CONFIG GLIB_CFLAGS GLIB_LIBS GTK_CONFIG GTK_CFLAGS GTK_LIBS IMLIB_CONFIG GDK_IMLIB_CFLAGS GDK_IMLIB_LIBS GNOME_CONFIG GNOME_CFLAGS GNOME_LIBS X_O ESD_CONFIG ESD_CFLAGS ESD_LIBS AUDIOFILE_CONFIG AUDIOFILE_CFLAGS AUDIOFILE_LIBS VERSION _VERSION_ EXTRAS INSTALL_EXTRAS TCL_LIBS TCL_SRCS TCL_OBJS CD_SRCS CD_OBJS XMMS_CONFIG XMMS_CFLAGS XMMS_LIBS XMMS_VERSION XMMS_DATA_DIR XMMS_PLUGIN_DIR XMMS_VISUALIZATION_PLUGIN_DIR XMMS_INPUT_PLUGIN_DIR XMMS_OUTPUT_PLUGIN_DIR XMMS_GENERAL_PLUGIN_DIR XMMS_EFFECT_PLUGIN_DIR MYSQL_LIBS PLUGINS SHLIB_CFLAGS SHLIB_LD SHLIB_SUFFIX RM CP MV GZIP_ENV BZIP2 INSTALL_IRC IRCLIB IRCPATH TRANSLATION_PATH HELPDIR INSTALL_WSERV INSTALL_SCRBX PLUGINDIR INCLUDES GUI_SRCS HAVE_INET_ATON DEFAULT_CTOOLZ_DIR DEFAULT_MSGLOGFILE DEFAULT_BITCHX_HELP_FILE DEFAULT_SCRIPT_HELP_FILE DEFAULT_BITCHX_KICK_FILE DEFAULT_BITCHX_KILL_FILE DEFAULT_BITCHX_QUIT_FILE DEFAULT_BITCHX_IRCNAME_FILE HINT_FILE WINNT_INSTALL LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@ -15756,6 +15756,7 @@ if test -n "$CYGWIN" -o -n "$EMXOS2" -o -n "$MINGWIN32"; then
DEFAULT_BITCHX_HELP_FILE="BitchX.hlp"
DEFAULT_SCRIPT_HELP_FILE="BitchX.hlp"
DEFAULT_BITCHX_KICK_FILE="BitchX.kck"
DEFAULT_BITCHX_KILL_FILE="BitchX.kil"
DEFAULT_BITCHX_QUIT_FILE="BitchX.qt"
DEFAULT_BITCHX_IRCNAME_FILE="BitchX.nam"
WINNT_INSTALL="\$(INSTALL_DATA) \$(top_srcdir)/doc/BitchX.ico \$(DESTDIR)\$(IRCLIB); \$(INSTALL_DATA) \$(top_srcdir)/doc/BitchX.bat \$(DESTDIR)\$(IRCLIB); \$(INSTALL_DATA) \$(top_srcdir)/doc/bx-rc \$(DESTDIR)\$(IRCLIB); \$(MV) \$(DESTDIR)\$(IRCLIB)/\$(VERSION)\$(EXEEXT) \$(DESTDIR)\$(IRCLIB)/\$(_VERSION_)\$(EXEEXT); \$(RM) \$(DESTDIR)\$(IRCLIB)/\$(_VERSION_).old"
@ -15776,6 +15777,7 @@ else
DEFAULT_BITCHX_HELP_FILE="BitchX.help"
DEFAULT_SCRIPT_HELP_FILE="BitchX.help"
DEFAULT_BITCHX_KICK_FILE="BitchX.kick"
DEFAULT_BITCHX_KILL_FILE="BitchX.kill"
DEFAULT_BITCHX_QUIT_FILE="BitchX.quit"
DEFAULT_BITCHX_IRCNAME_FILE="BitchX.ircnames"
HINT_FILE="BitchX.hints"
@ -15835,6 +15837,12 @@ _ACEOF
cat >>confdefs.h <<_ACEOF
#define DEFAULT_BITCHX_KILL_FILE "$DEFAULT_BITCHX_KILL_FILE"
_ACEOF
cat >>confdefs.h <<_ACEOF
#define DEFAULT_BITCHX_QUIT_FILE "$DEFAULT_BITCHX_QUIT_FILE"
_ACEOF
@ -16588,6 +16596,7 @@ s,@DEFAULT_MSGLOGFILE@,$DEFAULT_MSGLOGFILE,;t t
s,@DEFAULT_BITCHX_HELP_FILE@,$DEFAULT_BITCHX_HELP_FILE,;t t
s,@DEFAULT_SCRIPT_HELP_FILE@,$DEFAULT_SCRIPT_HELP_FILE,;t t
s,@DEFAULT_BITCHX_KICK_FILE@,$DEFAULT_BITCHX_KICK_FILE,;t t
s,@DEFAULT_BITCHX_KILL_FILE@,$DEFAULT_BITCHX_KILL_FILE,;t t
s,@DEFAULT_BITCHX_QUIT_FILE@,$DEFAULT_BITCHX_QUIT_FILE,;t t
s,@DEFAULT_BITCHX_IRCNAME_FILE@,$DEFAULT_BITCHX_IRCNAME_FILE,;t t
s,@HINT_FILE@,$HINT_FILE,;t t

View File

@ -1002,6 +1002,7 @@ if test -n "$CYGWIN" -o -n "$EMXOS2" -o -n "$MINGWIN32"; then
DEFAULT_BITCHX_HELP_FILE="BitchX.hlp"
DEFAULT_SCRIPT_HELP_FILE="BitchX.hlp"
DEFAULT_BITCHX_KICK_FILE="BitchX.kck"
DEFAULT_BITCHX_KILL_FILE="BitchX.kil"
DEFAULT_BITCHX_QUIT_FILE="BitchX.qt"
DEFAULT_BITCHX_IRCNAME_FILE="BitchX.nam"
WINNT_INSTALL="\$(INSTALL_DATA) \$(top_srcdir)/doc/BitchX.ico \$(DESTDIR)\$(IRCLIB); \$(INSTALL_DATA) \$(top_srcdir)/doc/BitchX.bat \$(DESTDIR)\$(IRCLIB); \$(INSTALL_DATA) \$(top_srcdir)/doc/bx-rc \$(DESTDIR)\$(IRCLIB); \$(MV) \$(DESTDIR)\$(IRCLIB)/\$(VERSION)\$(EXEEXT) \$(DESTDIR)\$(IRCLIB)/\$(_VERSION_)\$(EXEEXT); \$(RM) \$(DESTDIR)\$(IRCLIB)/\$(_VERSION_).old"
@ -1022,6 +1023,7 @@ else
DEFAULT_BITCHX_HELP_FILE="BitchX.help"
DEFAULT_SCRIPT_HELP_FILE="BitchX.help"
DEFAULT_BITCHX_KICK_FILE="BitchX.kick"
DEFAULT_BITCHX_KILL_FILE="BitchX.kill"
DEFAULT_BITCHX_QUIT_FILE="BitchX.quit"
DEFAULT_BITCHX_IRCNAME_FILE="BitchX.ircnames"
HINT_FILE="BitchX.hints"
@ -1066,9 +1068,11 @@ AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_HELP_FILE, "$DEFAULT_BITCHX_HELP_FILE", Defaul
AC_SUBST(DEFAULT_BITCHX_HELP_FILE)
AC_DEFINE_UNQUOTED(DEFAULT_SCRIPT_HELP_FILE, "$DEFAULT_SCRIPT_HELP_FILE", Default BitchX script file.)
AC_SUBST(DEFAULT_SCRIPT_HELP_FILE)
AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_KICK_FILE, "$DEFAULT_BITCHX_KICK_FILE", Default BitchX kick file.)
AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_KICK_FILE, "$DEFAULT_BITCHX_KICK_FILE", Default BitchX kick reasons file.)
AC_SUBST(DEFAULT_BITCHX_KICK_FILE)
AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_QUIT_FILE, "$DEFAULT_BITCHX_QUIT_FILE", Default BitchX quit file.)
AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_KILL_FILE, "$DEFAULT_BITCHX_KILL_FILE", Default BitchX kill reasons file.)
AC_SUBST(DEFAULT_BITCHX_KILL_FILE)
AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_QUIT_FILE, "$DEFAULT_BITCHX_QUIT_FILE", Default BitchX quit reasons file.)
AC_SUBST(DEFAULT_BITCHX_QUIT_FILE)
AC_DEFINE_UNQUOTED(DEFAULT_BITCHX_IRCNAME_FILE, "$DEFAULT_BITCHX_IRCNAME_FILE", Default BitchX ircname file.)
AC_SUBST(DEFAULT_BITCHX_IRCNAME_FILE)

View File

@ -17,10 +17,13 @@
/* Default BitchX ircname file. */
#undef DEFAULT_BITCHX_IRCNAME_FILE
/* Default BitchX kick file. */
/* Default BitchX kick reasons file. */
#undef DEFAULT_BITCHX_KICK_FILE
/* Default BitchX quit file. */
/* Default BitchX kill reasons file. */
#undef DEFAULT_BITCHX_KILL_FILE
/* Default BitchX quit reasons file. */
#undef DEFAULT_BITCHX_QUIT_FILE
/* Default CToolZ directory. */

View File

@ -102,9 +102,10 @@ ChannelList * BX_prepare_command (int *, char *, int);
int are_you_opped (char *);
void error_not_opped (const char *);
char *get_reason (char *, char *);
char *get_realname(char *);
char *get_signoffreason (char *);
char *get_reason(const char *nick, const char *file);
char *get_kill_reason(const char *target, const char *nick);
char *get_realname(const char *nick);
char *get_signoffreason(const char *nick);
int isme (char *);
char *BX_convert_output_format (const char *, const char *, ...);

View File

@ -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);
}
/*

View File

@ -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);
}

View File

@ -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--;