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

Diff for /src/usr.bin/tmux/cmd-confirm-before.c between version 1.9 and 1.10

version 1.9, 2009/11/13 19:53:29 version 1.10, 2011/01/04 00:42:46
Line 25 
Line 25 
  * Asks for confirmation before executing a command.   * Asks for confirmation before executing a command.
  */   */
   
   void    cmd_confirm_before_key_binding(struct cmd *, int);
 int     cmd_confirm_before_exec(struct cmd *, struct cmd_ctx *);  int     cmd_confirm_before_exec(struct cmd *, struct cmd_ctx *);
 void    cmd_confirm_before_init(struct cmd *, int);  
   
 int     cmd_confirm_before_callback(void *, const char *);  int     cmd_confirm_before_callback(void *, const char *);
 void    cmd_confirm_before_free(void *);  void    cmd_confirm_before_free(void *);
   
 const struct cmd_entry cmd_confirm_before_entry = {  const struct cmd_entry cmd_confirm_before_entry = {
         "confirm-before", "confirm",          "confirm-before", "confirm",
           "t:", 1, 1,
         CMD_TARGET_CLIENT_USAGE " command",          CMD_TARGET_CLIENT_USAGE " command",
         CMD_ARG1, "",          0,
         cmd_confirm_before_init,          cmd_confirm_before_key_binding,
         cmd_target_parse,          NULL,
         cmd_confirm_before_exec,          cmd_confirm_before_exec
         cmd_target_free,  
         cmd_target_print  
 };  };
   
 struct cmd_confirm_before_data {  struct cmd_confirm_before_data {
Line 48 
Line 47 
 };  };
   
 void  void
 cmd_confirm_before_init(struct cmd *self, int key)  cmd_confirm_before_key_binding(struct cmd *self, int key)
 {  {
         struct cmd_target_data  *data;  
   
         cmd_target_init(self, key);  
         data = self->data;  
   
         switch (key) {          switch (key) {
         case '&':          case '&':
                 data->arg = xstrdup("kill-window");                  self->args = args_create(1, "kill-window");
                 break;                  break;
         case 'x':          case 'x':
                 data->arg = xstrdup("kill-pane");                  self->args = args_create(1, "kill-pane");
                 break;                  break;
           default:
                   self->args = args_create(0);
                   break;
         }          }
 }  }
   
 int  int
 cmd_confirm_before_exec(struct cmd *self, struct cmd_ctx *ctx)  cmd_confirm_before_exec(struct cmd *self, struct cmd_ctx *ctx)
 {  {
         struct cmd_target_data          *data = self->data;          struct args                     *args = self->args;
         struct cmd_confirm_before_data  *cdata;          struct cmd_confirm_before_data  *cdata;
         struct client                   *c;          struct client                   *c;
         char                            *buf, *cmd, *ptr;          char                            *buf, *cmd, *ptr;
Line 78 
Line 75 
                 return (-1);                  return (-1);
         }          }
   
         if ((c = cmd_find_client(ctx, data->target)) == NULL)          if ((c = cmd_find_client(ctx, args_get(args, 't'))) == NULL)
                 return (-1);                  return (-1);
   
         ptr = xstrdup(data->arg);          ptr = xstrdup(args->argv[0]);
         if ((cmd = strtok(ptr, " \t")) == NULL)          if ((cmd = strtok(ptr, " \t")) == NULL)
                 cmd = ptr;                  cmd = ptr;
         xasprintf(&buf, "Confirm '%s'? (y/n) ", cmd);          xasprintf(&buf, "Confirm '%s'? (y/n) ", cmd);
         xfree(ptr);          xfree(ptr);
   
         cdata = xmalloc(sizeof *cdata);          cdata = xmalloc(sizeof *cdata);
         cdata->cmd = xstrdup(data->arg);          cdata->cmd = xstrdup(args->argv[0]);
         cdata->c = c;          cdata->c = c;
         status_prompt_set(cdata->c, buf,          status_prompt_set(cdata->c, buf,
             cmd_confirm_before_callback, cmd_confirm_before_free, cdata,              cmd_confirm_before_callback, cmd_confirm_before_free, cdata,

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