Bug #252 » bip-Write-received-PRIVMSG-to-the-sender-log.patch
| src/irc.c | ||
|---|---|---|
|
}
|
||
|
static void irc_privmsg_check_ctcp(struct link_server *server,
|
||
|
const char *nick,
|
||
|
struct line *line)
|
||
|
{
|
||
|
if (irc_line_count(line) != 3)
|
||
| ... | ... | |
|
if (!line->origin)
|
||
|
return;
|
||
|
char *nick;
|
||
|
nick = nick_from_ircmask(line->origin);
|
||
|
if (irc_line_elem_equals(line, 2, "\001VERSION\001")) {
|
||
|
WRITE_LINE2(CONN(server), NULL, "NOTICE", nick,
|
||
|
"\001VERSION bip-" PACKAGE_VERSION "\001");
|
||
|
}
|
||
|
free(nick);
|
||
|
}
|
||
|
static int irc_privmsg(struct link_server *server, struct line *line)
|
||
|
{
|
||
|
if (!irc_line_includes(line, 2))
|
||
|
return ERR_PROTOCOL;
|
||
|
if (LINK(server)->s_state == IRCS_CONNECTED)
|
||
|
log_privmsg(LINK(server)->log, line->origin,
|
||
|
irc_line_elem(line, 1), irc_line_elem(line, 2));
|
||
|
irc_privmsg_check_ctcp(server, line);
|
||
|
char *nick = nick_from_ircmask(line->origin);
|
||
|
if (LINK(server)->s_state == IRCS_CONNECTED) {
|
||
|
const char *origin = line->origin;
|
||
|
const char *destination = irc_line_elem(line, 1);
|
||
|
if (strcmp(server->nick, destination) == 0) {
|
||
|
origin = nick;
|
||
|
destination = nick;
|
||
|
}
|
||
|
log_privmsg(LINK(server)->log, origin,
|
||
|
destination, irc_line_elem(line, 2));
|
||
|
}
|
||
|
irc_privmsg_check_ctcp(server, nick, line);
|
||
|
free(nick);
|
||
|
return OK_COPY;
|
||
|
}
|
||