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

Diff for /src/usr.bin/tmux/cmd-attach-session.c between version 1.35 and 1.36

version 1.35, 2015/06/04 23:27:51 version 1.36, 2015/06/07 21:39:39
Line 34 
Line 34 
   
 const struct cmd_entry cmd_attach_session_entry = {  const struct cmd_entry cmd_attach_session_entry = {
         "attach-session", "attach",          "attach-session", "attach",
         "c:drt:", 0, 0,          "c:dErt:", 0, 0,
         "[-dr] [-c working-directory] " CMD_TARGET_SESSION_USAGE,          "[-dEr] [-c working-directory] " CMD_TARGET_SESSION_USAGE,
         CMD_STARTSERVER,          CMD_STARTSERVER,
         cmd_attach_session_exec          cmd_attach_session_exec
 };  };
   
 enum cmd_retval  enum cmd_retval
 cmd_attach_session(struct cmd_q *cmdq, const char *tflag, int dflag, int rflag,  cmd_attach_session(struct cmd_q *cmdq, const char *tflag, int dflag, int rflag,
     const char *cflag)      const char *cflag, int Eflag)
 {  {
         struct session          *s;          struct session          *s;
         struct client           *c;          struct client           *c = cmdq->client, *c_loop;
         struct winlink          *wl = NULL;          struct winlink          *wl = NULL;
         struct window           *w = NULL;          struct window           *w = NULL;
         struct window_pane      *wp = NULL;          struct window_pane      *wp = NULL;
Line 79 
Line 79 
                         wl = winlink_find_by_window(&s->windows, w);                          wl = winlink_find_by_window(&s->windows, w);
         }          }
   
         if (cmdq->client == NULL)          if (c == NULL)
                 return (CMD_RETURN_NORMAL);                  return (CMD_RETURN_NORMAL);
         if (server_client_check_nested(cmdq->client)) {          if (server_client_check_nested(c)) {
                 cmdq_error(cmdq, "sessions should be nested with care, "                  cmdq_error(cmdq, "sessions should be nested with care, "
                     "unset $TMUX to force");                      "unset $TMUX to force");
                 return (CMD_RETURN_ERROR);                  return (CMD_RETURN_ERROR);
Line 93 
Line 93 
                 session_set_current(s, wl);                  session_set_current(s, wl);
         }          }
   
         if (cmdq->client->session != NULL) {          if (c->session != NULL) {
                 if (dflag) {                  if (dflag) {
                         /*                          /*
                          * Can't use server_write_session in case attaching to                           * Can't use server_write_session in case attaching to
                          * the same session as currently attached to.                           * the same session as currently attached to.
                          */                           */
                         TAILQ_FOREACH(c, &clients, entry) {                          TAILQ_FOREACH(c_loop, &clients, entry) {
                                 if (c->session != s || c == cmdq->client)                                  if (c_loop->session != s || c == c)
                                         continue;                                          continue;
                                 server_write_client(c, MSG_DETACH,                                  server_write_client(c, MSG_DETACH,
                                     c->session->name,                                      c_loop->session->name,
                                     strlen(c->session->name) + 1);                                      strlen(c_loop->session->name) + 1);
                         }                          }
                 }                  }
   
Line 126 
Line 126 
                         s->cwd = fd;                          s->cwd = fd;
                 }                  }
   
                 cmdq->client->session = s;                  c->session = s;
                 notify_attached_session_changed(cmdq->client);                  notify_attached_session_changed(c);
                 session_update_activity(s);                  session_update_activity(s);
                 server_redraw_client(cmdq->client);                  server_redraw_client(c);
                 s->curw->flags &= ~WINLINK_ALERTFLAGS;                  s->curw->flags &= ~WINLINK_ALERTFLAGS;
         } else {          } else {
                 if (server_client_open(cmdq->client, &cause) != 0) {                  if (server_client_open(c, &cause) != 0) {
                         cmdq_error(cmdq, "open terminal failed: %s", cause);                          cmdq_error(cmdq, "open terminal failed: %s", cause);
                         free(cause);                          free(cause);
                         return (CMD_RETURN_ERROR);                          return (CMD_RETURN_ERROR);
Line 157 
Line 157 
                 }                  }
   
                 if (rflag)                  if (rflag)
                         cmdq->client->flags |= CLIENT_READONLY;                          c->flags |= CLIENT_READONLY;
   
                 if (dflag) {                  if (dflag) {
                         server_write_session(s, MSG_DETACH, s->name,                          server_write_session(s, MSG_DETACH, s->name,
                             strlen(s->name) + 1);                              strlen(s->name) + 1);
                 }                  }
   
                 update = options_get_string(&s->options, "update-environment");                  if (!Eflag) {
                 environ_update(update, &cmdq->client->environ, &s->environ);                          update = options_get_string(&s->options,
                               "update-environment");
                           environ_update(update, &c->environ, &s->environ);
                   }
   
                 cmdq->client->session = s;                  c->session = s;
                 notify_attached_session_changed(cmdq->client);                  notify_attached_session_changed(c);
                 session_update_activity(s);                  session_update_activity(s);
                 server_redraw_client(cmdq->client);                  server_redraw_client(c);
                 s->curw->flags &= ~WINLINK_ALERTFLAGS;                  s->curw->flags &= ~WINLINK_ALERTFLAGS;
   
                 server_write_ready(cmdq->client);                  server_write_ready(c);
                 cmdq->client_exit = 0;                  cmdq->client_exit = 0;
         }          }
         recalculate_sizes();          recalculate_sizes();
Line 188 
Line 191 
         struct args     *args = self->args;          struct args     *args = self->args;
   
         return (cmd_attach_session(cmdq, args_get(args, 't'),          return (cmd_attach_session(cmdq, args_get(args, 't'),
             args_has(args, 'd'), args_has(args, 'r'), args_get(args, 'c')));              args_has(args, 'd'), args_has(args, 'r'), args_get(args, 'c'),
               args_has(args, 'E')));
 }  }

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.36