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

Diff for /src/usr.bin/tmux/cmd-set-option.c between version 1.108 and 1.109

version 1.108, 2017/01/24 19:11:46 version 1.109, 2017/01/24 20:24:54
Line 68 
Line 68 
 cmd_set_option_exec(struct cmd *self, struct cmdq_item *item)  cmd_set_option_exec(struct cmd *self, struct cmdq_item *item)
 {  {
         struct args                     *args = self->args;          struct args                     *args = self->args;
           int                              append = args_has(args, 'a');
         struct cmd_find_state           *fs = &item->state.tflag;          struct cmd_find_state           *fs = &item->state.tflag;
         struct session                  *s = fs->s;          struct session                  *s = fs->s;
         struct winlink                  *wl = fs->wl;          struct winlink                  *wl = fs->wl;
Line 160 
Line 161 
                         cmdq_error(item, "not an array: %s", args->argv[0]);                          cmdq_error(item, "not an array: %s", args->argv[0]);
                         return (CMD_RETURN_ERROR);                          return (CMD_RETURN_ERROR);
                 }                  }
         } else if (*name != '@' && options_array_size(parent, NULL) != -1) {  
                 if (value == NULL) {  
                         cmdq_error(item, "empty value");  
                         return (-1);  
                 }  
                 if (o == NULL)  
                         o = options_empty(oo, options_table_entry(parent));  
                 if (!args_has(args, 'a'))  
                         options_array_clear(o);  
                 options_array_assign(o, value);  
                 return (CMD_RETURN_NORMAL);  
         }          }
   
         /* With -o, check this option is not already set. */          /* With -o, check this option is not already set. */
Line 204 
Line 194 
                                 options_remove(o);                                  options_remove(o);
                 } else                  } else
                         options_array_set(o, idx, NULL, 0);                          options_array_set(o, idx, NULL, 0);
         } else if (*name == '@')          } else if (*name == '@') {
                 options_set_string(oo, name, args_has(args, 'a'), "%s", value);                  if (value == NULL) {
         else if (idx == -1) {                          cmdq_error(item, "empty value");
                           return (CMD_RETURN_ERROR);
                   }
                   options_set_string(oo, name, append, "%s", value);
           } else if (idx == -1 && options_array_size(parent, NULL) == -1) {
                 error = cmd_set_option_set(self, item, oo, parent, value);                  error = cmd_set_option_set(self, item, oo, parent, value);
                 if (error != 0)                  if (error != 0)
                         return (CMD_RETURN_ERROR);                          return (CMD_RETURN_ERROR);
         } else {          } else {
                   if (value == NULL) {
                           cmdq_error(item, "empty value");
                           return (CMD_RETURN_ERROR);
                   }
                 if (o == NULL)                  if (o == NULL)
                         o = options_empty(oo, options_table_entry(parent));                          o = options_empty(oo, options_table_entry(parent));
                 if (options_array_set(o, idx, value, 1) != 0) {                  if (idx == -1)
                           options_array_assign(o, value);
                   else if (options_array_set(o, idx, value, append) != 0) {
                         cmdq_error(item, "invalid index: %s", args->argv[0]);                          cmdq_error(item, "invalid index: %s", args->argv[0]);
                         return (CMD_RETURN_ERROR);                          return (CMD_RETURN_ERROR);
                 }                  }

Legend:
Removed from v.1.108  
changed lines
  Added in v.1.109