[BACK]Return to cmd-choose-window.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/Attic/cmd-choose-window.c between version 1.8 and 1.9

version 1.8, 2009/08/25 13:32:14 version 1.9, 2009/09/07 21:01:50
Line 43 
Line 43 
 };  };
   
 struct cmd_choose_window_data {  struct cmd_choose_window_data {
         u_int            client;          struct client   *client;
         u_int            session;          struct session  *session;
         char            *template;          char            *template;
 };  };
   
Line 107 
Line 107 
         }          }
   
         cdata = xmalloc(sizeof *cdata);          cdata = xmalloc(sizeof *cdata);
         if (session_index(s, &cdata->session) != 0)  
                 fatalx("session not found");  
         if (data->arg != NULL)          if (data->arg != NULL)
                 cdata->template = xstrdup(data->arg);                  cdata->template = xstrdup(data->arg);
         else          else
                 cdata->template = xstrdup("select-window -t '%%'");                  cdata->template = xstrdup("select-window -t '%%'");
         cdata->client = server_client_index(ctx->curclient);          cdata->session = s;
           cdata->session->references++;
           cdata->client = ctx->curclient;
           cdata->client->references++;
   
         window_choose_ready(wl->window->active,          window_choose_ready(wl->window->active,
             cur, cmd_choose_window_callback, cmd_choose_window_free, cdata);              cur, cmd_choose_window_callback, cmd_choose_window_free, cdata);
Line 125 
Line 126 
 cmd_choose_window_callback(void *data, int idx)  cmd_choose_window_callback(void *data, int idx)
 {  {
         struct cmd_choose_window_data   *cdata = data;          struct cmd_choose_window_data   *cdata = data;
         struct client                   *c;  
         struct session                  *s;  
         struct cmd_list                 *cmdlist;          struct cmd_list                 *cmdlist;
         struct cmd_ctx                   ctx;          struct cmd_ctx                   ctx;
         char                            *target, *template, *cause;          char                            *target, *template, *cause;
   
         if (idx == -1)          if (idx == -1)
                 return;                  return;
         if (cdata->client > ARRAY_LENGTH(&clients) - 1)          if (cdata->client->flags & CLIENT_DEAD)
                   return;
           if (cdata->session->flags & SESSION_DEAD)
                 return;                  return;
         c = ARRAY_ITEM(&clients, cdata->client);          if (cdata->client->session != cdata->session)
         if (cdata->session > ARRAY_LENGTH(&sessions) - 1)  
                 return;                  return;
         s = ARRAY_ITEM(&sessions, cdata->session);  
         if (c->session != s)  
                 return;  
   
         xasprintf(&target, "%s:%d", s->name, idx);          xasprintf(&target, "%s:%d", cdata->session->name, idx);
         template = cmd_template_replace(cdata->template, target, 1);          template = cmd_template_replace(cdata->template, target, 1);
         xfree(target);          xfree(target);
   
         if (cmd_string_parse(template, &cmdlist, &cause) != 0) {          if (cmd_string_parse(template, &cmdlist, &cause) != 0) {
                 if (cause != NULL) {                  if (cause != NULL) {
                         *cause = toupper((u_char) *cause);                          *cause = toupper((u_char) *cause);
                         status_message_set(c, "%s", cause);                          status_message_set(cdata->client, "%s", cause);
                         xfree(cause);                          xfree(cause);
                 }                  }
                 xfree(template);                  xfree(template);
Line 158 
Line 155 
         xfree(template);          xfree(template);
   
         ctx.msgdata = NULL;          ctx.msgdata = NULL;
         ctx.curclient = c;          ctx.curclient = cdata->client;
   
         ctx.error = key_bindings_error;          ctx.error = key_bindings_error;
         ctx.print = key_bindings_print;          ctx.print = key_bindings_print;
Line 175 
Line 172 
 {  {
         struct cmd_choose_window_data   *cdata = data;          struct cmd_choose_window_data   *cdata = data;
   
           cdata->session->references--;
           cdata->client->references--;
         xfree(cdata->template);          xfree(cdata->template);
         xfree(cdata);          xfree(cdata);
 }  }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9