Added SILC Thread Queue API
[crypto.git] / apps / irssi / src / fe-common / core / window-commands.c
index a8f3bb1066bd2835023e03842e73572d858c2f85..05332cad4bef1b0f82acc3db7285e9bb712c1a17 100644 (file)
@@ -183,7 +183,7 @@ static void cmd_window_new(const char *data, void *server, WI_ITEM_REC *item)
        window_change_server(window, server);
 }
 
-/* SYNTAX: WINDOW CLOSE [<first> [<last>] */
+/* SYNTAX: WINDOW CLOSE [<first> [<last>]] */
 static void cmd_window_close(const char *data)
 {
         GSList *tmp, *destroys;
@@ -462,17 +462,24 @@ static void cmd_window_item_goto(const char *data, SERVER_REC *server)
 {
        WI_ITEM_REC *item;
        GSList *tmp;
+       void *free_arg;
+       char *target;
+       
+       if (!cmd_get_params(data, &free_arg, 1, &target))
+               return;
 
-       if (is_numeric(data, '\0')) {
+       if (is_numeric(target, '\0')) {
                /* change to specified number */
-               tmp = g_slist_nth(active_win->items, atoi(data)-1);
+               tmp = g_slist_nth(active_win->items, atoi(target)-1);
                item = tmp == NULL ? NULL : tmp->data;
        } else {
-               item = window_item_find_window(active_win, server, data);
+               item = window_item_find_window(active_win, server, target);
        }
 
         if (item != NULL)
                 window_item_set_active(active_win, item);
+
+       cmd_params_free(free_arg);
 }
 
 /* SYNTAX: WINDOW ITEM MOVE <number>|<name> */
@@ -531,7 +538,10 @@ static void cmd_window_number(const char *data)
 /* SYNTAX: WINDOW NAME <name> */
 static void cmd_window_name(const char *data)
 {
-       if (window_find_name(data) == NULL)
+       WINDOW_REC *win;
+
+       win = window_find_name(data);
+       if (win == NULL || win == active_win)
                window_set_name(active_win, data);
        else if (active_win->name == NULL ||
                 strcmp(active_win->name, data) != 0) {