Cleanup p_mode() and correct handling of user mode changes where the source
and the target aren't the same (reported by gauze). This doesn't happen on standard servers, but is used by services on some networks. Adds /FSET USERMODE_OTHER. git-svn-id: svn://svn.code.sf.net/p/bitchx/code/trunk@114 13b04d17-f746-0410-82c6-800466cd88b0
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
[Changes 1.2c01]
|
[Changes 1.2c01]
|
||||||
|
|
||||||
|
* Add /FSET USERMODE_OTHER to correctly format user mode changes where the
|
||||||
|
source isn't the same as the target, reported by gauze. (caf)
|
||||||
|
|
||||||
* Improve country() and add several new TLDs, suggested by gauze. (caf)
|
* Improve country() and add several new TLDs, suggested by gauze. (caf)
|
||||||
|
|
||||||
* Apply fixes from darkfires removing non-standard use of arithmetic on
|
* Apply fixes from darkfires removing non-standard use of arithmetic on
|
||||||
|
|||||||
@@ -271,6 +271,7 @@
|
|||||||
|
|
||||||
#define DEFAULT_FORMAT_USAGE_FSET "$G Usage: /$0 $1-"
|
#define DEFAULT_FORMAT_USAGE_FSET "$G Usage: /$0 $1-"
|
||||||
#define DEFAULT_FORMAT_USERMODE_FSET "$G %nMode change %K[%W$4-%K]%n for user %c$3"
|
#define DEFAULT_FORMAT_USERMODE_FSET "$G %nMode change %K[%W$4-%K]%n for user %c$3"
|
||||||
|
#define DEFAULT_FORMAT_USERMODE_OTHER_FSET "$G %nMode change %K[%W$4-%K]%n for user %c$3%n by %W$1"
|
||||||
|
|
||||||
#define DEFAULT_FORMAT_USERLIST_FSET "$[16]0 $[10]1 $[-10]2 $[-25]3 $[10]4"
|
#define DEFAULT_FORMAT_USERLIST_FSET "$[16]0 $[10]1 $[-10]2 $[-25]3 $[10]4"
|
||||||
|
|
||||||
@@ -695,6 +696,7 @@
|
|||||||
|
|
||||||
#define DEFAULT_FORMAT_USAGE_FSET "$G Usage: /$0 $1-"
|
#define DEFAULT_FORMAT_USAGE_FSET "$G Usage: /$0 $1-"
|
||||||
#define DEFAULT_FORMAT_USERMODE_FSET "$G %nMode change %K[%W$4-%K]%n for user %c$3"
|
#define DEFAULT_FORMAT_USERMODE_FSET "$G %nMode change %K[%W$4-%K]%n for user %c$3"
|
||||||
|
#define DEFAULT_FORMAT_USERMODE_OTHER_FSET "$G %nMode change %K[%W$4-%K]%n for user %c$3%n by %W$1"
|
||||||
|
|
||||||
#define DEFAULT_FORMAT_USERLIST_FSET "$[16]0 $[10]1 $[-10]2 $[-25]3 $[10]4"
|
#define DEFAULT_FORMAT_USERLIST_FSET "$[16]0 $[10]1 $[-10]2 $[-25]3 $[10]4"
|
||||||
|
|
||||||
|
|||||||
@@ -347,6 +347,7 @@ FORMAT_USERLIST_FOOTER_FSET,
|
|||||||
FORMAT_USERLIST_HEADER_FSET,
|
FORMAT_USERLIST_HEADER_FSET,
|
||||||
|
|
||||||
FORMAT_USERMODE_FSET,
|
FORMAT_USERMODE_FSET,
|
||||||
|
FORMAT_USERMODE_OTHER_FSET,
|
||||||
FORMAT_USERS_FSET,
|
FORMAT_USERS_FSET,
|
||||||
FORMAT_USERS_HEADER_FSET,
|
FORMAT_USERS_HEADER_FSET,
|
||||||
FORMAT_USERS_SHIT_FSET,
|
FORMAT_USERS_SHIT_FSET,
|
||||||
|
|||||||
@@ -729,6 +729,7 @@ void create_fsets(Window *win, int ansi)
|
|||||||
fset_string_var(FORMAT_TOPIC_UNSET_FSET, DEFAULT_FORMAT_TOPIC_UNSET_FSET);
|
fset_string_var(FORMAT_TOPIC_UNSET_FSET, DEFAULT_FORMAT_TOPIC_UNSET_FSET);
|
||||||
fset_string_var(FORMAT_USAGE_FSET, DEFAULT_FORMAT_USAGE_FSET);
|
fset_string_var(FORMAT_USAGE_FSET, DEFAULT_FORMAT_USAGE_FSET);
|
||||||
fset_string_var(FORMAT_USERMODE_FSET, DEFAULT_FORMAT_USERMODE_FSET);
|
fset_string_var(FORMAT_USERMODE_FSET, DEFAULT_FORMAT_USERMODE_FSET);
|
||||||
|
fset_string_var(FORMAT_USERMODE_OTHER_FSET, DEFAULT_FORMAT_USERMODE_OTHER_FSET);
|
||||||
fset_string_var(FORMAT_USERLIST_FSET, DEFAULT_FORMAT_USERLIST_FSET);
|
fset_string_var(FORMAT_USERLIST_FSET, DEFAULT_FORMAT_USERLIST_FSET);
|
||||||
fset_string_var(FORMAT_USERLIST_FOOTER_FSET, DEFAULT_FORMAT_USERLIST_FOOTER_FSET);
|
fset_string_var(FORMAT_USERLIST_FOOTER_FSET, DEFAULT_FORMAT_USERLIST_FOOTER_FSET);
|
||||||
fset_string_var(FORMAT_USERLIST_HEADER_FSET, DEFAULT_FORMAT_USERLIST_HEADER_FSET);
|
fset_string_var(FORMAT_USERLIST_HEADER_FSET, DEFAULT_FORMAT_USERLIST_HEADER_FSET);
|
||||||
|
|||||||
@@ -1419,39 +1419,40 @@ time_t right_now;
|
|||||||
|
|
||||||
static void p_mode(char *from, char **ArgList)
|
static void p_mode(char *from, char **ArgList)
|
||||||
{
|
{
|
||||||
char *channel;
|
char *target;
|
||||||
char *line;
|
char *line;
|
||||||
int flag;
|
int flag;
|
||||||
|
|
||||||
ChannelList *chan = NULL;
|
ChannelList *chan = NULL;
|
||||||
ChannelList *chan2 = get_server_channels(from_server);
|
ChannelList *chan2 = get_server_channels(from_server);
|
||||||
char buffer[BIG_BUFFER_SIZE+1];
|
char buffer[BIG_BUFFER_SIZE+1];
|
||||||
char *smode;
|
char *smode;
|
||||||
|
char *display_uh = FromUserHost[0] ? FromUserHost : "*";
|
||||||
#ifdef COMPRESS_MODES
|
#ifdef COMPRESS_MODES
|
||||||
char *tmpbuf = NULL;
|
char *tmpbuf = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PasteArgs(ArgList, 1);
|
PasteArgs(ArgList, 1);
|
||||||
channel = ArgList[0];
|
target = ArgList[0];
|
||||||
line = ArgList[1];
|
line = ArgList[1];
|
||||||
smode = strchr(from, '.');
|
smode = strchr(from, '.');
|
||||||
|
|
||||||
flag = check_ignore(from, FromUserHost, channel, (smode?IGNORE_SMODES : IGNORE_MODES) | IGNORE_CRAP, NULL);
|
flag = check_ignore(from, FromUserHost, target, (smode?IGNORE_SMODES : IGNORE_MODES) | IGNORE_CRAP, NULL);
|
||||||
|
|
||||||
set_display_target(channel, LOG_CRAP);
|
set_display_target(target, LOG_CRAP);
|
||||||
if (channel && line)
|
if (target && line)
|
||||||
{
|
{
|
||||||
strcpy(buffer, line);
|
strcpy(buffer, line);
|
||||||
if (get_int_var(MODE_STRIPPER_VAR))
|
if (get_int_var(MODE_STRIPPER_VAR))
|
||||||
strip_modes(from,channel,line);
|
strip_modes(from, target, line);
|
||||||
if (is_channel(channel))
|
if (is_channel(target))
|
||||||
{
|
{
|
||||||
#ifdef COMPRESS_MODES
|
#ifdef COMPRESS_MODES
|
||||||
if (chan2)
|
if (chan2)
|
||||||
chan = (ChannelList *)find_in_list((List **)&chan2, channel, 0);
|
chan = (ChannelList *)find_in_list((List **)&chan2, target, 0);
|
||||||
if (chan && get_cset_int_var(chan->csets, COMPRESS_MODES_CSET))
|
if (chan && get_cset_int_var(chan->csets, COMPRESS_MODES_CSET))
|
||||||
{
|
{
|
||||||
tmpbuf = do_compress_modes(chan, from_server, channel, line);
|
tmpbuf = do_compress_modes(chan, from_server, target, line);
|
||||||
if (tmpbuf)
|
if (tmpbuf)
|
||||||
strcpy(line, tmpbuf);
|
strcpy(line, tmpbuf);
|
||||||
else
|
else
|
||||||
@@ -1459,45 +1460,41 @@ static void p_mode(char *from, char **ArgList)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* CDE handle mode protection here instead of later */
|
/* CDE handle mode protection here instead of later */
|
||||||
update_channel_mode(from, channel, from_server, buffer, chan);
|
update_channel_mode(from, target, from_server, buffer, chan);
|
||||||
#ifdef WANT_TCL
|
#ifdef WANT_TCL
|
||||||
check_tcl_mode(from, FromUserHost, from, channel, line);
|
check_tcl_mode(from, FromUserHost, from, target, line);
|
||||||
#endif
|
#endif
|
||||||
if (my_stricmp(from, get_server_nickname(from_server)))
|
if (my_stricmp(from, get_server_nickname(from_server)))
|
||||||
{
|
{
|
||||||
check_mode_lock(channel, line, from_server);
|
check_mode_lock(target, line, from_server);
|
||||||
check_bitch_mode(from, FromUserHost, channel, line, chan);
|
check_bitch_mode(from, FromUserHost, target, line, chan);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (flag != IGNORED && do_hook(MODE_LIST, "%s %s %s", from, target, line))
|
||||||
if (flag != IGNORED && do_hook(MODE_LIST, "%s %s %s", from, channel, line))
|
{
|
||||||
put_it("%s",convert_output_format(fget_string_var(smode?FORMAT_SMODE_FSET:FORMAT_MODE_FSET), "%s %s %s %s %s",update_clock(GET_TIME), from, smode?"*":FromUserHost, channel, line));
|
enum FSET_TYPES fset = smode ? FORMAT_SMODE_FSET : FORMAT_MODE_FSET;
|
||||||
logmsg(LOG_MODE_CHAN, from, 0, "%s %s", channel, line);
|
put_it("%s", convert_output_format(fget_string_var(fset), "%s %s %s %s %s", update_clock(GET_TIME), from, display_uh, target, line));
|
||||||
do_logchannel(LOG_MODE_CHAN, chan, "%s %s, %s", from, channel, line);
|
}
|
||||||
|
logmsg(LOG_MODE_CHAN, from, 0, "%s %s", target, line);
|
||||||
|
do_logchannel(LOG_MODE_CHAN, chan, "%s %s, %s", from, target, line);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
chan = (ChannelList *)find_in_list((List **)&chan2, channel, 0);
|
if (flag != IGNORED && do_hook(MODE_LIST, "%s %s %s", from, target, line))
|
||||||
if (flag != IGNORED && do_hook(MODE_LIST, "%s %s %s", from, channel, line))
|
|
||||||
{
|
{
|
||||||
if (!my_stricmp(from, channel))
|
/* User mode changes where from != target don't occur on
|
||||||
{
|
* standard servers, but are used by services on some networks. */
|
||||||
if (!my_stricmp(from, get_server_nickname(from_server)))
|
enum FSET_TYPES fset = my_stricmp(from, target) ? FORMAT_USERMODE_OTHER_FSET : FORMAT_USERMODE_FSET;
|
||||||
put_it("%s",convert_output_format(fget_string_var(FORMAT_USERMODE_FSET), "%s %s %s %s %s",update_clock(GET_TIME), from, "*", channel, line));
|
put_it("%s", convert_output_format(fget_string_var(fset), "%s %s %s %s %s", update_clock(GET_TIME), from, display_uh, target, line));
|
||||||
else
|
|
||||||
put_it("%s",convert_output_format(fget_string_var(FORMAT_USERMODE_FSET), "%s %s %s %s %s",update_clock(GET_TIME), from, smode?"*":FromUserHost, channel, line));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
put_it("%s",convert_output_format(fget_string_var(FORMAT_MODE_FSET), "%s %s %s %s %s",update_clock(GET_TIME), from, smode?"*":FromUserHost, channel, line));
|
|
||||||
}
|
}
|
||||||
update_user_mode(line);
|
if (!my_stricmp(target, get_server_nickname(from_server)))
|
||||||
logmsg(LOG_MODE_USER, from, 0, "%s %s", channel, line);
|
update_user_mode(line);
|
||||||
do_logchannel(LOG_MODE_USER, chan, "%s %s %s", from, channel, line);
|
logmsg(LOG_MODE_USER, from, 0, "%s %s", target, line);
|
||||||
}
|
}
|
||||||
update_all_status(current_window, NULL, 0);
|
update_all_status(current_window, NULL, 0);
|
||||||
}
|
}
|
||||||
#ifdef GUI
|
#ifdef GUI
|
||||||
gui_update_nicklist(channel);
|
gui_update_nicklist(target);
|
||||||
#endif
|
#endif
|
||||||
reset_display_target();
|
reset_display_target();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user