Compare commits

...

13 Commits
master ... 1.1

Author SHA1 Message Date
Sébastien Helleu
7495650be5 core: fix screenshot URL in README 2016-12-17 10:01:55 +01:00
Sébastien Helleu
1a1a9a9503 Version 1.1.2-dev 2015-01-25 09:23:10 +01:00
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 a6327bc6f20252481366406580bab9d60e6b5725)
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 1a68242f95383e8bbaa500c9bc9447c3ce9af8ff)
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 ed9e146e46f157895954b807a332ef6b19044e8f)
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 9749b65f7e67bbee55e8708e571f5cff79b1bdbe.

(cherry picked from commit a617cd857a332e1ba2dfc0918e4269804b444106)
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 083a6c741dfae78ce74246910a5c5ba3566bba0a)
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 860ca4be20fcec36f4f130c7e74339672257c2a7)
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 99d20e97c61c917db3d65c68a094dcfc4a2d7eb1)
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 9fbd138518aa18fd19f49e280ae3db38265e130a)
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 9749b65f7e67bbee55e8708e571f5cff79b1bdbe)
2015-01-17 14:38:34 +01:00
12 changed files with 161 additions and 67 deletions

View File

@ -35,7 +35,7 @@ endif()
# version
set(VERSION_MAJOR "1")
set(VERSION_MINOR "1")
set(VERSION_PATCH "")
set(VERSION_PATCH "2-dev")
if(VERSION_PATCH STREQUAL "")
set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR})
else()

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

View File

@ -24,7 +24,7 @@ image:https://travis-ci.org/weechat/weechat.svg?branch=master["Build Status", li
* Developed from scratch.
* Free software, released under GPLv3.
image::http://static.weechat.org/images/screenshots/weechat/medium/weechat_2013-04-27_phlux_shadow.png[align="center"]
image::https://weechat.org/media/images/screenshots/weechat/medium/weechat_2013-04-27_phlux_shadow.png[align="center"]
== Install

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

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.2-dev, flashcode@flashtux.org)
AC_CONFIG_SRCDIR([configure.ac])
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE([foreign])

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;

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)

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,

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;
}
}

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;

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;

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