53
54
if (addr == NULL) addr = "";
54
55
if (*target == '@' && ischannel(target[1])) {
55
56
/* Hybrid 6 feature, send msg to all ops in channel */
57
recoded = recode_in(SERVER(server), msg, target+1);
56
58
signal_emit("message irc op_public", 5,
57
server, msg, nick, addr,
59
server, recoded, nick, addr,
58
60
get_visible_target(server, target+1));
62
recoded = recode_in(SERVER(server), msg, ischannel(*target) ? target : nick);
60
63
signal_emit(ischannel(*target) ?
61
64
"message public" : "message private", 5,
62
server, msg, nick, addr,
65
server, recoded, nick, addr,
63
66
get_visible_target(server, target));
69
73
static void ctcp_action(IRC_SERVER_REC *server, const char *data,
70
74
const char *nick, const char *addr,
71
75
const char *target)
73
79
g_return_if_fail(data != NULL);
80
recoded = recode_in(SERVER(server), data, target);
74
81
signal_emit("message irc action", 5,
75
server, data, nick, addr,
82
server, recoded, nick, addr,
76
83
get_visible_target(server, target));
79
87
static void event_notice(IRC_SERVER_REC *server, const char *data,
80
88
const char *nick, const char *addr)
82
char *params, *target, *msg;
90
char *params, *target, *msg, *recoded;
84
92
g_return_if_fail(data != NULL);
86
94
params = event_get_params(data, 2 | PARAM_FLAG_GETREST, &target, &msg);
95
recoded = recode_in(SERVER(server), msg, target);
87
96
if (nick == NULL) {
88
97
nick = server->real_address == NULL ?
89
98
server->connrec->address :
90
99
server->real_address;
93
signal_emit("message irc notice", 5, server, msg, nick, addr,
102
signal_emit("message irc notice", 5, server, recoded, nick, addr,
94
103
get_visible_target(server, target));
98
108
static void event_join(IRC_SERVER_REC *server, const char *data,
114
124
static void event_part(IRC_SERVER_REC *server, const char *data,
115
125
const char *nick, const char *addr)
117
char *params, *channel, *reason;
127
char *params, *channel, *reason, *recoded;
119
129
g_return_if_fail(data != NULL);
121
131
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
122
132
&channel, &reason);
133
recoded = recode_in(SERVER(server), reason, channel);
123
134
signal_emit("message part", 5, server,
124
get_visible_target(server, channel), nick, addr, reason);
135
get_visible_target(server, channel), nick, addr, recoded);
128
140
static void event_quit(IRC_SERVER_REC *server, const char *data,
129
141
const char *nick, const char *addr)
131
145
g_return_if_fail(data != NULL);
133
147
if (*data == ':') data++; /* quit message */
134
signal_emit("message quit", 4, server, nick, addr, data);
148
recoded = recode_in(SERVER(server), data, nick);
149
signal_emit("message quit", 4, server, nick, addr, recoded);
137
153
static void event_kick(IRC_SERVER_REC *server, const char *data,
138
154
const char *kicker, const char *addr)
140
char *params, *channel, *nick, *reason;
156
char *params, *channel, *nick, *reason, *recoded;
142
158
g_return_if_fail(data != NULL);
144
160
params = event_get_params(data, 3 | PARAM_FLAG_GETREST,
145
161
&channel, &nick, &reason);
162
recoded = recode_in(SERVER(server), reason, channel);
146
163
signal_emit("message kick", 6,
147
164
server, get_visible_target(server, channel),
148
nick, kicker, addr, reason);
165
nick, kicker, addr, recoded);
152
170
static void event_kill(IRC_SERVER_REC *server, const char *data,
242
260
static void event_topic(IRC_SERVER_REC *server, const char *data,
243
261
const char *nick, const char *addr)
245
char *params, *channel, *topic;
263
char *params, *channel, *topic, *recoded;
247
265
g_return_if_fail(data != NULL);
249
267
params = event_get_params(data, 2 | PARAM_FLAG_GETREST,
250
268
&channel, &topic);
269
recoded = recode_in(SERVER(server), topic, channel);
251
270
signal_emit("message topic", 5, server,
252
get_visible_target(server, channel), topic, nick, addr);
271
get_visible_target(server, channel), recoded, nick, addr);
256
276
static void event_error(IRC_SERVER_REC *server, const char *data)
269
289
if (ignore_check(SERVER(server), nick, addr, NULL, data, MSGLEVEL_WALLOPS))
272
if (g_strncasecmp(data, "\001ACTION ", 8) != 0)
292
if (g_ascii_strncasecmp(data, "\001ACTION ", 8) != 0)
273
293
printformat(server, NULL, MSGLEVEL_WALLOPS, IRCTXT_WALLOPS, nick, data);
275
295
/* Action in WALLOP */