diff options
Diffstat (limited to 'src/actions.c')
-rw-r--r-- | src/actions.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/actions.c b/src/actions.c index c1c8b4f..0de31ed 100644 --- a/src/actions.c +++ b/src/actions.c @@ -96,6 +96,15 @@ add_set_var (char *name, cmdret * (*fn)(struct cmdarg **), int nargs, ...) } static void +set_var_free (struct set_var *var) +{ + if (var == NULL) + return; + free(var->args); + free(var); +} + +static void init_set_vars(void) { add_set_var ("resizeunit", set_resizeunit, 1, "", arg_NUMBER); @@ -157,6 +166,16 @@ add_command (char *name, cmdret * (*fn)(int, struct cmdarg **), int nargs, int i list_add (&cmd->node, &user_commands); } +static void +user_command_free(struct user_command *cmd) +{ + if (cmd == NULL ) + return; + + free(cmd->args); + free(cmd); +} + void init_user_commands(void) { @@ -840,6 +859,25 @@ free_aliases (void) free (alias_list); } +void +free_user_commands (void) +{ + struct user_command *cur; + struct set_var *var; + struct list_head *tmp, *iter; + + list_for_each_safe_entry (cur, iter, tmp, &user_commands, node) + { + list_del (&cur->node); + user_command_free (cur); + } + list_for_each_safe_entry (var, iter, tmp, &set_vars, node) + { + list_del (&var->node); + set_var_free (var); + } +} + /* return a KeySym from a string that contains either a hex value or an X keysym description */ static int string_to_keysym (char *str) |