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

Diff for /src/usr.bin/tmux/cmd-display-menu.c between version 1.27 and 1.28

version 1.27, 2021/08/13 17:03:29 version 1.28, 2021/08/20 19:50:16
Line 261 
Line 261 
         struct client           *tc = cmdq_get_target_client(item);          struct client           *tc = cmdq_get_target_client(item);
         struct menu             *menu = NULL;          struct menu             *menu = NULL;
         struct menu_item         menu_item;          struct menu_item         menu_item;
         const char              *key;          const char              *key, *name;
         char                    *title, *name;          char                    *title;
         int                      flags = 0, i;          int                      flags = 0;
         u_int                    px, py;          u_int                    px, py, i, count = args_count(args);
   
         if (tc->overlay_draw != NULL)          if (tc->overlay_draw != NULL)
                 return (CMD_RETURN_NORMAL);                  return (CMD_RETURN_NORMAL);
Line 275 
Line 275 
                 title = xstrdup("");                  title = xstrdup("");
         menu = menu_create(title);          menu = menu_create(title);
   
         for (i = 0; i != args->argc; /* nothing */) {          for (i = 0; i != count; /* nothing */) {
                 name = args->argv[i++];                  name = args_string(args, i++);
                 if (*name == '\0') {                  if (*name == '\0') {
                         menu_add_item(menu, NULL, item, tc, target);                          menu_add_item(menu, NULL, item, tc, target);
                         continue;                          continue;
                 }                  }
   
                 if (args->argc - i < 2) {                  if (count - i < 2) {
                         cmdq_error(item, "not enough arguments");                          cmdq_error(item, "not enough arguments");
                         free(title);                          free(title);
                         menu_free(menu);                          menu_free(menu);
                         return (CMD_RETURN_ERROR);                          return (CMD_RETURN_ERROR);
                 }                  }
                 key = args->argv[i++];                  key = args_string(args, i++);
   
                 menu_item.name = name;                  menu_item.name = name;
                 menu_item.key = key_string_lookup_string(key);                  menu_item.key = key_string_lookup_string(key);
                 menu_item.command = args->argv[i++];                  menu_item.command = args_string(args, i++);
   
                 menu_add_item(menu, &menu_item, item, tc, target);                  menu_add_item(menu, &menu_item, item, tc, target);
         }          }
Line 329 
Line 329 
         struct session          *s = target->s;          struct session          *s = target->s;
         struct client           *tc = cmdq_get_target_client(item);          struct client           *tc = cmdq_get_target_client(item);
         struct tty              *tty = &tc->tty;          struct tty              *tty = &tc->tty;
         const char              *value, *shell[] = { NULL, NULL };          const char              *value, *shell, *shellcmd = NULL;
         const char              *shellcmd = NULL;          char                    *cwd, *cause, **argv = NULL;
         char                    *cwd, *cause, **argv = args->argv;          int                      flags = 0, argc = 0;
         int                      flags = 0, argc = args->argc;          u_int                    px, py, w, h, count = args_count(args);
         u_int                    px, py, w, h;  
   
         if (args_has(args, 'C')) {          if (args_has(args, 'C')) {
                 server_client_clear_overlay(tc);                  server_client_clear_overlay(tc);
Line 374 
Line 373 
                 cwd = format_single_from_target(item, value);                  cwd = format_single_from_target(item, value);
         else          else
                 cwd = xstrdup(server_client_get_cwd(tc, s));                  cwd = xstrdup(server_client_get_cwd(tc, s));
         if (argc == 0)          if (count == 0)
                 shellcmd = options_get_string(s->options, "default-command");                  shellcmd = options_get_string(s->options, "default-command");
         else if (argc == 1)          else if (count == 1)
                 shellcmd = argv[0];                  shellcmd = args_string(args, 0);
         if (argc <= 1 && (shellcmd == NULL || *shellcmd == '\0')) {          if (count <= 1 && (shellcmd == NULL || *shellcmd == '\0')) {
                 shellcmd = NULL;                  shellcmd = NULL;
                 shell[0] = options_get_string(s->options, "default-shell");                  shell = options_get_string(s->options, "default-shell");
                 if (!checkshell(shell[0]))                  if (!checkshell(shell))
                         shell[0] = _PATH_BSHELL;                          shell = _PATH_BSHELL;
                 argc = 1;                  cmd_append_argv(&argc, &argv, shell);
                 argv = (char**)shell;          } else
         }                  args_vector(args, &argc, &argv);
   
         if (args_has(args, 'E') > 1)          if (args_has(args, 'E') > 1)
                 flags |= POPUP_CLOSEEXITZERO;                  flags |= POPUP_CLOSEEXITZERO;
Line 394 
Line 393 
         if (args_has(args, 'B'))          if (args_has(args, 'B'))
                 flags |= POPUP_NOBORDER;                  flags |= POPUP_NOBORDER;
         if (popup_display(flags, item, px, py, w, h, shellcmd, argc, argv, cwd,          if (popup_display(flags, item, px, py, w, h, shellcmd, argc, argv, cwd,
             tc, s, NULL, NULL) != 0)              tc, s, NULL, NULL) != 0) {
                   cmd_free_argv(argc, argv);
                 return (CMD_RETURN_NORMAL);                  return (CMD_RETURN_NORMAL);
           }
           cmd_free_argv(argc, argv);
         return (CMD_RETURN_WAIT);          return (CMD_RETURN_WAIT);
 }  }

Legend:
Removed from v.1.27  
changed lines
  Added in v.1.28