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

Diff for /src/usr.bin/tmux/cmd-new-session.c between version 1.5 and 1.6

version 1.5, 2009/07/22 22:47:43 version 1.6, 2009/07/23 12:33:48
Line 114 
Line 114 
         struct session                  *s;          struct session                  *s;
         struct options                  *oo;          struct options                  *oo;
         char                            *cmd, *cwd, *cause;          char                            *cmd, *cwd, *cause;
           int                              detached;
         u_int                            sx, sy;          u_int                            sx, sy;
   
         if (data->newname != NULL && session_find(data->newname) != NULL) {          if (data->newname != NULL && session_find(data->newname) != NULL) {
Line 122 
Line 123 
         }          }
   
         /*          /*
          * There are two cases:           * There are three cases:
          *           *
          * 1. If cmdclient is non-NULL, new-session has been called from the           * 1. If cmdclient is non-NULL, new-session has been called from the
          *    command-line - cmdclient is to become a new attached, interactive           *    command-line - cmdclient is to become a new attached, interactive
Line 132 
Line 133 
          * 2. If cmdclient is NULL, new-session has been called from an           * 2. If cmdclient is NULL, new-session has been called from an
          *    existing client (such as a key binding).           *    existing client (such as a key binding).
          *           *
          * In both cases, a new additional session needs to be created and           * 3. Both are NULL, the command was in the configuration file. Treat
            *    this as if -d was given even if it was not.
            *
            * In all cases, a new additional session needs to be created and
          * (unless -d) set as the current session for the client.           * (unless -d) set as the current session for the client.
          */           */
   
           /* Set -d if no client. */
           detached = data->flag_detached;
           if (ctx->cmdclient == NULL && ctx->curclient == NULL)
                   detached = 1;
   
         /* Open the terminal if necessary. */          /* Open the terminal if necessary. */
         if (!data->flag_detached && ctx->cmdclient != NULL) {          if (!detached && ctx->cmdclient != NULL) {
                 if (!(ctx->cmdclient->flags & CLIENT_TERMINAL)) {                  if (!(ctx->cmdclient->flags & CLIENT_TERMINAL)) {
                         ctx->error(ctx, "not a terminal");                          ctx->error(ctx, "not a terminal");
                         return (-1);                          return (-1);
Line 155 
Line 164 
          * path and command.           * path and command.
          */           */
         oo = &global_s_options;          oo = &global_s_options;
         if (ctx->cmdclient == NULL)          if (ctx->cmdclient == NULL && ctx->curclient != NULL)
                 oo = &ctx->curclient->session->options;                  oo = &ctx->curclient->session->options;
   
         /* Find new session size and options. */          /* Find new session size and options. */
         if (data->flag_detached) {          if (detached) {
                 sx = 80;                  sx = 80;
                 sy = 25;                  sy = 25;
         } else {          } else {
Line 207 
Line 216 
          * to exit.           * to exit.
          */           */
         if (ctx->cmdclient != NULL) {          if (ctx->cmdclient != NULL) {
                 if (!data->flag_detached)                  if (!detached)
                         server_write_client(ctx->cmdclient, MSG_READY, NULL, 0);                          server_write_client(ctx->cmdclient, MSG_READY, NULL, 0);
                 else                  else
                         server_write_client(ctx->cmdclient, MSG_EXIT, NULL, 0);                          server_write_client(ctx->cmdclient, MSG_EXIT, NULL, 0);
         }          }
   
         /* Set the client to the new session. */          /* Set the client to the new session. */
         if (!data->flag_detached) {          if (!detached) {
                 if (ctx->cmdclient != NULL) {                  if (ctx->cmdclient != NULL) {
                         ctx->cmdclient->session = s;                          ctx->cmdclient->session = s;
                         server_redraw_client(ctx->cmdclient);                          server_redraw_client(ctx->cmdclient);

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6