diff options
-rw-r--r-- | sway/config.c | 64 |
1 files changed, 37 insertions, 27 deletions
diff --git a/sway/config.c b/sway/config.c index d2986a77..b64dd4b1 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -13,6 +13,39 @@ | |||
13 | 13 | ||
14 | struct sway_config *config = NULL; | 14 | struct sway_config *config = NULL; |
15 | 15 | ||
16 | static void free_variable(struct sway_variable *var) { | ||
17 | free(var->name); | ||
18 | free(var->value); | ||
19 | free(var); | ||
20 | } | ||
21 | |||
22 | static void free_binding(struct sway_binding *bind) { | ||
23 | free_flat_list(bind->keys); | ||
24 | free(bind->command); | ||
25 | free(bind); | ||
26 | } | ||
27 | |||
28 | static void free_mode(struct sway_mode *mode) { | ||
29 | free(mode->name); | ||
30 | int i; | ||
31 | for (i = 0; i < mode->bindings->length; ++i) { | ||
32 | free_binding(mode->bindings->items[i]); | ||
33 | } | ||
34 | list_free(mode->bindings); | ||
35 | free(mode); | ||
36 | } | ||
37 | |||
38 | static void free_outut_config(struct output_config *oc) { | ||
39 | free(oc->name); | ||
40 | free(oc); | ||
41 | } | ||
42 | |||
43 | static void free_workspace_output(struct workspace_output *wo) { | ||
44 | free(wo->output); | ||
45 | free(wo->workspace); | ||
46 | free(wo); | ||
47 | } | ||
48 | |||
16 | static bool file_exists(const char *path) { | 49 | static bool file_exists(const char *path) { |
17 | return access(path, R_OK) != -1; | 50 | return access(path, R_OK) != -1; |
18 | } | 51 | } |
@@ -45,25 +78,10 @@ static void config_defaults(struct sway_config *config) { | |||
45 | config->gaps_outer = 0; | 78 | config->gaps_outer = 0; |
46 | } | 79 | } |
47 | 80 | ||
48 | void free_mode(struct sway_mode *mode) { | ||
49 | free(mode->name); | ||
50 | int i; | ||
51 | for (i = 0; i < mode->bindings->length; ++i) { | ||
52 | struct sway_binding *bind = mode->bindings->items[i]; | ||
53 | list_free(bind->keys); | ||
54 | free(bind->command); | ||
55 | free(bind); | ||
56 | } | ||
57 | list_free(mode->bindings); | ||
58 | } | ||
59 | |||
60 | void free_config(struct sway_config *config) { | 81 | void free_config(struct sway_config *config) { |
61 | int i; | 82 | int i; |
62 | for (i = 0; i < config->symbols->length; ++i) { | 83 | for (i = 0; i < config->symbols->length; ++i) { |
63 | struct sway_variable *var = config->symbols->items[i]; | 84 | free_variable(config->symbols->items[i]); |
64 | free(var->name); | ||
65 | free(var->value); | ||
66 | free(var); | ||
67 | } | 85 | } |
68 | list_free(config->symbols); | 86 | list_free(config->symbols); |
69 | 87 | ||
@@ -72,23 +90,15 @@ void free_config(struct sway_config *config) { | |||
72 | } | 90 | } |
73 | list_free(config->modes); | 91 | list_free(config->modes); |
74 | 92 | ||
75 | for (i = 0; i < config->cmd_queue->length; ++i) { | 93 | free_flat_list(config->cmd_queue); |
76 | free(config->cmd_queue->items[i]); | ||
77 | } | ||
78 | list_free(config->cmd_queue); | ||
79 | 94 | ||
80 | for (i = 0; i < config->workspace_outputs->length; ++i) { | 95 | for (i = 0; i < config->workspace_outputs->length; ++i) { |
81 | struct workspace_output *wso = config->workspace_outputs->items[i]; | 96 | free_workspace_output(config->workspace_outputs->items[i]); |
82 | free(wso->output); | ||
83 | free(wso->workspace); | ||
84 | free(wso); | ||
85 | } | 97 | } |
86 | list_free(config->workspace_outputs); | 98 | list_free(config->workspace_outputs); |
87 | 99 | ||
88 | for (i = 0; i < config->output_configs->length; ++i) { | 100 | for (i = 0; i < config->output_configs->length; ++i) { |
89 | struct output_config *oc = config->output_configs->items[i]; | 101 | free_outut_config(config->output_configs->items[i]); |
90 | free(oc->name); | ||
91 | free(oc); | ||
92 | } | 102 | } |
93 | list_free(config->output_configs); | 103 | list_free(config->output_configs); |
94 | free(config); | 104 | free(config); |