This commit is contained in:
Max DeLiso 2015-09-13 02:12:11 +00:00
commit a3a40269d8
32 changed files with 273 additions and 463 deletions

View file

@ -297,7 +297,7 @@ void command_runsub(const char *cmd, const char *data,
void *server, void *item)
{
const char *newcmd;
char *orig, *subcmd, *defcmd, *args;
char *subcmd, *defcmd, *args;
g_return_if_fail(data != NULL);
@ -310,7 +310,7 @@ void command_runsub(const char *cmd, const char *data,
}
/* get command.. */
orig = subcmd = g_strdup_printf("command %s %s", cmd, data);
subcmd = g_strdup_printf("command %s %s", cmd, data);
args = strchr(subcmd+8 + strlen(cmd)+1, ' ');
if (args != NULL) *args++ = '\0'; else args = "";
while (*args == ' ') args++;
@ -319,7 +319,6 @@ void command_runsub(const char *cmd, const char *data,
newcmd = command_expand(subcmd+8);
if (newcmd == NULL) {
/* ambiguous command */
g_free(orig);
return;
}
@ -336,7 +335,6 @@ void command_runsub(const char *cmd, const char *data,
}
g_free(subcmd);
g_free(orig);
}
static GSList *optlist_find(GSList *optlist, const char *option)
@ -664,14 +662,14 @@ get_optional_channel(WI_ITEM_REC *active_item, char **data, int require_name)
{
CHANNEL_REC *chanrec;
const char *ret;
char *tmp, *origtmp, *channel;
char *tmp, *channel;
if (active_item == NULL) {
/* no active channel in window, channel required */
return cmd_get_param(data);
}
origtmp = tmp = g_strdup(*data);
tmp = g_strdup(*data);
channel = cmd_get_param(&tmp);
if (g_strcmp0(channel, "*") == 0 && !require_name) {
@ -690,7 +688,6 @@ get_optional_channel(WI_ITEM_REC *active_item, char **data, int require_name)
ret = chanrec == NULL ? channel : chanrec->name;
}
g_free(origtmp);
return ret;
}
@ -851,11 +848,11 @@ static void parse_command(const char *command, int expand_aliases,
{
COMMAND_REC *rec;
const char *alias, *newcmd;
char *cmd, *orig, *args, *oldcmd;
char *cmd, *args, *oldcmd;
g_return_if_fail(command != NULL);
cmd = orig = g_strconcat("command ", command, NULL);
cmd = g_strconcat("command ", command, NULL);
args = strchr(cmd+8, ' ');
if (args != NULL) *args++ = '\0'; else args = "";
@ -867,7 +864,6 @@ static void parse_command(const char *command, int expand_aliases,
alias_runstack_push(cmd+8);
eval_special_string(alias, args, server, item);
alias_runstack_pop(cmd+8);
g_free(orig);
return;
}
@ -875,14 +871,11 @@ static void parse_command(const char *command, int expand_aliases,
newcmd = command_expand(cmd+8);
if (newcmd == NULL) {
/* ambiguous command */
g_free(orig);
return;
}
rec = command_find(newcmd);
if (rec != NULL && !cmd_protocol_match(rec, server)) {
g_free(orig);
signal_emit("error command", 2,
GINT_TO_POINTER(server == NULL ?
CMDERR_NOT_CONNECTED :
@ -908,7 +901,6 @@ static void parse_command(const char *command, int expand_aliases,
current_command = oldcmd;
g_free(cmd);
g_free(orig);
}
static void event_command(const char *line, SERVER_REC *server, void *item)

View file

@ -87,7 +87,7 @@ int level_get(const char *level)
int level2bits(const char *level, int *errorp)
{
char *orig, *str, *ptr;
char *str, *ptr;
int ret, singlelevel, negative;
if (errorp != NULL)
@ -98,7 +98,7 @@ int level2bits(const char *level, int *errorp)
if (*level == '\0')
return 0;
orig = str = g_strdup(level);
str = g_strdup(level);
ret = 0;
for (ptr = str; ; str++) {
@ -122,7 +122,6 @@ int level2bits(const char *level, int *errorp)
ptr = str;
}
g_free(orig);
return ret;
}

View file

@ -496,10 +496,10 @@ unsigned int g_istr_hash(gconstpointer v)
/* Find `mask' from `data', you can use * and ? wildcards. */
int match_wildcards(const char *cmask, const char *data)
{
char *mask, *newmask, *p1, *p2;
char *mask, *p1, *p2;
int ret;
newmask = mask = g_strdup(cmask);
mask = g_strdup(cmask);
for (; *mask != '\0' && *data != '\0'; mask++) {
if (*mask != '*') {
if (*mask != '?' && i_toupper(*mask) != i_toupper(*data))
@ -533,7 +533,6 @@ int match_wildcards(const char *cmask, const char *data)
while (*mask == '*') mask++;
ret = data != NULL && *data == '\0' && *mask == '\0';
g_free(newmask);
return ret;
}

View file

@ -540,7 +540,7 @@ void eval_special_string(const char *cmd, const char *data,
SERVER_REC *server, void *item)
{
const char *cmdchars;
char *orig, *str, *start, *ret;
char *str, *start, *ret;
int arg_used, arg_used_ever;
GSList *commands;
@ -549,7 +549,7 @@ void eval_special_string(const char *cmd, const char *data,
cmdchars = settings_get_str("cmdchars");
/* get a list of all the commands to run */
orig = start = str = g_strdup(cmd);
start = str = g_strdup(cmd);
do {
if (is_split_char(str, start)) {
*str++ = '\0';
@ -604,7 +604,6 @@ void eval_special_string(const char *cmd, const char *data,
g_free(ret);
commands = g_slist_remove(commands, commands->data);
}
g_free(orig);
}
void special_history_func_set(SPECIAL_HISTORY_FUNC func)

View file

@ -74,14 +74,10 @@ static void dcc_connected(CHAT_DCC_REC *dcc)
static void dcc_closed(CHAT_DCC_REC *dcc)
{
char *sender;
if (!IS_DCC_CHAT(dcc)) return;
sender = g_strconcat("=", dcc->id, NULL);
printformat(dcc->server, NULL, MSGLEVEL_DCC,
IRCTXT_DCC_CHAT_DISCONNECTED, dcc->id);
g_free(sender);
}
static void dcc_chat_msg(CHAT_DCC_REC *dcc, const char *msg)

View file

@ -44,37 +44,35 @@ static char *last_away_msg = NULL;
static void event_user_mode(IRC_SERVER_REC *server, const char *data)
{
char *params, *mode;
char *mode;
g_return_if_fail(data != NULL);
g_return_if_fail(server != NULL);
params = event_get_params(data, 2, NULL, &mode);
event_get_params(data, 2, NULL, &mode);
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_USER_MODE,
g_strchomp(mode));
g_free(params);
}
static void event_ison(IRC_SERVER_REC *server, const char *data)
{
char *params, *online;
char *online;
g_return_if_fail(data != NULL);
g_return_if_fail(server != NULL);
params = event_get_params(data, 2, NULL, &online);
event_get_params(data, 2, NULL, &online);
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_ONLINE, online);
g_free(params);
}
static void event_names_list(IRC_SERVER_REC *server, const char *data)
{
IRC_CHANNEL_REC *chanrec;
char *params, *channel, *names;
char *channel, *names;
g_return_if_fail(data != NULL);
params = event_get_params(data, 4, NULL, NULL, &channel, &names);
event_get_params(data, 4, NULL, NULL, &channel, &names);
chanrec = irc_channel_find(server, channel);
if (chanrec == NULL || chanrec->names_got) {
@ -84,34 +82,32 @@ static void event_names_list(IRC_SERVER_REC *server, const char *data)
printtext(server, channel, MSGLEVEL_CRAP, "%s", names);
}
g_free(params);
}
static void event_end_of_names(IRC_SERVER_REC *server, const char *data,
const char *nick)
{
IRC_CHANNEL_REC *chanrec;
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
chanrec = irc_channel_find(server, channel);
if (chanrec == NULL || chanrec->names_got)
print_event_received(server, data, nick, FALSE);
g_free(params);
}
static void event_who(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *channel, *user, *host, *stat, *realname, *hops;
char *nick, *channel, *user, *host, *stat, *realname, *hops;
char *serv, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 8, NULL, &channel, &user,
&host, &serv, &nick, &stat, &realname);
event_get_params(data, 8, NULL, &channel, &user,
&host, &serv, &nick, &stat, &realname);
/* split hops/realname */
hops = realname;
@ -123,19 +119,17 @@ static void event_who(IRC_SERVER_REC *server, const char *data)
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_WHO,
channel, nick, stat, hops, user, host, recoded, serv);
g_free(params);
g_free(recoded);
}
static void event_end_of_who(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_END_OF_WHO, channel);
g_free(params);
}
static void event_ban_list(IRC_SERVER_REC *server, const char *data)
@ -143,12 +137,12 @@ static void event_ban_list(IRC_SERVER_REC *server, const char *data)
IRC_CHANNEL_REC *chanrec;
BAN_REC *banrec;
const char *channel;
char *params, *ban, *setby, *tims;
char *ban, *setby, *tims;
long secs;
g_return_if_fail(data != NULL);
params = event_get_params(data, 5, NULL, &channel,
event_get_params(data, 5, NULL, &channel,
&ban, &setby, &tims);
secs = *tims == '\0' ? 0 :
(long) (time(NULL) - atol(tims));
@ -161,19 +155,17 @@ static void event_ban_list(IRC_SERVER_REC *server, const char *data)
*setby == '\0' ? IRCTXT_BANLIST : IRCTXT_BANLIST_LONG,
banrec == NULL ? 0 : g_slist_index(chanrec->banlist, banrec)+1,
channel, ban, setby, secs);
g_free(params);
}
static void event_eban_list(IRC_SERVER_REC *server, const char *data)
{
const char *channel;
char *params, *ban, *setby, *tims;
char *ban, *setby, *tims;
long secs;
g_return_if_fail(data != NULL);
params = event_get_params(data, 5, NULL, &channel,
event_get_params(data, 5, NULL, &channel,
&ban, &setby, &tims);
secs = *tims == '\0' ? 0 :
(long) (time(NULL) - atol(tims));
@ -182,45 +174,39 @@ static void event_eban_list(IRC_SERVER_REC *server, const char *data)
printformat(server, channel, MSGLEVEL_CRAP,
*setby == '\0' ? IRCTXT_EBANLIST : IRCTXT_EBANLIST_LONG,
channel, ban, setby, secs);
g_free(params);
}
static void event_silence_list(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *mask;
char *nick, *mask;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &mask);
event_get_params(data, 3, NULL, &nick, &mask);
printformat(server, NULL, MSGLEVEL_CRAP,
IRCTXT_SILENCE_LINE, nick, mask);
g_free(params);
}
static void event_accept_list(IRC_SERVER_REC *server, const char *data)
{
char *params, *accepted;
char *accepted;
g_return_if_fail(data != NULL);
g_return_if_fail(server != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
NULL, &accepted);
event_get_params(data, 2 | PARAM_FLAG_GETREST, NULL, &accepted);
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_ACCEPT_LIST, accepted);
g_free(params);
}
static void event_invite_list(IRC_SERVER_REC *server, const char *data)
{
const char *channel;
char *params, *invite, *setby, *tims;
char *invite, *setby, *tims;
long secs;
g_return_if_fail(data != NULL);
params = event_get_params(data, 5, NULL, &channel, &invite,
&setby, &tims);
event_get_params(data, 5, NULL, &channel, &invite, &setby, &tims);
secs = *tims == '\0' ? 0 :
(long) (time(NULL) - atol(tims));
@ -228,49 +214,45 @@ static void event_invite_list(IRC_SERVER_REC *server, const char *data)
printformat(server, channel, MSGLEVEL_CRAP,
*setby == '\0' ? IRCTXT_INVITELIST : IRCTXT_INVITELIST_LONG,
channel, invite, setby, secs);
g_free(params);
}
static void event_nick_in_use(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &nick);
event_get_params(data, 2, NULL, &nick);
if (server->connected) {
printformat(server, NULL, MSGLEVEL_CRAP,
IRCTXT_NICK_IN_USE, nick);
}
g_free(params);
}
static void event_topic_get(IRC_SERVER_REC *server, const char *data)
{
const char *channel;
char *params, *topic, *recoded;
char *topic, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &channel, &topic);
event_get_params(data, 3, NULL, &channel, &topic);
recoded = recode_in(SERVER(server), topic, channel);
channel = get_visible_target(server, channel);
printformat(server, channel, MSGLEVEL_CRAP,
IRCTXT_TOPIC, channel, recoded);
g_free(params);
g_free(recoded);
}
static void event_topic_info(IRC_SERVER_REC *server, const char *data)
{
const char *channel;
char *params, *timestr, *bynick, *byhost, *topictime;
char *timestr, *bynick, *byhost, *topictime;
g_return_if_fail(data != NULL);
params = event_get_params(data, 4, NULL, &channel,
&bynick, &topictime);
event_get_params(data, 4, NULL, &channel,
&bynick, &topictime);
timestr = my_asctime((time_t) atol(topictime));
@ -282,39 +264,36 @@ static void event_topic_info(IRC_SERVER_REC *server, const char *data)
printformat(server, channel, MSGLEVEL_CRAP, IRCTXT_TOPIC_INFO,
bynick, timestr, byhost == NULL ? "" : byhost);
g_free(timestr);
g_free(params);
}
static void event_channel_mode(IRC_SERVER_REC *server, const char *data)
{
const char *channel;
char *params, *mode;
char *mode;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
NULL, &channel, &mode);
event_get_params(data, 3 | PARAM_FLAG_GETREST,
NULL, &channel, &mode);
channel = get_visible_target(server, channel);
printformat(server, channel, MSGLEVEL_CRAP,
IRCTXT_CHANNEL_MODE, channel, g_strchomp(mode));
g_free(params);
}
static void event_channel_created(IRC_SERVER_REC *server, const char *data)
{
const char *channel;
char *params, *createtime, *timestr;
char *createtime, *timestr;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &channel, &createtime);
event_get_params(data, 3, NULL, &channel, &createtime);
timestr = my_asctime((time_t) atol(createtime));
channel = get_visible_target(server, channel);
printformat(server, channel, MSGLEVEL_CRAP,
IRCTXT_CHANNEL_CREATED, channel, timestr);
g_free(timestr);
g_free(params);
}
static void event_nowaway(IRC_SERVER_REC *server, const char *data)
@ -329,11 +308,11 @@ static void event_unaway(IRC_SERVER_REC *server, const char *data)
static void event_away(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *awaymsg, *recoded;
char *nick, *awaymsg, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
event_get_params(data, 3, NULL, &nick, &awaymsg);
recoded = recode_in(SERVER(server), awaymsg, nick);
if (!settings_get_bool("show_away_once") ||
last_away_nick == NULL ||
@ -350,56 +329,52 @@ static void event_away(IRC_SERVER_REC *server, const char *data)
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_NICK_AWAY, nick, recoded);
}
g_free(params);
g_free(recoded);
}
static void event_userhost(IRC_SERVER_REC *server, const char *data)
{
char *params, *hosts;
char *hosts;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &hosts);
event_get_params(data, 2, NULL, &hosts);
printtext(server, NULL, MSGLEVEL_CRAP, "%s", hosts);
g_free(params);
}
static void event_sent_invite(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *channel;
char *nick, *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &channel);
event_get_params(data, 3, NULL, &nick, &channel);
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_INVITING, nick, channel);
g_free(params);
}
static void event_chanserv_url(IRC_SERVER_REC *server, const char *data)
{
const char *channel;
char *params, *url;
char *url;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &channel, &url);
event_get_params(data, 3, NULL, &channel, &url);
channel = get_visible_target(server, channel);
printformat(server, channel, MSGLEVEL_CRAP,
IRCTXT_CHANNEL_URL, channel, url);
g_free(params);
}
static void event_target_unavailable(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
IRC_CHANNEL_REC *chanrec;
char *params, *target;
char *target;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &target);
event_get_params(data, 2, NULL, &target);
if (!server_ischannel(SERVER(server), target)) {
/* nick unavailable */
printformat(server, NULL, MSGLEVEL_CRAP,
@ -415,48 +390,43 @@ static void event_target_unavailable(IRC_SERVER_REC *server, const char *data,
IRCTXT_JOINERROR_UNAVAIL, target);
}
}
g_free(params);
}
static void event_no_such_nick(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *unick;
char *unick;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &unick);
event_get_params(data, 2, NULL, &unick);
if (!g_strcmp0(unick, "*"))
/* more information will be in the description,
* e.g. * :Target left IRC. Failed to deliver: [hi] */
print_event_received(server, data, nick, FALSE);
else
printformat(server, unick, MSGLEVEL_CRAP, IRCTXT_NO_SUCH_NICK, unick);
g_free(params);
}
static void event_no_such_channel(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
printformat(server, channel, MSGLEVEL_CRAP,
IRCTXT_NO_SUCH_CHANNEL, channel);
g_free(params);
}
static void cannot_join(IRC_SERVER_REC *server, const char *data, int format)
{
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
printformat(server, NULL, MSGLEVEL_CRAP, format, channel);
g_free(params);
}
static void event_too_many_channels(IRC_SERVER_REC *server, const char *data)
@ -467,13 +437,13 @@ static void event_too_many_channels(IRC_SERVER_REC *server, const char *data)
static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data,
const char *nick)
{
char *params, *channel, *p;
char *channel, *p;
g_return_if_fail(data != NULL);
/* this new addition to ircd breaks completely with older
"standards", "nick Duplicate ::!!channel ...." */
params = event_get_params(data, 3, NULL, NULL, &channel);
event_get_params(data, 3, NULL, NULL, &channel);
p = strchr(channel, ' ');
if (p != NULL) *p = '\0';
@ -482,8 +452,6 @@ static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data,
IRCTXT_JOINERROR_DUPLICATE, channel+1);
} else
print_event_received(server, data, nick, FALSE);
g_free(params);
}
static void event_channel_is_full(IRC_SERVER_REC *server, const char *data)
@ -520,15 +488,14 @@ static void event_477(IRC_SERVER_REC *server, const char *data,
* status window. Otherwise display it in the channel window.
*/
IRC_CHANNEL_REC *chanrec;
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
chanrec = irc_channel_find(server, channel);
print_event_received(server, data, nick, chanrec == NULL || chanrec->joined);
g_free(params);
}
static void event_target_too_fast(IRC_SERVER_REC *server, const char *data,
@ -539,26 +506,24 @@ static void event_target_too_fast(IRC_SERVER_REC *server, const char *data,
* status window. Otherwise display it in the channel window.
*/
IRC_CHANNEL_REC *chanrec;
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
chanrec = irc_channel_find(server, channel);
print_event_received(server, data, nick, chanrec == NULL || chanrec->joined);
g_free(params);
}
static void event_unknown_mode(IRC_SERVER_REC *server, const char *data)
{
char *params, *mode;
char *mode;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &mode);
event_get_params(data, 2, NULL, &mode);
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_UNKNOWN_MODE, mode);
g_free(params);
}
static void event_numeric(IRC_SERVER_REC *server, const char *data,

View file

@ -45,11 +45,11 @@
static void event_privmsg(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *target, *msg, *recoded;
char *target, *msg, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
if (nick == NULL) nick = server->real_address;
if (addr == NULL) addr = "";
@ -68,7 +68,6 @@ static void event_privmsg(IRC_SERVER_REC *server, const char *data,
get_visible_target(server, target));
}
g_free(params);
g_free(recoded);
}
@ -89,11 +88,11 @@ static void ctcp_action(IRC_SERVER_REC *server, const char *data,
static void event_notice(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *target, *msg, *recoded;
char *target, *msg, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
recoded = recode_in(SERVER(server), msg, target);
if (nick == NULL) {
nick = server->real_address == NULL ?
@ -103,39 +102,36 @@ static void event_notice(IRC_SERVER_REC *server, const char *data,
signal_emit("message irc notice", 5, server, recoded, nick, addr,
get_visible_target(server, target));
g_free(params);
g_free(recoded);
}
static void event_join(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *channel, *tmp;
char *channel, *tmp;
g_return_if_fail(data != NULL);
params = event_get_params(data, 1, &channel);
event_get_params(data, 1, &channel);
tmp = strchr(channel, 7); /* ^G does something weird.. */
if (tmp != NULL) *tmp = '\0';
signal_emit("message join", 4, server,
get_visible_target(server, channel), nick, addr);
g_free(params);
}
static void event_part(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *channel, *reason, *recoded;
char *channel, *reason, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
&channel, &reason);
event_get_params(data, 2 | PARAM_FLAG_GETREST,
&channel, &reason);
recoded = recode_in(SERVER(server), reason, channel);
signal_emit("message part", 5, server,
get_visible_target(server, channel), nick, addr, recoded);
g_free(params);
g_free(recoded);
}
@ -155,28 +151,27 @@ static void event_quit(IRC_SERVER_REC *server, const char *data,
static void event_kick(IRC_SERVER_REC *server, const char *data,
const char *kicker, const char *addr)
{
char *params, *channel, *nick, *reason, *recoded;
char *channel, *nick, *reason, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
&channel, &nick, &reason);
event_get_params(data, 3 | PARAM_FLAG_GETREST,
&channel, &nick, &reason);
recoded = recode_in(SERVER(server), reason, channel);
signal_emit("message kick", 6,
server, get_visible_target(server, channel),
nick, kicker, addr, recoded);
g_free(params);
g_free(recoded);
}
static void event_kill(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *path, *reason;
char *path, *reason;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
event_get_params(data, 2 | PARAM_FLAG_GETREST,
NULL, &path);
reason = strstr(path, " (");
if (reason == NULL || reason[strlen(reason)-1] != ')') {
@ -197,81 +192,73 @@ static void event_kill(IRC_SERVER_REC *server, const char *data,
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_KILL_SERVER,
nick, reason, path);
}
g_free(params);
}
static void event_nick(IRC_SERVER_REC *server, const char *data,
const char *sender, const char *addr)
{
char *params, *newnick;
char *newnick;
g_return_if_fail(data != NULL);
params = event_get_params(data, 1, &newnick);
event_get_params(data, 1, &newnick);
/* NOTE: server->nick was already changed in irc/core/irc-nicklist.c */
signal_emit(g_ascii_strcasecmp(newnick, server->nick) == 0 ?
"message own_nick" : "message nick", 4,
server, newnick, sender, addr);
g_free(params);
}
static void event_mode(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *channel, *mode;
char *channel, *mode;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
&channel, &mode);
event_get_params(data, 2 | PARAM_FLAG_GETREST,
&channel, &mode);
signal_emit("message irc mode", 5,
server, get_visible_target(server, channel),
nick, addr, g_strchomp(mode));
g_free(params);
}
static void event_pong(IRC_SERVER_REC *server, const char *data, const char *nick)
{
char *params, *host, *reply;
char *host, *reply;
g_return_if_fail(data != NULL);
if (nick == NULL) nick = server->real_address;
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &host, &reply);
event_get_params(data, 2 | PARAM_FLAG_GETREST, &host, &reply);
printformat(server, NULL, MSGLEVEL_CRAP, IRCTXT_PONG, host, reply);
g_free(params);
}
static void event_invite(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
signal_emit("message invite", 4,
server, get_visible_target(server, channel), nick, addr);
g_free(params);
}
static void event_topic(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *channel, *topic, *recoded;
char *channel, *topic, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
event_get_params(data, 2 | PARAM_FLAG_GETREST,
&channel, &topic);
recoded = recode_in(SERVER(server), topic, channel);
signal_emit("message topic", 5, server,
get_visible_target(server, channel), recoded, nick, addr);
g_free(params);
g_free(recoded);
}
@ -344,13 +331,12 @@ static void event_connected(IRC_SERVER_REC *server)
static void event_nickfind_whois(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *user, *host, *realname;
char *nick, *user, *host, *realname;
g_return_if_fail(data != NULL);
params = event_get_params(data, 6, NULL, &nick, &user, &host, NULL, &realname);
event_get_params(data, 6, NULL, &nick, &user, &host, NULL, &realname);
printformat(server, NULL, MSGLEVEL_CLIENTNOTICE, IRCTXT_YOUR_NICK_OWNED, nick, user, host, realname);
g_free(params);
}
static void event_ban_type_changed(void *ban_typep)
@ -394,19 +380,18 @@ static void event_ban_type_changed(void *ban_typep)
static void sig_whois_event_not_found(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &nick);
event_get_params(data, 2, NULL, &nick);
printformat(server, nick, MSGLEVEL_CRAP, IRCTXT_WHOIS_NOT_FOUND, nick);
g_free(params);
}
static void sig_whowas_event_end(IRC_SERVER_REC *server, const char *data,
const char *sender, const char *addr)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
@ -415,9 +400,8 @@ static void sig_whowas_event_end(IRC_SERVER_REC *server, const char *data,
return;
}
params = event_get_params(data, 2, NULL, &nick);
event_get_params(data, 2, NULL, &nick);
printformat(server, nick, MSGLEVEL_CRAP, IRCTXT_WHOIS_NOT_FOUND, nick);
g_free(params);
}
static void event_received(IRC_SERVER_REC *server, const char *data,

View file

@ -88,9 +88,9 @@ static void sig_event_forward(SERVER_REC *server, const char *data,
const char *nick)
{
IRC_CHANNEL_REC *channel;
char *params, *from, *to;
char *from, *to;
params = event_get_params(data, 3, NULL, &from, &to);
event_get_params(data, 3, NULL, &from, &to);
if (from != NULL && to != NULL && server_ischannel(server, from) && server_ischannel(server, to)) {
channel = irc_channel_find(server, from);
if (channel != NULL && irc_channel_find(server, to) == NULL) {
@ -98,7 +98,6 @@ static void sig_event_forward(SERVER_REC *server, const char *data,
server->tag, to);
}
}
g_free(params);
}
void fe_irc_channels_init(void)

View file

@ -395,7 +395,7 @@ static void msg_mode(IRC_SERVER_REC *server, const char *channel,
const char *sender, const char *addr, const char *data)
{
NETJOIN_REC *rec;
char *params, *mode, *nicks;
char *mode, *nicks;
char **nicklist, **nick, type, prefix;
int show;
@ -403,8 +403,8 @@ static void msg_mode(IRC_SERVER_REC *server, const char *channel,
if (!server_ischannel(SERVER(server), channel) || addr != NULL)
return;
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
&mode, &nicks);
event_get_params(data, 2 | PARAM_FLAG_GETREST,
&mode, &nicks);
/* parse server mode changes - hide operator status changes and
show them in the netjoin message instead as @ before the nick */
@ -435,7 +435,6 @@ static void msg_mode(IRC_SERVER_REC *server, const char *channel,
if (!show) signal_stop();
g_strfreev(nicklist);
g_free(params);
}
static void read_settings(void)

View file

@ -14,40 +14,38 @@
static void event_whois(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *user, *host, *realname, *recoded;
char *nick, *user, *host, *realname, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 6, NULL, &nick, &user,
&host, NULL, &realname);
event_get_params(data, 6, NULL, &nick, &user,
&host, NULL, &realname);
recoded = recode_in(SERVER(server), realname, nick);
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS, nick, user, host, recoded);
g_free(params);
g_free(recoded);
}
static void event_whois_special(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *str;
char *nick, *str;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3 | PARAM_FLAG_GETREST, NULL, &nick, &str);
event_get_params(data, 3 | PARAM_FLAG_GETREST, NULL, &nick, &str);
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_SPECIAL, nick, str);
g_free(params);
}
static void event_whois_idle(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *secstr, *signonstr, *rest, *timestr;
char *nick, *secstr, *signonstr, *rest, *timestr;
long days, hours, mins, secs;
time_t signon;
g_return_if_fail(data != NULL);
params = event_get_params(data, 5 | PARAM_FLAG_GETREST, NULL,
event_get_params(data, 5 | PARAM_FLAG_GETREST, NULL,
&nick, &secstr, &signonstr, &rest);
secs = atol(secstr);
@ -69,28 +67,26 @@ static void event_whois_idle(IRC_SERVER_REC *server, const char *data)
nick, days, hours, mins, secs, timestr);
g_free(timestr);
}
g_free(params);
}
static void event_whois_server(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *whoserver, *desc;
char *nick, *whoserver, *desc;
g_return_if_fail(data != NULL);
params = event_get_params(data, 4, NULL, &nick, &whoserver, &desc);
event_get_params(data, 4, NULL, &nick, &whoserver, &desc);
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_SERVER, nick, whoserver, desc);
g_free(params);
}
static void event_whois_oper(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *type;
char *nick, *type;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &type);
event_get_params(data, 3, NULL, &nick, &type);
/* Bugfix: http://bugs.irssi.org/?do=details&task_id=99
* Author: Geert Hauwaerts <geert@irssi.org>
@ -107,38 +103,34 @@ static void event_whois_oper(IRC_SERVER_REC *server, const char *data)
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_OPER, nick, type);
g_free(params);
}
static void event_whois_modes(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *modes;
char *nick, *modes;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
NULL, &nick, &modes);
event_get_params(data, 3 | PARAM_FLAG_GETREST, NULL, &nick, &modes);
if (!strncmp(modes, "is using modes ", 15))
modes += 15;
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_MODES, nick, modes);
g_free(params);
}
static void event_whois_realhost(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *txt_real, *txt_hostname, *hostname;
char *nick, *txt_real, *txt_hostname, *hostname;
g_return_if_fail(data != NULL);
/* <yournick> real hostname <nick> <hostname> */
params = event_get_params(data, 5, NULL, &nick, &txt_real,
&txt_hostname, &hostname);
event_get_params(data, 5, NULL, &nick, &txt_real,
&txt_hostname, &hostname);
if (g_strcmp0(txt_real, "real") != 0 ||
g_strcmp0(txt_hostname, "hostname") != 0) {
/* <yournick> <nick> :... from <hostname> */
g_free(params);
params = event_get_params(data, 3, NULL, &nick, &hostname);
event_get_params(data, 3, NULL, &nick, &hostname);
hostname = strstr(hostname, "from ");
if (hostname != NULL) hostname += 5;
@ -152,42 +144,39 @@ static void event_whois_realhost(IRC_SERVER_REC *server, const char *data)
} else {
event_whois_special(server, data);
}
g_free(params);
}
static void event_whois_usermode326(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *usermode;
char *nick, *usermode;
g_return_if_fail(data != NULL);
/* <yournick> <nick> :has oper privs: <mode> */
params = event_get_params(data, 3, NULL, &nick, &usermode);
event_get_params(data, 3, NULL, &nick, &usermode);
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_USERMODE, nick, usermode);
g_free(params);
}
static void event_whois_realhost327(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *hostname, *ip, *text;
char *nick, *hostname, *ip, *text;
g_return_if_fail(data != NULL);
/* <yournick> <hostname> <ip> :Real hostname/IP */
params = event_get_params(data, 5, NULL, &nick, &hostname, &ip, &text);
event_get_params(data, 5, NULL, &nick, &hostname, &ip, &text);
if (*text != '\0') {
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_REALHOST, nick, hostname, ip);
} else {
event_whois_special(server, data);
}
g_free(params);
}
static void event_whois_realhost338(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *arg1, *arg2, *arg3;
char *nick, *arg1, *arg2, *arg3;
g_return_if_fail(data != NULL);
@ -197,7 +186,7 @@ static void event_whois_realhost338(IRC_SERVER_REC *server, const char *data)
* :<server> 338 <yournick> <nick> <ip> :actually using host
* (ratbox)
*/
params = event_get_params(data, 5, NULL, &nick, &arg1, &arg2, &arg3);
event_get_params(data, 5, NULL, &nick, &arg1, &arg2, &arg3);
if (*arg3 != '\0') {
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_REALHOST, nick, arg1, arg2);
@ -207,16 +196,15 @@ static void event_whois_realhost338(IRC_SERVER_REC *server, const char *data)
} else {
event_whois_special(server, data);
}
g_free(params);
}
static void event_whois_usermode(IRC_SERVER_REC *server, const char *data)
{
char *params, *txt_usermodes, *nick, *usermode;
char *txt_usermodes, *nick, *usermode;
g_return_if_fail(data != NULL);
params = event_get_params(data, 4, NULL, &txt_usermodes,
event_get_params(data, 4, NULL, &txt_usermodes,
&nick, &usermode);
if (g_strcmp0(txt_usermodes, "usermodes") == 0) {
@ -226,7 +214,6 @@ static void event_whois_usermode(IRC_SERVER_REC *server, const char *data)
} else {
event_whois_special(server, data);
}
g_free(params);
}
static void hide_safe_channel_id(IRC_SERVER_REC *server, char *chans)
@ -278,11 +265,11 @@ static void hide_safe_channel_id(IRC_SERVER_REC *server, char *chans)
static void event_whois_channels(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *chans, *recoded;
char *nick, *chans, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &chans);
event_get_params(data, 3, NULL, &nick, &chans);
/* sure - we COULD print the channel names as-is, but since the
colors, bolds, etc. are mostly just to fool people, I think we
@ -296,77 +283,71 @@ static void event_whois_channels(IRC_SERVER_REC *server, const char *data)
IRCTXT_WHOIS_CHANNELS, nick, recoded);
g_free(chans);
g_free(params);
g_free(recoded);
}
static void event_whois_away(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *awaymsg, *recoded;
char *nick, *awaymsg, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
event_get_params(data, 3, NULL, &nick, &awaymsg);
recoded = recode_in(SERVER(server), awaymsg, nick);
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_AWAY, nick, recoded);
g_free(params);
g_free(recoded);
}
static void event_end_of_whois(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &nick);
event_get_params(data, 2, NULL, &nick);
if (server->whois_found) {
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_END_OF_WHOIS, nick);
}
g_free(params);
}
static void event_whois_auth(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *text;
char *nick, *text;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &text);
event_get_params(data, 3, NULL, &nick, &text);
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOIS_EXTRA, nick, text);
g_free(params);
}
static void event_whowas(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *user, *host, *realname, *recoded;
char *nick, *user, *host, *realname, *recoded;
g_return_if_fail(data != NULL);
params = event_get_params(data, 6, NULL, &nick, &user,
&host, NULL, &realname);
event_get_params(data, 6, NULL, &nick, &user,
&host, NULL, &realname);
recoded = recode_in(SERVER(server), realname, nick);
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_WHOWAS, nick, user, host, recoded);
g_free(params);
g_free(recoded);
}
static void event_end_of_whowas(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &nick);
event_get_params(data, 2, NULL, &nick);
if (server->whowas_found) {
printformat(server, nick, MSGLEVEL_CRAP,
IRCTXT_END_OF_WHOWAS, nick);
}
g_free(params);
}
struct whois_event_table {

View file

@ -53,26 +53,24 @@ static void check_join_failure(IRC_SERVER_REC *server, const char *channel)
static void irc_server_event(IRC_SERVER_REC *server, const char *line)
{
char *params, *numeric, *channel;
char *numeric, *channel;
/* We'll be checking "4xx <your nick> <channel>" for channels
which we haven't joined yet. 4xx are error codes and should
indicate that the join failed. */
params = event_get_params(line, 3, &numeric, NULL, &channel);
event_get_params(line, 3, &numeric, NULL, &channel);
if (numeric[0] == '4')
check_join_failure(server, channel);
g_free(params);
}
static void event_no_such_channel(IRC_SERVER_REC *server, const char *data)
{
CHANNEL_REC *chanrec;
CHANNEL_SETUP_REC *setup;
char *params, *channel;
char *channel;
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
chanrec = *channel == '!' && channel[1] != '\0' ?
channel_find(SERVER(server), channel) : NULL;
@ -83,25 +81,23 @@ static void event_no_such_channel(IRC_SERVER_REC *server, const char *data)
if (setup != NULL && setup->autojoin) {
/* it's autojoin channel though, so create it */
irc_send_cmdv(server, "JOIN !%s", chanrec->name);
g_free(params);
return;
}
}
check_join_failure(server, channel);
g_free(params);
}
static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data)
{
CHANNEL_REC *chanrec;
char *params, *channel, *p;
char *channel, *p;
g_return_if_fail(data != NULL);
/* this new addition to ircd breaks completely with older
"standards", "nick Duplicate ::!!channel ...." */
params = event_get_params(data, 3, NULL, NULL, &channel);
event_get_params(data, 3, NULL, NULL, &channel);
p = strchr(channel, ' ');
if (p != NULL) *p = '\0';
@ -113,8 +109,6 @@ static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data)
channel_destroy(chanrec);
}
}
g_free(params);
}
static void channel_change_topic(IRC_SERVER_REC *server, const char *channel,
@ -145,43 +139,39 @@ static void channel_change_topic(IRC_SERVER_REC *server, const char *channel,
static void event_topic_get(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel, *topic;
char *channel, *topic;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &channel, &topic);
event_get_params(data, 3, NULL, &channel, &topic);
channel_change_topic(server, channel, topic, NULL, 0);
g_free(params);
}
static void event_topic(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *channel, *topic, *mask;
char *channel, *topic, *mask;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, &channel, &topic);
event_get_params(data, 2, &channel, &topic);
mask = addr == NULL ? g_strdup(nick) :
g_strconcat(nick, "!", addr, NULL);
channel_change_topic(server, channel, topic, mask, time(NULL));
g_free(mask);
g_free(params);
}
static void event_topic_info(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel, *topicby, *topictime;
char *channel, *topicby, *topictime;
time_t t;
g_return_if_fail(data != NULL);
params = event_get_params(data, 4, NULL, &channel,
&topicby, &topictime);
event_get_params(data, 4, NULL, &channel, &topicby, &topictime);
t = (time_t) atol(topictime);
channel_change_topic(server, channel, NULL, topicby, t);
g_free(params);
}
/* Find any unjoined channel that matches `channel'. Long channel names are
@ -209,7 +199,7 @@ static IRC_CHANNEL_REC *channel_find_unjoined(IRC_SERVER_REC *server,
static void event_join(IRC_SERVER_REC *server, const char *data, const char *nick, const char *address)
{
char *params, *channel, *tmp, *shortchan;
char *channel, *tmp, *shortchan;
IRC_CHANNEL_REC *chanrec;
g_return_if_fail(data != NULL);
@ -222,7 +212,7 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic
if (server->userhost == NULL)
server->userhost = g_strdup(address);
params = event_get_params(data, 1, &channel);
event_get_params(data, 1, &channel);
tmp = strchr(channel, 7); /* ^G does something weird.. */
if (tmp != NULL) *tmp = '\0';
@ -276,12 +266,11 @@ static void event_join(IRC_SERVER_REC *server, const char *data, const char *nic
}
g_free(shortchan);
g_free(params);
}
static void event_part(IRC_SERVER_REC *server, const char *data, const char *nick)
{
char *params, *channel, *reason;
char *channel, *reason;
CHANNEL_REC *chanrec;
g_return_if_fail(data != NULL);
@ -291,29 +280,25 @@ static void event_part(IRC_SERVER_REC *server, const char *data, const char *nic
return;
}
params = event_get_params(data, 2, &channel, &reason);
event_get_params(data, 2, &channel, &reason);
chanrec = channel_find(SERVER(server), channel);
if (chanrec != NULL && chanrec->joined) {
chanrec->left = TRUE;
channel_destroy(chanrec);
}
g_free(params);
}
static void event_kick(IRC_SERVER_REC *server, const char *data)
{
CHANNEL_REC *chanrec;
char *params, *channel, *nick, *reason;
char *channel, *nick, *reason;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, &channel, &nick, &reason);
event_get_params(data, 3, &channel, &nick, &reason);
if (g_ascii_strcasecmp(nick, server->nick) != 0) {
/* someone else was kicked, no need to do anything */
g_free(params);
return;
}
@ -323,17 +308,15 @@ static void event_kick(IRC_SERVER_REC *server, const char *data)
chanrec->kicked = TRUE;
channel_destroy(chanrec);
}
g_free(params);
}
static void event_invite(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel, *shortchan;
char *channel, *shortchan;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
if (irc_channel_find(server, channel) == NULL) {
/* check if we're supposed to autojoin this channel */
@ -353,7 +336,6 @@ static void event_invite(IRC_SERVER_REC *server, const char *data)
g_free_not_null(server->last_invite);
server->last_invite = g_strdup(channel);
g_free(params);
}
void channel_events_init(void)

View file

@ -114,11 +114,11 @@ static int channel_rejoin(IRC_SERVER_REC *server, const char *channel)
static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data)
{
CHANNEL_REC *chanrec;
char *params, *channel, *p;
char *channel, *p;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, NULL, &channel);
event_get_params(data, 3, NULL, NULL, &channel);
p = strchr(channel, ' ');
if (p != NULL) *p = '\0';
@ -137,18 +137,16 @@ static void event_duplicate_channel(IRC_SERVER_REC *server, const char *data)
}
}
}
g_free(params);
}
static void event_target_unavailable(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel;
char *channel;
IRC_CHANNEL_REC *chanrec;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
if (server_ischannel(SERVER(server), channel)) {
chanrec = irc_channel_find(server, channel);
if (chanrec != NULL && chanrec->joined) {
@ -162,8 +160,6 @@ static void event_target_unavailable(IRC_SERVER_REC *server, const char *data)
}
}
}
g_free(params);
}
/* join ok/failed - remove from rejoins list. this happens always after join

View file

@ -398,11 +398,11 @@ static void event_channel_mode(IRC_SERVER_REC *server, const char *data,
const char *nick)
{
IRC_CHANNEL_REC *chanrec;
char *params, *channel, *mode;
char *channel, *mode;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
event_get_params(data, 3 | PARAM_FLAG_GETREST,
NULL, &channel, &mode);
chanrec = irc_channel_find(server, channel);
if (chanrec != NULL) {
@ -414,20 +414,18 @@ static void event_channel_mode(IRC_SERVER_REC *server, const char *data,
parse_channel_modes(chanrec, nick, mode, FALSE);
channel_got_query(chanrec, CHANNEL_QUERY_MODE);
}
g_free(params);
}
static void event_end_of_who(IRC_SERVER_REC *server, const char *data)
{
SERVER_QUERY_REC *rec;
GSList *tmp, *next;
char *params, *channel, **channels;
char *channel, **channels;
int failed, multiple;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
multiple = strchr(channel, ',') != NULL;
channels = g_strsplit(channel, ",", -1);
@ -462,24 +460,20 @@ static void event_end_of_who(IRC_SERVER_REC *server, const char *data)
send them again separately */
query_current_error(server);
}
g_free(params);
}
static void event_end_of_banlist(IRC_SERVER_REC *server, const char *data)
{
IRC_CHANNEL_REC *chanrec;
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
chanrec = irc_channel_find(server, channel);
if (chanrec != NULL)
channel_got_query(chanrec, CHANNEL_QUERY_BMODE);
g_free(params);
}
void channels_query_init(void)

View file

@ -269,12 +269,12 @@ static void ctcp_reply(IRC_SERVER_REC *server, const char *data,
static void event_privmsg(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *target, *msg;
char *target, *msg;
int len;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, &target, &msg);
event_get_params(data, 2, &target, &msg);
/* handle only ctcp messages.. */
if (*msg == 1) {
@ -287,18 +287,16 @@ static void event_privmsg(IRC_SERVER_REC *server, const char *data,
signal_emit("ctcp msg", 5, server, msg, nick, addr, target);
signal_stop();
}
g_free(params);
}
static void event_notice(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *target, *ptr, *msg;
char *target, *ptr, *msg;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, &target, &msg);
event_get_params(data, 2, &target, &msg);
/* handle only ctcp replies */
if (*msg == 1) {
@ -308,8 +306,6 @@ static void event_notice(IRC_SERVER_REC *server, const char *data,
signal_emit("ctcp reply", 5, server, msg, nick, addr, target);
signal_stop();
}
g_free(params);
}
static void sig_disconnected(IRC_SERVER_REC *server)

View file

@ -83,12 +83,13 @@ static void event_cap (IRC_SERVER_REC *server, char *args, char *nick, char *add
{
GSList *tmp;
GString *cmd;
char *params, *evt, *list, **caps;
char *evt, *list, **caps;
int i, caps_length, disable, avail_caps;
params = event_get_params(args, 3, NULL, &evt, &list);
if (params == NULL)
return;
if(args == NULL)
return;
event_get_params(args, 3, NULL, &evt, &list);
/* Strip the trailing whitespaces before splitting the string, some servers send responses with
* superfluous whitespaces that g_strsplit the interprets as tokens */
@ -166,7 +167,6 @@ static void event_cap (IRC_SERVER_REC *server, char *args, char *nick, char *add
}
g_strfreev(caps);
g_free(params);
}
static void event_invalid_cap (IRC_SERVER_REC *server, const char *data, const char *from)

View file

@ -452,11 +452,11 @@ static void event_whois(IRC_SERVER_REC *server, const char *data,
static void sig_whois_try_whowas(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &nick);
event_get_params(data, 2, NULL, &nick);
server->whowas_found = FALSE;
server_redirect_event(server, "whowas", 1, nick, -1, NULL,
@ -464,8 +464,6 @@ static void sig_whois_try_whowas(IRC_SERVER_REC *server, const char *data)
"event 369", "whowas event end",
"event 406", "event empty", NULL);
irc_send_cmdv(server, "WHOWAS %s 1", nick);
g_free(params);
}
static void event_end_of_whois(IRC_SERVER_REC *server, const char *data,

View file

@ -103,19 +103,18 @@ static void event_names_list(IRC_SERVER_REC *server, const char *data)
{
IRC_CHANNEL_REC *chanrec;
NICK_REC *rec;
char *params, *type, *channel, *names, *ptr, *host;
char *type, *channel, *names, *ptr, *host;
int op, halfop, voice;
char prefixes[MAX_USER_PREFIXES+1];
const char *nick_flags, *nick_flag_cur, *nick_flag_op;
g_return_if_fail(data != NULL);
params = event_get_params(data, 4, NULL, &type, &channel, &names);
event_get_params(data, 4, NULL, &type, &channel, &names);
chanrec = irc_channel_find(server, channel);
if (chanrec == NULL || chanrec->names_got) {
/* unknown channel / names list already read */
g_free(params);
return;
}
nick_flags = server->get_nick_flags(SERVER(server));
@ -185,20 +184,18 @@ static void event_names_list(IRC_SERVER_REC *server, const char *data)
nicklist_set_host(CHANNEL(chanrec), rec, host);
}
}
g_free(params);
}
static void event_end_of_names(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel;
char *channel;
IRC_CHANNEL_REC *chanrec;
NICK_REC *ownnick;
int nicks;
g_return_if_fail(server != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
chanrec = irc_channel_find(server, channel);
if (chanrec != NULL && !chanrec->names_got) {
@ -216,20 +213,18 @@ static void event_end_of_names(IRC_SERVER_REC *server, const char *data)
chanrec->names_got = TRUE;
signal_emit("channel joined", 1, chanrec);
}
g_free(params);
}
static void event_who(SERVER_REC *server, const char *data)
{
char *params, *nick, *channel, *user, *host, *stat, *realname, *hops;
char *nick, *channel, *user, *host, *stat, *realname, *hops;
CHANNEL_REC *chanrec;
NICK_REC *nickrec;
g_return_if_fail(data != NULL);
params = event_get_params(data, 8, NULL, &channel, &user, &host,
NULL, &nick, &stat, &realname);
event_get_params(data, 8, NULL, &channel, &user, &host,
NULL, &nick, &stat, &realname);
/* get hop count */
hops = realname;
@ -255,13 +250,11 @@ static void event_who(SERVER_REC *server, const char *data)
nicklist_update_flags(server, nick,
strchr(stat, 'G') != NULL, /* gone */
strchr(stat, '*') != NULL); /* ircop */
g_free(params);
}
static void event_whois(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *realname;
char *nick, *realname;
GSList *nicks, *tmp;
NICK_REC *rec;
@ -269,8 +262,8 @@ static void event_whois(IRC_SERVER_REC *server, const char *data)
/* first remove the gone-flag, if user is gone
it will be set later.. */
params = event_get_params(data, 6, NULL, &nick, NULL,
NULL, NULL, &realname);
event_get_params(data, 6, NULL, &nick, NULL,
NULL, NULL, &realname);
nicks = nicklist_get_same(SERVER(server), nick);
for (tmp = nicks; tmp != NULL; tmp = tmp->next->next) {
@ -284,55 +277,50 @@ static void event_whois(IRC_SERVER_REC *server, const char *data)
/* reset gone and ircop status, we'll handle them in the following
WHOIS replies */
nicklist_update_flags(SERVER(server), nick, FALSE, FALSE);
g_free(params);
}
static void event_whois_away(SERVER_REC *server, const char *data)
{
char *params, *nick, *awaymsg;
char *nick, *awaymsg;
g_return_if_fail(data != NULL);
/* set user's gone flag.. */
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
event_get_params(data, 3, NULL, &nick, &awaymsg);
nicklist_update_flags(server, nick, TRUE, -1);
g_free(params);
}
static void event_own_away(SERVER_REC *server, const char *data)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
/* set user's gone flag.. */
params = event_get_params(data, 2, &nick, NULL);
event_get_params(data, 2, &nick, NULL);
nicklist_update_flags(server, nick, TRUE, -1);
g_free(params);
}
static void event_own_unaway(SERVER_REC *server, const char *data)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
/* set user's gone flag.. */
params = event_get_params(data, 2, &nick, NULL);
event_get_params(data, 2, &nick, NULL);
nicklist_update_flags(server, nick, FALSE, -1);
g_free(params);
}
static void event_whois_ircop(SERVER_REC *server, const char *data)
{
char *params, *nick, *awaymsg;
char *nick, *awaymsg;
g_return_if_fail(data != NULL);
/* set user's gone flag.. */
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
event_get_params(data, 3, NULL, &nick, &awaymsg);
nicklist_update_flags(server, nick, -1, TRUE);
g_free(params);
}
static void event_nick_invalid(IRC_SERVER_REC *server, const char *data)
@ -389,28 +377,26 @@ static void event_nick_in_use(IRC_SERVER_REC *server, const char *data)
static void event_target_unavailable(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel;
char *channel;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &channel);
event_get_params(data, 2, NULL, &channel);
if (!server_ischannel(SERVER(server), channel)) {
/* nick is unavailable. */
event_nick_in_use(server, data);
}
g_free(params);
}
static void event_nick(IRC_SERVER_REC *server, const char *data,
const char *orignick)
{
char *params, *nick;
char *nick;
g_return_if_fail(data != NULL);
g_return_if_fail(orignick != NULL);
params = event_get_params(data, 1, &nick);
event_get_params(data, 1, &nick);
if (g_ascii_strcasecmp(orignick, server->nick) == 0) {
/* You changed your nick */
@ -425,18 +411,17 @@ static void event_nick(IRC_SERVER_REC *server, const char *data,
}
nicklist_rename(SERVER(server), orignick, nick);
g_free(params);
}
static void event_userhost(SERVER_REC *server, const char *data)
{
char *params, *hosts, **phosts, **pos, *ptr;
char *hosts, **phosts, **pos, *ptr;
int oper;
g_return_if_fail(data != NULL);
/* set user's gone flag.. */
params = event_get_params(data, 2, NULL, &hosts);
event_get_params(data, 2, NULL, &hosts);
phosts = g_strsplit(hosts, " ", -1);
for (pos = phosts; *pos != NULL; pos++) {
@ -452,7 +437,6 @@ static void event_userhost(SERVER_REC *server, const char *data)
nicklist_update_flags(server, *pos, *ptr == '-', oper);
}
g_strfreev(phosts);
g_free(params);
}
static void sig_usermode(SERVER_REC *server)

View file

@ -82,15 +82,14 @@ static void check_query_changes(IRC_SERVER_REC *server, const char *nick,
static void event_privmsg(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *address)
{
char *params, *target, *msg;
char *target, *msg;
g_return_if_fail(data != NULL);
if (nick == NULL)
return;
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
check_query_changes(server, nick, address, target);
g_free(params);
}
static void ctcp_action(IRC_SERVER_REC *server, const char *msg,
@ -104,14 +103,13 @@ static void event_nick(SERVER_REC *server, const char *data,
const char *orignick)
{
QUERY_REC *query;
char *params, *nick;
char *nick;
query = query_find(server, orignick);
if (query != NULL) {
params = event_get_params(data, 1, &nick);
event_get_params(data, 1, &nick);
if (g_strcmp0(query->name, nick) != 0)
query_change_nick(query, nick);
g_free(params);
}
}

View file

@ -652,12 +652,12 @@ char *irc_server_get_channels(IRC_SERVER_REC *server)
static void event_connected(IRC_SERVER_REC *server, const char *data, const char *from)
{
char *params, *nick;
char *nick;
GTimeVal now;
g_return_if_fail(server != NULL);
params = event_get_params(data, 1, &nick);
event_get_params(data, 1, &nick);
if (g_strcmp0(server->nick, nick) != 0) {
/* nick changed unexpectedly .. connected via proxy, etc. */
@ -692,16 +692,15 @@ static void event_connected(IRC_SERVER_REC *server, const char *data, const char
}
signal_emit("event connected", 1, server);
g_free(params);
}
static void event_server_info(IRC_SERVER_REC *server, const char *data)
{
char *params, *ircd_version, *usermodes, *chanmodes;
char *ircd_version, *usermodes, *chanmodes;
g_return_if_fail(server != NULL);
params = event_get_params(data, 5, NULL, NULL, &ircd_version, &usermodes, &chanmodes);
event_get_params(data, 5, NULL, NULL, &ircd_version, &usermodes, &chanmodes);
/* check if server understands I and e channel modes */
if (strchr(chanmodes, 'I') && strchr(chanmodes, 'e'))
@ -710,8 +709,6 @@ static void event_server_info(IRC_SERVER_REC *server, const char *data)
/* save server version */
g_free_not_null(server->version);
server->version = g_strdup(ircd_version);
g_free(params);
}
static void parse_chanmodes(IRC_SERVER_REC *server, const char *sptr)
@ -841,22 +838,22 @@ static void event_end_of_motd(IRC_SERVER_REC *server, const char *data)
static void event_channels_formed(IRC_SERVER_REC *server, const char *data)
{
char *params, *channels;
char *channels;
g_return_if_fail(server != NULL);
params = event_get_params(data, 2, NULL, &channels);
event_get_params(data, 2, NULL, &channels);
server->channels_formed = atoi(channels);
g_free(params);
}
static void event_hosthidden(IRC_SERVER_REC *server, const char *data)
{
char *params, *newhost, *p, *newuserhost;
char *newhost, *p, *newuserhost;
g_return_if_fail(server != NULL);
params = event_get_params(data, 2, NULL, &newhost);
event_get_params(data, 2, NULL, &newhost);
/* do a sanity check */
if (!strchr(newhost, '*') && !strchr(newhost, '?') &&
!strchr(newhost, '!') && !strchr(newhost, '#') &&
@ -880,7 +877,6 @@ static void event_hosthidden(IRC_SERVER_REC *server, const char *data)
server->userhost = newuserhost;
}
}
g_free(params);
}
static void event_server_banned(IRC_SERVER_REC *server, const char *data)
@ -903,14 +899,13 @@ static void event_error(IRC_SERVER_REC *server, const char *data)
static void event_ping(IRC_SERVER_REC *server, const char *data)
{
char *params, *origin, *target, *str;
char *origin, *target, *str;
params = event_get_params(data, 2, &origin, &target);
event_get_params(data, 2, &origin, &target);
str = *target == '\0' ? g_strconcat("PONG :", origin, NULL) :
g_strdup_printf("PONG %s :%s", target, origin);
irc_send_cmd_now(server, str);
g_free(str);
g_free(params);
}
static void event_empty(void)

View file

@ -182,7 +182,7 @@ static char *split_nicks(const char *cmd, char **pre, char **nicks, char **post,
void irc_send_cmd_split(IRC_SERVER_REC *server, const char *cmd,
int nickarg, int max_nicks)
{
char *str, *pre, *post, *nicks;
char *pre, *post, *nicks;
char **nicklist, **tmp;
GString *nickstr;
int count;
@ -190,10 +190,9 @@ void irc_send_cmd_split(IRC_SERVER_REC *server, const char *cmd,
g_return_if_fail(server != NULL);
g_return_if_fail(cmd != NULL);
str = split_nicks(cmd, &pre, &nicks, &post, nickarg);
split_nicks(cmd, &pre, &nicks, &post, nickarg);
if (nicks == NULL) {
/* no nicks given? */
g_free(str);
return;
}
@ -221,8 +220,6 @@ void irc_send_cmd_split(IRC_SERVER_REC *server, const char *cmd,
}
g_strfreev(nicklist);
g_string_free(nickstr, TRUE);
g_free(str);
}
/* Get next parameter */
@ -248,16 +245,14 @@ char *event_get_param(char **data)
}
/* Get count parameters from data */
char *event_get_params(const char *data, int count, ...)
void event_get_params(const char *data, int count, ...)
{
char **str, *tmp, *duprec, *datad;
char **str, *tmp, *datad;
gboolean rest;
va_list args;
g_return_val_if_fail(data != NULL, NULL);
va_start(args, count);
duprec = datad = g_strdup(data);
datad = g_strdup(data);
rest = count & PARAM_FLAG_GETREST;
count = PARAM_WITHOUT_FLAGS(count);
@ -273,8 +268,6 @@ char *event_get_params(const char *data, int count, ...)
if (str != NULL) *str = tmp;
}
va_end(args);
return duprec;
}
static void irc_server_event(IRC_SERVER_REC *server, const char *line,

View file

@ -51,7 +51,7 @@ void irc_send_cmd_full(IRC_SERVER_REC *server, const char *cmd,
/* Get count parameters from data */
#include "commands.h"
char *event_get_param(char **data);
char *event_get_params(const char *data, int count, ...);
void event_get_params(const char *data, int count, ...);
void irc_irc_init(void);
void irc_irc_deinit(void);

View file

@ -66,11 +66,11 @@ static void lag_event_pong(IRC_SERVER_REC *server, const char *data,
static void sig_unknown_command(IRC_SERVER_REC *server, const char *data)
{
char *params, *cmd;
char *cmd;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &cmd);
event_get_params(data, 2, NULL, &cmd);
if (g_ascii_strcasecmp(cmd, "PING") == 0) {
/* some servers have disabled PING command, don't bother
trying alternative methods to detect lag with these
@ -79,7 +79,6 @@ static void sig_unknown_command(IRC_SERVER_REC *server, const char *data)
server->lag_sent.tv_sec = 0;
server->lag = 0;
}
g_free(params);
}
static int sig_check_lag(void)

View file

@ -35,7 +35,7 @@ static int massjoin_max_joins;
static void event_join(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *address)
{
char *params, *channel, *ptr;
char *channel, *ptr;
IRC_CHANNEL_REC *chanrec;
NICK_REC *nickrec;
GSList *nicks, *tmp;
@ -47,13 +47,12 @@ static void event_join(IRC_SERVER_REC *server, const char *data,
return;
}
params = event_get_params(data, 1, &channel);
event_get_params(data, 1, &channel);
ptr = strchr(channel, 7); /* ^G does something weird.. */
if (ptr != NULL) *ptr = '\0';
/* find channel */
chanrec = irc_channel_find(server, channel);
g_free(params);
if (chanrec == NULL) return;
/* check that the nick isn't already in nicklist. seems to happen
@ -98,7 +97,7 @@ static void event_join(IRC_SERVER_REC *server, const char *data,
static void event_part(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *channel, *reason;
char *channel, *reason;
IRC_CHANNEL_REC *chanrec;
NICK_REC *nickrec;
@ -109,12 +108,11 @@ static void event_part(IRC_SERVER_REC *server, const char *data,
return;
}
params = event_get_params(data, 2, &channel, &reason);
event_get_params(data, 2, &channel, &reason);
/* find channel */
chanrec = irc_channel_find(server, channel);
if (chanrec == NULL) {
g_free(params);
return;
}
@ -128,7 +126,6 @@ static void event_part(IRC_SERVER_REC *server, const char *data,
}
nicklist_remove(CHANNEL(chanrec), nickrec);
}
g_free(params);
}
static void event_quit(IRC_SERVER_REC *server, const char *data,
@ -163,17 +160,16 @@ static void event_quit(IRC_SERVER_REC *server, const char *data,
static void event_kick(IRC_SERVER_REC *server, const char *data)
{
char *params, *channel, *nick, *reason;
char *channel, *nick, *reason;
IRC_CHANNEL_REC *chanrec;
NICK_REC *nickrec;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, &channel, &nick, &reason);
event_get_params(data, 3, &channel, &nick, &reason);
if (g_ascii_strcasecmp(nick, server->nick) == 0) {
/* you were kicked, no need to do anything */
g_free(params);
return;
}
@ -190,8 +186,6 @@ static void event_kick(IRC_SERVER_REC *server, const char *data)
}
nicklist_remove(CHANNEL(chanrec), nickrec);
}
g_free(params);
}
static void massjoin_send_hash(gpointer key, NICK_REC *nick, GSList **list)

View file

@ -113,18 +113,17 @@ static void channel_destroyed(IRC_CHANNEL_REC *channel)
static void event_banlist(IRC_SERVER_REC *server, const char *data)
{
IRC_CHANNEL_REC *chanrec;
char *params, *channel, *ban, *setby, *tims;
char *channel, *ban, *setby, *tims;
time_t tim;
g_return_if_fail(data != NULL);
params = event_get_params(data, 5, NULL, &channel, &ban, &setby, &tims);
event_get_params(data, 5, NULL, &channel, &ban, &setby, &tims);
chanrec = irc_channel_find(server, channel);
if (chanrec != NULL) {
tim = (time_t) atol(tims);
banlist_add(chanrec, ban, setby, tim);
}
g_free(params);
}
void mode_lists_init(void)

View file

@ -340,7 +340,7 @@ void parse_channel_modes(IRC_CHANNEL_REC *channel, const char *setby,
{
IRC_SERVER_REC *server = channel->server;
GString *newmode;
char *dup, *modestr, *arg, *curmode, type, *old_key;
char *modestr, *arg, *curmode, type, *old_key;
int umode;
g_return_if_fail(IS_IRC_CHANNEL(channel));
@ -350,7 +350,7 @@ void parse_channel_modes(IRC_CHANNEL_REC *channel, const char *setby,
newmode = g_string_new(channel->mode);
old_key = update_key ? NULL : g_strdup(channel->key);
dup = modestr = g_strdup(mode);
modestr = g_strdup(mode);
curmode = cmd_get_param(&modestr);
while (*curmode != '\0') {
if (HAS_MODE_ARG(server, type, *curmode)) {
@ -381,7 +381,6 @@ void parse_channel_modes(IRC_CHANNEL_REC *channel, const char *setby,
curmode++;
}
g_free(dup);
if (channel->key != NULL &&
strchr(channel->mode, 'k') == NULL &&
@ -416,14 +415,14 @@ char *modes_join(IRC_SERVER_REC *server, const char *old,
const char *mode, int channel)
{
GString *newmode;
char *dup, *modestr, *curmode, type;
char *modestr, *curmode, type;
g_return_val_if_fail(mode != NULL, NULL);
type = '+';
newmode = g_string_new(old);
dup = modestr = g_strdup(mode);
modestr = g_strdup(mode);
curmode = cmd_get_param(&modestr);
while (*curmode != '\0' && *curmode != ' ') {
if (*curmode == '+' || *curmode == '-') {
@ -441,7 +440,6 @@ char *modes_join(IRC_SERVER_REC *server, const char *old,
curmode++;
}
g_free(dup);
modestr = newmode->str;
g_string_free(newmode, FALSE);
@ -467,25 +465,23 @@ static void parse_user_mode(IRC_SERVER_REC *server, const char *modestr)
static void event_user_mode(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *mode;
char *nick, *mode;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &mode);
event_get_params(data, 3, NULL, &nick, &mode);
parse_user_mode(server, mode);
g_free(params);
}
static void event_mode(IRC_SERVER_REC *server, const char *data,
const char *nick)
{
IRC_CHANNEL_REC *chanrec;
char *params, *channel, *mode;
char *channel, *mode;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
event_get_params(data, 2 | PARAM_FLAG_GETREST,
&channel, &mode);
if (!server_ischannel(SERVER(server), channel)) {
@ -497,8 +493,6 @@ static void event_mode(IRC_SERVER_REC *server, const char *data,
if (chanrec != NULL)
parse_channel_modes(chanrec, nick, mode, TRUE);
}
g_free(params);
}
static void event_oper(IRC_SERVER_REC *server, const char *data)
@ -530,11 +524,11 @@ static void event_unaway(IRC_SERVER_REC *server, const char *data)
static void sig_req_usermode_change(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *target, *mode;
char *target, *mode;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
event_get_params(data, 2 | PARAM_FLAG_GETREST,
&target, &mode);
if (!server_ischannel(SERVER(server), target)) {
/* we requested a user mode change, save this */
@ -543,8 +537,6 @@ static void sig_req_usermode_change(IRC_SERVER_REC *server, const char *data,
server->wanted_usermode = mode;
}
g_free(params);
signal_emit("event mode", 4, server, data, nick, addr);
}
@ -596,7 +588,7 @@ void channel_set_mode(IRC_SERVER_REC *server, const char *channel,
{
IRC_CHANNEL_REC *chanrec;
GString *tmode, *targs;
char *modestr, *curmode, *orig, type, prevtype;
char *modestr, *curmode, type, prevtype;
int count;
g_return_if_fail(IS_IRC_SERVER(server));
@ -610,7 +602,7 @@ void channel_set_mode(IRC_SERVER_REC *server, const char *channel,
if (chanrec != NULL)
channel = chanrec->name;
orig = modestr = g_strdup(mode);
modestr = g_strdup(mode);
type = '+'; prevtype = '\0';
curmode = cmd_get_param(&modestr);
@ -670,7 +662,6 @@ void channel_set_mode(IRC_SERVER_REC *server, const char *channel,
g_string_free(tmode, TRUE);
g_string_free(targs, TRUE);
g_free(orig);
}
static int get_wildcard_nicks(GString *output, const char *mask,

View file

@ -359,9 +359,9 @@ static void event_quit(IRC_SERVER_REC *server, const char *data,
static void event_nick(IRC_SERVER_REC *server, const char *data)
{
NETSPLIT_REC *rec;
char *params, *nick;
char *nick;
params = event_get_params(data, 1, &nick);
event_get_params(data, 1, &nick);
/* remove nick from split list when somebody changed
nick to this one during split */
@ -370,8 +370,6 @@ static void event_nick(IRC_SERVER_REC *server, const char *data)
g_hash_table_remove(server->splits, rec->nick);
netsplit_destroy(server, rec);
}
g_free(params);
}
static void sig_disconnected(IRC_SERVER_REC *server)

View file

@ -771,16 +771,15 @@ static void event_nick(IRC_SERVER_REC *server, const char *data,
{
QUERY_REC *query;
CHAT_DCC_REC *dcc;
char *params, *nick, *tag;
char *nick, *tag;
g_return_if_fail(data != NULL);
g_return_if_fail(orignick != NULL);
params = event_get_params(data, 1, &nick);
event_get_params(data, 1, &nick);
if (g_ascii_strcasecmp(nick, orignick) == 0) {
/* shouldn't happen, but just to be sure irssi doesn't
get into infinite loop */
g_free(params);
return;
}
@ -803,8 +802,6 @@ static void event_nick(IRC_SERVER_REC *server, const char *data,
g_free(tag);
}
}
g_free(params);
}
void dcc_chat_init(void)

View file

@ -466,12 +466,12 @@ static int dcc_timeout_func(void)
static void event_no_such_nick(IRC_SERVER_REC *server, char *data)
{
char *params, *nick;
char *nick;
GSList *tmp, *next;
g_return_if_fail(data != NULL);
params = event_get_params(data, 2, NULL, &nick);
event_get_params(data, 2, NULL, &nick);
/* check if we've send any dcc requests to this nick.. */
for (tmp = dcc_conns; tmp != NULL; tmp = next) {
@ -482,8 +482,6 @@ static void event_no_such_nick(IRC_SERVER_REC *server, char *data)
dcc->nick != NULL && g_ascii_strcasecmp(dcc->nick, nick) == 0)
dcc_close(dcc);
}
g_free(params);
}
/* SYNTAX: DCC CLOSE <type> <nick> [<file>] */

View file

@ -239,7 +239,7 @@ static void flood_newmsg(IRC_SERVER_REC *server, int level, const char *nick,
static void flood_privmsg(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *target, *text;
char *target, *text;
int level;
g_return_if_fail(data != NULL);
@ -248,19 +248,17 @@ static void flood_privmsg(IRC_SERVER_REC *server, const char *data,
if (addr == NULL || g_ascii_strcasecmp(nick, server->nick) == 0)
return;
params = event_get_params(data, 2, &target, &text);
event_get_params(data, 2, &target, &text);
level = server_ischannel(SERVER(server), target) ? MSGLEVEL_PUBLIC : MSGLEVEL_MSGS;
if (addr != NULL && !ignore_check(SERVER(server), nick, addr, target, text, level))
flood_newmsg(server, level, nick, addr, target);
g_free(params);
}
static void flood_notice(IRC_SERVER_REC *server, const char *data,
const char *nick, const char *addr)
{
char *params, *target, *text;
char *target, *text;
g_return_if_fail(data != NULL);
g_return_if_fail(server != NULL);
@ -268,11 +266,9 @@ static void flood_notice(IRC_SERVER_REC *server, const char *data,
if (addr == NULL || g_ascii_strcasecmp(nick, server->nick) == 0)
return;
params = event_get_params(data, 2, &target, &text);
event_get_params(data, 2, &target, &text);
if (!ignore_check(SERVER(server), nick, addr, target, text, MSGLEVEL_NOTICES))
flood_newmsg(server, MSGLEVEL_NOTICES, nick, addr, target);
g_free(params);
}
static void flood_ctcp(IRC_SERVER_REC *server, const char *data,

View file

@ -285,19 +285,17 @@ static void ison_check_parts(IRC_SERVER_REC *server)
static void event_ison(IRC_SERVER_REC *server, const char *data)
{
MODULE_SERVER_REC *mserver;
char *params, *online;
char *online;
g_return_if_fail(data != NULL);
g_return_if_fail(server != NULL);
params = event_get_params(data, 2, NULL, &online);
event_get_params(data, 2, NULL, &online);
mserver = MODULE_DATA(server);
ison_save_users(mserver, online);
if (--mserver->ison_count > 0) {
/* wait for the rest of the /ISON replies */
g_free(params);
return;
}
@ -308,8 +306,6 @@ static void event_ison(IRC_SERVER_REC *server, const char *data)
g_slist_foreach(mserver->ison_tempusers, (GFunc) g_free, NULL);
g_slist_free(mserver->ison_tempusers);
mserver->ison_tempusers = NULL;
g_free(params);
}
static void read_settings(void)

View file

@ -32,19 +32,18 @@ static char *last_notify_nick;
static void event_whois(IRC_SERVER_REC *server, const char *data)
{
char *params, *nick, *user, *host, *realname;
char *nick, *user, *host, *realname;
NOTIFY_NICK_REC *nickrec;
NOTIFYLIST_REC *notify;
g_return_if_fail(data != NULL);
g_return_if_fail(server != NULL);
params = event_get_params(data, 6, NULL, &nick, &user, &host, NULL, &realname);
event_get_params(data, 6, NULL, &nick, &user, &host, NULL, &realname);
notify = notifylist_find(nick, server->connrec->chatnet);
if (notify != NULL && !mask_match(SERVER(server), notify->mask, nick, user, host)) {
/* user or host didn't match */
g_free(params);
return;
}
@ -64,25 +63,22 @@ static void event_whois(IRC_SERVER_REC *server, const char *data)
nickrec->away = FALSE;
nickrec->host_ok = TRUE;
}
g_free(params);
}
static void event_whois_away(IRC_SERVER_REC *server, const char *data)
{
NOTIFY_NICK_REC *nickrec;
char *params, *nick, *awaymsg;
char *nick, *awaymsg;
g_return_if_fail(data != NULL);
params = event_get_params(data, 3, NULL, &nick, &awaymsg);
event_get_params(data, 3, NULL, &nick, &awaymsg);
nickrec = notify_nick_find(server, nick);
if (nickrec != NULL) {
nickrec->awaymsg = g_strdup(awaymsg);
nickrec->away = TRUE;
}
g_free(params);
}
/* All WHOIS replies got, now announce all the changes at once. */

View file

@ -149,19 +149,17 @@ static void handle_client_cmd(CLIENT_REC *client, char *cmd, char *args,
if (g_strcmp0(cmd, "PING") == 0) {
/* Reply to PING, if the target parameter is either
proxy_adress, our own nick or empty. */
char *params, *origin, *target;
char *origin, *target;
params = event_get_params(args, 2, &origin, &target);
event_get_params(args, 2, &origin, &target);
if (*target == '\0' ||
g_ascii_strcasecmp(target, client->proxy_address) == 0 ||
g_ascii_strcasecmp(target, client->nick) == 0) {
proxy_outdata(client, ":%s PONG %s :%s\r\n",
client->proxy_address,
client->proxy_address, origin);
g_free(params);
return;
}
g_free(params);
}
if (g_strcmp0(cmd, "PROXY") == 0) {
@ -254,9 +252,9 @@ static void handle_client_cmd(CLIENT_REC *client, char *cmd, char *args,
g_free(slist);
} else if (g_strcmp0(cmd, "PRIVMSG") == 0) {
/* send the message to other clients as well */
char *params, *target, *msg;
char *target, *msg;
params = event_get_params(args, 2 | PARAM_FLAG_GETREST,
event_get_params(args, 2 | PARAM_FLAG_GETREST,
&target, &msg);
proxy_outserver_all_except(client, "PRIVMSG %s", args);
@ -282,7 +280,6 @@ static void handle_client_cmd(CLIENT_REC *client, char *cmd, char *args,
client->server, msg+1, p, target);
}
ignore_next = FALSE;
g_free(params);
} else if (g_strcmp0(cmd, "PING") == 0) {
proxy_redirect_event(client, "ping", 1, NULL, TRUE);
} else if (g_strcmp0(cmd, "AWAY") == 0) {