version 1.40, 2014/04/17 07:55:43 |
version 1.41, 2014/05/14 06:21:19 |
|
|
RB_GENERATE(key_bindings, key_binding, entry, key_bindings_cmp); |
RB_GENERATE(key_bindings, key_binding, entry, key_bindings_cmp); |
|
|
struct key_bindings key_bindings; |
struct key_bindings key_bindings; |
struct key_bindings dead_key_bindings; |
|
|
|
int |
int |
key_bindings_cmp(struct key_binding *bd1, struct key_binding *bd2) |
key_bindings_cmp(struct key_binding *bd1, struct key_binding *bd2) |
|
|
if ((bd = key_bindings_lookup(key)) == NULL) |
if ((bd = key_bindings_lookup(key)) == NULL) |
return; |
return; |
RB_REMOVE(key_bindings, &key_bindings, bd); |
RB_REMOVE(key_bindings, &key_bindings, bd); |
RB_INSERT(key_bindings, &dead_key_bindings, bd); |
cmd_list_free(bd->cmdlist); |
} |
free(bd); |
|
|
void |
|
key_bindings_clean(void) |
|
{ |
|
struct key_binding *bd; |
|
|
|
while (!RB_EMPTY(&dead_key_bindings)) { |
|
bd = RB_ROOT(&dead_key_bindings); |
|
RB_REMOVE(key_bindings, &dead_key_bindings, bd); |
|
cmd_list_free(bd->cmdlist); |
|
free(bd); |
|
} |
|
} |
} |
|
|
void |
void |