From ab1c140935ff391ad3b67236a07795343a4e311f Mon Sep 17 00:00:00 2001 From: James Booth Date: Sun, 15 Sep 2013 17:19:31 +0100 Subject: [PATCH] Remaining Lua window api --- configure.ac | 3 +-- src/plugins/api.c | 14 ++++++------ src/plugins/api.h | 12 +++++------ src/plugins/callbacks.c | 6 +++--- src/plugins/callbacks.h | 6 +++--- src/plugins/lua_api.c | 48 +++++++++++------------------------------ src/profanity.c | 23 +++++++++++--------- src/profanity.h | 2 +- 8 files changed, 46 insertions(+), 68 deletions(-) diff --git a/configure.ac b/configure.ac index 81a5bf8b..f8af3211 100644 --- a/configure.ac +++ b/configure.ac @@ -132,8 +132,7 @@ fi AM_CFLAGS="-Wall -export-dynamic" if test "x$PACKAGE_STATUS" = xdevelopment; then -# AM_CFLAGS="$AM_CFLAGS -Wunused -Werror" - AM_CFLAGS="$AM_CFLAGS -Wunused" + AM_CFLAGS="$AM_CFLAGS -Wunused -Werror" fi LIBS="$LIBS $DEPS_LIBS $NOTIFY_LIBS" diff --git a/src/plugins/api.c b/src/plugins/api.c index 910066fd..dfb0a4c6 100644 --- a/src/plugins/api.c +++ b/src/plugins/api.c @@ -85,7 +85,7 @@ api_notify(const char *message, const char *category, int timeout_ms) } void -api_send_line(char *line) +api_send_line(const char *line) { prof_process_input(line); } @@ -127,14 +127,14 @@ api_log_error(const char *message) } int -api_win_exists(char *tag) +api_win_exists(const char *tag) { return (wins_get_by_recipient(tag) != NULL); } void -api_win_create(char *tag, void *callback, - void(*callback_func)(PluginWindowCallback *window_callback, char *tag, const char * const line)) +api_win_create(const char *tag, void *callback, + void(*callback_func)(PluginWindowCallback *window_callback, const char *tag, const char * const line)) { PluginWindowCallback *window = malloc(sizeof(PluginWindowCallback)); window->callback = callback; @@ -144,7 +144,7 @@ api_win_create(char *tag, void *callback, } void -api_win_focus(char *tag) +api_win_focus(const char *tag) { ProfWin *win = wins_get_by_recipient(tag); int num = wins_get_num(win); @@ -152,14 +152,14 @@ api_win_focus(char *tag) } void -api_win_process_line(char *tag, const char * const line) +api_win_process_line(const char *tag, const char * const line) { PluginWindowCallback *window = callbacks_get_window_handler(tag); window->callback_func(window, tag, line); } void -api_win_show(char *tag, char *line) +api_win_show(const char *tag, const char *line) { ProfWin *window = wins_get_by_recipient(tag); win_print_time(window, '-'); diff --git a/src/plugins/api.h b/src/plugins/api.h index 0325447e..733c554e 100644 --- a/src/plugins/api.h +++ b/src/plugins/api.h @@ -28,7 +28,7 @@ void api_cons_alert(void); void api_cons_show(const char * const message); void api_notify(const char *message, const char *category, int timeout_ms); -void api_send_line(char *line); +void api_send_line(const char *line); char * api_get_current_recipient(void); void api_register_command(const char *command_name, int min_args, int max_args, @@ -42,11 +42,11 @@ void api_log_info(const char *message); void api_log_warning(const char *message); void api_log_error(const char *message); -int api_win_exists(char *tag); -void api_win_create(char *tag, void *callback, +int api_win_exists(const char *tag); +void api_win_create(const char *tag, void *callback, void(*callback_func)(PluginWindowCallback *window_callback, char *tag, char *line)); -void api_win_focus(char *tag); -void api_win_process_line(char *tag, const char * const line); -void api_win_show(char *tag, char *line); +void api_win_focus(const char *tag); +void api_win_process_line(const char *tag, const char * const line); +void api_win_show(const char *tag, const char *line); #endif diff --git a/src/plugins/callbacks.c b/src/plugins/callbacks.c index 000a2e19..682179b9 100644 --- a/src/plugins/callbacks.c +++ b/src/plugins/callbacks.c @@ -48,17 +48,17 @@ callbacks_add_timed(PluginTimedFunction *timed_function) } void -callbacks_add_window_handler(char *tag, PluginWindowCallback *window_callback) +callbacks_add_window_handler(const char *tag, PluginWindowCallback *window_callback) { if (p_window_callbacks == NULL) { p_window_callbacks = g_hash_table_new(g_str_hash, g_str_equal); } - g_hash_table_insert(p_window_callbacks, tag, window_callback); + g_hash_table_insert(p_window_callbacks, strdup(tag), window_callback); } void * -callbacks_get_window_handler(char *tag) +callbacks_get_window_handler(const char *tag) { if (p_window_callbacks != NULL) { return g_hash_table_lookup(p_window_callbacks, tag); diff --git a/src/plugins/callbacks.h b/src/plugins/callbacks.h index 140c4953..95334a81 100644 --- a/src/plugins/callbacks.h +++ b/src/plugins/callbacks.h @@ -45,12 +45,12 @@ typedef struct p_timed_function { typedef struct p_window_input_callback { void *callback; - void (*callback_func)(struct p_window_input_callback *window_callback, char *tag, const char * const line); + void (*callback_func)(struct p_window_input_callback *window_callback, const char *tag, const char * const line); } PluginWindowCallback; void callbacks_add_command(PluginCommand *command); void callbacks_add_timed(PluginTimedFunction *timed_function); -void callbacks_add_window_handler(char *tag, PluginWindowCallback *window_callback); -void * callbacks_get_window_handler(char *tag); +void callbacks_add_window_handler(const char *tag, PluginWindowCallback *window_callback); +void * callbacks_get_window_handler(const char *tag); #endif diff --git a/src/plugins/lua_api.c b/src/plugins/lua_api.c index f2afff88..d643ef32 100644 --- a/src/plugins/lua_api.c +++ b/src/plugins/lua_api.c @@ -38,7 +38,7 @@ lua_api_cons_alert(lua_State *L) static int lua_api_cons_show(lua_State *L) { - const char *message = lua_tostring(L, 1); + const char *message = lua_tostring(L, -1); api_cons_show(message); return 0; } @@ -105,7 +105,7 @@ lua_api_notify(lua_State *L) static int lua_api_send_line(lua_State *L) { - const char *line = lua_tostring(L, 1); + const char *line = lua_tostring(L, -1); api_send_line(line); return 0; } @@ -127,7 +127,7 @@ lua_api_get_current_recipient(lua_State *L) static int lua_api_log_debug(lua_State *L) { - const char *message = lua_tostring(L, 1); + const char *message = lua_tostring(L, -1); api_log_debug(message); return 0; } @@ -135,7 +135,7 @@ lua_api_log_debug(lua_State *L) static int lua_api_log_info(lua_State *L) { - const char *message = lua_tostring(L, 1); + const char *message = lua_tostring(L, -1); api_log_info(message); return 0; } @@ -143,7 +143,7 @@ lua_api_log_info(lua_State *L) static int lua_api_log_warning(lua_State *L) { - const char *message = lua_tostring(L, 1); + const char *message = lua_tostring(L, -1); api_log_warning(message); return 0; } @@ -151,7 +151,7 @@ lua_api_log_warning(lua_State *L) static int lua_api_log_error(lua_State *L) { - const char *message = lua_tostring(L, 1); + const char *message = lua_tostring(L, -1); api_log_error(message); return 0; } @@ -159,7 +159,7 @@ lua_api_log_error(lua_State *L) static int lua_api_win_exists(lua_State *L) { - const char *tag = lua_tostring(L, 1); + const char *tag = lua_tostring(L, -1); if (api_win_exists(tag)) { lua_pushboolean(L, 1); @@ -193,50 +193,26 @@ lua_api_win_create(lua_State *L) static int lua_api_win_focus(lua_State *L) { -/* - char *tag = NULL; - - if (!PyArg_ParseTuple(args, "s", &tag)) { - return Py_BuildValue(""); - } - + const char *tag = lua_tostring(L, -1); api_win_focus(tag); - return Py_BuildValue(""); -*/ return 0; } static int lua_api_win_process_line(lua_State *L) { -/* - char *tag = NULL; - char *line = NULL; - - if (!PyArg_ParseTuple(args, "ss", &tag, &line)) { - return Py_BuildValue(""); - } - + const char *tag = lua_tostring(L, -2); + const char *line = lua_tostring(L, -1); api_win_process_line(tag, line); - return Py_BuildValue(""); -*/ return 0; } static int lua_api_win_show(lua_State *L) { -/* - char *tag = NULL; - char *line = NULL; - - if (!PyArg_ParseTuple(args, "ss", &tag, &line)) { - return Py_BuildValue(""); - } - + const char *tag = lua_tostring(L, -2); + const char *line = lua_tostring(L, -1); api_win_show(tag, line); - return Py_BuildValue(""); -*/ return 0; } diff --git a/src/profanity.c b/src/profanity.c index ea69bd1c..a9bb75d4 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -549,37 +549,40 @@ prof_handle_disco_info(const char *from, GSList *identities, GSList *features) * continue, FALSE otherwise */ gboolean -prof_process_input(char *inp) +prof_process_input(const char *inp) { log_debug("Input recieved: %s", inp); gboolean result = FALSE; - g_strstrip(inp); + gchar *inp_cpy = strdup(inp); + g_strstrip(inp_cpy); // add line to history if something typed - if (strlen(inp) > 0) { - cmd_history_append(inp); + if (strlen(inp_cpy) > 0) { + cmd_history_append(inp_cpy); } // just carry on if no input - if (strlen(inp) == 0) { + if (strlen(inp_cpy) == 0) { result = TRUE; // habdle command if input starts with a '/' - } else if (inp[0] == '/') { - char inp_cpy[strlen(inp) + 1]; - strcpy(inp_cpy, inp); + } else if (inp_cpy[0] == '/') { + char inp_cpy[strlen(inp_cpy) + 1]; + strcpy(inp_cpy, inp_cpy); char *command = strtok(inp_cpy, " "); - result = cmd_execute(command, inp); + result = cmd_execute(command, inp_cpy); // call a default handler if input didn't start with '/' } else { - result = cmd_execute_default(inp); + result = cmd_execute_default(inp_cpy); } inp_win_reset(); roster_reset_search_attempts(); ui_current_page_off(); + g_free(inp_cpy); + return result; } diff --git a/src/profanity.h b/src/profanity.h index b89dc0c4..1a4ebd79 100644 --- a/src/profanity.h +++ b/src/profanity.h @@ -86,6 +86,6 @@ void prof_handle_already_in_group(const char * const contact, const char * const void prof_handle_not_in_group(const char * const contact, const char * const group); void prof_handle_group_add(const char * const contact, const char * const group); void prof_handle_group_remove(const char * const contact, const char * const group); -gboolean prof_process_input(char *inp); +gboolean prof_process_input(const char *inp); #endif