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

Diff for /src/usr.bin/tmux/cmd-unbind-key.c between version 1.7 and 1.8

version 1.7, 2010/01/23 17:50:56 version 1.8, 2010/11/11 20:54:06
Line 33 
Line 33 
 struct cmd_unbind_key_data {  struct cmd_unbind_key_data {
         int     key;          int     key;
   
           int     flag_all;
         int     command_key;          int     command_key;
         char   *tablename;          char   *tablename;
 };  };
   
 const struct cmd_entry cmd_unbind_key_entry = {  const struct cmd_entry cmd_unbind_key_entry = {
         "unbind-key", "unbind",          "unbind-key", "unbind",
         "[-cn] [-t key-table] key",          "[-acn] [-t key-table] key",
         0, "",          0, "",
         NULL,          NULL,
         cmd_unbind_key_parse,          cmd_unbind_key_parse,
Line 55 
Line 56 
         int                              opt, no_prefix = 0;          int                              opt, no_prefix = 0;
   
         self->data = data = xmalloc(sizeof *data);          self->data = data = xmalloc(sizeof *data);
           data->flag_all = 0;
         data->command_key = 0;          data->command_key = 0;
         data->tablename = NULL;          data->tablename = NULL;
   
         while ((opt = getopt(argc, argv, "cnt:")) != -1) {          while ((opt = getopt(argc, argv, "acnt:")) != -1) {
                 switch (opt) {                  switch (opt) {
                   case 'a':
                           data->flag_all = 1;
                           break;
                 case 'c':                  case 'c':
                         data->command_key = 1;                          data->command_key = 1;
                         break;                          break;
Line 76 
Line 81 
         }          }
         argc -= optind;          argc -= optind;
         argv += optind;          argv += optind;
         if (argc != 1)          if (data->flag_all && (argc != 0 || data->tablename))
                 goto usage;                  goto usage;
           if (!data->flag_all && argc != 1)
                   goto usage;
   
         if ((data->key = key_string_lookup_string(argv[0])) == KEYC_NONE) {          if (!data->flag_all) {
                 xasprintf(cause, "unknown key: %s", argv[0]);                  data->key = key_string_lookup_string(argv[0]);
                 goto error;                  if (data->key == KEYC_NONE) {
                           xasprintf(cause, "unknown key: %s", argv[0]);
                           goto error;
                   }
                   if (!no_prefix)
                           data->key |= KEYC_PREFIX;
         }          }
         if (!no_prefix)  
                 data->key |= KEYC_PREFIX;  
   
         return (0);          return (0);
   
Line 100 
Line 110 
 cmd_unbind_key_exec(struct cmd *self, unused struct cmd_ctx *ctx)  cmd_unbind_key_exec(struct cmd *self, unused struct cmd_ctx *ctx)
 {  {
         struct cmd_unbind_key_data      *data = self->data;          struct cmd_unbind_key_data      *data = self->data;
           struct key_binding              *bd;
   
         if (data == NULL)          if (data == NULL)
                 return (0);                  return (0);
         if (data->tablename != NULL)          if (data->flag_all) {
                 return (cmd_unbind_key_table(self, ctx));                  while (!SPLAY_EMPTY(&key_bindings)) {
                           bd = SPLAY_ROOT(&key_bindings);
                           SPLAY_REMOVE(key_bindings, &key_bindings, bd);
                           cmd_list_free(bd->cmdlist);
                           xfree(bd);
                   }
           } else {
                   if (data->tablename != NULL)
                           return (cmd_unbind_key_table(self, ctx));
   
         key_bindings_remove(data->key);                  key_bindings_remove(data->key);
           }
   
         return (0);          return (0);
 }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8