1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-03 08:13:14 +02:00

core: fix "/buffer clear" with a name (don't clear all merged buffers with same number)

This commit is contained in:
Sébastien Helleu
2014-04-05 11:49:06 +02:00
parent 698d6a3631
commit a44a1eab19
2 changed files with 27 additions and 8 deletions
+2
View File
@@ -15,6 +15,8 @@ http://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
== Version 0.4.4 (under dev)
* core: fix "/buffer clear" with a name (don't clear all merged buffers with
same number)
* core: fix evaluation of expression with regex when a comparison char is in
the regex
* core: close .upgrade files before deleting them after /upgrade
+25 -8
View File
@@ -546,7 +546,7 @@ COMMAND_CALLBACK(buffer)
struct t_gui_buffer *weechat_buffer;
long number, number1, number2, numbers[3];
char *error, *value, *pos, *str_number1, *pos_number2;
int i, error_main_buffer, num_buffers, count, prev_number;
int i, error_main_buffer, num_buffers, count, prev_number, clear_number;
/* make C compiler happy */
(void) data;
@@ -590,19 +590,36 @@ COMMAND_CALLBACK(buffer)
{
for (i = 2; i < argc; i++)
{
ptr_buffer = (string_strcasecmp (argv[i], "-merged") == 0) ?
buffer : gui_buffer_search_by_number_or_name (argv[i]);
if (string_strcasecmp (argv[i], "-merged") == 0)
{
ptr_buffer = buffer;
clear_number = 1;
}
else
{
ptr_buffer = gui_buffer_search_by_number_or_name (argv[i]);
number = strtol (argv[2], &error, 10);
clear_number = (error && !error[0]);
}
if (ptr_buffer)
{
for (ptr_buffer2 = gui_buffers; ptr_buffer2;
ptr_buffer2 = ptr_buffer2->next_buffer)
if (clear_number)
{
if ((ptr_buffer2->number == ptr_buffer->number)
&& ptr_buffer2->clear)
for (ptr_buffer2 = gui_buffers; ptr_buffer2;
ptr_buffer2 = ptr_buffer2->next_buffer)
{
gui_buffer_clear (ptr_buffer2);
if ((ptr_buffer2->number == ptr_buffer->number)
&& ptr_buffer2->clear)
{
gui_buffer_clear (ptr_buffer2);
}
}
}
else
{
if (ptr_buffer->clear)
gui_buffer_clear (ptr_buffer);
}
}
}
}