diff --git a/include/modval.h b/include/modval.h index d9f609b..1cc5eb1 100644 --- a/include/modval.h +++ b/include/modval.h @@ -569,7 +569,7 @@ extern Function_ptr *global; #define set_server_trace_kill (*(void (*)(int , int ))global[SET_SERVER_TRACE_KILL]) #define add_server_channels (*(void (*)(int, ChannelList *))global[ADD_SERVER_CHANNELS]) #define set_server_channels (*(void (*)(int, ChannelList *))global[SET_SERVER_CHANNELS]) -#define send_msg_to_channels (*(void (*)(ChannelList *, int, char *))global[SEND_MSG_TO_CHANNELS]) +#define send_msg_to_channels (*(void (*)(int, const char *))global[SEND_MSG_TO_CHANNELS]) #define send_msg_to_nicks (*(void (*)(ChannelList *, int, char *))global[SEND_MSG_TO_NICKS]) #define is_server_queue (*(int (*)(void ))global[IS_SERVER_QUEUE]) diff --git a/include/server.h b/include/server.h index e6ceb56..d3b64de 100644 --- a/include/server.h +++ b/include/server.h @@ -375,7 +375,7 @@ struct sockaddr_foobar get_server_local_addr (int); struct sockaddr_foobar get_server_uh_addr (int); NotifyItem *get_server_notify_list (int); void BX_send_msg_to_nicks (ChannelList *, int, char *); - void BX_send_msg_to_channels (ChannelList *, int, char *); + void BX_send_msg_to_channels (int, const char *); int BX_is_server_queue (void); int save_servers (FILE *); void add_split_server (char *, char *, int); diff --git a/source/commands.c b/source/commands.c index 0790a79..9d675da 100644 --- a/source/commands.c +++ b/source/commands.c @@ -3159,21 +3159,18 @@ int silent = 0; bitchsay("You were /away for %i hours %i minutes and %i seconds. [\002BX\002-MsgLog %s]", hours, minutes, seconds, on_off(get_int_var(MSGLOG_VAR))); + if (fget_string_var(FORMAT_BACK_FSET)) { char str[BIG_BUFFER_SIZE+1]; - char reason[BIG_BUFFER_SIZE+1]; - char fset[BIG_BUFFER_SIZE+1]; - *reason = 0; - quote_it(args ? args : get_server_away(from_server), NULL, reason); - if(fget_string_var(FORMAT_BACK_FSET)) - { - quote_it(stripansicodes(convert_output_format(fget_string_var(FORMAT_BACK_FSET), "%s %d %d %d %d %s", - update_clock(GET_TIME), hours, minutes, seconds, - get_int_var(MSGCOUNT_VAR), reason)), NULL, fset); - snprintf(str, BIG_BUFFER_SIZE, - "PRIVMSG %%s :ACTION %s", fset); - send_msg_to_channels(get_server_channels(from_server), from_server, str); - } + char *fset; + char *reason = args ? args : get_server_away(from_server); + + fset = stripansicodes(convert_output_format( + fget_string_var(FORMAT_BACK_FSET), "%s %d %d %d %d %s", + update_clock(GET_TIME), hours, minutes, seconds, + get_int_var(MSGCOUNT_VAR), reason)); + snprintf(str, BIG_BUFFER_SIZE, "ACTION %s", fset); + send_msg_to_channels(from_server, str); } } set_server_away(from_server, NULL, silent); diff --git a/source/server.c b/source/server.c index 500d410..61bd386 100644 --- a/source/server.c +++ b/source/server.c @@ -1919,23 +1919,11 @@ void BX_set_server_away (int ssa_index, char *message, int silent) char buffer[BIG_BUFFER_SIZE+1]; if (get_int_var(SEND_AWAY_MSG_VAR)) { - char *p = NULL; - ChannelList *chan; - if (get_server_version(ssa_index) == Server2_8hybrid6) - { - for (chan = server_list[ssa_index].chan_list; chan; chan = chan->next) - send_to_server("PRIVMSG %s :ACTION %s", chan->channel, - stripansicodes(convert_output_format(fget_string_var(FORMAT_AWAY_FSET), "%s [\002BX\002-MsgLog %s] %s",update_clock(GET_TIME), get_int_var(MSGLOG_VAR)?"On":"Off", message))); - } - else - { - for (chan = server_list[ssa_index].chan_list; chan; chan = chan->next) - m_s3cat(&p, ",", chan->channel); - if (p) - send_to_server("PRIVMSG %s :ACTION %s", p, - stripansicodes(convert_output_format(fget_string_var(FORMAT_AWAY_FSET), "%s [\002BX\002-MsgLog %s] %s",update_clock(GET_TIME), get_int_var(MSGLOG_VAR)?"On":"Off", message))); - new_free(&p); - } + snprintf(buffer, BIG_BUFFER_SIZE, "ACTION %s", + stripansicodes(convert_output_format( + fget_string_var(FORMAT_AWAY_FSET), "%s [\002BX\002-MsgLog %s] %s", + update_clock(GET_TIME), get_int_var(MSGLOG_VAR)? "On" : "Off", message))); + send_msg_to_channels(ssa_index, buffer); } send_to_server("%s :%s", "AWAY", stripansicodes(convert_output_format(fget_string_var(FORMAT_AWAY_FSET), "%s [\002BX\002-MsgLog %s] %s", update_clock(GET_TIME), get_int_var(MSGLOG_VAR)?"On":"Off",message))); strncpy(buffer, convert_output_format(fget_string_var(FORMAT_SEND_ACTION_FSET), "%s %s $C ", update_clock(GET_TIME), server_list[ssa_index].nickname), BIG_BUFFER_SIZE); @@ -3712,40 +3700,37 @@ struct sockaddr_foobar get_server_uh_addr (int servnum) return server_list[servnum].uh_addr; } - -void BX_send_msg_to_channels(ChannelList *channel, int server, char *msg) +void BX_send_msg_to_channels(int server, const char *msg) { -int serv_version; -char *p = NULL; -ChannelList *chan = NULL; -int count; + char *p = NULL; + ChannelList *chan = NULL; + int count; /* * Because of hybrid and it's removal of , targets * we need to detect this and get around it.. */ - serv_version = get_server_version(server); - if (serv_version == Server2_8hybrid6) + if (get_server_version(server) == Server2_8hybrid6) { /* this might be a cause for some flooding however. * so we use the server queue. Which will help alleviate * some flooding from the client. */ - for (chan = channel; chan; chan = chan->next) - queue_send_to_server(server, msg, chan->channel); + for (chan = get_server_channels(server); chan; chan = chan->next) + queue_send_to_server(server, "PRIVMSG %s :%s", chan->channel, msg); return; } - for (chan = channel, count = 1; chan; chan = chan->next, count++) + for (chan = get_server_channels(server), count = 1; chan; chan = chan->next, count++) { m_s3cat(&p, ",", chan->channel); if (count > 3) { - send_to_server(msg, p); + my_send_to_server(server, "PRIVMSG %s :%s", p, msg); new_free(&p); count = 0; } } if (p) - send_to_server(msg, p); + my_send_to_server(server, "PRIVMSG %s :%s", p, msg); new_free(&p); }