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

api: do not expect any return value in callbacks change/delete of config_new_option (scripting API)

This commit is contained in:
Sébastien Helleu
2022-10-15 21:46:00 +02:00
parent a1057c9a03
commit 56dbd871ea
12 changed files with 105 additions and 98 deletions
+1
View File
@@ -26,6 +26,7 @@ Bug fixes::
* core: fix context info in buffers with free content (issue #1832)
* core: keep terminal title unchanged when option weechat.look.window_title is set to empty value (issue #1835, issue #1836)
* api: do not expect any return value in callbacks "callback_change" and "callback_delete" of function config_new_option (scripting API)
* irc: escape backslashes in raw buffer (issue #1838)
Tests::
+10
View File
@@ -17,6 +17,16 @@ https://weechat.org/files/changelog/ChangeLog-devel.html[ChangeLog]
(file _ChangeLog.adoc_ in sources).
[[v3.8]]
== Version 3.8 (under dev)
[[v3.8_config_new_option_callbacks]]
=== Callbacks of function config_new_option
The two callbacks "callback_change" and "callback_delete" in scripting API function
config_new_option have been changed: an integer return value was expected by error,
now any return value is ignored (like it has always been in the C API).
[[v3.7]]
== Version 3.7 (2022-10-09)
+10 -12
View File
@@ -1232,10 +1232,9 @@ weechat_guile_api_config_option_change_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1245,10 +1244,10 @@ weechat_guile_api_config_option_change_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_guile_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_guile_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
@@ -1260,10 +1259,9 @@ weechat_guile_api_config_option_delete_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1273,10 +1271,10 @@ weechat_guile_api_config_option_delete_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_guile_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_guile_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
+10 -12
View File
@@ -1149,10 +1149,9 @@ weechat_js_api_config_option_change_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1162,10 +1161,10 @@ weechat_js_api_config_option_change_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *)weechat_js_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_js_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
@@ -1177,10 +1176,9 @@ weechat_js_api_config_option_delete_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1190,10 +1188,10 @@ weechat_js_api_config_option_delete_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *)weechat_js_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_js_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
+10 -12
View File
@@ -1262,10 +1262,9 @@ weechat_lua_api_config_option_change_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1275,10 +1274,10 @@ weechat_lua_api_config_option_change_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_lua_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_lua_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
@@ -1290,10 +1289,9 @@ weechat_lua_api_config_option_delete_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1303,10 +1301,10 @@ weechat_lua_api_config_option_delete_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_lua_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_lua_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
+10 -12
View File
@@ -1203,10 +1203,9 @@ weechat_perl_api_config_option_change_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1216,10 +1215,10 @@ weechat_perl_api_config_option_change_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_perl_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_perl_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
@@ -1231,10 +1230,9 @@ weechat_perl_api_config_option_delete_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1244,10 +1242,10 @@ weechat_perl_api_config_option_delete_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_perl_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_perl_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
+21 -11
View File
@@ -186,12 +186,14 @@ API_FUNC(register)
static void
weechat_php_cb (const void *pointer, void *data, void **func_argv,
const char *func_types, int func_type, void *rc)
const char *func_types, int ret_type, void *rc)
{
struct t_plugin_script *script;
const char *ptr_function, *ptr_data;
void *ret;
ret = NULL;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -202,20 +204,25 @@ weechat_php_cb (const void *pointer, void *data, void **func_argv,
goto weechat_php_cb_err;
}
ret = weechat_php_exec (script, func_type, ptr_function,
ret = weechat_php_exec (script, ret_type, ptr_function,
func_types, func_argv);
if (!ret)
if ((ret_type != WEECHAT_SCRIPT_EXEC_IGNORE) && !ret)
{
goto weechat_php_cb_err;
}
if (func_type == WEECHAT_SCRIPT_EXEC_INT)
if (ret_type == WEECHAT_SCRIPT_EXEC_IGNORE)
{
if (ret)
free (ret);
}
else if (ret_type == WEECHAT_SCRIPT_EXEC_INT)
{
*((int *)rc) = *((int *)ret);
free (ret);
}
else if (func_type == WEECHAT_SCRIPT_EXEC_HASHTABLE)
else if (ret_type == WEECHAT_SCRIPT_EXEC_HASHTABLE)
{
*((struct t_hashtable **)rc) = (struct t_hashtable *)ret;
}
@@ -226,11 +233,16 @@ weechat_php_cb (const void *pointer, void *data, void **func_argv,
return;
weechat_php_cb_err:
if (func_type == WEECHAT_SCRIPT_EXEC_INT)
if (ret_type == WEECHAT_SCRIPT_EXEC_IGNORE)
{
if (ret)
free (ret);
}
else if (ret_type == WEECHAT_SCRIPT_EXEC_INT)
{
*((int *)rc) = WEECHAT_RC_ERROR;
}
else if (func_type == WEECHAT_SCRIPT_EXEC_HASHTABLE)
else if (ret_type == WEECHAT_SCRIPT_EXEC_HASHTABLE)
{
*((struct t_hashtable **)rc) = NULL;
}
@@ -1273,13 +1285,12 @@ weechat_php_api_config_option_change_cb (const void *pointer,
void *data,
struct t_config_option *option)
{
int *rc;
void *func_argv[2];
func_argv[1] = (char *)API_PTR2STR(option);
weechat_php_cb (pointer, data, func_argv, "ss",
WEECHAT_SCRIPT_EXEC_INT, &rc);
WEECHAT_SCRIPT_EXEC_IGNORE, NULL);
}
static void
@@ -1287,13 +1298,12 @@ weechat_php_api_config_option_delete_cb (const void *pointer,
void *data,
struct t_config_option *option)
{
int rc;
void *func_argv[2];
func_argv[1] = (char *)API_PTR2STR(option);
weechat_php_cb (pointer, data, func_argv, "ss",
WEECHAT_SCRIPT_EXEC_INT, &rc);
WEECHAT_SCRIPT_EXEC_IGNORE, NULL);
}
API_FUNC(config_new_option)
+10 -12
View File
@@ -1195,10 +1195,9 @@ weechat_python_api_config_option_change_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1208,10 +1207,10 @@ weechat_python_api_config_option_change_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_python_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_python_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
@@ -1223,10 +1222,9 @@ weechat_python_api_config_option_delete_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1236,10 +1234,10 @@ weechat_python_api_config_option_delete_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_python_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_python_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
+10 -12
View File
@@ -1437,10 +1437,9 @@ weechat_ruby_api_config_option_change_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1450,10 +1449,10 @@ weechat_ruby_api_config_option_change_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_ruby_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_ruby_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
@@ -1465,10 +1464,9 @@ weechat_ruby_api_config_option_delete_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1478,10 +1476,10 @@ weechat_ruby_api_config_option_delete_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_ruby_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_ruby_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
+10 -12
View File
@@ -1410,10 +1410,9 @@ weechat_tcl_api_config_option_change_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1423,10 +1422,10 @@ weechat_tcl_api_config_option_change_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_tcl_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_tcl_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
@@ -1438,10 +1437,9 @@ weechat_tcl_api_config_option_delete_cb (const void *pointer, void *data,
struct t_config_option *option)
{
struct t_plugin_script *script;
void *func_argv[2];
void *func_argv[2], *rc;
char empty_arg[1] = { '\0' };
const char *ptr_function, *ptr_data;
int *rc;
script = (struct t_plugin_script *)pointer;
plugin_script_get_function_and_data (data, &ptr_function, &ptr_data);
@@ -1451,10 +1449,10 @@ weechat_tcl_api_config_option_delete_cb (const void *pointer, void *data,
func_argv[0] = (ptr_data) ? (char *)ptr_data : empty_arg;
func_argv[1] = (char *)API_PTR2STR(option);
rc = (int *) weechat_tcl_exec (script,
WEECHAT_SCRIPT_EXEC_INT,
ptr_function,
"ss", func_argv);
rc = weechat_tcl_exec (script,
WEECHAT_SCRIPT_EXEC_IGNORE,
ptr_function,
"ss", func_argv);
if (rc)
free (rc);
+2 -2
View File
@@ -181,12 +181,12 @@ def option_check_value_cb(data, option, value):
def option_change_cb(data, option):
"""Option change callback."""
return 1
pass
def option_delete_cb(data, option):
"""Option delete callback."""
return 1
pass
def test_config():
+1 -1
View File
@@ -1090,7 +1090,7 @@ class UnparseGuile(UnparsePython):
def _ast_pass(self, node):
"""Add an AST Pass in output."""
pass
self.add('#t')
def _ast_return(self, node):
"""Add an AST Return in output."""