[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.52 and 1.53

version 1.52, 2021/10/28 18:39:15 version 1.53, 2023/04/28 06:12:27
Line 41 
Line 41 
         .name = "confirm-before",          .name = "confirm-before",
         .alias = "confirm",          .alias = "confirm",
   
         .args = { "bp:t:", 1, 1, cmd_confirm_before_args_parse },          .args = { "bc:p:t:y", 1, 1, cmd_confirm_before_args_parse },
         .usage = "[-b] [-p prompt] " CMD_TARGET_CLIENT_USAGE " command",          .usage = "[-by] [-c confirm_key] [-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
Line 51 
Line 52 
 struct cmd_confirm_before_data {  struct cmd_confirm_before_data {
         struct cmdq_item        *item;          struct cmdq_item        *item;
         struct cmd_list         *cmdlist;          struct cmd_list         *cmdlist;
           u_char                   confirm_key;
           int                      default_yes;
 };  };
   
 static enum args_parse_type  static enum args_parse_type
Line 68 
Line 71 
         struct client                   *tc = cmdq_get_target_client(item);          struct client                   *tc = cmdq_get_target_client(item);
         struct cmd_find_state           *target = cmdq_get_target(item);          struct cmd_find_state           *target = cmdq_get_target(item);
         char                            *new_prompt;          char                            *new_prompt;
         const char                      *prompt, *cmd;          const char                      *confirm_key, *prompt, *cmd;
         int                              wait = !args_has(args, 'b');          int                              wait = !args_has(args, 'b');
   
         cdata = xcalloc(1, sizeof *cdata);          cdata = xcalloc(1, sizeof *cdata);
Line 79 
Line 82 
         if (wait)          if (wait)
                 cdata->item = item;                  cdata->item = item;
   
           cdata->default_yes = args_has(args, 'y');
           if ((confirm_key = args_get(args, 'c')) != NULL) {
                   if (confirm_key[1] == '\0' &&
                       confirm_key[0] > 31 &&
                       confirm_key[0] < 127)
                           cdata->confirm_key = confirm_key[0];
                   else {
                           cmdq_error(item, "invalid confirm key");
                           return (CMD_RETURN_ERROR);
                   }
           }
           else
                   cdata->confirm_key = 'y';
   
         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 {
                 cmd = cmd_get_entry(cmd_list_first(cdata->cmdlist))->name;                  cmd = cmd_get_entry(cmd_list_first(cdata->cmdlist))->name;
                 xasprintf(&new_prompt, "Confirm '%s'? (y/n) ", cmd);                  xasprintf(&new_prompt, "Confirm '%s'? (%c/n) ",
                   cmd, cdata->confirm_key);
         }          }
   
         status_prompt_set(tc, target, new_prompt, NULL,          status_prompt_set(tc, target, new_prompt, NULL,
Line 107 
Line 125 
         if (c->flags & CLIENT_DEAD)          if (c->flags & CLIENT_DEAD)
                 goto out;                  goto out;
   
         if (s == NULL || *s == '\0')          if (s == NULL)
                 goto out;                  goto out;
         if (tolower((u_char)s[0]) != 'y' || s[1] != '\0')          if (s[0] != cdata->confirm_key && (s[0] != '\0' || !cdata->default_yes))
                 goto out;                  goto out;
         retcode = 0;          retcode = 0;
   
Line 123 
Line 141 
         }          }
   
 out:  out:
         if (item != NULL) {          if (item != NULL) {
                 if (cmdq_get_client(item) != NULL &&                  if (cmdq_get_client(item) != NULL &&
                     cmdq_get_client(item)->session == NULL)                      cmdq_get_client(item)->session == NULL)
                         cmdq_get_client(item)->retval = retcode;                          cmdq_get_client(item)->retval = retcode;
                 cmdq_continue(item);                  cmdq_continue(item);
         }          }
         return (0);          return (0);
 }  }
   

Legend:
Removed from v.1.52  
changed lines
  Added in v.1.53