relay: add option relay.irc.backlog_since_last_message

This commit is contained in:
Nick 2015-12-20 08:19:59 +01:00 committed by Sébastien Helleu
parent 9f049afb18
commit 52820627f0
3 changed files with 24 additions and 2 deletions

View File

@ -754,7 +754,7 @@ relay_irc_send_channel_backlog (struct t_relay_client *client,
void *ptr_own_lines, *ptr_line, *ptr_line_data;
void *ptr_hdata_line, *ptr_hdata_line_data;
char *tags, *message;
const char *ptr_nick, *ptr_nick1, *ptr_nick2, *ptr_host;
const char *ptr_nick, *ptr_nick1, *ptr_nick2, *ptr_host, *localvar_nick;
int irc_command, irc_action, count, max_number, max_minutes;
time_t date_min, date_min2, date;
@ -780,6 +780,10 @@ relay_irc_send_channel_backlog (struct t_relay_client *client,
if (!ptr_hdata_line_data)
return;
localvar_nick = NULL;
if (weechat_config_boolean (relay_config_irc_backlog_since_last_message))
localvar_nick = weechat_buffer_get_string (buffer, "localvar_nick");
max_number = weechat_config_integer (relay_config_irc_backlog_max_number);
max_minutes = weechat_config_integer (relay_config_irc_backlog_max_minutes);
date_min = (max_minutes > 0) ? time (NULL) - (max_minutes * 60) : 0;
@ -810,7 +814,7 @@ relay_irc_send_channel_backlog (struct t_relay_client *client,
&irc_command,
NULL, /* irc_action */
&date,
NULL, /* nick */
&ptr_nick,
NULL, /* nick1 */
NULL, /* nick2 */
NULL, /* host */
@ -826,6 +830,17 @@ relay_irc_send_channel_backlog (struct t_relay_client *client,
/* if we have reached max number of messages, exit loop */
if ((max_number > 0) && (count > max_number))
break;
if (localvar_nick && localvar_nick[0]
&& ptr_nick && (strcmp (ptr_nick, localvar_nick) == 0))
{
/*
* stop when we find a line sent by the current nick
* (and include this line)
*/
ptr_line = weechat_hdata_move (ptr_hdata_line, ptr_line, -1);
break;
}
}
ptr_line = weechat_hdata_move (ptr_hdata_line, ptr_line, -1);
}

View File

@ -68,6 +68,7 @@ struct t_config_option *relay_config_network_websocket_allowed_origins;
struct t_config_option *relay_config_irc_backlog_max_minutes;
struct t_config_option *relay_config_irc_backlog_max_number;
struct t_config_option *relay_config_irc_backlog_since_last_disconnect;
struct t_config_option *relay_config_irc_backlog_since_last_message;
struct t_config_option *relay_config_irc_backlog_tags;
struct t_config_option *relay_config_irc_backlog_time_format;
@ -816,6 +817,11 @@ relay_config_init ()
"backlog_since_last_disconnect", "boolean",
N_("display backlog starting from last client disconnect"),
NULL, 0, 0, "on", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
relay_config_irc_backlog_since_last_message = weechat_config_new_option (
relay_config_file, ptr_section,
"backlog_since_last_message", "boolean",
N_("display backlog starting from your last message"),
NULL, 0, 0, "off", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL);
relay_config_irc_backlog_tags = weechat_config_new_option (
relay_config_file, ptr_section,
"backlog_tags", "string",

View File

@ -50,6 +50,7 @@ extern struct t_config_option *relay_config_network_websocket_allowed_origins;
extern struct t_config_option *relay_config_irc_backlog_max_minutes;
extern struct t_config_option *relay_config_irc_backlog_max_number;
extern struct t_config_option *relay_config_irc_backlog_since_last_disconnect;
extern struct t_config_option *relay_config_irc_backlog_since_last_message;
extern struct t_config_option *relay_config_irc_backlog_tags;
extern struct t_config_option *relay_config_irc_backlog_time_format;