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

Compare commits

..

33 Commits

Author SHA1 Message Date
Sébastien Helleu 9df8044cae irc: fix send of split messages when server option "anti_flood" set to 0 (issue #2172) 2024-08-15 20:23:12 +02:00
Sébastien Helleu 679a87c571 Version 4.3.7-dev 2024-08-15 20:21:01 +02:00
Sébastien Helleu da301b41d3 Version 4.3.6 2024-08-15 15:21:34 +02:00
LuK1337 c12c488933 core: replace manual endianness swap with htobe64() call
This fixes generation of TOTP and tests on FreeBSD.
2024-08-14 12:19:52 +02:00
Sébastien Helleu 345d99a9b5 relay/api: fix timezone of dates sent to clients (issue #2151) 2024-07-16 23:50:24 +02:00
Sébastien Helleu c6ad4bfd20 relay/api: remove unused macro MSG_ADD_HDATA_TIME (issue #2151) 2024-07-16 23:50:16 +02:00
Sébastien Helleu 43697033cf relay: fix crash when sending data to a remote buffer when the remote has been deleted (issue #2157) 2024-07-16 23:48:53 +02:00
Sébastien Helleu eb7fd8ac9e Version 4.3.6-dev 2024-07-16 22:38:57 +02:00
Sébastien Helleu 2325d43447 Version 4.3.5 2024-07-16 22:27:17 +02:00
Sébastien Helleu 7cb991667c ruby: fix crash in plugin initialization (issue #2163)
This regression was introduced by commit
3d041a0364.
2024-07-15 09:39:49 +02:00
Sébastien Helleu 22370481a0 Version 4.3.5-dev 2024-07-03 22:02:03 +02:00
Sébastien Helleu 3d40f96e2d Version 4.3.4 2024-07-03 21:50:54 +02:00
Sébastien Helleu f29dd1585e relay/api: fix "body_type" returned when lines or nicks of a buffer are requested 2024-06-30 00:41:49 +02:00
Sébastien Helleu 3d041a0364 ruby: fix builtin functions not available (issue #2109) 2024-06-29 08:01:38 +02:00
Sébastien Helleu f418b4204e core: add missing command /filter in ChangeLog (issue #1956) 2024-06-29 08:00:16 +02:00
Brad Smith 680426100d tests: fix compilation of tests on OpenBSD 2024-06-28 23:23:45 +02:00
Sébastien Helleu b1a4cd3fab core: fix crash when deleting a bar that has no items (issue #2138) 2024-06-27 18:55:01 +02:00
Sébastien Helleu 486ea8837a python: call empty eval workaround before auto-load of scripts (issue #2046, issue #2126)
This should definitely fix the crash with Python 3.12, even when scripts are
auto-loaded (the previous fix was working only when the scripts are loaded
manually).
2024-06-26 19:07:35 +02:00
Sébastien Helleu e5725a366d scripts: fix reset of "quiet" status in case of nested calls (issue #2046, issue #2126) 2024-06-26 19:07:33 +02:00
Sébastien Helleu 1de31fc6a2 core: update ChangeLog (issue #2046, issue #2126) 2024-06-23 18:45:48 +02:00
Trygve Aaberge 4dd47188f5 python: unload script interpreters before eval interpreter
The workaround in the previous commit didn't work for one user, so try
unloading the eval interpreter last to see if that helps.
2024-06-23 18:43:27 +02:00
Trygve Aaberge 35df848e73 python: add workaround for crash on unload with Python 3.12
Python 3.12 has a bug where it crashes when you unload all the
interpreters unless you make sure to unload the first interpreter you
loaded last. For some reason, loading the eval interpreter before any
scripts also seems to prevent the issue, even if the eval interpreter is
unloaded before the other interpreters.

So this just evals an empty string at the end of initing the Python
plugin if the Python version is 3.12, to make sure the eval interpreter
is loaded first.

Fixes #2046
2024-06-23 18:43:25 +02:00
Sébastien Helleu 1cec7e8126 Version 4.3.4-dev 2024-06-22 11:04:53 +02:00
Sébastien Helleu a70ca92b74 Version 4.3.3 2024-06-22 11:02:31 +02:00
Sébastien Helleu 684f10c442 debian: update changelog 2024-06-22 10:10:23 +02:00
Sébastien Helleu 2d081b0ef3 core: add version 4.3.3 in release notes 2024-06-22 09:28:46 +02:00
Sébastien Helleu 19be144d2f tests: add tests of hdata returning NULL pointer in eval 2024-06-22 09:09:12 +02:00
Sébastien Helleu fb9a69c6ae core, plugins: return "0x0" instead of "(nil)" for pointers formatted in strings
This is a partial revert of the commit
965beb37de.
2024-06-22 08:59:50 +02:00
Sébastien Helleu c82486d437 core: add issue #446 in ChangeLog 2024-06-10 13:45:48 +02:00
Sébastien Helleu 802e462ce5 perl: fix quote of variable PERL_LFLAGS in CMake file 2024-06-10 09:23:03 +02:00
LuK1337 126a42235c tests: relay: fix relay_http_parse_header function prototype 2024-06-07 12:45:12 +02:00
Sébastien Helleu ddb1db9a2c tests: reset option relay.network.websocket_allowed_origins after changing it in tests (issue #2127)
This fixes a test failure when the test changing the option is executed before
this one:

…/tests/unit/plugins/relay/api/test-relay-api-protocol.cpp:799: error: Failure in TEST(RelayApiProtocolWithClient, RecvJson)
        expected <HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: Z5uTZwvwYNDm9w4HFGk26ijp/p0=

>
        but was  <HTTP/1.1 403 Forbidden
Content-Length: 0

>
        difference starts at position 9 at: < HTTP/1.1 403 Forbid>
2024-06-07 12:36:58 +02:00
Sébastien Helleu 26c000c6b0 Version 4.3.3-dev 2024-06-06 21:50:46 +02:00
43 changed files with 367 additions and 134 deletions
+47 -2
View File
@@ -8,6 +8,51 @@
:see-release-notes: If you are upgrading: please see release notes.
:breaking: pass:quotes[*[breaking]*]
[[v4.3.7]]
== Version 4.3.7 (under dev)
[[v4.3.7_fixed]]
=== Fixed
* irc: fix send of split messages when server option "anti_flood" set to 0 (issue #2172)
[[v4.3.6]]
== Version 4.3.6 (2024-08-15)
[[v4.3.6_fixed]]
=== Fixed
* core: fix generation of TOTP on FreeBSD (issue #2171)
* relay/api: fix crash when sending data to a remote buffer when the remote has been deleted (issue #2157)
* relay/api: fix timezone of dates sent to clients (issue #2151)
[[v4.3.5]]
== Version 4.3.5 (2024-07-16)
[[v4.3.5_fixed]]
=== Fixed
* ruby: fix crash in plugin initialization (issue #2163)
[[v4.3.4]]
== Version 4.3.4 (2024-07-03)
[[v4.3.4_fixed]]
=== Fixed
* python: fix crash on quit with Python 3.12 (issue #2046, issue #2126)
* core: fix crash when deleting a bar that has no items (issue #2138)
* ruby: fix builtin functions not available (issue #2109)
* relay/api: fix "body_type" returned when lines or nicks of a buffer are requested
[[v4.3.3]]
== Version 4.3.3 (2024-06-22)
[[v4.3.3_fixed]]
=== Fixed
* core, plugins: return "0x0" instead of "(nil)" for pointers formatted in strings
[[v4.3.2]]
== Version 4.3.2 (2024-06-06)
@@ -66,7 +111,7 @@
* {breaking} core: rename variables with creation time in hdata "hotlist": "creation_time.tv_sec" to "time" and "creation_time.tv_usec" to "time_usec"
* {breaking} api: return `-1` or `1` if one input string is NULL and not the other in string comparison functions
* {breaking} api: use whole replacement string instead of first char in function string_remove_color
* core: use nick offline color for nick in action message
* core: use nick offline color for nick in action message (issue #446)
* core: display a specific message when the value of option is unchanged after `/set` command
* core: add variable `${highlight}` in option weechat.look.buffer_time_format (issue #2079)
* core: reintroduce help on the variables and operators in `/help eval` (issue #2005)
@@ -186,7 +231,7 @@ New features::
* core: move key kbd:[Ctrl+s], kbd:[Ctrl+u] to kbd:[Alt+Shift+U] (issue #2040)
* core: display only version with command `/version`, add options `-o` and `-ol` in command `/upgrade`
* core: add number of processes in command `/sys waitpid`
* core, alias, trigger: allow wildcard in commands `/bar`, `/item`, `/proxy`, `/alias` and `/trigger` (issue #1956)
* core, alias, trigger: allow wildcard in commands `/bar`, `/filter`, `/item`, `/proxy`, `/alias` and `/trigger` (issue #1956)
* api: add support of format/translation of command arguments description line by line (issue #2005)
* api: add function string_concat (issue #2005)
* api: add functions util_strftimeval, util_parse_time, printf_datetime_tags, printf_y_datetime_tags (issue #649)
+20
View File
@@ -11,6 +11,26 @@ It is recommended to read it when upgrading to a new stable version. +
For a complete list of changes, please look at ChangeLog.
[[v4.3.6]]
== Version 4.3.6 (2024-08-15)
No release notes.
[[v4.3.5]]
== Version 4.3.5 (2024-07-16)
No release notes.
[[v4.3.4]]
== Version 4.3.4 (2024-07-03)
No release notes.
[[v4.3.3]]
== Version 4.3.3 (2024-06-22)
No release notes.
[[v4.3.2]]
== Version 4.3.2 (2024-06-06)
+16
View File
@@ -1,3 +1,19 @@
weechat (4.3.1-1) unstable; urgency=medium
* New upstream release (Closes: #1067608)
- fix FTBFS against libgcrypt 1.11 (Closes: #1071960)
* Add build dependency on libcjson-dev
* Replace pkg-config build dependency by pkgconf
* Minor updates in debian/copyright
-- Emmanuel Bouthenot <kolter@debian.org> Sat, 01 Jun 2024 14:21:02 +0000
weechat (4.1.1-1) unstable; urgency=medium
* New upstream release (Closes: #1055278)
-- Emmanuel Bouthenot <kolter@debian.org> Fri, 03 Nov 2023 20:23:37 +0000
weechat (4.0.5-1) unstable; urgency=medium
* New upstream release
+5 -14
View File
@@ -38,6 +38,10 @@
#include "core-string.h"
#include "../plugins/plugin.h"
#ifdef htonll
#define htobe64 htonll
#endif
char *weecrypto_hash_algo_string[] = {
"crc32",
"md5",
@@ -520,20 +524,7 @@ weecrypto_totp_generate_internal (const char *secret, int length_secret,
int rc, offset, length;
unsigned long bin_code;
#if __BYTE_ORDER == __BIG_ENDIAN
/* Big endian does not need to swap bytes here! */
moving_factor_swapped = moving_factor;
#else
moving_factor_swapped = (moving_factor >> 56)
| ((moving_factor << 40) & 0x00FF000000000000)
| ((moving_factor << 24) & 0x0000FF0000000000)
| ((moving_factor << 8) & 0x000000FF00000000)
| ((moving_factor >> 8) & 0x00000000FF000000)
| ((moving_factor >> 24) & 0x0000000000FF0000)
| ((moving_factor >> 40) & 0x000000000000FF00)
| (moving_factor << 56);
#endif
moving_factor_swapped = htobe64 (moving_factor);
rc = weecrypto_hmac (secret, length_secret,
&moving_factor_swapped, sizeof (moving_factor_swapped),
GCRY_MD_SHA1,
+10 -8
View File
@@ -1149,9 +1149,9 @@ eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
int type, debug_id;
struct t_hashtable *hashtable;
EVAL_DEBUG_MSG(1, "eval_hdata_get_value(\"%s\", %p, \"%s\")",
EVAL_DEBUG_MSG(1, "eval_hdata_get_value(\"%s\", 0x%lx, \"%s\")",
(hdata) ? hdata->name : "(null)",
pointer,
(unsigned long)pointer,
path);
value = NULL;
@@ -1167,7 +1167,7 @@ eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
/* no path? just return current pointer as string */
if (!path || !path[0])
{
snprintf (str_value, sizeof (str_value), "%p", pointer);
snprintf (str_value, sizeof (str_value), "0x%lx", (unsigned long)pointer);
value = strdup (str_value);
goto end;
}
@@ -1224,7 +1224,8 @@ eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
break;
case WEECHAT_HDATA_POINTER:
pointer = hdata_pointer (hdata, pointer, var_name);
snprintf (str_value, sizeof (str_value), "%p", pointer);
snprintf (str_value, sizeof (str_value),
"0x%lx", (unsigned long)pointer);
value = strdup (str_value);
break;
case WEECHAT_HDATA_TIME:
@@ -1273,7 +1274,7 @@ eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
case HASHTABLE_POINTER:
case HASHTABLE_BUFFER:
snprintf (str_value, sizeof (str_value),
"%p", ptr_value);
"0x%lx", (unsigned long)ptr_value);
value = strdup (str_value);
break;
case HASHTABLE_TIME:
@@ -1288,7 +1289,8 @@ eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path,
}
else
{
snprintf (str_value, sizeof (str_value), "%p", pointer);
snprintf (str_value, sizeof (str_value),
"0x%lx", (unsigned long)pointer);
value = strdup (str_value);
}
break;
@@ -2432,8 +2434,8 @@ eval_replace_regex (const char *string, regex_t *regex, const char *replace,
result = NULL;
EVAL_DEBUG_MSG(1, "eval_replace_regex(\"%s\", %p, \"%s\")",
string, regex, replace);
EVAL_DEBUG_MSG(1, "eval_replace_regex(\"%s\", 0x%lx, \"%s\")",
string, (unsigned long)regex, replace);
if (!string || !regex || !replace)
goto end;
+2 -1
View File
@@ -559,7 +559,8 @@ hashtable_to_string (enum t_hashtable_type type, const void *value)
break;
case HASHTABLE_POINTER:
case HASHTABLE_BUFFER:
snprintf (str_value, sizeof (str_value), "%p", value);
snprintf (str_value, sizeof (str_value), "0x%lx",
(unsigned long)value);
return str_value;
break;
case HASHTABLE_TIME:
+2 -1
View File
@@ -43,7 +43,8 @@ struct t_infolist_item;
#define HASHTABLE_SET_POINTER(__name, __pointer) \
if (__pointer) \
{ \
snprintf (str_value, sizeof (str_value), "%p", __pointer); \
snprintf (str_value, sizeof (str_value), \
"0x%lx", (unsigned long)__pointer); \
hashtable_set (hashtable, __name, str_value); \
} \
else \
+1 -1
View File
@@ -265,7 +265,7 @@ input_data (struct t_gui_buffer *buffer, const char *data,
}
/* execute modifier "input_text_for_buffer" */
snprintf (str_buffer, sizeof (str_buffer), "%p", buffer);
snprintf (str_buffer, sizeof (str_buffer), "0x%lx", (unsigned long)buffer);
new_data = hook_modifier_exec (NULL,
"input_text_for_buffer",
str_buffer,
+1 -1
View File
@@ -947,7 +947,7 @@ gui_bar_item_input_text_cb (const void *pointer, void *data,
}
/* for modifiers */
snprintf (str_buffer, sizeof (str_buffer), "%p", buffer);
snprintf (str_buffer, sizeof (str_buffer), "0x%lx", (unsigned long)buffer);
/* execute modifier with basic string (without cursor tag) */
ptr_input = NULL;
+8 -1
View File
@@ -434,7 +434,7 @@ gui_bar_check_conditions (struct t_gui_bar *bar,
*/
snprintf (str_modifier, sizeof (str_modifier),
"bar_condition_%s", bar->name);
snprintf (str_window, sizeof (str_window), "%p", window);
snprintf (str_window, sizeof (str_window), "0x%lx", (unsigned long)window);
str_displayed = hook_modifier_exec (NULL,
str_modifier,
str_window,
@@ -788,6 +788,13 @@ gui_bar_set_items_array (struct t_gui_bar *bar, const char *items)
&bar->items_suffix[i][j]);
}
}
else
{
bar->items_buffer[i] = NULL;
bar->items_prefix[i] = NULL;
bar->items_name[i] = NULL;
bar->items_suffix[i] = NULL;
}
}
}
string_free_split (tmp_array);
+2 -2
View File
@@ -677,8 +677,8 @@ gui_chat_printf_datetime_tags_internal (struct t_gui_buffer *buffer,
if (modifier_data && string)
{
snprintf (modifier_data, length_data,
"%p;%s",
buffer,
"0x%lx;%s",
(unsigned long)buffer,
(tags) ? tags : "");
if (display_time)
{
+1 -1
View File
@@ -192,7 +192,7 @@ gui_history_add (struct t_gui_buffer *buffer, const char *string)
{
char *string2, str_buffer[128];
snprintf (str_buffer, sizeof (str_buffer), "%p", buffer);
snprintf (str_buffer, sizeof (str_buffer), "0x%lx", (unsigned long)buffer);
string2 = hook_modifier_exec (NULL, "history_add", str_buffer, string);
/*
+2 -1
View File
@@ -158,7 +158,8 @@ gui_input_text_changed_modifier_and_signal (struct t_gui_buffer *buffer,
gui_buffer_undo_add (buffer);
/* send modifier, and change input if needed */
snprintf (str_buffer, sizeof (str_buffer), "%p", buffer);
snprintf (str_buffer, sizeof (str_buffer),
"0x%lx", (unsigned long)buffer);
new_input = hook_modifier_exec (NULL,
"input_text_content",
str_buffer,
+2 -2
View File
@@ -69,8 +69,8 @@ gui_nicklist_send_signal (const char *signal, struct t_gui_buffer *buffer,
if (str_args)
{
snprintf (str_args, length,
"%p,%s",
buffer,
"0x%lx,%s",
(unsigned long)buffer,
(arguments) ? arguments : "");
(void) hook_signal_send (signal,
WEECHAT_HOOK_SIGNAL_STRING, str_args);
+1 -1
View File
@@ -155,7 +155,7 @@ end:
}
/* add pointer and plugin name */
snprintf (str_value, sizeof (str_value), "%p", ptr_buffer);
snprintf (str_value, sizeof (str_value), "0x%lx", (unsigned long)ptr_buffer);
weechat_hashtable_set (info, "pointer", str_value);
weechat_hashtable_set (info, "plugin",
weechat_buffer_get_string (ptr_buffer, "plugin"));
+2 -1
View File
@@ -82,7 +82,8 @@ fset_mouse_focus_cb (const void *pointer, void *data, struct t_hashtable *info)
if (!ptr_fset_option)
return info;
snprintf (str_value, sizeof (str_value), "%p", ptr_fset_option);
snprintf (str_value, sizeof (str_value),
"0x%lx", (unsigned long)ptr_fset_option);
weechat_hashtable_set (info, "fset_option", str_value);
snprintf (str_value, sizeof (str_value), "%ld", option_index);
weechat_hashtable_set (info, "fset_option_index", str_value);
+16 -6
View File
@@ -742,13 +742,15 @@ weechat_guile_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
int exec_commands, const char *code)
{
void *func_argv[1], *result;
int old_guile_quiet;
if (!guile_script_eval)
{
old_guile_quiet = guile_quiet;
guile_quiet = 1;
guile_script_eval = weechat_guile_load (WEECHAT_SCRIPT_EVAL_NAME,
GUILE_EVAL_SCRIPT);
guile_quiet = 0;
guile_quiet = old_guile_quiet;
if (!guile_script_eval)
return 0;
}
@@ -777,9 +779,10 @@ weechat_guile_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
if (!weechat_config_boolean (guile_config_look_eval_keep_context))
{
old_guile_quiet = guile_quiet;
guile_quiet = 1;
weechat_guile_unload (guile_script_eval);
guile_quiet = 0;
guile_quiet = old_guile_quiet;
guile_script_eval = NULL;
}
@@ -796,7 +799,7 @@ weechat_guile_command_cb (const void *pointer, void *data,
int argc, char **argv, char **argv_eol)
{
char *ptr_name, *ptr_code, *path_script;
int i, send_to_buffer_as_input, exec_commands;
int i, send_to_buffer_as_input, exec_commands, old_guile_quiet;
/* make C compiler happy */
(void) pointer;
@@ -855,6 +858,7 @@ weechat_guile_command_cb (const void *pointer, void *data,
|| (weechat_strcmp (argv[1], "reload") == 0)
|| (weechat_strcmp (argv[1], "unload") == 0))
{
old_guile_quiet = guile_quiet;
ptr_name = argv_eol[2];
if (strncmp (ptr_name, "-q ", 3) == 0)
{
@@ -884,7 +888,7 @@ weechat_guile_command_cb (const void *pointer, void *data,
/* unload guile script */
weechat_guile_unload_name (ptr_name);
}
guile_quiet = 0;
guile_quiet = old_guile_quiet;
}
else if (weechat_strcmp (argv[1], "eval") == 0)
{
@@ -1243,6 +1247,7 @@ int
weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
{
char str_version[128];
int old_guile_quiet;
/* make C compiler happy */
(void) argc;
@@ -1316,11 +1321,13 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
guile_data.callback_signal_debug_dump = &weechat_guile_signal_debug_dump_cb;
guile_data.callback_signal_script_action = &weechat_guile_signal_script_action_cb;
guile_data.callback_load_file = &weechat_guile_load_cb;
guile_data.init_before_autoload = NULL;
guile_data.unload_all = &weechat_guile_unload_all;
old_guile_quiet = guile_quiet;
guile_quiet = 1;
plugin_script_init (weechat_guile_plugin, &guile_data);
guile_quiet = 0;
guile_quiet = old_guile_quiet;
plugin_script_display_short_list (weechat_guile_plugin,
guile_scripts);
@@ -1336,7 +1343,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
int old_guile_quiet;
/* unload all scripts */
old_guile_quiet = guile_quiet;
guile_quiet = 1;
if (guile_script_eval)
{
@@ -1344,7 +1354,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
guile_script_eval = NULL;
}
plugin_script_end (plugin, &guile_data);
guile_quiet = 0;
guile_quiet = old_guile_quiet;
/* unprotect module */
weechat_guile_catch (scm_gc_unprotect_object, (void *)guile_module_weechat);
+2 -1
View File
@@ -661,7 +661,8 @@ irc_bar_item_focus_buffer_nicklist (const void *pointer, void *data,
ptr_nick = irc_nick_search (ptr_server, ptr_channel, nick);
if (ptr_nick)
{
snprintf (str_value, sizeof (str_value), "%p", ptr_nick);
snprintf (str_value, sizeof (str_value),
"0x%lx", (unsigned long)ptr_nick);
weechat_hashtable_set (info, "irc_nick", str_value);
if (ptr_nick->host)
+1 -1
View File
@@ -57,7 +57,7 @@ irc_info_create_string_with_pointer (char **string, void *pointer)
*string = malloc (64);
if (*string)
{
snprintf (*string, 64, "%p", pointer);
snprintf (*string, 64, "0x%lx", (unsigned long)pointer);
}
}
}
+8 -2
View File
@@ -2988,8 +2988,14 @@ irc_server_outqueue_send (struct t_irc_server *server)
if (!server->outqueue[priority])
continue;
irc_server_outqueue_send_one_msg (server, server->outqueue[priority]);
irc_server_outqueue_free (server, priority, server->outqueue[priority]);
/* send all messages with anti_flood == 0, or just one */
while (server->outqueue[priority])
{
irc_server_outqueue_send_one_msg (server, server->outqueue[priority]);
irc_server_outqueue_free (server, priority, server->outqueue[priority]);
if (anti_flood > 0)
break;
}
/*
* continue to send for immediate priority (= 0),
+2 -2
View File
@@ -143,8 +143,8 @@ irc_typing_channel_set_nick (struct t_irc_channel *channel, const char *nick,
char signal_data[1024];
snprintf (signal_data, sizeof (signal_data),
"%p;%s;%s",
channel->buffer,
"0x%lx;%s;%s",
(unsigned long)channel->buffer,
(state == IRC_CHANNEL_TYPING_STATE_ACTIVE) ? "typing" :
((state == IRC_CHANNEL_TYPING_STATE_PAUSED) ? "paused" : "off"),
nick);
+11 -4
View File
@@ -582,7 +582,7 @@ weechat_js_command_cb (const void *pointer, void *data,
int argc, char **argv, char **argv_eol)
{
char *ptr_name, *ptr_code, *path_script;
int i, send_to_buffer_as_input, exec_commands;
int i, send_to_buffer_as_input, exec_commands, old_js_quiet;
/* make C++ compiler happy */
(void) pointer;
@@ -641,6 +641,7 @@ weechat_js_command_cb (const void *pointer, void *data,
|| (weechat_strcmp (argv[1], "reload") == 0)
|| (weechat_strcmp (argv[1], "unload") == 0))
{
old_js_quiet = js_quiet;
ptr_name = argv_eol[2];
if (strncmp (ptr_name, "-q ", 3) == 0)
{
@@ -670,7 +671,7 @@ weechat_js_command_cb (const void *pointer, void *data,
/* unload javascript script */
weechat_js_unload_name (ptr_name);
}
js_quiet = 0;
js_quiet = old_js_quiet;
}
else if (weechat_strcmp (argv[1], "eval") == 0)
{
@@ -920,6 +921,7 @@ EXPORT int
weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
{
char str_interpreter[64];
int old_js_quiet;
/* make C compiler happy */
(void) argc;
@@ -953,11 +955,13 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
js_data.callback_signal_debug_dump = &weechat_js_signal_debug_dump_cb;
js_data.callback_signal_script_action = &weechat_js_signal_script_action_cb;
js_data.callback_load_file = &weechat_js_load_cb;
js_data.init_before_autoload = NULL;
js_data.unload_all = &weechat_js_unload_all;
old_js_quiet = js_quiet;
js_quiet = 1;
plugin_script_init (plugin, &js_data);
js_quiet = 0;
js_quiet = old_js_quiet;
plugin_script_display_short_list (weechat_js_plugin, js_scripts);
@@ -971,6 +975,9 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
EXPORT int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
int old_js_quiet;
old_js_quiet = js_quiet;
js_quiet = 1;
if (js_script_eval)
{
@@ -978,7 +985,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
js_script_eval = NULL;
}
plugin_script_end (plugin, &js_data);
js_quiet = 0;
js_quiet = old_js_quiet;
/* free some data */
if (js_action_install_list)
+17 -6
View File
@@ -861,13 +861,15 @@ weechat_lua_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
int exec_commands, const char *code)
{
void *func_argv[1], *result;
int old_lua_quiet;
if (!lua_script_eval)
{
old_lua_quiet = lua_quiet;
lua_quiet = 1;
lua_script_eval = weechat_lua_load (WEECHAT_SCRIPT_EVAL_NAME,
LUA_EVAL_SCRIPT);
lua_quiet = 0;
lua_quiet = old_lua_quiet;
if (!lua_script_eval)
return 0;
}
@@ -896,9 +898,10 @@ weechat_lua_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
if (!weechat_config_boolean (lua_config_look_eval_keep_context))
{
old_lua_quiet = lua_quiet;
lua_quiet = 1;
weechat_lua_unload (lua_script_eval);
lua_quiet = 0;
lua_quiet = old_lua_quiet;
lua_script_eval = NULL;
}
@@ -915,7 +918,7 @@ weechat_lua_command_cb (const void *pointer, void *data,
int argc, char **argv, char **argv_eol)
{
char *ptr_name, *ptr_code, *path_script;
int i, send_to_buffer_as_input, exec_commands;
int i, send_to_buffer_as_input, exec_commands, old_lua_quiet;
/* make C compiler happy */
(void) pointer;
@@ -974,6 +977,7 @@ weechat_lua_command_cb (const void *pointer, void *data,
|| (weechat_strcmp (argv[1], "reload") == 0)
|| (weechat_strcmp (argv[1], "unload") == 0))
{
old_lua_quiet = lua_quiet;
ptr_name = argv_eol[2];
if (strncmp (ptr_name, "-q ", 3) == 0)
{
@@ -1003,7 +1007,7 @@ weechat_lua_command_cb (const void *pointer, void *data,
/* unload lua script */
weechat_lua_unload_name (ptr_name);
}
lua_quiet = 0;
lua_quiet = old_lua_quiet;
}
else if (weechat_strcmp (argv[1], "eval") == 0)
{
@@ -1249,6 +1253,8 @@ weechat_lua_signal_script_action_cb (const void *pointer, void *data,
int
weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
{
int old_lua_quiet;
/* make C compiler happy */
(void) argc;
(void) argv;
@@ -1289,11 +1295,13 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
lua_data.callback_signal_debug_dump = &weechat_lua_signal_debug_dump_cb;
lua_data.callback_signal_script_action = &weechat_lua_signal_script_action_cb;
lua_data.callback_load_file = &weechat_lua_load_cb;
lua_data.init_before_autoload = NULL;
lua_data.unload_all = &weechat_lua_unload_all;
old_lua_quiet = lua_quiet;
lua_quiet = 1;
plugin_script_init (weechat_lua_plugin, &lua_data);
lua_quiet = 0;
lua_quiet = old_lua_quiet;
plugin_script_display_short_list (weechat_lua_plugin,
lua_scripts);
@@ -1309,7 +1317,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
int old_lua_quiet;
/* unload all scripts */
old_lua_quiet = lua_quiet;
lua_quiet = 1;
if (lua_script_eval)
{
@@ -1317,7 +1328,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
lua_script_eval = NULL;
}
plugin_script_end (plugin, &lua_data);
lua_quiet = 0;
lua_quiet = old_lua_quiet;
/* free some data */
if (lua_action_install_list)
+1 -1
View File
@@ -32,7 +32,7 @@ if(PERL_FOUND)
add_definitions(${PERL_CFLAGS})
include_directories(${PERL_INCLUDE_PATH})
# ugly hack to force linking against Dynaloader.a
string(REGEX MATCH "/[^ $]*/DynaLoader.a" PERL_DYNALOADER ${PERL_LFLAGS})
string(REGEX MATCH "/[^ $]*/DynaLoader.a" PERL_DYNALOADER "${PERL_LFLAGS}")
if(PERL_DYNALOADER)
string(REPLACE "${PERL_DYNALOADER}" "" PERL_LFLAGS "${PERL_LFLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${PERL_LFLAGS}")
+17 -6
View File
@@ -832,13 +832,15 @@ weechat_perl_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
int exec_commands, const char *code)
{
void *func_argv[1], *result;
int old_perl_quiet;
if (!perl_script_eval)
{
old_perl_quiet = perl_quiet;
perl_quiet = 1;
perl_script_eval = weechat_perl_load (WEECHAT_SCRIPT_EVAL_NAME,
PERL_EVAL_SCRIPT);
perl_quiet = 0;
perl_quiet = old_perl_quiet;
if (!perl_script_eval)
return 0;
}
@@ -867,9 +869,10 @@ weechat_perl_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
if (!weechat_config_boolean (perl_config_look_eval_keep_context))
{
old_perl_quiet = perl_quiet;
perl_quiet = 1;
weechat_perl_unload (perl_script_eval);
perl_quiet = 0;
perl_quiet = old_perl_quiet;
perl_script_eval = NULL;
}
@@ -886,7 +889,7 @@ weechat_perl_command_cb (const void *pointer, void *data,
int argc, char **argv, char **argv_eol)
{
char *ptr_name, *ptr_code, *path_script;
int i, send_to_buffer_as_input, exec_commands;
int i, send_to_buffer_as_input, exec_commands, old_perl_quiet;
/* make C compiler happy */
(void) pointer;
@@ -945,6 +948,7 @@ weechat_perl_command_cb (const void *pointer, void *data,
|| (weechat_strcmp (argv[1], "reload") == 0)
|| (weechat_strcmp (argv[1], "unload") == 0))
{
old_perl_quiet = perl_quiet;
ptr_name = argv_eol[2];
if (strncmp (ptr_name, "-q ", 3) == 0)
{
@@ -974,7 +978,7 @@ weechat_perl_command_cb (const void *pointer, void *data,
/* unload perl script */
weechat_perl_unload_name (ptr_name);
}
perl_quiet = 0;
perl_quiet = old_perl_quiet;
}
else if (weechat_strcmp (argv[1], "eval") == 0)
{
@@ -1243,6 +1247,8 @@ weechat_perl_signal_quit_upgrade_cb (const void *pointer, void *data,
int
weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
{
int old_perl_quiet;
#ifdef PERL_SYS_INIT3
int a;
char **perl_args_local;
@@ -1314,11 +1320,13 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
perl_data.callback_signal_debug_dump = &weechat_perl_signal_debug_dump_cb;
perl_data.callback_signal_script_action = &weechat_perl_signal_script_action_cb;
perl_data.callback_load_file = &weechat_perl_load_cb;
perl_data.init_before_autoload = NULL;
perl_data.unload_all = &weechat_perl_unload_all;
old_perl_quiet = perl_quiet;
perl_quiet = 1;
plugin_script_init (weechat_perl_plugin, &perl_data);
perl_quiet = 0;
perl_quiet = old_perl_quiet;
plugin_script_display_short_list (weechat_perl_plugin,
perl_scripts);
@@ -1337,7 +1345,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
int old_perl_quiet;
/* unload all scripts */
old_perl_quiet = perl_quiet;
perl_quiet = 1;
if (perl_script_eval)
{
@@ -1345,7 +1356,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
perl_script_eval = NULL;
}
plugin_script_end (plugin, &perl_data);
perl_quiet = 0;
perl_quiet = old_perl_quiet;
#ifndef MULTIPLICITY
/* free perl interpreter */
+12 -4
View File
@@ -870,7 +870,7 @@ weechat_php_command_cb (const void *pointer, void *data,
int argc, char **argv, char **argv_eol)
{
char *ptr_name, *ptr_code, *path_script;
int i, send_to_buffer_as_input, exec_commands;
int i, send_to_buffer_as_input, exec_commands, old_php_quiet;
/* make C compiler happy */
(void) pointer;
@@ -929,6 +929,7 @@ weechat_php_command_cb (const void *pointer, void *data,
|| (weechat_strcmp (argv[1], "reload") == 0)
|| (weechat_strcmp (argv[1], "unload") == 0))
{
old_php_quiet = php_quiet;
ptr_name = argv_eol[2];
if (strncmp (ptr_name, "-q ", 3) == 0)
{
@@ -958,7 +959,7 @@ weechat_php_command_cb (const void *pointer, void *data,
/* unload PHP script */
weechat_php_unload_name (ptr_name);
}
php_quiet = 0;
php_quiet = old_php_quiet;
}
else if (weechat_strcmp (argv[1], "eval") == 0)
{
@@ -1267,6 +1268,8 @@ php_weechat_log_message (char *message)
int
weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
{
int old_php_quiet;
/* make C compiler happy */
(void) argc;
(void) argv;
@@ -1302,6 +1305,7 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
php_data.callback_signal_debug_dump = &weechat_php_signal_debug_dump_cb;
php_data.callback_signal_script_action = &weechat_php_signal_script_action_cb;
php_data.callback_load_file = &weechat_php_load_cb;
php_data.init_before_autoload = NULL;
php_data.unload_all = &weechat_php_unload_all;
php_embed_module.startup = php_weechat_startup;
@@ -1314,9 +1318,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
PG(report_zend_debug) = 0; /* Turn off --enable-debug output */
old_php_quiet = php_quiet;
php_quiet = 1;
plugin_script_init (weechat_php_plugin, &php_data);
php_quiet = 0;
php_quiet = old_php_quiet;
plugin_script_display_short_list (weechat_php_plugin,
php_scripts);
@@ -1332,7 +1337,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
int old_php_quiet;
/* unload all scripts */
old_php_quiet = php_quiet;
php_quiet = 1;
if (php_script_eval)
{
@@ -1340,7 +1348,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
php_script_eval = NULL;
}
plugin_script_end (plugin, &php_data);
php_quiet = 0;
php_quiet = old_php_quiet;
if (weechat_php_func_map)
{
+1 -1
View File
@@ -512,7 +512,7 @@ plugin_api_info_buffer_cb (const void *pointer, void *data,
if (!ptr_buffer)
return NULL;
snprintf (value, sizeof (value), "%p", ptr_buffer);
snprintf (value, sizeof (value), "0x%lx", (unsigned long)ptr_buffer);
return strdup (value);
}
+8 -1
View File
@@ -317,6 +317,13 @@ plugin_script_init (struct t_weechat_plugin *weechat_plugin,
&plugin_script_info_version_cb,
weechat_plugin, NULL);
/*
* call function "init_before_autoload"
* (called even if no scripts are auto-loaded)
*/
if (plugin_data->init_before_autoload)
(void)(plugin_data->init_before_autoload) ();
/* check if auto-load of scripts is enabled */
info_auto_load_scripts = weechat_info_get ("auto_load_scripts", NULL);
auto_load_scripts = (info_auto_load_scripts
@@ -379,7 +386,7 @@ plugin_script_ptr2str (void *pointer)
return str_pointer[index_pointer];
snprintf (str_pointer[index_pointer], sizeof (str_pointer[index_pointer]),
"%p", pointer);
"0x%lx", (unsigned long)pointer);
return str_pointer[index_pointer];
}
+1
View File
@@ -122,6 +122,7 @@ struct t_plugin_script_data
void (*callback_load_file) (void *data, const char *filename);
/* functions */
void (*init_before_autoload) ();
void (*unload_all) ();
};
+35 -7
View File
@@ -1041,13 +1041,15 @@ weechat_python_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
int exec_commands, const char *code)
{
void *func_argv[1], *result;
int old_python_quiet;
if (!python_script_eval)
{
old_python_quiet = python_quiet;
python_quiet = 1;
python_script_eval = weechat_python_load (WEECHAT_SCRIPT_EVAL_NAME,
PYTHON_EVAL_SCRIPT);
python_quiet = 0;
python_quiet = old_python_quiet;
if (!python_script_eval)
return 0;
}
@@ -1076,15 +1078,33 @@ weechat_python_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
if (!weechat_config_boolean (python_config_look_eval_keep_context))
{
old_python_quiet = python_quiet;
python_quiet = 1;
weechat_python_unload (python_script_eval);
python_quiet = 0;
python_quiet = old_python_quiet;
python_script_eval = NULL;
}
return 1;
}
/*
* Function called before the auto-load of scripts.
*/
void
weechat_python_init_before_autoload ()
{
#if PY_VERSION_HEX >= 0x030C0000 && PY_VERSION_HEX < 0x030D0000
/*
* Workaround for crash when ending interpreters in Python 3.12:
* the first time we load a script, we eval an empty string.
* See https://github.com/weechat/weechat/issues/2046
*/
weechat_python_eval (NULL, 0, 0, "");
#endif
}
/*
* Callback for command "/python".
*/
@@ -1095,7 +1115,7 @@ weechat_python_command_cb (const void *pointer, void *data,
int argc, char **argv, char **argv_eol)
{
char *ptr_name, *ptr_code, *path_script;
int i, send_to_buffer_as_input, exec_commands;
int i, send_to_buffer_as_input, exec_commands, old_python_quiet;
/* make C compiler happy */
(void) pointer;
@@ -1154,6 +1174,7 @@ weechat_python_command_cb (const void *pointer, void *data,
|| (weechat_strcmp (argv[1], "reload") == 0)
|| (weechat_strcmp (argv[1], "unload") == 0))
{
old_python_quiet = python_quiet;
ptr_name = argv_eol[2];
if (strncmp (ptr_name, "-q ", 3) == 0)
{
@@ -1183,7 +1204,7 @@ weechat_python_command_cb (const void *pointer, void *data,
/* unload python script */
weechat_python_unload_name (ptr_name);
}
python_quiet = 0;
python_quiet = old_python_quiet;
}
else if (weechat_strcmp (argv[1], "eval") == 0)
{
@@ -1513,6 +1534,8 @@ weechat_python_signal_script_action_cb (const void *pointer, void *data,
int
weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
{
int old_python_quiet;
/* make C compiler happy */
(void) argc;
(void) argv;
@@ -1586,11 +1609,13 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
python_data.callback_signal_debug_dump = &weechat_python_signal_debug_dump_cb;
python_data.callback_signal_script_action = &weechat_python_signal_script_action_cb;
python_data.callback_load_file = &weechat_python_load_cb;
python_data.init_before_autoload = &weechat_python_init_before_autoload;
python_data.unload_all = &weechat_python_unload_all;
old_python_quiet = python_quiet;
python_quiet = 1;
plugin_script_init (weechat_python_plugin, &python_data);
python_quiet = 0;
python_quiet = old_python_quiet;
plugin_script_display_short_list (weechat_python_plugin,
python_scripts);
@@ -1617,15 +1642,18 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
int old_python_quiet;
/* unload all scripts */
old_python_quiet = python_quiet;
python_quiet = 1;
plugin_script_end (plugin, &python_data);
if (python_script_eval)
{
weechat_python_unload (python_script_eval);
python_script_eval = NULL;
}
plugin_script_end (plugin, &python_data);
python_quiet = 0;
python_quiet = old_python_quiet;
/* free python interpreter */
if (python_mainThreadState != NULL)
+6 -9
View File
@@ -55,16 +55,13 @@
cJSON_Create##__json_type ( \
weechat_hdata_##__var_type (hdata, pointer, __var_name)));
#define MSG_ADD_HDATA_TIME(__json_name, __var_name) \
date = weechat_hdata_time (hdata, pointer, __var_name); \
strftime (str_time, sizeof (str_time), "%FT%TZ", gmtime (&date)); \
MSG_ADD_STR_BUF(__json_name, str_time);
#define MSG_ADD_HDATA_TIME_USEC(__json_name, \
__var_name, __var_name_usec) \
time_value = weechat_hdata_time (hdata, pointer, __var_name); \
gmtime_r (&time_value, &gm_time); \
tv.tv_sec = mktime (&gm_time); \
local_time = localtime (&time_value); \
time_value -= local_time->tm_gmtoff; \
local_time = localtime (&time_value); \
tv.tv_sec = mktime (local_time); \
tv.tv_usec = weechat_hdata_integer (hdata, pointer, \
__var_name_usec); \
weechat_util_strftimeval (str_time, sizeof (str_time), \
@@ -497,7 +494,7 @@ relay_api_msg_line_data_to_json (struct t_gui_line_data *line_data,
int i, tags_count;
time_t time_value;
struct timeval tv;
struct tm gm_time;
struct tm *local_time;
hdata = relay_hdata_line_data;
pointer = line_data;
@@ -736,7 +733,7 @@ relay_api_msg_hotlist_to_json (struct t_gui_hotlist *hotlist)
cJSON *json, *json_count;
time_t time_value;
struct timeval tv;
struct tm gm_time;
struct tm *local_time;
char str_time[256], str_key[32];
int i, array_size;
long long buffer_id;
+18 -1
View File
@@ -511,6 +511,8 @@ RELAY_API_PROTOCOL_CALLBACK(buffers)
int nicks;
enum t_relay_api_colors colors;
json = NULL;
ptr_buffer = NULL;
if (client->http_req->num_path_items > 2)
{
@@ -536,6 +538,11 @@ RELAY_API_PROTOCOL_CALLBACK(buffers)
{
lines = relay_http_get_param_long (client->http_req, "lines", LONG_MAX);
json = relay_api_msg_lines_to_json (ptr_buffer, lines, colors);
if (json)
{
relay_api_msg_send_json (client, RELAY_HTTP_200_OK, NULL,
"line", json);
}
}
else if (strcmp (client->http_req->path_items[3], "nicks") == 0)
{
@@ -543,6 +550,11 @@ RELAY_API_PROTOCOL_CALLBACK(buffers)
weechat_hdata_pointer (relay_hdata_buffer,
ptr_buffer, "nicklist_root"),
colors);
if (json)
{
relay_api_msg_send_json (client, RELAY_HTTP_200_OK, NULL,
"nick_group", json);
}
}
else
{
@@ -580,13 +592,18 @@ RELAY_API_PROTOCOL_CALLBACK(buffers)
ptr_buffer = weechat_hdata_move (relay_hdata_buffer, ptr_buffer, 1);
}
}
if (json)
{
relay_api_msg_send_json (client, RELAY_HTTP_200_OK, NULL,
"buffer", json);
}
}
if (!json)
return RELAY_API_PROTOCOL_RC_MEMORY;
relay_api_msg_send_json (client, RELAY_HTTP_200_OK, NULL, "buffer", json);
cJSON_Delete (json);
return RELAY_API_PROTOCOL_RC_OK;
}
@@ -444,14 +444,17 @@ relay_remote_event_buffer_input_cb (const void *pointer,
struct t_gui_buffer *buffer,
const char *input_data)
{
struct t_relay_remote *remote;
struct t_relay_remote *ptr_remote;
cJSON *json, *json_body;
long long buffer_id;
/* make C compiler happy */
(void) pointer;
(void) data;
remote = (struct t_relay_remote *)pointer;
ptr_remote = relay_remote_search (weechat_buffer_get_string (buffer, "localvar_relay_remote"));
if (!ptr_remote)
return WEECHAT_RC_OK;
json = NULL;
@@ -475,7 +478,7 @@ relay_remote_event_buffer_input_cb (const void *pointer,
cJSON_CreateString (input_data));
cJSON_AddItemToObject (json, "body", json_body);
relay_remote_network_send_json (remote, json);
relay_remote_network_send_json (ptr_remote, json);
cJSON_Delete (json);
@@ -643,7 +646,7 @@ RELAY_REMOTE_EVENT_CALLBACK(buffer)
{
ptr_buffer = weechat_buffer_new_props (
full_name, buffer_props,
&relay_remote_event_buffer_input_cb, event->remote, NULL,
&relay_remote_event_buffer_input_cb, NULL, NULL,
NULL, NULL, NULL);
apply_props = 0;
}
+4 -2
View File
@@ -215,7 +215,8 @@ relay_irc_sendf (struct t_relay_client *client, const char *format, ...)
hashtable_in = NULL;
hashtable_out = NULL;
snprintf (modifier_data, sizeof (modifier_data), "%p", client);
snprintf (modifier_data, sizeof (modifier_data),
"0x%lx", (unsigned long)client);
new_msg1 = weechat_hook_modifier_exec ("relay_client_irc_out1",
modifier_data, vbuffer);
@@ -1641,7 +1642,8 @@ relay_irc_recv (struct t_relay_client *client, const char *data)
data);
}
snprintf (modifier_data, sizeof (modifier_data), "%p", client);
snprintf (modifier_data, sizeof (modifier_data),
"0x%lx", (unsigned long)client);
new_data = weechat_hook_modifier_exec ("relay_client_irc_in",
modifier_data, data);
@@ -872,7 +872,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name,short_name,"
"nicklist,title,local_variables,"
@@ -896,7 +897,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name,type");
relay_weechat_msg_send (ptr_client, msg);
@@ -918,7 +920,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name,"
"prev_buffer,next_buffer");
@@ -942,7 +945,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name,"
"prev_buffer,next_buffer");
@@ -966,7 +970,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name,"
"prev_buffer,next_buffer");
@@ -1010,7 +1015,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name,short_name,"
"local_variables");
@@ -1033,7 +1039,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name,title");
relay_weechat_msg_send (ptr_client, msg);
@@ -1055,7 +1062,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name,local_variables");
relay_weechat_msg_send (ptr_client, msg);
@@ -1076,7 +1084,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name");
relay_weechat_msg_send (ptr_client, msg);
@@ -1107,8 +1116,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata),
"line_data:%p",
ptr_line_data);
"line_data:0x%lx",
(unsigned long)ptr_line_data);
relay_weechat_msg_add_hdata (
msg, cmd_hdata,
"buffer,date,date_usec,date_printed,date_usec_printed,"
@@ -1133,7 +1142,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:%p", ptr_buffer);
snprintf (cmd_hdata, sizeof (cmd_hdata),
"buffer:0x%lx", (unsigned long)ptr_buffer);
relay_weechat_msg_add_hdata (msg, cmd_hdata,
"id,number,full_name");
relay_weechat_msg_send (ptr_client, msg);
+19 -7
View File
@@ -872,13 +872,15 @@ weechat_ruby_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
{
void *func_argv[1], *result;
char empty_arg[1] = { '\0' };
int old_ruby_quiet;
if (!ruby_script_eval)
{
old_ruby_quiet = ruby_quiet;
ruby_quiet = 1;
ruby_script_eval = weechat_ruby_load (WEECHAT_SCRIPT_EVAL_NAME,
RUBY_EVAL_SCRIPT);
ruby_quiet = 0;
ruby_quiet = old_ruby_quiet;
if (!ruby_script_eval)
return 0;
}
@@ -907,9 +909,10 @@ weechat_ruby_eval (struct t_gui_buffer *buffer, int send_to_buffer_as_input,
if (!weechat_config_boolean (ruby_config_look_eval_keep_context))
{
old_ruby_quiet = ruby_quiet;
ruby_quiet = 1;
weechat_ruby_unload (ruby_script_eval);
ruby_quiet = 0;
ruby_quiet = old_ruby_quiet;
ruby_script_eval = NULL;
}
@@ -926,7 +929,7 @@ weechat_ruby_command_cb (const void *pointer, void *data,
int argc, char **argv, char **argv_eol)
{
char *ptr_name, *ptr_code, *path_script;
int i, send_to_buffer_as_input, exec_commands;
int i, send_to_buffer_as_input, exec_commands, old_ruby_quiet;
/* make C compiler happy */
(void) pointer;
@@ -985,6 +988,7 @@ weechat_ruby_command_cb (const void *pointer, void *data,
|| (weechat_strcmp (argv[1], "reload") == 0)
|| (weechat_strcmp (argv[1], "unload") == 0))
{
old_ruby_quiet = ruby_quiet;
ptr_name = argv_eol[2];
if (strncmp (ptr_name, "-q ", 3) == 0)
{
@@ -1014,7 +1018,7 @@ weechat_ruby_command_cb (const void *pointer, void *data,
/* unload ruby script */
weechat_ruby_unload_name (ptr_name);
}
ruby_quiet = 0;
ruby_quiet = old_ruby_quiet;
}
else if (weechat_strcmp (argv[1], "eval") == 0)
{
@@ -1260,8 +1264,9 @@ weechat_ruby_signal_script_action_cb (const void *pointer, void *data,
int
weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
{
int ruby_error;
int ruby_error, old_ruby_quiet;
VALUE err;
char* ruby_options_argv[] = { "ruby", "-enil", NULL };
char *weechat_ruby_code = {
"$stdout = WeechatOutputs\n"
"$stderr = WeechatOutputs\n"
@@ -1360,6 +1365,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
ruby_init ();
ruby_options (2, ruby_options_argv);
/* redirect stdin and stdout */
ruby_mWeechatOutputs = rb_define_module ("WeechatOutputs");
rb_define_singleton_method (ruby_mWeechatOutputs, "write",
@@ -1404,11 +1411,13 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
ruby_data.callback_signal_debug_dump = &weechat_ruby_signal_debug_dump_cb;
ruby_data.callback_signal_script_action = &weechat_ruby_signal_script_action_cb;
ruby_data.callback_load_file = &weechat_ruby_load_cb;
ruby_data.init_before_autoload = NULL;
ruby_data.unload_all = &weechat_ruby_unload_all;
old_ruby_quiet = ruby_quiet;
ruby_quiet = 1;
plugin_script_init (weechat_ruby_plugin, &ruby_data);
ruby_quiet = 0;
ruby_quiet = old_ruby_quiet;
plugin_script_display_short_list (weechat_ruby_plugin,
ruby_scripts);
@@ -1424,7 +1433,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
int old_ruby_quiet;
/* unload all scripts */
old_ruby_quiet = ruby_quiet;
ruby_quiet = 1;
if (ruby_script_eval)
{
@@ -1432,7 +1444,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
ruby_script_eval = NULL;
}
plugin_script_end (plugin, &ruby_data);
ruby_quiet = 0;
ruby_quiet = old_ruby_quiet;
ruby_cleanup (0);
signal (SIGCHLD, SIG_DFL);
+12 -4
View File
@@ -574,7 +574,7 @@ weechat_tcl_command_cb (const void *pointer, void *data,
int argc, char **argv, char **argv_eol)
{
char *ptr_name, *ptr_code, *path_script;
int i, send_to_buffer_as_input, exec_commands;
int i, send_to_buffer_as_input, exec_commands, old_tcl_quiet;
/* make C compiler happy */
(void) pointer;
@@ -633,6 +633,7 @@ weechat_tcl_command_cb (const void *pointer, void *data,
|| (weechat_strcmp (argv[1], "reload") == 0)
|| (weechat_strcmp (argv[1], "unload") == 0))
{
old_tcl_quiet = tcl_quiet;
ptr_name = argv_eol[2];
if (strncmp (ptr_name, "-q ", 3) == 0)
{
@@ -662,7 +663,7 @@ weechat_tcl_command_cb (const void *pointer, void *data,
/* unload tcl script */
weechat_tcl_unload_name (ptr_name);
}
tcl_quiet = 0;
tcl_quiet = old_tcl_quiet;
}
else if (weechat_strcmp (argv[1], "eval") == 0)
{
@@ -910,6 +911,8 @@ weechat_tcl_signal_script_action_cb (const void *pointer, void *data,
int
weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
{
int old_tcl_quiet;
/* make C compiler happy */
(void) argc;
(void) argv;
@@ -945,11 +948,13 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
tcl_data.callback_signal_debug_dump = &weechat_tcl_signal_debug_dump_cb;
tcl_data.callback_signal_script_action = &weechat_tcl_signal_script_action_cb;
tcl_data.callback_load_file = &weechat_tcl_load_cb;
tcl_data.init_before_autoload = NULL;
tcl_data.unload_all = &weechat_tcl_unload_all;
old_tcl_quiet = tcl_quiet;
tcl_quiet = 1;
plugin_script_init (weechat_tcl_plugin, &tcl_data);
tcl_quiet = 0;
tcl_quiet = old_tcl_quiet;
plugin_script_display_short_list (weechat_tcl_plugin,
tcl_scripts);
@@ -965,7 +970,10 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
int
weechat_plugin_end (struct t_weechat_plugin *plugin)
{
int old_tcl_quiet;
/* unload all scripts */
old_tcl_quiet = tcl_quiet;
tcl_quiet = 1;
if (tcl_script_eval)
{
@@ -973,7 +981,7 @@ weechat_plugin_end (struct t_weechat_plugin *plugin)
tcl_script_eval = NULL;
}
plugin_script_end (plugin, &tcl_data);
tcl_quiet = 0;
tcl_quiet = old_tcl_quiet;
/* free some data */
if (tcl_action_install_list)
+4 -1
View File
@@ -733,7 +733,10 @@ trigger_callback_signal_cb (const void *pointer, void *data,
{
str_data[0] = '\0';
if (signal_data)
snprintf (str_data, sizeof (str_data), "%p", signal_data);
{
snprintf (str_data, sizeof (str_data),
"0x%lx", (unsigned long)signal_data);
}
ptr_signal_data = str_data;
}
weechat_hashtable_set (ctx.extra_vars, "tg_signal_data", ptr_signal_data);
+1 -1
View File
@@ -200,7 +200,7 @@ if(ICONV_LIBRARY)
list(APPEND EXTRA_LIBS ${ICONV_LIBRARY})
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD" OR ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
list(APPEND EXTRA_LIBS "intl")
if(HAVE_BACKTRACE)
list(APPEND EXTRA_LIBS "execinfo")
+3
View File
@@ -1016,6 +1016,9 @@ TEST(CoreEval, EvalExpression)
WEE_CHECK_EVAL("", "${my_null_pointer}");
snprintf (str_value, sizeof (str_value), "%p", gui_buffers);
WEE_CHECK_EVAL(str_value, "${my_buffer_pointer}");
WEE_CHECK_EVAL(str_value, "${buffer}");
WEE_CHECK_EVAL("0x0", "${buffer.prev_buffer}");
WEE_CHECK_EVAL("0x0", "${buffer.next_buffer}");
WEE_CHECK_EVAL("0x1234abcd", "${my_other_pointer}");
WEE_CHECK_EVAL("", "${buffer[unknown_pointer].full_name}");
WEE_CHECK_EVAL("", "${buffer[my_null_pointer].full_name}");
+14 -12
View File
@@ -47,7 +47,8 @@ extern void relay_http_parse_path (const char *url,
char ***paths, int *num_paths,
struct t_hashtable *params);
extern int relay_http_parse_header (struct t_relay_http_request *request,
const char *header);
const char *header,
int ws_deflate_allowed);
extern void relay_http_add_to_body (struct t_relay_http_request *request,
char **partial_message);
extern int relay_http_get_auth_status (struct t_relay_client *client);
@@ -478,7 +479,7 @@ TEST(RelayHttp, ParseHeader)
request = relay_http_request_alloc ();
CHECK(request);
relay_http_parse_method_path (request, "GET /api/version");
relay_http_parse_header (request, NULL);
relay_http_parse_header (request, NULL, 1);
LONGS_EQUAL(RELAY_HTTP_END, request->status);
STRCMP_EQUAL("GET /api/version\n"
"\n",
@@ -489,7 +490,7 @@ TEST(RelayHttp, ParseHeader)
request = relay_http_request_alloc ();
CHECK(request);
relay_http_parse_method_path (request, "GET /api/version");
relay_http_parse_header (request, "");
relay_http_parse_header (request, "", 1);
LONGS_EQUAL(RELAY_HTTP_END, request->status);
STRCMP_EQUAL("GET /api/version\n"
"\n",
@@ -500,7 +501,7 @@ TEST(RelayHttp, ParseHeader)
request = relay_http_request_alloc ();
CHECK(request);
relay_http_parse_method_path (request, "GET /api/version");
relay_http_parse_header (request, "Test");
relay_http_parse_header (request, "Test", 1);
LONGS_EQUAL(RELAY_HTTP_HEADERS, request->status);
STRCMP_EQUAL("GET /api/version\n"
"Test\n",
@@ -511,7 +512,7 @@ TEST(RelayHttp, ParseHeader)
request = relay_http_request_alloc ();
CHECK(request);
relay_http_parse_method_path (request, "GET /api/version");
relay_http_parse_header (request, "X-Test: value");
relay_http_parse_header (request, "X-Test: value", 1);
LONGS_EQUAL(RELAY_HTTP_HEADERS, request->status);
STRCMP_EQUAL("GET /api/version\n"
"X-Test: value\n",
@@ -523,7 +524,7 @@ TEST(RelayHttp, ParseHeader)
request = relay_http_request_alloc ();
CHECK(request);
relay_http_parse_method_path (request, "GET /api/version");
relay_http_parse_header (request, "Accept-Encoding: gzip, zstd, br");
relay_http_parse_header (request, "Accept-Encoding: gzip, zstd, br", 1);
LONGS_EQUAL(RELAY_HTTP_HEADERS, request->status);
STRCMP_EQUAL("GET /api/version\n"
"Accept-Encoding: gzip, zstd, br\n",
@@ -540,7 +541,7 @@ TEST(RelayHttp, ParseHeader)
request = relay_http_request_alloc ();
CHECK(request);
relay_http_parse_method_path (request, "GET /api/version");
relay_http_parse_header (request, "Content-Length: 123");
relay_http_parse_header (request, "Content-Length: 123", 1);
LONGS_EQUAL(RELAY_HTTP_HEADERS, request->status);
STRCMP_EQUAL("GET /api/version\n"
"Content-Length: 123\n",
@@ -555,7 +556,8 @@ TEST(RelayHttp, ParseHeader)
relay_http_parse_method_path (request, "GET /api HTTP/1.1");
relay_http_parse_header (
request,
"Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits");
"Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits",
1);
LONGS_EQUAL(RELAY_HTTP_HEADERS, request->status);
STRCMP_EQUAL(
"GET /api HTTP/1.1\n"
@@ -589,8 +591,8 @@ TEST(RelayHttp, AddToBody)
LONGS_EQUAL(RELAY_HTTP_METHOD, request->status);
relay_http_parse_method_path (request, "GET /api/version");
LONGS_EQUAL(RELAY_HTTP_HEADERS, request->status);
relay_http_parse_header (request, "Content-Length: 10");
relay_http_parse_header (request, "");
relay_http_parse_header (request, "Content-Length: 10", 1);
relay_http_parse_header (request, "", 1);
LONGS_EQUAL(RELAY_HTTP_BODY, request->status);
LONGS_EQUAL(10, request->content_length);
LONGS_EQUAL(0, request->body_size);
@@ -616,8 +618,8 @@ TEST(RelayHttp, AddToBody)
LONGS_EQUAL(RELAY_HTTP_METHOD, request->status);
relay_http_parse_method_path (request, "GET /api/version");
LONGS_EQUAL(RELAY_HTTP_HEADERS, request->status);
relay_http_parse_header (request, "Content-Length: 5");
relay_http_parse_header (request, "");
relay_http_parse_header (request, "Content-Length: 5", 1);
relay_http_parse_header (request, "", 1);
LONGS_EQUAL(RELAY_HTTP_BODY, request->status);
LONGS_EQUAL(5, request->content_length);
LONGS_EQUAL(0, request->body_size);
@@ -165,6 +165,7 @@ TEST(RelayWebsocket, ClientHandshakeValid)
LONGS_EQUAL(-2, relay_websocket_client_handshake_valid (request));
hashtable_set (request->headers, "origin", "example.com");
LONGS_EQUAL(0, relay_websocket_client_handshake_valid (request));
config_file_option_reset (relay_config_network_websocket_allowed_origins, 1);
relay_websocket_deflate_reinit (request->ws_deflate);
relay_websocket_parse_extensions ("permessage-deflate", request->ws_deflate, 1);
+2 -2
View File
@@ -39,8 +39,8 @@
# devel-number the devel version as hex number ("0x04010000" for "4.1.0-dev")
#
weechat_stable="4.3.2"
weechat_devel="4.3.2"
weechat_stable="4.3.6"
weechat_devel="4.3.7-dev"
stable_major=$(echo "${weechat_stable}" | cut -d"." -f1)
stable_minor=$(echo "${weechat_stable}" | cut -d"." -f2)