=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/Attic/cmd-choose-session.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- src/usr.bin/tmux/Attic/cmd-choose-session.c 2012/06/25 14:08:55 1.14 +++ src/usr.bin/tmux/Attic/cmd-choose-session.c 2012/06/25 14:27:25 1.15 @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-choose-session.c,v 1.14 2012/06/25 14:08:55 nicm Exp $ */ +/* $OpenBSD: cmd-choose-session.c,v 1.15 2012/06/25 14:27:25 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -45,9 +45,9 @@ cmd_choose_session_exec(struct cmd *self, struct cmd_ctx *ctx) { struct args *args = self->args; - struct window_choose_data *cdata; struct winlink *wl; struct session *s; + char *action; const char *template; u_int idx, cur; @@ -65,28 +65,21 @@ if ((template = args_get(args, 'F')) == NULL) template = DEFAULT_SESSION_TEMPLATE; + if (args->argc != 0) + action = xstrdup(args->argv[0]); + else + action = xstrdup("switch-client -t '%%'"); + cur = idx = 0; RB_FOREACH(s, sessions, &sessions) { if (s == ctx->curclient->session) cur = idx; idx++; - cdata = window_choose_data_create(ctx); - if (args->argc != 0) - cdata->action = xstrdup(args->argv[0]); - else - cdata->action = xstrdup("switch-client -t '%%'"); - cdata->idx = s->idx; - - cdata->client->references++; - cdata->session->references++; - - cdata->ft_template = xstrdup(template); - format_add(cdata->ft, "line", "%u", idx); - format_session(cdata->ft, s); - - window_choose_add(wl->window->active, cdata); + window_choose_add_session(wl->window->active, + ctx, s, template, action, idx); } + xfree(action); window_choose_ready(wl->window->active, cur, cmd_choose_session_callback, cmd_choose_session_free); @@ -97,18 +90,11 @@ void cmd_choose_session_callback(struct window_choose_data *cdata) { - struct session *s; - if (cdata == NULL) return; if (cdata->client->flags & CLIENT_DEAD) return; - s = session_find_by_index(cdata->idx); - if (s == NULL) - return; - - cdata->raw_format = xstrdup(s->name); window_choose_ctx(cdata); } @@ -121,8 +107,8 @@ cdata->client->references--; cdata->session->references--; + xfree(cdata->command); xfree(cdata->ft_template); - xfree(cdata->action); format_free(cdata->ft); xfree(cdata); }