diff --git a/src/ui/ui.h b/src/ui/ui.h index fa8f948a..6988d882 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -378,6 +378,7 @@ void win_clear(ProfWin *window); char* win_get_tab_identifier(ProfWin *window); char* win_to_string(ProfWin *window); void win_command_list_error(ProfWin *window, const char *const error); +void win_command_exec_error(ProfWin *window, const char *const command, const char *const error, ...); void win_handle_command_list(ProfWin *window, GSList *cmds); void win_handle_command_exec_result_note(ProfWin *window, const char *const type, const char *const value); diff --git a/src/ui/window.c b/src/ui/window.c index f38127d7..a6f65d1b 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -1733,6 +1733,21 @@ win_command_list_error(ProfWin *window, const char *const error) win_println(window, THEME_ERROR, '!', "Error retrieving command list: %s", error); } +void +win_command_exec_error(ProfWin *window, const char *const command, const char *const error, ...) +{ + assert(window != NULL); + va_list arg; + va_start(arg, error); + GString *msg = g_string_new(NULL); + g_string_vprintf(msg, error, arg); + + win_println(window, THEME_ERROR, '!', "Error executing command %s: %s", command, msg); + + g_string_free(msg, TRUE); + va_end(arg); +} + void win_handle_command_list(ProfWin *window, GSList *cmds) { diff --git a/src/xmpp/iq.c b/src/xmpp/iq.c index 8702d1a1..dd856298 100644 --- a/src/xmpp/iq.c +++ b/src/xmpp/iq.c @@ -1112,7 +1112,7 @@ _command_exec_response_handler(xmpp_stanza_t *const stanza, void *const userdata log_debug("Error executing command %s for %s: %s", command, from, error_message); ProfWin *win = wins_get_by_string(from); if (win) { - win_command_list_error(win, error_message); + win_command_exec_error(win, command, error_message); } free(error_message); free(from);