[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.18 and 1.19

version 1.18, 2013/03/24 09:27:19 version 1.19, 2013/03/24 09:54:10
Line 27 
Line 27 
  */   */
   
 void             cmd_confirm_before_key_binding(struct cmd *, int);  void             cmd_confirm_before_key_binding(struct cmd *, int);
 enum cmd_retval  cmd_confirm_before_exec(struct cmd *, struct cmd_ctx *);  enum cmd_retval  cmd_confirm_before_exec(struct cmd *, struct cmd_q *);
   
 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 *);
Line 43 
Line 43 
 };  };
   
 struct cmd_confirm_before_data {  struct cmd_confirm_before_data {
         struct client   *c;  
         char            *cmd;          char            *cmd;
           struct client   *client;
 };  };
   
 void  void
Line 66 
Line 66 
 }  }
   
 enum cmd_retval  enum cmd_retval
 cmd_confirm_before_exec(struct cmd *self, struct cmd_ctx *ctx)  cmd_confirm_before_exec(struct cmd *self, struct cmd_q *cmdq)
 {  {
         struct args                     *args = self->args;          struct args                     *args = self->args;
         struct cmd_confirm_before_data  *cdata;          struct cmd_confirm_before_data  *cdata;
Line 74 
Line 74 
         char                            *cmd, *copy, *new_prompt, *ptr;          char                            *cmd, *copy, *new_prompt, *ptr;
         const char                      *prompt;          const char                      *prompt;
   
         if (ctx->curclient == NULL) {          if ((c = cmd_find_client(cmdq, args_get(args, 't'), 0)) == NULL)
                 ctx->error(ctx, "must be run interactively");  
                 return (CMD_RETURN_ERROR);                  return (CMD_RETURN_ERROR);
         }  
   
         if ((c = cmd_find_client(ctx, args_get(args, 't'), 0)) == NULL)  
                 return (CMD_RETURN_ERROR);  
   
         if ((prompt = args_get(args, 'p')) != NULL)          if ((prompt = args_get(args, 'p')) != NULL)
                 xasprintf(&new_prompt, "%s ", prompt);                  xasprintf(&new_prompt, "%s ", prompt);
         else {          else {
Line 93 
Line 88 
   
         cdata = xmalloc(sizeof *cdata);          cdata = xmalloc(sizeof *cdata);
         cdata->cmd = xstrdup(args->argv[0]);          cdata->cmd = xstrdup(args->argv[0]);
         cdata->c = c;  
         status_prompt_set(cdata->c, new_prompt, NULL,          cdata->client = c;
           cdata->client->references++;
   
           status_prompt_set(c, new_prompt, NULL,
             cmd_confirm_before_callback, cmd_confirm_before_free, cdata,              cmd_confirm_before_callback, cmd_confirm_before_free, cdata,
             PROMPT_SINGLE);              PROMPT_SINGLE);
   
         free(new_prompt);          free(new_prompt);
         return (CMD_RETURN_YIELD);          return (CMD_RETURN_NORMAL);
 }  }
   
 int  int
 cmd_confirm_before_callback(void *data, const char *s)  cmd_confirm_before_callback(void *data, const char *s)
 {  {
         struct cmd_confirm_before_data  *cdata = data;          struct cmd_confirm_before_data  *cdata = data;
         struct client                   *c = cdata->c;          struct client                   *c = cdata->client;
         struct cmd_list                 *cmdlist;          struct cmd_list                 *cmdlist;
         struct cmd_ctx                  *ctx;  
         char                            *cause;          char                            *cause;
   
           if (c->flags & CLIENT_DEAD)
                   return (0);
   
         if (s == NULL || *s == '\0')          if (s == NULL || *s == '\0')
                 return (0);                  return (0);
         if (tolower((u_char) s[0]) != 'y' || s[1] != '\0')          if (tolower((u_char) s[0]) != 'y' || s[1] != '\0')
                 return (0);                  return (0);
   
         if (cmd_string_parse(cdata->cmd, &cmdlist, &cause) != 0) {          if (cmd_string_parse(cdata->cmd, &cmdlist, NULL, 0, &cause) != 0) {
                 if (cause != NULL) {                  if (cause != NULL) {
                         *cause = toupper((u_char) *cause);                          cmdq_error(c->cmdq, "%s", cause);
                         status_message_set(c, "%s", cause);  
                         free(cause);                          free(cause);
                 }                  }
                 return (0);                  return (0);
         }          }
   
         ctx = cmd_get_ctx(NULL, c);          cmdq_run(c->cmdq, cmdlist);
         ctx->error = key_bindings_error;  
         ctx->print = key_bindings_print;  
         ctx->info = key_bindings_info;  
   
         cmd_list_exec(cmdlist, ctx);  
         cmd_list_free(cmdlist);          cmd_list_free(cmdlist);
         cmd_free_ctx(ctx);  
   
         return (0);          return (0);
 }  }
Line 141 
Line 134 
 cmd_confirm_before_free(void *data)  cmd_confirm_before_free(void *data)
 {  {
         struct cmd_confirm_before_data  *cdata = data;          struct cmd_confirm_before_data  *cdata = data;
           struct client                   *c = cdata->client;
   
           c->references--;
   
         free(cdata->cmd);          free(cdata->cmd);
         free(cdata);          free(cdata);

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19