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

Diff for /src/usr.bin/tmux/cmd-split-window.c between version 1.45 and 1.46

version 1.45, 2013/10/10 12:07:36 version 1.46, 2013/10/10 12:26:35
Line 18 
Line 18 
   
 #include <sys/types.h>  #include <sys/types.h>
   
   #include <errno.h>
   #include <fcntl.h>
 #include <paths.h>  #include <paths.h>
 #include <stdlib.h>  #include <stdlib.h>
   #include <string.h>
 #include <unistd.h>  #include <unistd.h>
   
 #include "tmux.h"  #include "tmux.h"
Line 58 
Line 61 
         struct window           *w;          struct window           *w;
         struct window_pane      *wp, *new_wp = NULL;          struct window_pane      *wp, *new_wp = NULL;
         struct environ           env;          struct environ           env;
         const char              *cmd, *cwd, *shell;          const char              *cmd, *shell, *template;
         char                    *cause, *new_cause;          char                    *cause, *new_cause, *cp;
         u_int                    hlimit;          u_int                    hlimit;
         int                      size, percentage;          int                      size, percentage, cwd, fd = -1;
         enum layout_type         type;          enum layout_type         type;
         struct layout_cell      *lc;          struct layout_cell      *lc;
         const char              *template;  
         struct client           *c;          struct client           *c;
         struct format_tree      *ft;          struct format_tree      *ft;
         char                    *cp;  
   
         if ((wl = cmd_find_pane(cmdq, args_get(args, 't'), &s, &wp)) == NULL)          if ((wl = cmd_find_pane(cmdq, args_get(args, 't'), &s, &wp)) == NULL)
                 return (CMD_RETURN_ERROR);                  return (CMD_RETURN_ERROR);
Line 83 
Line 84 
                 cmd = options_get_string(&s->options, "default-command");                  cmd = options_get_string(&s->options, "default-command");
         else          else
                 cmd = args->argv[0];                  cmd = args->argv[0];
         cwd = cmdq_default_path(cmdq, args_get(args, 'c'));  
   
           if (args_has(args, 'c')) {
                   ft = format_create();
                   if ((c = cmd_find_client(cmdq, NULL, 1)) != NULL)
                           format_client(ft, c);
                   format_session(ft, s);
                   format_winlink(ft, s, s->curw);
                   format_window_pane(ft, s->curw->window->active);
                   cp = format_expand(ft, args_get(args, 'c'));
                   format_free(ft);
   
                   fd = open(cp, O_RDONLY|O_DIRECTORY);
                   free(cp);
                   if (fd == -1) {
                           cmdq_error(cmdq, "bad working directory: %s",
                               strerror(errno));
                           return (CMD_RETURN_ERROR);
                   }
                   cwd = fd;
           } else if (cmdq->client->session == NULL)
                   cwd = cmdq->client->cwd;
           else
                   cwd = s->cwd;
   
         type = LAYOUT_TOPBOTTOM;          type = LAYOUT_TOPBOTTOM;
         if (args_has(args, 'h'))          if (args_has(args, 'h'))
                 type = LAYOUT_LEFTRIGHT;                  type = LAYOUT_LEFTRIGHT;
Line 156 
Line 179 
                 format_free(ft);                  format_free(ft);
         }          }
         notify_window_layout_changed(w);          notify_window_layout_changed(w);
   
           if (fd != -1)
                   close(fd);
         return (CMD_RETURN_NORMAL);          return (CMD_RETURN_NORMAL);
   
 error:  error:
Line 164 
Line 190 
                 window_remove_pane(w, new_wp);                  window_remove_pane(w, new_wp);
         cmdq_error(cmdq, "create pane failed: %s", cause);          cmdq_error(cmdq, "create pane failed: %s", cause);
         free(cause);          free(cause);
           if (fd != -1)
                   close(fd);
         return (CMD_RETURN_ERROR);          return (CMD_RETURN_ERROR);
 }  }

Legend:
Removed from v.1.45  
changed lines
  Added in v.1.46