[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.43 and 1.44

version 1.43, 2021/06/10 07:50:03 version 1.44, 2021/08/11 08:40:58
Line 39 
Line 39 
         .name = "confirm-before",          .name = "confirm-before",
         .alias = "confirm",          .alias = "confirm",
   
         .args = { "p:t:", 1, 1 },          .args = { "bp:t:", 1, 1 },
         .usage = "[-p prompt] " CMD_TARGET_CLIENT_USAGE " command",          .usage = "[-b] [-p prompt] " CMD_TARGET_CLIENT_USAGE " command",
   
         .flags = CMD_CLIENT_TFLAG,          .flags = CMD_CLIENT_TFLAG,
         .exec = cmd_confirm_before_exec          .exec = cmd_confirm_before_exec
 };  };
   
 struct cmd_confirm_before_data {  struct cmd_confirm_before_data {
         char    *cmd;          char                    *cmd;
           struct cmdq_item        *item;
           struct cmd_parse_input   pi;
 };  };
   
 static enum cmd_retval  static enum cmd_retval
Line 59 
Line 61 
         struct cmd_find_state           *target = cmdq_get_target(item);          struct cmd_find_state           *target = cmdq_get_target(item);
         char                            *cmd, *copy, *new_prompt, *ptr;          char                            *cmd, *copy, *new_prompt, *ptr;
         const char                      *prompt;          const char                      *prompt;
           int                              wait = !args_has(args, 'b');
   
         if ((prompt = args_get(args, 'p')) != NULL)          if ((prompt = args_get(args, 'p')) != NULL)
                 xasprintf(&new_prompt, "%s ", prompt);                  xasprintf(&new_prompt, "%s ", prompt);
Line 72 
Line 75 
         cdata = xmalloc(sizeof *cdata);          cdata = xmalloc(sizeof *cdata);
         cdata->cmd = xstrdup(args->argv[0]);          cdata->cmd = xstrdup(args->argv[0]);
   
           memset(&cdata->pi, 0, sizeof cdata->pi);
           cmd_get_source(self, &cdata->pi.file, &cdata->pi.line);
           if (wait)
                   cdata->pi.item = item;
           cdata->pi.c = tc;
           cmd_find_copy_state(&cdata->pi.fs, target);
   
           if (wait)
                   cdata->item = item;
   
         status_prompt_set(tc, target, new_prompt, NULL,          status_prompt_set(tc, target, new_prompt, NULL,
             cmd_confirm_before_callback, cmd_confirm_before_free, cdata,              cmd_confirm_before_callback, cmd_confirm_before_free, cdata,
             PROMPT_SINGLE, PROMPT_TYPE_COMMAND);              PROMPT_SINGLE, PROMPT_TYPE_COMMAND);
   
         free(new_prompt);          free(new_prompt);
         return (CMD_RETURN_NORMAL);          if (!wait)
                   return (CMD_RETURN_NORMAL);
           return (CMD_RETURN_WAIT);
 }  }
   
 static int  static int
Line 85 
Line 100 
     __unused int done)      __unused int done)
 {  {
         struct cmd_confirm_before_data  *cdata = data;          struct cmd_confirm_before_data  *cdata = data;
           const char                      *cmd = cdata->cmd;
         char                            *error;          char                            *error;
           struct cmdq_item                *item = cdata->item;
         enum cmd_parse_status            status;          enum cmd_parse_status            status;
   
         if (c->flags & CLIENT_DEAD)          if (c->flags & CLIENT_DEAD)
                 return (0);                  return (0);
   
         if (s == NULL || *s == '\0')          if (s == NULL || *s == '\0')
                 return (0);                  goto out;
         if (tolower((u_char)s[0]) != 'y' || s[1] != '\0')          if (tolower((u_char)s[0]) != 'y' || s[1] != '\0')
                 return (0);                  goto out;
   
         status = cmd_parse_and_append(cdata->cmd, NULL, c, NULL, &error);          if (item != NULL) {
                   status = cmd_parse_and_insert(cmd, &cdata->pi, item,
                       cmdq_get_state(item), &error);
           } else
                   status = cmd_parse_and_append(cmd, &cdata->pi, c, NULL, &error);
         if (status == CMD_PARSE_ERROR) {          if (status == CMD_PARSE_ERROR) {
                 cmdq_append(c, cmdq_get_error(error));                  cmdq_append(c, cmdq_get_error(error));
                 free(error);                  free(error);
         }          }
   
   out:
           if (item != NULL)
                   cmdq_continue(item);
         return (0);          return (0);
 }  }
   

Legend:
Removed from v.1.43  
changed lines
  Added in v.1.44