mirror of
https://github.com/weechat/weechat.git
synced 2026-06-12 22:24:47 +02:00
Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e050eebb2e | |||
| e8a7869722 | |||
| 3e8f957210 | |||
| 1110b8b9d5 | |||
| 524528fc34 | |||
| 34c79971fc | |||
| c1ca6c4002 | |||
| c7af60daaa | |||
| 99a3865665 | |||
| b93a24d949 | |||
| 1ee6b6e635 | |||
| b62c87d9eb | |||
| 18be2b3151 | |||
| 8a9a652d03 | |||
| f8c48b8000 | |||
| 42c65cebcb | |||
| c9c57eeee2 | |||
| 8c63243941 | |||
| 732bfe4a48 | |||
| 46f322c10f | |||
| 52cb5bbbe0 | |||
| b634270f2a | |||
| f4dbdb93d7 |
@@ -381,9 +381,7 @@ jobs:
|
||||
/usr/local/bin/python3.11 \
|
||||
/usr/local/bin/python3.11-config \
|
||||
;
|
||||
# workaround for https://github.com/actions/runner-images/issues/10984
|
||||
brew uninstall --ignore-dependencies --force pkg-config@0.29.2
|
||||
brew install asciidoctor aspell cjson guile lua ruby
|
||||
brew install asciidoctor aspell cjson guile lua pkg-config ruby
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
|
||||
@@ -1,5 +1,27 @@
|
||||
# WeeChat ChangeLog
|
||||
|
||||
## Version 4.5.3 (under dev)
|
||||
|
||||
### Fixed
|
||||
|
||||
- core: save configuration files as UTF-8 when the locale is wrong
|
||||
|
||||
## Version 4.5.2 (2025-02-20)
|
||||
|
||||
### Fixed
|
||||
|
||||
- core: fix build with gcc 15 ([#2229](https://github.com/weechat/weechat/issues/2229), [#2230](https://github.com/weechat/weechat/issues/2230))
|
||||
|
||||
## Version 4.5.1 (2024-12-23)
|
||||
|
||||
### Fixed
|
||||
|
||||
- relay: fix crash after `/upgrade` when relay clients are connected
|
||||
- api: fix creation of empty buffer in function infolist_new_var_buffer
|
||||
- core: fix detection of dl library ([#2218](https://github.com/weechat/weechat/issues/2218))
|
||||
- logger: fix path displayed when the logs directory can not be created
|
||||
- perl: fix build with Perl < 5.7.29 ([#2219](https://github.com/weechat/weechat/issues/2219), [#2220](https://github.com/weechat/weechat/issues/2220))
|
||||
|
||||
## Version 4.5.0 (2024-12-15)
|
||||
|
||||
### Changed
|
||||
|
||||
+1
-3
@@ -247,9 +247,7 @@ find_library(DL_LIBRARY
|
||||
PATHS /lib /usr/lib /usr/libexec /usr/local/lib /usr/local/libexec
|
||||
)
|
||||
if(DL_LIBRARY)
|
||||
string(REGEX REPLACE "/[^/]*$" "" DL_LIBRARY_PATH "${DL_LIBRARY}")
|
||||
set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -L${DL_LIBRARY_PATH}")
|
||||
list(APPEND EXTRA_LIBS dl)
|
||||
list(APPEND EXTRA_LIBS ${DL_LIBRARY})
|
||||
endif()
|
||||
|
||||
add_subdirectory(icons)
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
weechat (4.5.1-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
* Update copyright file (new year)
|
||||
|
||||
-- Emmanuel Bouthenot <kolter@debian.org> Mon, 20 Jan 2025 14:39:42 +0000
|
||||
|
||||
weechat (4.4.3-1) unstable; urgency=medium
|
||||
|
||||
* New upstream release
|
||||
|
||||
@@ -1184,7 +1184,7 @@ Body parameters:
|
||||
|
||||
* `buffer_id` (integer, optional): buffer unique identifier (not to be confused
|
||||
with the buffer number, which is different)
|
||||
* `buffer` (string, optional, default: `core.weechat`): buffer name
|
||||
* `buffer_name` (string, optional, default: `core.weechat`): buffer name
|
||||
* `command` (string, **required**): command or text to send to the buffer
|
||||
|
||||
Request example: say "hello!" on channel #weechat:
|
||||
@@ -1192,7 +1192,7 @@ Request example: say "hello!" on channel #weechat:
|
||||
[source,shell]
|
||||
----
|
||||
curl -L -u 'plain:secret_password' -X POST \
|
||||
-d '{"buffer": "irc.libera.#weechat", "command": "hello!"}' \
|
||||
-d '{"buffer_name": "irc.libera.#weechat", "command": "hello!"}' \
|
||||
'https://localhost:9000/api/input'
|
||||
----
|
||||
|
||||
|
||||
@@ -1196,7 +1196,7 @@ Paramètres du corps :
|
||||
|
||||
* `buffer_id` (entier, facultatif) : identifiant unique du tampon (à ne pas
|
||||
confondre avec le numéro du tampon, qui est différent)
|
||||
* `buffer_name` (chaîne, facultatif) : nom de tampon
|
||||
* `buffer_name` (chaîne, facultatif, par défaut : `core.weechat`) : nom de tampon
|
||||
* `command` (chaîne, **obligatoire**) : commande ou texte à envoyer au tampon
|
||||
|
||||
Exemple de requête : dire "hello!" sur le canal #weechat :
|
||||
@@ -1204,7 +1204,7 @@ Exemple de requête : dire "hello!" sur le canal #weechat :
|
||||
[source,shell]
|
||||
----
|
||||
curl -L -u 'plain:secret_password' -X POST \
|
||||
-d '{"buffer": "irc.libera.#weechat", "command": "hello!"}' \
|
||||
-d '{"buffer_name": "irc.libera.#weechat", "command": "hello!"}' \
|
||||
'https://localhost:9000/api/input'
|
||||
----
|
||||
|
||||
|
||||
@@ -228,8 +228,11 @@ debug_dump_cb (const void *pointer, void *data,
|
||||
*/
|
||||
|
||||
void
|
||||
debug_sigsegv_cb ()
|
||||
debug_sigsegv_cb (int signo)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) signo;
|
||||
|
||||
debug_dump (1);
|
||||
unhook_all ();
|
||||
gui_main_end (0);
|
||||
|
||||
@@ -27,7 +27,7 @@ struct t_gui_window_tree;
|
||||
extern long long debug_long_callbacks;
|
||||
|
||||
extern void debug_build_info ();
|
||||
extern void debug_sigsegv_cb ();
|
||||
extern void debug_sigsegv_cb (int signo);
|
||||
extern void debug_windows_tree ();
|
||||
extern void debug_memory ();
|
||||
extern void debug_hdata ();
|
||||
|
||||
@@ -247,17 +247,27 @@ infolist_new_var_buffer (struct t_infolist_item *item,
|
||||
{
|
||||
struct t_infolist_var *new_var;
|
||||
|
||||
if (!item || !name || !name[0] || (size <= 0))
|
||||
if (!item || !name || !name[0])
|
||||
return NULL;
|
||||
|
||||
if (size < 0)
|
||||
size = 0;
|
||||
|
||||
new_var = malloc (sizeof (*new_var));
|
||||
if (new_var)
|
||||
{
|
||||
new_var->name = strdup (name);
|
||||
new_var->type = INFOLIST_BUFFER;
|
||||
new_var->value = malloc (size);
|
||||
if (new_var->value)
|
||||
memcpy (new_var->value, pointer, size);
|
||||
if (pointer && (size > 0))
|
||||
{
|
||||
new_var->value = malloc (size);
|
||||
if (new_var->value)
|
||||
memcpy (new_var->value, pointer, size);
|
||||
}
|
||||
else
|
||||
{
|
||||
new_var->value = NULL;
|
||||
}
|
||||
new_var->size = size;
|
||||
|
||||
new_var->prev_var = item->last_var;
|
||||
|
||||
+20
-5
@@ -65,8 +65,11 @@ volatile sig_atomic_t signal_sigusr2_count = 0;
|
||||
*/
|
||||
|
||||
void
|
||||
signal_sighup_cb ()
|
||||
signal_sighup_cb (int signo)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) signo;
|
||||
|
||||
signal_sighup_count++;
|
||||
}
|
||||
|
||||
@@ -75,8 +78,11 @@ signal_sighup_cb ()
|
||||
*/
|
||||
|
||||
void
|
||||
signal_sigquit_cb ()
|
||||
signal_sigquit_cb (int signo)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) signo;
|
||||
|
||||
signal_sigquit_count++;
|
||||
}
|
||||
|
||||
@@ -85,8 +91,11 @@ signal_sigquit_cb ()
|
||||
*/
|
||||
|
||||
void
|
||||
signal_sigterm_cb ()
|
||||
signal_sigterm_cb (int signo)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) signo;
|
||||
|
||||
signal_sigterm_count++;
|
||||
}
|
||||
|
||||
@@ -95,8 +104,11 @@ signal_sigterm_cb ()
|
||||
*/
|
||||
|
||||
void
|
||||
signal_sigusr1_cb ()
|
||||
signal_sigusr1_cb (int signo)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) signo;
|
||||
|
||||
signal_sigusr1_count++;
|
||||
}
|
||||
|
||||
@@ -105,8 +117,11 @@ signal_sigusr1_cb ()
|
||||
*/
|
||||
|
||||
void
|
||||
signal_sigusr2_cb ()
|
||||
signal_sigusr2_cb (int signo)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) signo;
|
||||
|
||||
signal_sigusr2_count++;
|
||||
}
|
||||
|
||||
|
||||
@@ -3253,7 +3253,8 @@ string_iconv_to_internal (const char *charset, const char *string)
|
||||
}
|
||||
|
||||
/*
|
||||
* Converts internal string to terminal charset, for display.
|
||||
* Converts internal string to terminal charset, for display or write of
|
||||
* configuration files.
|
||||
*
|
||||
* Note: result must be freed after use.
|
||||
*/
|
||||
@@ -3270,6 +3271,10 @@ string_iconv_from_internal (const char *charset, const char *string)
|
||||
if (!input)
|
||||
return NULL;
|
||||
|
||||
/* if the locale is wrong, we keep UTF-8 */
|
||||
if (!weechat_locale_ok)
|
||||
return input;
|
||||
|
||||
/*
|
||||
* optimized for UTF-8: if charset is NULL => we use term charset => if
|
||||
* this charset is already UTF-8, then no iconv is needed
|
||||
|
||||
@@ -118,6 +118,7 @@ extern char *weechat_data_dir;
|
||||
extern char *weechat_state_dir;
|
||||
extern char *weechat_cache_dir;
|
||||
extern char *weechat_runtime_dir;
|
||||
extern int weechat_locale_ok;
|
||||
extern char *weechat_local_charset;
|
||||
extern int weechat_plugin_no_dlclose;
|
||||
extern int weechat_no_gnutls;
|
||||
|
||||
@@ -150,8 +150,11 @@ gui_main_get_password (const char **prompt, char *password, int size)
|
||||
*/
|
||||
|
||||
void
|
||||
gui_main_signal_sigint ()
|
||||
gui_main_signal_sigint (int signo)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) signo;
|
||||
|
||||
weechat_quit = 1;
|
||||
}
|
||||
|
||||
@@ -253,8 +256,11 @@ gui_main_init ()
|
||||
*/
|
||||
|
||||
void
|
||||
gui_main_signal_sigwinch ()
|
||||
gui_main_signal_sigwinch (int signo)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) signo;
|
||||
|
||||
gui_signal_sigwinch_received = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#ifndef WEECHAT_NCURSES_FAKE_H
|
||||
#define WEECHAT_NCURSES_FAKE_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#define ERR (-1)
|
||||
@@ -71,7 +72,6 @@ struct _window
|
||||
};
|
||||
typedef struct _window WINDOW;
|
||||
|
||||
typedef unsigned char bool;
|
||||
typedef int attr_t;
|
||||
typedef unsigned chtype;
|
||||
|
||||
|
||||
@@ -72,6 +72,7 @@ target_link_libraries(${EXECUTABLE}
|
||||
# It may be removed in future.
|
||||
add_custom_command(
|
||||
TARGET ${EXECUTABLE}
|
||||
POST_BUILD
|
||||
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}"
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
|
||||
|
||||
@@ -265,15 +265,7 @@ logger_buffer_create_log_file (struct t_logger_buffer *logger_buffer)
|
||||
|
||||
/* create directory */
|
||||
if (!logger_create_directory ())
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
NULL, 0, "no_log",
|
||||
_("%s%s: unable to create directory for logs "
|
||||
"(\"%s\")"),
|
||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||
weechat_config_string (logger_config_file_path));
|
||||
return 0;
|
||||
}
|
||||
if (!logger_buffer->log_filename)
|
||||
logger_buffer_set_log_filename (logger_buffer);
|
||||
if (!logger_buffer->log_filename)
|
||||
|
||||
@@ -182,7 +182,15 @@ logger_create_directory ()
|
||||
if (file_path)
|
||||
{
|
||||
if (!weechat_mkdir_parents (file_path, 0700))
|
||||
{
|
||||
weechat_printf_date_tags (
|
||||
NULL, 0, "no_log",
|
||||
_("%s%s: unable to create directory for logs "
|
||||
"(\"%s\")"),
|
||||
weechat_prefix ("error"), LOGGER_PLUGIN_NAME,
|
||||
file_path);
|
||||
rc = 0;
|
||||
}
|
||||
free (file_path);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -579,11 +579,15 @@ weechat_perl_load (const char *filename, const char *code)
|
||||
wcwidth160 = wcwidth (160);
|
||||
perl_construct (perl_current_interpreter);
|
||||
|
||||
#if PERL_REVISION >= 6 || (PERL_REVISION == 5 && PERL_VERSION >= 28) || (PERL_REVISION == 5 && PERL_VERSION == 27 && PERL_SUBVERSION >= 9)
|
||||
if (wcwidth (160) != wcwidth160)
|
||||
{
|
||||
/* restore the locale that's broken in some versions of Perl */
|
||||
Perl_setlocale (LC_ALL, "");
|
||||
}
|
||||
#else
|
||||
(void) wcwidth160;
|
||||
#endif
|
||||
|
||||
temp_script.interpreter = (PerlInterpreter *) perl_current_interpreter;
|
||||
perl_parse (perl_current_interpreter, weechat_perl_api_init,
|
||||
@@ -1320,11 +1324,15 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
wcwidth160 = wcwidth (160);
|
||||
perl_construct (perl_main);
|
||||
|
||||
#if PERL_REVISION >= 6 || (PERL_REVISION == 5 && PERL_VERSION >= 28) || (PERL_REVISION == 5 && PERL_VERSION == 27 && PERL_SUBVERSION >= 9)
|
||||
if (wcwidth (160) != wcwidth160)
|
||||
{
|
||||
/* restore the locale that's broken in some versions of Perl */
|
||||
Perl_setlocale (LC_ALL, "");
|
||||
}
|
||||
#else
|
||||
(void) wcwidth160;
|
||||
#endif
|
||||
|
||||
perl_parse (perl_main, weechat_perl_api_init, perl_args_count,
|
||||
perl_args, NULL);
|
||||
|
||||
@@ -994,7 +994,7 @@ error:
|
||||
* {
|
||||
* "request": "POST /api/input",
|
||||
* "body": {
|
||||
* "buffer": "irc.libera.#weechat",
|
||||
* "buffer_name": "irc.libera.#weechat",
|
||||
* "command": "hello!"
|
||||
* }
|
||||
* }
|
||||
@@ -1002,10 +1002,10 @@ error:
|
||||
* It is converted to an HTTP request which could have been:
|
||||
*
|
||||
* POST /api/input HTTP/1.1
|
||||
* Content-Length: 53
|
||||
* Content-Length: 58
|
||||
* Content-Type: application/json
|
||||
*
|
||||
* {"buffer": "irc.libera.#weechat","command": "hello!"}
|
||||
* {"buffer_name": "irc.libera.#weechat","command": "hello!"}
|
||||
*
|
||||
* The JSON can also be an array of requests, for example to fetch all buffers
|
||||
* data and synchronize at same time:
|
||||
|
||||
@@ -13,7 +13,7 @@ info:
|
||||
license:
|
||||
name: CC BY-NC-SA 4.0
|
||||
url: https://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
version: 0.2.0
|
||||
version: 0.3.0
|
||||
|
||||
externalDocs:
|
||||
url: https://weechat.org/doc/
|
||||
@@ -991,7 +991,7 @@ components:
|
||||
format: int64
|
||||
description: Buffer identifier (≥ 0)
|
||||
example: 1709932823238637
|
||||
buffer:
|
||||
buffer_name:
|
||||
type: string
|
||||
description: >-
|
||||
Buffer full name
|
||||
|
||||
@@ -1589,7 +1589,8 @@ relay_client_new_with_infolist (struct t_infolist *infolist)
|
||||
if (new_client)
|
||||
{
|
||||
new_client->id = weechat_infolist_integer (infolist, "id");
|
||||
new_client->desc = NULL;
|
||||
str = weechat_infolist_string (infolist, "desc");
|
||||
new_client->desc = (str) ? strdup (str) : NULL;
|
||||
new_client->sock = weechat_infolist_integer (infolist, "sock");
|
||||
new_client->server_port = weechat_infolist_integer (infolist, "server_port");
|
||||
/* "tls" replaces "ssl" in WeeChat 4.0.0 */
|
||||
@@ -1696,6 +1697,11 @@ relay_client_new_with_infolist (struct t_infolist *infolist)
|
||||
new_client->partial_ws_frame_size = ws_frame_size;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
new_client->partial_ws_frame = NULL;
|
||||
new_client->partial_ws_frame_size = 0;
|
||||
}
|
||||
str = weechat_infolist_string (infolist, "partial_message");
|
||||
new_client->partial_message = (str) ? strdup (str) : NULL;
|
||||
|
||||
|
||||
+2
-2
@@ -39,8 +39,8 @@
|
||||
# devel-number the devel version as hex number ("0x04010000" for "4.1.0-dev")
|
||||
#
|
||||
|
||||
weechat_stable="4.5.0"
|
||||
weechat_devel="4.5.0"
|
||||
weechat_stable="4.5.2"
|
||||
weechat_devel="4.5.3-dev"
|
||||
|
||||
stable_major=$(echo "${weechat_stable}" | cut -d"." -f1)
|
||||
stable_minor=$(echo "${weechat_stable}" | cut -d"." -f2)
|
||||
|
||||
Reference in New Issue
Block a user