From 99a56b99f2067dfb01274f79f4ce0cf7daf9e1bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Fri, 13 Oct 2023 23:28:57 +0200 Subject: [PATCH] core: allow wildcard in command `/bar del` (issue #1956) --- src/core/wee-command.c | 43 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/src/core/wee-command.c b/src/core/wee-command.c index 9d7ae3273..a11941ebf 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -230,7 +230,7 @@ COMMAND_CALLBACK(bar) int i, type, position, number; long value; char *error, *str_type, *pos_condition, *name; - struct t_gui_bar *ptr_bar, *ptr_bar2; + struct t_gui_bar *ptr_bar, *ptr_bar2, *ptr_next_bar; struct t_gui_bar_item *ptr_item; struct t_gui_window *ptr_window; @@ -429,29 +429,23 @@ COMMAND_CALLBACK(bar) if (string_strcmp (argv[1], "del") == 0) { COMMAND_MIN_ARGS(3, "del"); - if (string_strcmp (argv[2], "-all") == 0) + for (i = 2; i < argc; i++) { - gui_bar_free_all (); - gui_chat_printf (NULL, _("All bars have been deleted")); - gui_bar_create_default_input (); - } - else - { - ptr_bar = gui_bar_search (argv[2]); - if (!ptr_bar) + ptr_bar = gui_bars; + while (ptr_bar) { - gui_chat_printf (NULL, - _("%sBar \"%s\" not found"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], - argv[2]); - return WEECHAT_RC_OK; + ptr_next_bar = ptr_bar->next_bar; + if (string_match (ptr_bar->name, argv[i], 1)) + { + name = strdup (ptr_bar->name); + gui_bar_free (ptr_bar); + gui_chat_printf (NULL, _("Bar \"%s\" deleted"), name); + if (name) + free (name); + gui_bar_create_default_input (); + } + ptr_bar = ptr_next_bar; } - name = strdup (ptr_bar->name); - gui_bar_free (ptr_bar); - gui_chat_printf (NULL, _("Bar \"%s\" deleted"), name); - if (name) - free (name); - gui_bar_create_default_input (); } return WEECHAT_RC_OK; } @@ -7863,7 +7857,7 @@ command_init () "[,...]" " || default [input|title|status|nicklist]" " || rename " - " || del |-all" + " || del | [|...]" " || set