From 174f00eccdad31387dd91112e1a943ef3f215901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Pettersson?= Date: Tue, 10 May 2016 10:51:08 +0200 Subject: [PATCH] Update to match WeeChat 1.5 plugin API. --- README.md | 6 ++--- src/twc-chat.c | 30 ++++++++++++--------- src/twc-commands.c | 60 ++++++++++++++++++++--------------------- src/twc-completion.c | 18 ++++++------- src/twc-config.c | 57 ++++++++++++++++++++------------------- src/twc-gui.c | 13 ++++----- src/twc-profile.c | 23 +++++++--------- src/twc-tox-callbacks.c | 7 ++--- src/twc-tox-callbacks.h | 2 +- 9 files changed, 111 insertions(+), 105 deletions(-) diff --git a/README.md b/README.md index e809909..82b2d3b 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,9 @@ future. - [ ] Audio/video ## Installation -Tox-WeeChat requires [WeeChat][2] >= 1.0.1 and the latest-ish [toxcore][4]. -It also requires CMake to be built. Installation is fairly simple; after -getting the source, compile and install using CMake: +Tox-WeeChat requires [WeeChat][2] >= 1.5 and the latest-ish [toxcore][4]. It +also requires CMake to be built. Installation is fairly simple; after getting +the source, compile and install using CMake: $ mkdir build && cd build $ cmake -DPLUGIN_PATH=~/.weechat/plugins .. diff --git a/src/twc-chat.c b/src/twc-chat.c index db3802b..1473d4e 100644 --- a/src/twc-chat.c +++ b/src/twc-chat.c @@ -36,11 +36,13 @@ const char *twc_tag_sent_message = "tox_sent"; const char *twc_tag_received_message = "tox_received"; int -twc_chat_buffer_input_callback(void *data, +twc_chat_buffer_input_callback(const void *pointer, + void *data, struct t_gui_buffer *weechat_buffer, const char *input_data); int -twc_chat_buffer_close_callback(void *data, +twc_chat_buffer_close_callback(const void *pointer, + void *data, struct t_gui_buffer *weechat_buffer); /** @@ -80,8 +82,8 @@ twc_chat_new(struct t_twc_profile *profile, const char *name) char *full_name = malloc(full_name_size); snprintf(full_name, full_name_size, "%s/%s", profile->name, name); chat->buffer = weechat_buffer_new(full_name, - twc_chat_buffer_input_callback, chat, - twc_chat_buffer_close_callback, chat); + twc_chat_buffer_input_callback, chat, NULL, + twc_chat_buffer_close_callback, chat, NULL); free(full_name); if (!(chat->buffer)) @@ -150,7 +152,7 @@ twc_chat_new_group(struct t_twc_profile *profile, int32_t group_number) * Refresh a chat. Updates buffer short_name and title. */ void -twc_chat_refresh(struct t_twc_chat *chat) +twc_chat_refresh(const struct t_twc_chat *chat) { char *name = NULL; char *title = NULL; @@ -186,9 +188,9 @@ twc_chat_refresh(struct t_twc_chat *chat) * Callback for twc_chat_queue_refresh. Simply calls twc_chat_refresh. */ int -twc_chat_refresh_timer_callback(void *data, int remaining) +twc_chat_refresh_timer_callback(const void *pointer, void *data, int remaining) { - twc_chat_refresh(data); + twc_chat_refresh(pointer); return WEECHAT_RC_OK; } @@ -201,7 +203,7 @@ void twc_chat_queue_refresh(struct t_twc_chat *chat) { weechat_hook_timer(1, 0, 1, - twc_chat_refresh_timer_callback, chat); + twc_chat_refresh_timer_callback, chat, NULL); } /** @@ -328,10 +330,12 @@ twc_chat_send_message(struct t_twc_chat *chat, const char *message, * Callback for a buffer receiving user input. */ int -twc_chat_buffer_input_callback(void *data, struct t_gui_buffer *weechat_buffer, +twc_chat_buffer_input_callback(const void *pointer, void *data, + struct t_gui_buffer *weechat_buffer, const char *input_data) { - struct t_twc_chat *chat = data; + /* TODO: don't strip the const */ + struct t_twc_chat *chat = (void *)pointer; twc_chat_send_message(chat, input_data, TWC_MESSAGE_TYPE_MESSAGE); return WEECHAT_RC_OK; @@ -341,9 +345,11 @@ twc_chat_buffer_input_callback(void *data, struct t_gui_buffer *weechat_buffer, * Callback for a buffer being closed. */ int -twc_chat_buffer_close_callback(void *data, struct t_gui_buffer *weechat_buffer) +twc_chat_buffer_close_callback(const void *pointer, void *data, + struct t_gui_buffer *weechat_buffer) { - struct t_twc_chat *chat = data; + /* TODO: don't strip the const */ + struct t_twc_chat *chat = (void *)pointer; if (chat->profile->tox && chat->group_number >= 0) { diff --git a/src/twc-commands.c b/src/twc-commands.c index edcd628..5c0202a 100644 --- a/src/twc-commands.c +++ b/src/twc-commands.c @@ -188,7 +188,7 @@ twc_match_friend(struct t_twc_profile *profile, const char *search_string) * Command /bootstrap callback. */ int -twc_cmd_bootstrap(void *data, struct t_gui_buffer *buffer, +twc_cmd_bootstrap(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { struct t_twc_profile *profile = twc_profile_search_buffer(buffer); @@ -219,7 +219,7 @@ twc_cmd_bootstrap(void *data, struct t_gui_buffer *buffer, * Command /friend callback. */ int -twc_cmd_friend(void *data, struct t_gui_buffer *buffer, +twc_cmd_friend(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { struct t_twc_profile *profile = twc_profile_search_buffer(buffer); @@ -526,7 +526,7 @@ twc_cmd_friend(void *data, struct t_gui_buffer *buffer, * Command /group callback. */ int -twc_cmd_group(void *data, struct t_gui_buffer *buffer, +twc_cmd_group(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { struct t_twc_profile *profile = twc_profile_search_buffer(buffer); @@ -616,7 +616,7 @@ twc_cmd_group(void *data, struct t_gui_buffer *buffer, * Command /invite callback. */ int -twc_cmd_invite(void *data, struct t_gui_buffer *buffer, +twc_cmd_invite(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { if (argc == 1) @@ -654,7 +654,7 @@ twc_cmd_invite(void *data, struct t_gui_buffer *buffer, * Command /me callback. */ int -twc_cmd_me(void *data, struct t_gui_buffer *buffer, +twc_cmd_me(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { if (argc == 1) @@ -672,7 +672,7 @@ twc_cmd_me(void *data, struct t_gui_buffer *buffer, * Command /msg callback. */ int -twc_cmd_msg(void *data, struct t_gui_buffer *buffer, +twc_cmd_msg(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { if (argc == 1) @@ -719,7 +719,7 @@ twc_cmd_msg(void *data, struct t_gui_buffer *buffer, * Command /myid callback. */ int -twc_cmd_myid(void *data, struct t_gui_buffer *buffer, +twc_cmd_myid(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { struct t_twc_profile *profile = twc_profile_search_buffer(buffer); @@ -744,7 +744,7 @@ twc_cmd_myid(void *data, struct t_gui_buffer *buffer, * Command /name callback. */ int -twc_cmd_name(void *data, struct t_gui_buffer *buffer, +twc_cmd_name(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { if (argc == 1) @@ -804,7 +804,7 @@ twc_cmd_name(void *data, struct t_gui_buffer *buffer, * Command /nospam callback. */ int -twc_cmd_nospam(void *data, struct t_gui_buffer *buffer, +twc_cmd_nospam(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { if (argc > 2) @@ -852,7 +852,7 @@ twc_cmd_nospam(void *data, struct t_gui_buffer *buffer, * Command /part callback. */ int -twc_cmd_part(void *data, struct t_gui_buffer *buffer, +twc_cmd_part(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { struct t_twc_chat *chat = twc_chat_search_buffer(buffer); @@ -886,7 +886,7 @@ twc_cmd_part(void *data, struct t_gui_buffer *buffer, * Save Tox profile data when /save is executed. */ int -twc_cmd_save(void *data, struct t_gui_buffer *buffer, const char *command) +twc_cmd_save(const void *pointer, void *data, struct t_gui_buffer *buffer, const char *command) { size_t index; struct t_twc_list_item *item; @@ -915,7 +915,7 @@ twc_cmd_save(void *data, struct t_gui_buffer *buffer, const char *command) * Command /status callback. */ int -twc_cmd_status(void *data, struct t_gui_buffer *buffer, +twc_cmd_status(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { if (argc != 2) @@ -945,7 +945,7 @@ twc_cmd_status(void *data, struct t_gui_buffer *buffer, * Command /statusmsg callback. */ int -twc_cmd_statusmsg(void *data, struct t_gui_buffer *buffer, +twc_cmd_statusmsg(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { struct t_twc_profile *profile = twc_profile_search_buffer(buffer); @@ -986,7 +986,7 @@ twc_cmd_statusmsg(void *data, struct t_gui_buffer *buffer, * Command /topic callback. */ int -twc_cmd_topic(void *data, struct t_gui_buffer *buffer, +twc_cmd_topic(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { if (argc == 1) @@ -1025,7 +1025,7 @@ twc_cmd_topic(void *data, struct t_gui_buffer *buffer, * Command /tox callback. */ int -twc_cmd_tox(void *data, struct t_gui_buffer *buffer, +twc_cmd_tox(const void *pointer, void *data, struct t_gui_buffer *buffer, int argc, char **argv, char **argv_eol) { // /tox [list] @@ -1158,7 +1158,7 @@ twc_commands_init() "address: internet address of node to bootstrap with\n" " port: port of the node\n" " Tox ID: Tox ID of the node", - "connect", twc_cmd_bootstrap, NULL); + "connect", twc_cmd_bootstrap, NULL, NULL); weechat_hook_command("friend", "manage friends", @@ -1179,7 +1179,7 @@ twc_commands_init() " || requests" " || accept" " || decline", - twc_cmd_friend, NULL); + twc_cmd_friend, NULL, NULL); weechat_hook_command("group", "manage group chats", @@ -1194,20 +1194,20 @@ twc_commands_init() "create" " || invites" " || join", - twc_cmd_group, NULL); + twc_cmd_group, NULL, NULL); weechat_hook_command("invite", "invite someone to a group chat", "||", "number, name, Tox ID: friend to message\n", "%(tox_friend_name)|%(tox_friend_tox_id)", - twc_cmd_invite, NULL); + twc_cmd_invite, NULL, NULL); weechat_hook_command("me", "send an action to the current chat", "", "message: message to send", - NULL, twc_cmd_me, NULL); + NULL, twc_cmd_me, NULL, NULL); weechat_hook_command("msg", "send a message to a Tox friend", @@ -1215,18 +1215,18 @@ twc_commands_init() "number, name, Tox ID: friend to message\n" "message: message to send", "%(tox_friend_name)|%(tox_friend_tox_id)", - twc_cmd_msg, NULL); + twc_cmd_msg, NULL, NULL); weechat_hook_command("myid", "get your Tox ID to give to friends", "", "", - NULL, twc_cmd_myid, NULL); + NULL, twc_cmd_myid, NULL, NULL); weechat_hook_command("name", "change your Tox name", "", "name: your new name", - NULL, twc_cmd_name, NULL); + NULL, twc_cmd_name, NULL, NULL); weechat_hook_command("nospam", "change nospam value", @@ -1235,32 +1235,32 @@ twc_commands_init() "new value is used\n\n" "Warning: changing your nospam value will alter your " "Tox ID!", - NULL, twc_cmd_nospam, NULL); + NULL, twc_cmd_nospam, NULL, NULL); weechat_hook_command("part", "leave a group chat", "", "", - NULL, twc_cmd_part, NULL); + NULL, twc_cmd_part, NULL, NULL); - weechat_hook_command_run("/save", twc_cmd_save, NULL); + weechat_hook_command_run("/save", twc_cmd_save, NULL, NULL); weechat_hook_command("status", "change your Tox status", "online|busy|away", "", - NULL, twc_cmd_status, NULL); + NULL, twc_cmd_status, NULL, NULL); weechat_hook_command("statusmsg", "change your Tox status message", "[]", "message: your new status message", - NULL, twc_cmd_statusmsg, NULL); + NULL, twc_cmd_statusmsg, NULL, NULL); weechat_hook_command("topic", "set a group chat topic", "", "topic: new group chat topic", - NULL, twc_cmd_topic, NULL); + NULL, twc_cmd_topic, NULL, NULL); weechat_hook_command("tox", "manage Tox profiles", @@ -1284,6 +1284,6 @@ twc_commands_init() " || load %(tox_unloaded_profiles)|%*" " || unload %(tox_loaded_profiles)|%*" " || reload %(tox_loaded_profiles)|%*", - twc_cmd_tox, NULL); + twc_cmd_tox, NULL, NULL); } diff --git a/src/twc-completion.c b/src/twc-completion.c index 37affca..3bad2ac 100644 --- a/src/twc-completion.c +++ b/src/twc-completion.c @@ -46,12 +46,12 @@ enum * Complete a friends name and/or Tox ID. */ int -twc_completion_friend(void *data, +twc_completion_friend(const void *pointer, void *data, const char *completion_item, struct t_gui_buffer *buffer, struct t_gui_completion *completion) { - int flags = (int)(intptr_t)data; + int flags = (int)(intptr_t)pointer; struct t_twc_profile *profile = twc_profile_search_buffer(buffer); if (!profile) @@ -108,12 +108,12 @@ twc_completion_friend(void *data, * Complete a profile name, possibly filtering by loaded/unloaded profiles. */ int -twc_completion_profile(void *data, +twc_completion_profile(const void *pointer, void *data, const char *completion_item, struct t_gui_buffer *buffer, struct t_gui_completion *completion) { - int flag = (int)(intptr_t)data; + int flag = (int)(intptr_t)pointer; size_t index; struct t_twc_list_item *item; @@ -137,18 +137,18 @@ twc_completion_init() { weechat_hook_completion("tox_profiles", "profile", twc_completion_profile, - (void *)(intptr_t)TWC_ALL_PROFILES); + (void *)(intptr_t)TWC_ALL_PROFILES, NULL); weechat_hook_completion("tox_loaded_profiles", "loaded profile", twc_completion_profile, - (void *)(intptr_t)TWC_LOADED_PROFILES); + (void *)(intptr_t)TWC_LOADED_PROFILES, NULL); weechat_hook_completion("tox_unloaded_profiles", "unloaded profile", twc_completion_profile, - (void *)(intptr_t)TWC_UNLOADED_PROFILES); + (void *)(intptr_t)TWC_UNLOADED_PROFILES, NULL); weechat_hook_completion("tox_friend_tox_id", "friend Tox ID", twc_completion_friend, - (void *)(intptr_t)TWC_COMPLETE_FRIEND_ID); + (void *)(intptr_t)TWC_COMPLETE_FRIEND_ID, NULL); weechat_hook_completion("tox_friend_name", "friend name", twc_completion_friend, - (void *)(intptr_t)TWC_COMPLETE_FRIEND_NAME); + (void *)(intptr_t)TWC_COMPLETE_FRIEND_NAME, NULL); } diff --git a/src/twc-config.c b/src/twc-config.c index 45e794f..5b450a6 100644 --- a/src/twc-config.c +++ b/src/twc-config.c @@ -70,7 +70,7 @@ twc_config_profile_option_search(const char *option_name) * Called when a profile option is read. */ int -twc_config_profile_read_callback(void *data, +twc_config_profile_read_callback(const void *pointer, void *data, struct t_config_file *config_file, struct t_config_section *section, const char *option_name, @@ -132,7 +132,7 @@ twc_config_profile_read_callback(void *data, * Callback for checking an option value being set. */ int -twc_config_check_value_callback(void *data, +twc_config_check_value_callback(const void *pointer, void *data, struct t_config_option *option, const char *value) { @@ -149,11 +149,11 @@ twc_config_check_value_callback(void *data, * Callback for checking an option value being set for a profile. */ int -twc_config_profile_check_value_callback(void *data, +twc_config_profile_check_value_callback(const void *pointer, void *data, struct t_config_option *option, const char *value) { - enum t_twc_profile_option option_index = (intptr_t)data; + enum t_twc_profile_option option_index = (intptr_t)pointer; switch (option_index) { @@ -168,7 +168,7 @@ twc_config_profile_check_value_callback(void *data, * Callback for option being changed for a profile. */ void -twc_config_profile_change_callback(void *data, +twc_config_profile_change_callback(const void *pointer, void *data, struct t_config_option *option) { } @@ -256,9 +256,11 @@ twc_config_init_option(struct t_config_section *section, twc_config_file, section, option_name, type, description, string_values, min, max, default_value, value, null_allowed, - twc_config_profile_check_value_callback, (void *)(intptr_t)option_index, - twc_config_profile_change_callback, (void *)(intptr_t)option_index, - NULL, NULL); + twc_config_profile_check_value_callback, + (void *)(intptr_t)option_index, NULL, + twc_config_profile_change_callback, + (void *)(intptr_t)option_index, NULL, + NULL, NULL, NULL); } /** @@ -267,25 +269,26 @@ twc_config_init_option(struct t_config_section *section, void twc_config_init() { - twc_config_file = weechat_config_new("tox", NULL, NULL); + twc_config_file = weechat_config_new("tox", NULL, NULL, NULL); twc_config_section_profile = weechat_config_new_section(twc_config_file, "profile", 0, 0, - twc_config_profile_read_callback, NULL, + twc_config_profile_read_callback, NULL, NULL, - NULL, NULL, - NULL, NULL, - NULL, NULL); + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL); twc_config_section_profile_default = weechat_config_new_section(twc_config_file, "profile_default", 0, 0, - NULL, NULL, - NULL, NULL, - NULL, NULL, - NULL, NULL, - NULL, NULL); + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL); for (int i = 0; i < TWC_PROFILE_NUM_OPTIONS; ++i) { @@ -297,11 +300,11 @@ twc_config_init() twc_config_section_look = weechat_config_new_section(twc_config_file, "look", 0, 0, - NULL, NULL, - NULL, NULL, - NULL, NULL, - NULL, NULL, - NULL, NULL); + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, NULL); twc_config_friend_request_message = weechat_config_new_option( twc_config_file, twc_config_section_look, @@ -309,16 +312,16 @@ twc_config_init() "message sent with friend requests if no other message is specified", NULL, 0, 0, "Hi! Please add me on Tox!", NULL, 0, - twc_config_check_value_callback, NULL, - NULL, NULL, NULL, NULL); + twc_config_check_value_callback, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL); twc_config_short_id_size = weechat_config_new_option( twc_config_file, twc_config_section_look, "short_id_size", "integer", "length of Tox IDs shown in short format; must be a multiple of two", NULL, 2, TOX_PUBLIC_KEY_SIZE * 2, "8", NULL, 0, - twc_config_check_value_callback, NULL, - NULL, NULL, NULL, NULL); + twc_config_check_value_callback, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL); } /** diff --git a/src/twc-gui.c b/src/twc-gui.c index 4c2ac43..86d5660 100644 --- a/src/twc-gui.c +++ b/src/twc-gui.c @@ -29,7 +29,7 @@ #include "twc-gui.h" char * -twc_bar_item_away(void *data, +twc_bar_item_away(const void *pointer, void *data, struct t_gui_bar_item *item, struct t_gui_window *window, struct t_gui_buffer *buffer, @@ -58,7 +58,7 @@ twc_bar_item_away(void *data, } char * -twc_bar_item_input_prompt(void *data, +twc_bar_item_input_prompt(const void *pointer, void *data, struct t_gui_bar_item *item, struct t_gui_window *window, struct t_gui_buffer *buffer, @@ -73,7 +73,8 @@ twc_bar_item_input_prompt(void *data, } char * -twc_bar_item_buffer_plugin(void *data, struct t_gui_bar_item *item, +twc_bar_item_buffer_plugin(const void *pointer, void *data, + struct t_gui_bar_item *item, struct t_gui_window *window, struct t_gui_buffer *buffer, struct t_hashtable *extra_info) @@ -104,8 +105,8 @@ twc_bar_item_buffer_plugin(void *data, struct t_gui_bar_item *item, void twc_gui_init() { - weechat_bar_item_new("away", twc_bar_item_away, NULL); - weechat_bar_item_new("input_prompt", twc_bar_item_input_prompt, NULL); - weechat_bar_item_new("buffer_plugin", twc_bar_item_buffer_plugin, NULL); + weechat_bar_item_new("away", twc_bar_item_away, NULL, NULL); + weechat_bar_item_new("input_prompt", twc_bar_item_input_prompt, NULL, NULL); + weechat_bar_item_new("buffer_plugin", twc_bar_item_buffer_plugin, NULL, NULL); } diff --git a/src/twc-profile.c b/src/twc-profile.c index ecca15c..1cbcbf8 100644 --- a/src/twc-profile.c +++ b/src/twc-profile.c @@ -90,18 +90,17 @@ twc_profile_save_data_file(struct t_twc_profile *profile) #ifdef TOXENCRYPTSAVE_ENABLED uint8_t enc_data[size + TOX_PASS_ENCRYPTION_EXTRA_LENGTH]; - char *pw = weechat_config_string(profile->options[TWC_PROFILE_OPTION_PASSPHRASE]); + const char *pw + = weechat_config_string(profile->options[TWC_PROFILE_OPTION_PASSPHRASE]); if (pw) { pw = weechat_string_eval_expression(pw, NULL, NULL, NULL); if (!tox_pass_encrypt(data, size, (uint8_t *)pw, strlen(pw), enc_data, NULL)) { - free(pw); weechat_printf(profile->buffer, "error encrypting data"); return -1; } - free(pw); d = enc_data; size += TOX_PASS_ENCRYPTION_EXTRA_LENGTH; } @@ -124,7 +123,7 @@ twc_profile_save_data_file(struct t_twc_profile *profile) * Callback when a profile's main buffer is closed. Unloads the profile. */ int -twc_profile_buffer_close_callback(void *data, +twc_profile_buffer_close_callback(const void *pointer, void *data, struct t_gui_buffer *buffer) { struct t_twc_profile *profile = data; @@ -281,8 +280,9 @@ twc_profile_load(struct t_twc_profile *profile) { // create main buffer profile->buffer = weechat_buffer_new(profile->name, - NULL, NULL, - twc_profile_buffer_close_callback, profile); + NULL, NULL, NULL, + twc_profile_buffer_close_callback, + profile, NULL); if (!(profile->buffer)) return TWC_RC_ERROR; } @@ -344,23 +344,18 @@ twc_profile_load(struct t_twc_profile *profile) if (data_size && tox_is_data_encrypted(data)) { - char *pw = weechat_config_string(profile->options[TWC_PROFILE_OPTION_PASSPHRASE]); + const char *pw = weechat_config_string(profile->options[TWC_PROFILE_OPTION_PASSPHRASE]); + if (pw) { // evaluate password option and duplicate as tox_*_decrypt wipes it pw = weechat_string_eval_expression(pw, NULL, NULL, NULL); - } - - if (pw) - { if (!tox_pass_decrypt(data, data_size, (uint8_t *)pw, strlen(pw), dec_data, NULL)) { - free(pw); weechat_printf(profile->buffer, "%scould not decrypt Tox data file, aborting", weechat_prefix("error")); return TWC_RC_ERROR; } - free(pw); data_size -= TOX_PASS_ENCRYPTION_EXTRA_LENGTH; } options.savedata_data = dec_data; @@ -414,7 +409,7 @@ twc_profile_load(struct t_twc_profile *profile) twc_bootstrap_random_node(profile->tox); // start tox_iterate loop - twc_do_timer_cb(profile, 0); + twc_do_timer_cb(profile, NULL, 0); // register Tox callbacks tox_callback_friend_message(profile->tox, twc_friend_message_callback, profile); diff --git a/src/twc-tox-callbacks.c b/src/twc-tox-callbacks.c index f74958f..e3d79c0 100644 --- a/src/twc-tox-callbacks.c +++ b/src/twc-tox-callbacks.c @@ -33,14 +33,15 @@ #include "twc-tox-callbacks.h" int -twc_do_timer_cb(void *data, +twc_do_timer_cb(const void *pointer, void *data, int remaining_calls) { - struct t_twc_profile *profile = data; + /* TODO: don't strip the const */ + struct t_twc_profile *profile = (void *)pointer; tox_iterate(profile->tox); struct t_hook *hook = weechat_hook_timer(tox_iteration_interval(profile->tox), - 0, 1, twc_do_timer_cb, profile); + 0, 1, twc_do_timer_cb, profile, NULL); profile->tox_do_timer = hook; // check connection status diff --git a/src/twc-tox-callbacks.h b/src/twc-tox-callbacks.h index f5e803b..e110371 100644 --- a/src/twc-tox-callbacks.h +++ b/src/twc-tox-callbacks.h @@ -23,7 +23,7 @@ #include int -twc_do_timer_cb(void *data, +twc_do_timer_cb(const void *pointer, void *data, int remaining_calls); void