diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/config/color.c | 2 | ||||
-rw-r--r-- | src/plugins/c_api.c | 2 | ||||
-rw-r--r-- | src/plugins/profapi.c | 125 | ||||
-rw-r--r-- | src/plugins/profapi.h | 142 | ||||
-rw-r--r-- | src/ui/inputwin.c | 13 |
5 files changed, 145 insertions, 139 deletions
diff --git a/src/config/color.c b/src/config/color.c index 7676253f..9c1998f5 100644 --- a/src/config/color.c +++ b/src/config/color.c @@ -59,7 +59,7 @@ static struct color_pair_cache struct { int16_t fg, bg; - } * pairs; + }* pairs; int size; int capacity; } cache = { 0 }; diff --git a/src/plugins/c_api.c b/src/plugins/c_api.c index cda40c4d..8daf633d 100644 --- a/src/plugins/c_api.c +++ b/src/plugins/c_api.c @@ -455,7 +455,7 @@ void c_command_callback(PluginCommand* command, gchar** args) { CommandWrapper* wrapper = command->callback; - void (*f)(gchar * *args) = wrapper->func; + void (*f)(gchar** args) = wrapper->func; f(args); } diff --git a/src/plugins/profapi.c b/src/plugins/profapi.c index 9011f1a2..fe3393ab 100644 --- a/src/plugins/profapi.c +++ b/src/plugins/profapi.c @@ -41,80 +41,83 @@ #include "plugins/callbacks.h" void (*prof_cons_alert)(void) = NULL; -int (*prof_cons_show)(const char * const message) = NULL; -int (*prof_cons_show_themed)(const char *const group, const char *const item, const char *const def, const char *const message) = NULL; -int (*prof_cons_bad_cmd_usage)(const char *const cmd) = NULL; +int (*prof_cons_show)(const char* const message) = NULL; +int (*prof_cons_show_themed)(const char* const group, const char* const item, const char* const def, const char* const message) = NULL; +int (*prof_cons_bad_cmd_usage)(const char* const cmd) = NULL; -void (*_prof_register_command)(const char *filename, const char *command_name, int min_args, int max_args, - char **synopsis, const char *description, char *arguments[][2], char **examples, - CMD_CB callback) = NULL; +void (*_prof_register_command)(const char* filename, const char* command_name, int min_args, int max_args, + char** synopsis, const char* description, char* arguments[][2], char** examples, + CMD_CB callback) + = NULL; -void (*_prof_register_timed)(const char *filename, TIMED_CB callback, int interval_seconds) = NULL; +void (*_prof_register_timed)(const char* filename, TIMED_CB callback, int interval_seconds) = NULL; -void (*_prof_completer_add)(const char *filename, const char *key, char **items) = NULL; -void (*_prof_completer_remove)(const char *filename, const char *key, char **items) = NULL; -void (*_prof_completer_clear)(const char *filename, const char *key) = NULL; -void (*_prof_filepath_completer_add)(const char *filename, const char *prefix) = NULL; +void (*_prof_completer_add)(const char* filename, const char* key, char** items) = NULL; +void (*_prof_completer_remove)(const char* filename, const char* key, char** items) = NULL; +void (*_prof_completer_clear)(const char* filename, const char* key) = NULL; +void (*_prof_filepath_completer_add)(const char* filename, const char* prefix) = NULL; -void (*prof_notify)(const char *message, int timeout_ms, const char *category) = NULL; +void (*prof_notify)(const char* message, int timeout_ms, const char* category) = NULL; -void (*prof_send_line)(char *line) = NULL; +void (*prof_send_line)(char* line) = NULL; char* (*prof_get_current_recipient)(void) = NULL; char* (*prof_get_current_muc)(void) = NULL; int (*prof_current_win_is_console)(void) = NULL; char* (*prof_get_current_nick)(void) = NULL; -char* (*prof_get_name_from_roster)(const char *barejid) = NULL; -char* (*prof_get_barejid_from_roster)(const char *name) = NULL; +char* (*prof_get_name_from_roster)(const char* barejid) = NULL; +char* (*prof_get_barejid_from_roster)(const char* name) = NULL; char** (*prof_get_current_occupants)(void) = NULL; -char* (*prof_get_room_nick)(const char *barejid) = NULL; +char* (*prof_get_room_nick)(const char* barejid) = NULL; -void (*prof_log_debug)(const char *message) = NULL; -void (*prof_log_info)(const char *message) = NULL; -void (*prof_log_warning)(const char *message) = NULL; -void (*prof_log_error)(const char *message) = NULL; +void (*prof_log_debug)(const char* message) = NULL; +void (*prof_log_info)(const char* message) = NULL; +void (*prof_log_warning)(const char* message) = NULL; +void (*prof_log_error)(const char* message) = NULL; -void (*_prof_win_create)(const char *filename, PROF_WIN_TAG win, WINDOW_CB input_handler) = NULL; +void (*_prof_win_create)(const char* filename, PROF_WIN_TAG win, WINDOW_CB input_handler) = NULL; int (*prof_win_exists)(PROF_WIN_TAG win) = NULL; int (*prof_win_focus)(PROF_WIN_TAG win) = NULL; -int (*prof_win_show)(PROF_WIN_TAG win, char *line) = NULL; -int (*prof_win_show_themed)(PROF_WIN_TAG tag, char *group, char *key, char *def, char *line) = NULL; - -int (*prof_send_stanza)(char *stanza) = NULL; - -int (*prof_settings_boolean_get)(char *group, char *key, int def) = NULL; -void (*prof_settings_boolean_set)(char *group, char *key, int value) = NULL; -char* (*prof_settings_string_get)(char *group, char *key, char *def) = NULL; -void (*prof_settings_string_set)(char *group, char *key, char *value) = NULL; -int (*prof_settings_int_get)(char *group, char *key, int def) = NULL; -void (*prof_settings_int_set)(char *group, char *key, int value) = NULL; -char** (*prof_settings_string_list_get)(char *group, char *key) = NULL; -void (*prof_settings_string_list_add)(char *group, char *key, char *value) = NULL; -int (*prof_settings_string_list_remove)(char *group, char *key, char *value) = NULL; -int (*prof_settings_string_list_clear)(char *group, char *key) = NULL; - -void (*prof_incoming_message)(char *barejid, char *resource, char *message) = NULL; - -void (*_prof_disco_add_feature)(const char *filename, char *feature) = NULL; - -void (*prof_encryption_reset)(const char *barejid) = NULL; - -int (*prof_chat_set_titlebar_enctext)(const char *barejid, const char *enctext) = NULL; -int (*prof_chat_unset_titlebar_enctext)(const char *barejid) = NULL; -int (*prof_chat_set_incoming_char)(const char *barejid, const char *ch) = NULL; -int (*prof_chat_unset_incoming_char)(const char *barejid) = NULL; -int (*prof_chat_set_outgoing_char)(const char *barejid, const char *ch) = NULL; -int (*prof_chat_unset_outgoing_char)(const char *barejid) = NULL; -int (*prof_room_set_titlebar_enctext)(const char *roomjid, const char *enctext) = NULL; -int (*prof_room_unset_titlebar_enctext)(const char *roomjid) = NULL; -int (*prof_room_set_message_char)(const char *roomjid, const char *ch) = NULL; -int (*prof_room_unset_message_char)(const char *roomjid) = NULL; - -int (*prof_chat_show)(const char *const barejid, const char *const message) = NULL; -int (*prof_chat_show_themed)(const char *const barejid, const char *const group, const char *const item, const char *const def, - const char *const ch, const char *const message) = NULL; - -int (*prof_room_show)(const char *const roomjid, const char *const message) = NULL; -int (*prof_room_show_themed)(const char *const roomjid, const char *const group, const char *const item, const char *const def, - const char *const ch, const char *const message) = NULL; +int (*prof_win_show)(PROF_WIN_TAG win, char* line) = NULL; +int (*prof_win_show_themed)(PROF_WIN_TAG tag, char* group, char* key, char* def, char* line) = NULL; + +int (*prof_send_stanza)(char* stanza) = NULL; + +int (*prof_settings_boolean_get)(char* group, char* key, int def) = NULL; +void (*prof_settings_boolean_set)(char* group, char* key, int value) = NULL; +char* (*prof_settings_string_get)(char* group, char* key, char* def) = NULL; +void (*prof_settings_string_set)(char* group, char* key, char* value) = NULL; +int (*prof_settings_int_get)(char* group, char* key, int def) = NULL; +void (*prof_settings_int_set)(char* group, char* key, int value) = NULL; +char** (*prof_settings_string_list_get)(char* group, char* key) = NULL; +void (*prof_settings_string_list_add)(char* group, char* key, char* value) = NULL; +int (*prof_settings_string_list_remove)(char* group, char* key, char* value) = NULL; +int (*prof_settings_string_list_clear)(char* group, char* key) = NULL; + +void (*prof_incoming_message)(char* barejid, char* resource, char* message) = NULL; + +void (*_prof_disco_add_feature)(const char* filename, char* feature) = NULL; + +void (*prof_encryption_reset)(const char* barejid) = NULL; + +int (*prof_chat_set_titlebar_enctext)(const char* barejid, const char* enctext) = NULL; +int (*prof_chat_unset_titlebar_enctext)(const char* barejid) = NULL; +int (*prof_chat_set_incoming_char)(const char* barejid, const char* ch) = NULL; +int (*prof_chat_unset_incoming_char)(const char* barejid) = NULL; +int (*prof_chat_set_outgoing_char)(const char* barejid, const char* ch) = NULL; +int (*prof_chat_unset_outgoing_char)(const char* barejid) = NULL; +int (*prof_room_set_titlebar_enctext)(const char* roomjid, const char* enctext) = NULL; +int (*prof_room_unset_titlebar_enctext)(const char* roomjid) = NULL; +int (*prof_room_set_message_char)(const char* roomjid, const char* ch) = NULL; +int (*prof_room_unset_message_char)(const char* roomjid) = NULL; + +int (*prof_chat_show)(const char* const barejid, const char* const message) = NULL; +int (*prof_chat_show_themed)(const char* const barejid, const char* const group, const char* const item, const char* const def, + const char* const ch, const char* const message) + = NULL; + +int (*prof_room_show)(const char* const roomjid, const char* const message) = NULL; +int (*prof_room_show_themed)(const char* const roomjid, const char* const group, const char* const item, const char* const def, + const char* const ch, const char* const message) + = NULL; diff --git a/src/plugins/profapi.h b/src/plugins/profapi.h index 7e607f09..cb850c82 100644 --- a/src/plugins/profapi.h +++ b/src/plugins/profapi.h @@ -37,96 +37,96 @@ #define PLUGINS_PROF_API_H #define prof_register_command(command_name, min_args, max_args, synopsis, description, arguments, examples, callback) _prof_register_command(__FILE__, command_name, min_args, max_args, synopsis, description, arguments, examples, callback) -#define prof_register_timed(callback, interval_seconds) _prof_register_timed(__FILE__, callback, interval_seconds) -#define prof_completer_add(key, items) _prof_completer_add(__FILE__, key, items) -#define prof_completer_remove(key, items) _prof_completer_remove(__FILE__, key, items) -#define prof_completer_clear(key) _prof_completer_clear(__FILE__, key) -#define prof_filepath_completer_add(prefix) _prof_filepath_completer_add(__FILE__, prefix) -#define prof_win_create(win, input_handler) _prof_win_create(__FILE__, win, input_handler) -#define prof_disco_add_feature(feature) _prof_disco_add_feature(__FILE__, feature) +#define prof_register_timed(callback, interval_seconds) _prof_register_timed(__FILE__, callback, interval_seconds) +#define prof_completer_add(key, items) _prof_completer_add(__FILE__, key, items) +#define prof_completer_remove(key, items) _prof_completer_remove(__FILE__, key, items) +#define prof_completer_clear(key) _prof_completer_clear(__FILE__, key) +#define prof_filepath_completer_add(prefix) _prof_filepath_completer_add(__FILE__, prefix) +#define prof_win_create(win, input_handler) _prof_win_create(__FILE__, win, input_handler) +#define prof_disco_add_feature(feature) _prof_disco_add_feature(__FILE__, feature) typedef char* PROF_WIN_TAG; -typedef void(*CMD_CB)(char **args); -typedef void(*TIMED_CB)(void); -typedef void(*WINDOW_CB)(PROF_WIN_TAG win, char *line); +typedef void (*CMD_CB)(char** args); +typedef void (*TIMED_CB)(void); +typedef void (*WINDOW_CB)(PROF_WIN_TAG win, char* line); void (*prof_cons_alert)(void); -int (*prof_cons_show)(const char * const message); -int (*prof_cons_show_themed)(const char *const group, const char *const item, const char *const def, const char *const message); -int (*prof_cons_bad_cmd_usage)(const char *const cmd); +int (*prof_cons_show)(const char* const message); +int (*prof_cons_show_themed)(const char* const group, const char* const item, const char* const def, const char* const message); +int (*prof_cons_bad_cmd_usage)(const char* const cmd); -void (*_prof_register_command)(const char *filename, const char *command_name, int min_args, int max_args, - char **synopsis, const char *description, char *arguments[][2], char **examples, - CMD_CB callback); +void (*_prof_register_command)(const char* filename, const char* command_name, int min_args, int max_args, + char** synopsis, const char* description, char* arguments[][2], char** examples, + CMD_CB callback); -void (*_prof_register_timed)(const char *filename, TIMED_CB callback, int interval_seconds); +void (*_prof_register_timed)(const char* filename, TIMED_CB callback, int interval_seconds); -void (*_prof_completer_add)(const char *filename, const char *key, char **items); -void (*_prof_completer_remove)(const char *filename, const char *key, char **items); -void (*_prof_completer_clear)(const char *filename, const char *key); -void (*_prof_filepath_completer_add)(const char *filename, const char *prefix); +void (*_prof_completer_add)(const char* filename, const char* key, char** items); +void (*_prof_completer_remove)(const char* filename, const char* key, char** items); +void (*_prof_completer_clear)(const char* filename, const char* key); +void (*_prof_filepath_completer_add)(const char* filename, const char* prefix); -void (*prof_notify)(const char *message, int timeout_ms, const char *category); +void (*prof_notify)(const char* message, int timeout_ms, const char* category); -void (*prof_send_line)(char *line); +void (*prof_send_line)(char* line); char* (*prof_get_current_recipient)(void); char* (*prof_get_current_muc)(void); int (*prof_current_win_is_console)(void); char* (*prof_get_current_nick)(void); -char* (*prof_get_name_from_roster)(const char *barejid); -char* (*prof_get_barejid_from_roster)(const char *name); +char* (*prof_get_name_from_roster)(const char* barejid); +char* (*prof_get_barejid_from_roster)(const char* name); char** (*prof_get_current_occupants)(void); -char* (*prof_get_room_nick)(const char *barejid); +char* (*prof_get_room_nick)(const char* barejid); -void (*prof_log_debug)(const char *message); -void (*prof_log_info)(const char *message); -void (*prof_log_warning)(const char *message); -void (*prof_log_error)(const char *message); +void (*prof_log_debug)(const char* message); +void (*prof_log_info)(const char* message); +void (*prof_log_warning)(const char* message); +void (*prof_log_error)(const char* message); -void (*_prof_win_create)(const char *filename, PROF_WIN_TAG win, WINDOW_CB input_handler); +void (*_prof_win_create)(const char* filename, PROF_WIN_TAG win, WINDOW_CB input_handler); int (*prof_win_exists)(PROF_WIN_TAG win); int (*prof_win_focus)(PROF_WIN_TAG win); -int (*prof_win_show)(PROF_WIN_TAG win, char *line); -int (*prof_win_show_themed)(PROF_WIN_TAG tag, char *group, char *key, char *def, char *line); - -int (*prof_send_stanza)(char *stanza); - -int (*prof_settings_boolean_get)(char *group, char *key, int def); -void (*prof_settings_boolean_set)(char *group, char *key, int value); -char* (*prof_settings_string_get)(char *group, char *key, char *def); -void (*prof_settings_string_set)(char *group, char *key, char *value); -int (*prof_settings_int_get)(char *group, char *key, int def); -void (*prof_settings_int_set)(char *group, char *key, int value); -char** (*prof_settings_string_list_get)(char *group, char *key); -void (*prof_settings_string_list_add)(char *group, char *key, char *value); -int (*prof_settings_string_list_remove)(char *group, char *key, char *value); -int (*prof_settings_string_list_clear)(char *group, char *key); - -void (*prof_incoming_message)(char *barejid, char *resource, char *message); - -void (*_prof_disco_add_feature)(const char *filename, char *feature); - -void (*prof_encryption_reset)(const char *barejid); - -int (*prof_chat_set_titlebar_enctext)(const char *barejid, const char *enctext); -int (*prof_chat_unset_titlebar_enctext)(const char *barejid); -int (*prof_chat_set_incoming_char)(const char *barejid, const char *ch); -int (*prof_chat_unset_incoming_char)(const char *barejid); -int (*prof_chat_set_outgoing_char)(const char *barejid, const char *ch); -int (*prof_chat_unset_outgoing_char)(const char *barejid); -int (*prof_room_set_titlebar_enctext)(const char *roomjid, const char *enctext); -int (*prof_room_unset_titlebar_enctext)(const char *roomjid); -int (*prof_room_set_message_char)(const char *roomjid, const char *ch); -int (*prof_room_unset_message_char)(const char *roomjid); - -int (*prof_chat_show)(const char *const barejid, const char *const message); -int (*prof_chat_show_themed)(const char *const barejid, const char *const group, const char *const item, const char *const def, - const char *const ch, const char *const message); - -int (*prof_room_show)(const char *const roomjid, const char *const message); -int (*prof_room_show_themed)(const char *const roomjid, const char *const group, const char *const item, const char *const def, - const char *const ch, const char *const message); +int (*prof_win_show)(PROF_WIN_TAG win, char* line); +int (*prof_win_show_themed)(PROF_WIN_TAG tag, char* group, char* key, char* def, char* line); + +int (*prof_send_stanza)(char* stanza); + +int (*prof_settings_boolean_get)(char* group, char* key, int def); +void (*prof_settings_boolean_set)(char* group, char* key, int value); +char* (*prof_settings_string_get)(char* group, char* key, char* def); +void (*prof_settings_string_set)(char* group, char* key, char* value); +int (*prof_settings_int_get)(char* group, char* key, int def); +void (*prof_settings_int_set)(char* group, char* key, int value); +char** (*prof_settings_string_list_get)(char* group, char* key); +void (*prof_settings_string_list_add)(char* group, char* key, char* value); +int (*prof_settings_string_list_remove)(char* group, char* key, char* value); +int (*prof_settings_string_list_clear)(char* group, char* key); + +void (*prof_incoming_message)(char* barejid, char* resource, char* message); + +void (*_prof_disco_add_feature)(const char* filename, char* feature); + +void (*prof_encryption_reset)(const char* barejid); + +int (*prof_chat_set_titlebar_enctext)(const char* barejid, const char* enctext); +int (*prof_chat_unset_titlebar_enctext)(const char* barejid); +int (*prof_chat_set_incoming_char)(const char* barejid, const char* ch); +int (*prof_chat_unset_incoming_char)(const char* barejid); +int (*prof_chat_set_outgoing_char)(const char* barejid, const char* ch); +int (*prof_chat_unset_outgoing_char)(const char* barejid); +int (*prof_room_set_titlebar_enctext)(const char* roomjid, const char* enctext); +int (*prof_room_unset_titlebar_enctext)(const char* roomjid); +int (*prof_room_set_message_char)(const char* roomjid, const char* ch); +int (*prof_room_unset_message_char)(const char* roomjid); + +int (*prof_chat_show)(const char* const barejid, const char* const message); +int (*prof_chat_show_themed)(const char* const barejid, const char* const group, const char* const item, const char* const def, + const char* const ch, const char* const message); + +int (*prof_room_show)(const char* const roomjid, const char* const message); +int (*prof_room_show_themed)(const char* const roomjid, const char* const group, const char* const item, const char* const def, + const char* const ch, const char* const message); #endif diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index e59be8b5..453dfeac 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -568,12 +568,15 @@ _inp_rl_startup_hook(void) static void _inp_rl_linehandler(char* line) { - if (line && *line) { - if (!get_password) { - add_history(line); - } - } inp_line = line; + if (!line || !*line || get_password) { + return; + } + HISTORY_STATE* history = history_get_history_state(); + HIST_ENTRY* last = history->length > 0 ? history->entries[history->length - 1] : NULL; + if (last == NULL || strcmp(last->line, line) != 0) { + add_history(line); + } } static gboolean shift_tab = FALSE; |