1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-12 14:14:48 +02:00

Compare commits

...

11 Commits

Author SHA1 Message Date
Sébastien Helleu b42ae05a65 Version 1.1.1 2015-01-25 08:40:23 +01:00
Sébastien Helleu c229030860 core: fix random error when creating symbolic link weechat-curses on make install with cmake (bug #40313)
(cherry picked from commit a6327bc6f2)
2015-01-24 16:34:52 +01:00
Sébastien Helleu b35873fc3e irc: don't close channel buffer on second /part when option irc.look.part_closes_buffer is off (closes #313)
(cherry picked from commit 1a68242f95)
2015-01-24 09:38:03 +01:00
Sébastien Helleu 0796f343ee core: fix crash when a root bar has conditions different from active/inactive/nicklist (closes #317)
(cherry picked from commit ed9e146e46)
2015-01-23 21:21:55 +01:00
Sébastien Helleu 470b1892d8 irc: fix restore of query buffers on /upgrade (closes #315)
After /upgrade it was not possible to send a message in the query buffer or to
receive messages from this nick.

This commit fixes the search of query buffer when creating the irc channel
(with type "private").

The bug was introduced by commit 9749b65f7e.

(cherry picked from commit a617cd857a)
2015-01-23 20:02:40 +01:00
Sébastien Helleu 0cf4640b9b core: check that filename is not NULL in function util_file_get_content
(cherry picked from commit 083a6c741d)
2015-01-23 07:38:56 +01:00
Sébastien Helleu d039fd0f8c irc: fix /join on a channel buffer opened with autojoin but which failed to join
(cherry picked from commit 860ca4be20)
2015-01-19 20:23:32 +01:00
Sébastien Helleu d611982ba6 Version 1.1.1-dev 2015-01-17 15:22:15 +01:00
Sébastien Helleu 5dd36f8fda irc: send QUIT to server and no PART for channels when the server buffer is closed (closes #294)
(cherry picked from commit 99d20e97c6)
2015-01-17 15:19:33 +01:00
Sébastien Helleu 9040494016 irc: fix order of channel buffers opened (closes #303)
(cherry picked from commit 9fbd138518)
2015-01-17 14:39:31 +01:00
Sébastien Helleu d4908ba8f3 irc: fix crash in buffer close when server name is the same as a channel name (closes #305)
(cherry picked from commit 9749b65f7e)
2015-01-17 14:38:34 +01:00
11 changed files with 160 additions and 66 deletions
+1 -1
View File
@@ -35,7 +35,7 @@ endif()
# version
set(VERSION_MAJOR "1")
set(VERSION_MINOR "1")
set(VERSION_PATCH "")
set(VERSION_PATCH "1")
if(VERSION_PATCH STREQUAL "")
set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
else()
+20
View File
@@ -13,6 +13,26 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes]
(file 'ReleaseNotes.asciidoc' in sources).
== Version 1.1.1 (2015-01-25)
=== Bugs fixed
* core: fix random error when creating symbolic link weechat-curses on
make install with cmake (bug #40313)
* core: fix crash when a root bar has conditions different from
active/inactive/nicklist (closes #317)
* irc: don't close channel buffer on second /part when option
irc.look.part_closes_buffer is off (closes #313)
* irc: fix /join on a channel buffer opened with autojoin but which failed to
join
* irc: send QUIT to server and no PART for channels when the server buffer
is closed (closes #294)
* irc: fix order of channel buffers opened when option irc.look.server_buffer
is set to "independent", irc.look.buffer_open_before_autojoin to "on" and
irc.look.new_channel_position to "near_server" (closes #303)
* irc: fix crash in buffer close when server name is the same as a channel name
(closes #305)
== Version 1.1 (2015-01-11)
=== New features
+4
View File
@@ -15,6 +15,10 @@ https://weechat.org/files/changelog/ChangeLog-devel.html[ChangeLog]
(file 'ChangeLog.asciidoc' in sources).
== Version 1.1.1 (2015-01-25)
Bug fix and maintenance release.
== Version 1.1 (2015-01-11)
=== New format for regex replacement in triggers
+1 -1
View File
@@ -24,7 +24,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.56)
AC_INIT(WeeChat, 1.1, flashcode@flashtux.org)
AC_INIT(WeeChat, 1.1.1, flashcode@flashtux.org)
AC_CONFIG_SRCDIR([configure.ac])
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE([foreign])
+3
View File
@@ -659,6 +659,9 @@ util_file_get_content (const char *filename)
FILE *f;
size_t count, fp;
if (!filename)
return NULL;
buffer = NULL;
fp = 0;
+16 -8
View File
@@ -84,15 +84,23 @@ add_dependencies(${EXECUTABLE} weechat_gui_curses)
# Due to circular references, we must link two times with libweechat_core.a
target_link_libraries(${EXECUTABLE} ${STATIC_LIBS} weechat_gui_curses ${EXTRA_LIBS} ${STATIC_LIBS})
install(TARGETS ${EXECUTABLE} RUNTIME DESTINATION bin)
# Create a symbolic link weechat-curses -> weechat
# This link is created for compatibility with old versions on /upgrade.
# It may be removed in future.
install(CODE "
EXECUTE_PROCESS(
COMMAND ${CMAKE_COMMAND} -E remove -f \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/weechat-curses${CMAKE_EXECUTABLE_SUFFIX}\"
COMMAND ${CMAKE_COMMAND} -E create_symlink weechat${CMAKE_EXECUTABLE_SUFFIX} \"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/bin/weechat-curses${CMAKE_EXECUTABLE_SUFFIX}\"
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE}-curses${CMAKE_EXECUTABLE_SUFFIX}
COMMAND ${CMAKE_COMMAND} -E remove -f "weechat-curses${CMAKE_EXECUTABLE_SUFFIX}"
COMMAND ${CMAKE_COMMAND} -E create_symlink "weechat${CMAKE_EXECUTABLE_SUFFIX}" "weechat-curses${CMAKE_EXECUTABLE_SUFFIX}"
DEPENDS ${EXECUTABLE}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Creating symbolic link ${EXECUTABLE}-curses${CMAKE_EXECUTABLE_SUFFIX}"
)
LIST(APPEND CMAKE_INSTALL_MANIFEST_FILES \"${CMAKE_INSTALL_PREFIX}/bin/weechat-curses${CMAKE_EXECUTABLE_SUFFIX}\")
")
add_custom_target(${EXECUTABLE}-curses${CMAKE_EXECUTABLE_SUFFIX} ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE}-curses${CMAKE_EXECUTABLE_SUFFIX}
)
add_dependencies(${EXECUTABLE}-curses${CMAKE_EXECUTABLE_SUFFIX} ${EXECUTABLE})
list(APPEND CMAKE_INSTALL_MANIFEST_FILES "${CMAKE_INSTALL_PREFIX}/bin/weechat-curses${CMAKE_EXECUTABLE_SUFFIX}")
# Install executable and symbolic link
install(TARGETS ${EXECUTABLE} RUNTIME DESTINATION bin)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${EXECUTABLE}-curses${CMAKE_EXECUTABLE_SUFFIX} DESTINATION bin)
+4 -3
View File
@@ -402,7 +402,7 @@ gui_bar_check_conditions (struct t_gui_bar *bar,
}
else if (string_strcasecmp (conditions, "nicklist") == 0)
{
if (window->buffer && !window->buffer->nicklist)
if (window && window->buffer && !window->buffer->nicklist)
return 0;
}
else if (conditions[0])
@@ -415,7 +415,8 @@ gui_bar_check_conditions (struct t_gui_bar *bar,
if (pointers)
{
hashtable_set (pointers, "window", window);
hashtable_set (pointers, "buffer", window->buffer);
if (window)
hashtable_set (pointers, "buffer", window->buffer);
}
extra_vars = hashtable_new (32,
WEECHAT_HASHTABLE_STRING,
@@ -429,7 +430,7 @@ gui_bar_check_conditions (struct t_gui_bar *bar,
hashtable_set (extra_vars, "inactive",
(gui_current_window && (gui_current_window != window)) ? "1" : "0");
hashtable_set (extra_vars, "nicklist",
(window->buffer && window->buffer->nicklist) ? "1" : "0");
(window && window->buffer && window->buffer->nicklist) ? "1" : "0");
}
options = hashtable_new (32,
WEECHAT_HASHTABLE_STRING,
+8 -4
View File
@@ -141,16 +141,20 @@ irc_buffer_close_cb (void *data, struct t_gui_buffer *buffer)
{
if (ptr_server)
{
/* send PART on all channels for server, then disconnect from server */
if (!ptr_server->disconnected)
{
/* send QUIT to server, then disconnect */
irc_command_quit_server (ptr_server, NULL);
irc_server_disconnect (ptr_server, 0, 0);
}
ptr_channel = ptr_server->channels;
while (ptr_channel)
{
next_channel = ptr_channel->next_channel;
weechat_buffer_close (ptr_channel->buffer);
if (ptr_channel->buffer != buffer)
weechat_buffer_close (ptr_channel->buffer);
ptr_channel = next_channel;
}
if (!ptr_server->disconnected)
irc_server_disconnect (ptr_server, 0, 0);
ptr_server->buffer = NULL;
}
}
+61 -42
View File
@@ -76,59 +76,69 @@ irc_channel_move_near_server (struct t_irc_server *server, int channel_type,
int number, number_channel, number_last_channel, number_last_private;
int number_found;
char str_number[32];
struct t_irc_channel *ptr_channel;
const char *ptr_type, *ptr_server_name;
struct t_hdata *hdata_buffer;
struct t_gui_buffer *ptr_buffer;
number = weechat_buffer_get_integer (buffer, "number");
number_last_channel = 0;
number_last_private = 0;
number_found = 0;
if (server->channels)
hdata_buffer = weechat_hdata_get ("buffer");
ptr_buffer = weechat_hdata_get_list (hdata_buffer, "gui_buffers");
while (ptr_buffer)
{
/* search last channel/pv number for server */
for (ptr_channel = server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
if ((ptr_buffer != buffer)
&& (weechat_buffer_get_pointer (ptr_buffer,
"plugin") == weechat_irc_plugin))
{
if (ptr_channel->buffer)
ptr_type = weechat_buffer_get_string (ptr_buffer,
"localvar_type");
ptr_server_name = weechat_buffer_get_string (ptr_buffer,
"localvar_server");
number_channel = weechat_buffer_get_integer (ptr_buffer,
"number");
if (ptr_type && ptr_type[0]
&& ptr_server_name && ptr_server_name[0]
&& (strcmp (ptr_server_name, server->name) == 0))
{
number_channel = weechat_buffer_get_integer (
ptr_channel->buffer, "number");
switch (ptr_channel->type)
if (strcmp (ptr_type, "channel") == 0)
{
case IRC_CHANNEL_TYPE_CHANNEL:
if (number_channel > number_last_channel)
number_last_channel = number_channel;
break;
case IRC_CHANNEL_TYPE_PRIVATE:
if (number_channel > number_last_private)
number_last_private = number_channel;
break;
if (number_channel > number_last_channel)
number_last_channel = number_channel;
}
else if (strcmp (ptr_type, "private") == 0)
{
if (number_channel > number_last_private)
number_last_private = number_channel;
}
}
}
/* use last channel/pv number + 1 */
switch (channel_type)
{
case IRC_CHANNEL_TYPE_CHANNEL:
if (number_last_channel > 0)
number_found = number_last_channel + 1;
break;
case IRC_CHANNEL_TYPE_PRIVATE:
if (number_last_private > 0)
number_found = number_last_private + 1;
else if (number_last_channel > 0)
number_found = number_last_channel + 1;
break;
}
/* move to next buffer */
ptr_buffer = weechat_hdata_move (hdata_buffer, ptr_buffer, 1);
}
else
/* use last channel/pv number + 1 */
switch (channel_type)
{
if (weechat_config_integer (irc_config_look_server_buffer) ==
IRC_CONFIG_LOOK_SERVER_BUFFER_INDEPENDENT)
{
number_found = weechat_buffer_get_integer (server->buffer, "number") + 1;
}
case IRC_CHANNEL_TYPE_CHANNEL:
if (number_last_channel > 0)
number_found = number_last_channel + 1;
break;
case IRC_CHANNEL_TYPE_PRIVATE:
if (number_last_private > 0)
number_found = number_last_private + 1;
else if (number_last_channel > 0)
number_found = number_last_channel + 1;
break;
}
if ((number_found == 0)
&& (weechat_config_integer (irc_config_look_server_buffer) ==
IRC_CONFIG_LOOK_SERVER_BUFFER_INDEPENDENT))
{
number_found = weechat_buffer_get_integer (server->buffer, "number") + 1;
}
/* switch to number found */
@@ -169,12 +179,12 @@ irc_channel_search (struct t_irc_server *server, const char *channel_name)
*/
struct t_gui_buffer *
irc_channel_search_buffer (struct t_irc_server *server,
irc_channel_search_buffer (struct t_irc_server *server, int channel_type,
const char *channel_name)
{
struct t_hdata *hdata_buffer;
struct t_gui_buffer *ptr_buffer;
const char *ptr_server_name, *ptr_channel_name;
const char *ptr_type, *ptr_server_name, *ptr_channel_name;
hdata_buffer = weechat_hdata_get ("buffer");
ptr_buffer = weechat_hdata_get_list (hdata_buffer, "gui_buffers");
@@ -184,12 +194,18 @@ irc_channel_search_buffer (struct t_irc_server *server,
if (weechat_buffer_get_pointer (ptr_buffer,
"plugin") == weechat_irc_plugin)
{
ptr_type = weechat_buffer_get_string (ptr_buffer, "localvar_type");
ptr_server_name = weechat_buffer_get_string (ptr_buffer,
"localvar_server");
ptr_channel_name = weechat_buffer_get_string (ptr_buffer,
"localvar_channel");
if (ptr_server_name && ptr_server_name[0]
if (ptr_type && ptr_type[0]
&& ptr_server_name && ptr_server_name[0]
&& ptr_channel_name && ptr_channel_name[0]
&& (((channel_type == IRC_CHANNEL_TYPE_CHANNEL)
&& (strcmp (ptr_type, "channel") == 0))
|| ((channel_type == IRC_CHANNEL_TYPE_PRIVATE)
&& (strcmp (ptr_type, "private") == 0)))
&& (strcmp (ptr_server_name, server->name) == 0)
&& ((irc_server_strcasecmp (server, ptr_channel_name,
channel_name) == 0)))
@@ -227,9 +243,12 @@ irc_channel_create_buffer (struct t_irc_server *server,
buffer_name = irc_buffer_build_name (server->name, channel_name);
ptr_buffer = irc_channel_search_buffer (server, channel_name);
ptr_buffer = irc_channel_search_buffer (server, channel_type,
channel_name);
if (ptr_buffer)
{
weechat_nicklist_remove_all (ptr_buffer);
}
else
{
ptr_buffer_for_merge = NULL;
+39 -6
View File
@@ -2330,6 +2330,7 @@ irc_command_join (void *data, struct t_gui_buffer *buffer, int argc,
char **argv, char **argv_eol)
{
int i, arg_channels, noswitch;
const char *ptr_type, *ptr_server_name, *ptr_channel_name;
IRC_BUFFER_GET_SERVER_CHANNEL(buffer);
@@ -2363,6 +2364,18 @@ irc_command_join (void *data, struct t_gui_buffer *buffer, int argc,
}
}
if (!ptr_server)
{
if ((weechat_buffer_get_pointer (buffer,
"plugin") == weechat_irc_plugin))
{
ptr_server_name = weechat_buffer_get_string (buffer,
"localvar_server");
if (ptr_server_name)
ptr_server = irc_server_search (ptr_server_name);
}
}
IRC_COMMAND_CHECK_SERVER("join", 1);
if (arg_channels < argc)
@@ -2379,7 +2392,21 @@ irc_command_join (void *data, struct t_gui_buffer *buffer, int argc,
1, noswitch);
}
else
WEECHAT_COMMAND_ERROR;
{
ptr_type = weechat_buffer_get_string (buffer, "localvar_type");
ptr_channel_name = weechat_buffer_get_string (buffer,
"localvar_channel");
if ((weechat_buffer_get_pointer (buffer,
"plugin") == weechat_irc_plugin)
&& ptr_type && ptr_channel_name
&& (strcmp (ptr_type, "channel") == 0))
{
irc_command_join_server (ptr_server, ptr_channel_name,
1, noswitch);
}
else
WEECHAT_COMMAND_ERROR;
}
}
return WEECHAT_RC_OK;
@@ -3623,6 +3650,7 @@ irc_command_part (void *data, struct t_gui_buffer *buffer, int argc,
{
if (irc_channel_is_channel (ptr_server, argv[1]))
{
ptr_channel = irc_channel_search (ptr_server, argv[1]);
channel_name = argv[1];
pos_args = argv_eol[2];
}
@@ -3652,15 +3680,20 @@ irc_command_part (void *data, struct t_gui_buffer *buffer, int argc,
weechat_prefix ("error"), IRC_PLUGIN_NAME, "part");
return WEECHAT_RC_OK;
}
if (!ptr_channel->nicks)
{
weechat_buffer_close (ptr_channel->buffer);
return WEECHAT_RC_OK;
}
channel_name = ptr_channel->name;
pos_args = NULL;
}
if (ptr_channel && !ptr_channel->nicks)
{
if ((ptr_channel->type == IRC_CHANNEL_TYPE_PRIVATE)
|| weechat_config_boolean (irc_config_look_part_closes_buffer))
{
weechat_buffer_close (ptr_channel->buffer);
}
return WEECHAT_RC_OK;
}
irc_command_part_channel (ptr_server, channel_name, pos_args);
return WEECHAT_RC_OK;
+3 -1
View File
@@ -23,7 +23,7 @@
#
%define name weechat
%define version 1.1
%define version 1.1.1
%define release 1
Name: %{name}
@@ -77,6 +77,8 @@ rm -rf $RPM_BUILD_ROOT
%{_prefix}/share/icons/hicolor/32x32/apps/weechat.png
%changelog
* Sun Jan 25 2015 Sébastien Helleu <flashcode@flashtux.org> 1.1.1-1
- Released version 1.1.1
* Sun Jan 11 2015 Sébastien Helleu <flashcode@flashtux.org> 1.1-1
- Released version 1.1
* Sun Sep 28 2014 Sébastien Helleu <flashcode@flashtux.org> 1.0.1-1