summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar taiyu <taiyu.len@gmail.com>2015-09-07 06:52:27 -0700
committerLibravatar taiyu <taiyu.len@gmail.com>2015-09-07 06:52:27 -0700
commit3fb83977247641e73e4852fcf3dc0d52ecc27b84 (patch)
treeb3427f1c6fea75e689cf4af1c8754cc3639cefad
parentfree config when reloading (diff)
downloadsway-3fb83977247641e73e4852fcf3dc0d52ecc27b84.tar.gz
sway-3fb83977247641e73e4852fcf3dc0d52ecc27b84.tar.zst
sway-3fb83977247641e73e4852fcf3dc0d52ecc27b84.zip
free config stuff
-rw-r--r--sway/config.c64
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
14struct sway_config *config = NULL; 14struct sway_config *config = NULL;
15 15
16static void free_variable(struct sway_variable *var) {
17 free(var->name);
18 free(var->value);
19 free(var);
20}
21
22static void free_binding(struct sway_binding *bind) {
23 free_flat_list(bind->keys);
24 free(bind->command);
25 free(bind);
26}
27
28static 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
38static void free_outut_config(struct output_config *oc) {
39 free(oc->name);
40 free(oc);
41}
42
43static void free_workspace_output(struct workspace_output *wo) {
44 free(wo->output);
45 free(wo->workspace);
46 free(wo);
47}
48
16static bool file_exists(const char *path) { 49static 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
48void 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
60void free_config(struct sway_config *config) { 81void 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);