diff options
-rw-r--r-- | weechat/weechat-plugin.h | 123 |
1 files changed, 99 insertions, 24 deletions
diff --git a/weechat/weechat-plugin.h b/weechat/weechat-plugin.h index 8dfcff4..ca9f783 100644 --- a/weechat/weechat-plugin.h +++ b/weechat/weechat-plugin.h @@ -1,7 +1,7 @@ /* * weechat-plugin.h - header to compile WeeChat plugins * - * Copyright (C) 2003-2017 Sébastien Helleu <flashcode@flashtux.org> + * Copyright (C) 2003-2020 Sébastien Helleu <flashcode@flashtux.org> * * This file is part of WeeChat, the extensible chat client. * @@ -16,11 +16,11 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with WeeChat. If not, see <http://www.gnu.org/licenses/>. + * along with WeeChat. If not, see <https://www.gnu.org/licenses/>. */ #ifndef WEECHAT_WEECHAT_PLUGIN_H -#define WEECHAT_WEECHAT_PLUGIN_H 1 +#define WEECHAT_WEECHAT_PLUGIN_H #ifdef __cplusplus extern "C" { @@ -67,7 +67,7 @@ struct timeval; * please change the date with current one; for a second change at same * date, increment the 01, otherwise please keep 01. */ -#define WEECHAT_PLUGIN_API_VERSION "20170530-02" +#define WEECHAT_PLUGIN_API_VERSION "20200301-03" /* macros for defining plugin infos */ #define WEECHAT_PLUGIN_NAME(__name) \ @@ -89,6 +89,12 @@ struct timeval; #define WEECHAT_RC_OK_EAT 1 #define WEECHAT_RC_ERROR -1 +/* flags for string_split function */ +#define WEECHAT_STRING_SPLIT_STRIP_LEFT (1 << 0) +#define WEECHAT_STRING_SPLIT_STRIP_RIGHT (1 << 1) +#define WEECHAT_STRING_SPLIT_COLLAPSE_SEPS (1 << 2) +#define WEECHAT_STRING_SPLIT_KEEP_EOL (1 << 3) + /* return codes for config read functions/callbacks */ #define WEECHAT_CONFIG_READ_OK 0 #define WEECHAT_CONFIG_READ_MEMORY_ERROR -1 @@ -255,6 +261,10 @@ struct t_weechat_plugin int priority; /* plugin priority (default is 1000) */ int initialized; /* plugin initialized? (init called) */ int debug; /* debug level for plugin (0=off) */ + int upgrading; /* 1 if the plugin must load upgrade */ + /* info on startup (if weechat is */ + /* run with --upgrade) */ + struct t_hashtable *variables; /* plugin custom variables */ struct t_weechat_plugin *prev_plugin; /* link to previous plugin */ struct t_weechat_plugin *next_plugin; /* link to next plugin */ @@ -288,6 +298,8 @@ struct t_weechat_plugin int (*strlen_screen) (const char *string); int (*string_match) (const char *string, const char *mask, int case_sensitive); + int (*string_match_list) (const char *string, const char **masks, + int case_sensitive); char *(*string_replace) (const char *string, const char *search, const char *replace); char *(*string_expand_home) (const char *path); @@ -313,7 +325,8 @@ struct t_weechat_plugin const char *text), void *callback_data); char **(*string_split) (const char *string, const char *separators, - int keep_eol, int num_items_max, int *num_items); + const char *strip_items, int flags, + int num_items_max, int *num_items); char **(*string_split_shell) (const char *string, int *num_items); void (*string_free_split) (char **split_string); char *(*string_build_with_split_string) (const char **split_string, @@ -322,8 +335,9 @@ struct t_weechat_plugin void (*string_free_split_command) (char **split_command); char *(*string_format_size) (unsigned long long size); char *(*string_remove_color) (const char *string, const char *replacement); - void (*string_encode_base64) (const char *from, int length, char *to); - int (*string_decode_base64) (const char *from, char *to); + int (*string_base_encode) (int base, const char *from, int length, + char *to); + int (*string_base_decode) (int base, const char *from, char *to); char *(*string_hex_dump) (const char *data, int data_size, int bytes_per_line, const char *prefix, const char *suffix); @@ -358,11 +372,21 @@ struct t_weechat_plugin int (*utf8_pos) (const char *string, int real_pos); char *(*utf8_strndup) (const char *string, int length); + /* crypto */ + int (*crypto_hash) (const void *data, int data_size, + const char *hash_algo, void *hash, int *hash_size); + int (*crypto_hash_pbkdf2) (const void *data, int data_size, + const char *hash_algo, + const void *salt, int salt_size, + int iterations, + void *hash, int *hash_size); + /* directories/files */ int (*mkdir_home) (const char *directory, int mode); int (*mkdir) (const char *directory, int mode); int (*mkdir_parents) (const char *directory, int mode); - void (*exec_on_files) (const char *directory, int hidden_files, + void (*exec_on_files) (const char *directory, int recurse_subdirs, + int hidden_files, void (*callback)(void *data, const char *filename), void *callback_data); char *(*file_get_content) (const char *filename); @@ -394,6 +418,7 @@ struct t_weechat_plugin struct t_weelist_item *(*list_next) (struct t_weelist_item *item); struct t_weelist_item *(*list_prev) (struct t_weelist_item *item); const char *(*list_string) (struct t_weelist_item *item); + void *(*list_user_data) (struct t_weelist_item *item); int (*list_size) (struct t_weelist *weelist); void (*list_remove) (struct t_weelist *weelist, struct t_weelist_item *item); @@ -466,6 +491,9 @@ struct t_weechat_plugin int (*hashtable_add_to_infolist) (struct t_hashtable *hashtable, struct t_infolist_item *infolist_item, const char *prefix); + int (*hashtable_add_from_infolist) (struct t_hashtable *hashtable, + struct t_infolist *infolist, + const char *prefix); void (*hashtable_remove) (struct t_hashtable *hashtable, const void *key); void (*hashtable_remove_all) (struct t_hashtable *hashtable); void (*hashtable_free) (struct t_hashtable *hashtable); @@ -704,6 +732,15 @@ struct t_weechat_plugin const char *ip_address), const void *callback_pointer, void *callback_data); + struct t_hook *(*hook_line) (struct t_weechat_plugin *plugin, + const char *buffer_type, + const char *buffer_name, + const char *tags, + struct t_hashtable *(*callback)(const void *pointer, + void *data, + struct t_hashtable *line), + const void *callback_pointer, + void *callback_data); struct t_hook *(*hook_print) (struct t_weechat_plugin *plugin, struct t_gui_buffer *buffer, const char *tags, @@ -783,10 +820,10 @@ struct t_weechat_plugin const char *info_name, const char *description, const char *args_description, - const char *(*callback)(const void *pointer, - void *data, - const char *info_name, - const char *arguments), + char *(*callback)(const void *pointer, + void *data, + const char *info_name, + const char *arguments), const void *callback_pointer, void *callback_data); struct t_hook *(*hook_info_hashtable) (struct t_weechat_plugin *plugin, @@ -968,6 +1005,9 @@ struct t_weechat_plugin /* command */ int (*command) (struct t_weechat_plugin *plugin, struct t_gui_buffer *buffer, const char *command); + int (*command_options) (struct t_weechat_plugin *plugin, + struct t_gui_buffer *buffer, const char *command, + struct t_hashtable *options); /* network */ int (*network_pass_proxy) (const char *proxy, int sock, @@ -977,9 +1017,8 @@ struct t_weechat_plugin socklen_t address_length); /* infos */ - const char *(*info_get) (struct t_weechat_plugin *plugin, - const char *info_name, - const char *arguments); + char *(*info_get) (struct t_weechat_plugin *plugin, const char *info_name, + const char *arguments); struct t_hashtable *(*info_get_hashtable) (struct t_weechat_plugin *plugin, const char *info_name, struct t_hashtable *hashtable); @@ -1157,6 +1196,9 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); (weechat_plugin->strlen_screen)(__string) #define weechat_string_match(__string, __mask, __case_sensitive) \ (weechat_plugin->string_match)(__string, __mask, __case_sensitive) +#define weechat_string_match_list(__string, __masks, __case_sensitive) \ + (weechat_plugin->string_match_list)(__string, __masks, \ + __case_sensitive) #define weechat_string_replace(__string, __search, __replace) \ (weechat_plugin->string_replace)(__string, __search, __replace) #define weechat_string_expand_home(__path) \ @@ -1190,9 +1232,10 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); __reference_char, \ __callback, \ __callback_data) -#define weechat_string_split(__string, __separator, __eol, __max, \ - __num_items) \ - (weechat_plugin->string_split)(__string, __separator, __eol, \ +#define weechat_string_split(__string, __separators, __strip_items, \ + __flags, __max, __num_items) \ + (weechat_plugin->string_split)(__string, __separators, \ + __strip_items, __flags, \ __max, __num_items) #define weechat_string_split_shell(__string, __num_items) \ (weechat_plugin->string_split_shell)(__string, __num_items) @@ -1210,10 +1253,11 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); (weechat_plugin->string_format_size)(__size) #define weechat_string_remove_color(__string, __replacement) \ (weechat_plugin->string_remove_color)(__string, __replacement) -#define weechat_string_encode_base64(__from, __length, __to) \ - (weechat_plugin->string_encode_base64)(__from, __length, __to) -#define weechat_string_decode_base64(__from, __to) \ - (weechat_plugin->string_decode_base64)(__from, __to) +#define weechat_string_base_encode(__base, __from, __length, __to) \ + (weechat_plugin->string_base_encode)(__base, __from, __length, \ + __to) +#define weechat_string_base_decode(__base, __from, __to) \ + (weechat_plugin->string_base_decode)(__base, __from, __to) #define weechat_string_hex_dump(__data, __data_size, __bytes_per_line, \ __prefix, __suffix) \ (weechat_plugin->string_hex_dump)(__data, __data_size, \ @@ -1272,6 +1316,20 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); #define weechat_utf8_strndup(__string, __length) \ (weechat_plugin->utf8_strndup)(__string, __length) +/* crypto */ +#define weechat_crypto_hash(__data, __data_size, __hash_algo, \ + __hash, __hash_size) \ + (weechat_plugin->crypto_hash)(__data, __data_size, __hash_algo, \ + __hash, __hash_size) +#define weechat_crypto_hash_pbkdf2(__data, __data_size, __hash_algo, \ + __salt, __salt_size, __iterations, \ + __hash, __hash_size) \ + (weechat_plugin->crypto_hash_pbkdf2)(__data, __data_size, \ + __hash_algo, \ + __salt, __salt_size, \ + __iterations, \ + __hash, __hash_size) + /* directories */ #define weechat_mkdir_home(__directory, __mode) \ (weechat_plugin->mkdir_home)(__directory, __mode) @@ -1279,9 +1337,11 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); (weechat_plugin->mkdir)(__directory, __mode) #define weechat_mkdir_parents(__directory, __mode) \ (weechat_plugin->mkdir_parents)(__directory, __mode) -#define weechat_exec_on_files(__directory, __hidden_files, __callback, \ +#define weechat_exec_on_files(__directory, __recurse_subdirs, \ + __hidden_files, __callback, \ __callback_data) \ - (weechat_plugin->exec_on_files)(__directory, __hidden_files, \ + (weechat_plugin->exec_on_files)(__directory, __recurse_subdirs, \ + __hidden_files, \ __callback, __callback_data) #define weechat_file_get_content(__filename) \ (weechat_plugin->file_get_content)(__filename) @@ -1321,6 +1381,8 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); (weechat_plugin->list_prev)(__item) #define weechat_list_string(__item) \ (weechat_plugin->list_string)(__item) +#define weechat_list_user_data(__item) \ + (weechat_plugin->list_user_data)(__item) #define weechat_list_size(__list) \ (weechat_plugin->list_size)(__list) #define weechat_list_remove(__list, __item) \ @@ -1397,6 +1459,11 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); (weechat_plugin->hashtable_add_to_infolist)(__hashtable, \ __infolist_item, \ __prefix) +#define weechat_hashtable_add_from_infolist(__hashtable, __infolist, \ + __prefix) \ + (weechat_plugin->hashtable_add_from_infolist)(__hashtable, \ + __infolist, \ + __prefix) #define weechat_hashtable_remove(__hashtable, __key) \ (weechat_plugin->hashtable_remove)(__hashtable, __key) #define weechat_hashtable_remove_all(__hashtable) \ @@ -1633,6 +1700,11 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); __gnutls_priorities, \ __local_hostname, \ __callback, __pointer, __data) +#define weechat_hook_line(_buffer_type, __buffer_name, __tags, \ + __callback, __pointer, __data) \ + (weechat_plugin->hook_line)(weechat_plugin, _buffer_type, \ + __buffer_name, __tags, __callback, \ + __pointer, __data) #define weechat_hook_print(__buffer, __tags, __msg, __strip__colors, \ __callback, __pointer, __data) \ (weechat_plugin->hook_print)(weechat_plugin, __buffer, __tags, \ @@ -1866,6 +1938,9 @@ extern int weechat_plugin_end (struct t_weechat_plugin *plugin); /* command */ #define weechat_command(__buffer, __command) \ (weechat_plugin->command)(weechat_plugin, __buffer, __command) +#define weechat_command_options(__buffer, __command, __options) \ + (weechat_plugin->command_options)(weechat_plugin, __buffer, \ + __command, __options) /* network */ #define weechat_network_pass_proxy(__proxy, __sock, __address, __port) \ |