aboutsummaryrefslogtreecommitdiff
path: root/sway/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/config.c')
-rw-r--r--sway/config.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/sway/config.c b/sway/config.c
index 7242be8d..e98246ff 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -50,3 +50,31 @@ _continue:
return config;
}
+
+char *do_var_replacement(struct sway_config *config, char *str) {
+ // TODO: Handle escaping $ and using $ in string literals
+ int i;
+ for (i = 0; str[i]; ++i) {
+ if (str[i] == '$') {
+ // Try for match (note: this could be faster)
+ int j;
+ for (j = 0; j < config->symbols->length; ++j) {
+ struct sway_variable *var = config->symbols->items[j];
+ if (strstr(str + i, var->name) == str + i) {
+ // Match, do replacement
+ char *new_string = malloc(
+ strlen(str) -
+ strlen(var->name) +
+ strlen(var->value) + 1);
+ strncpy(new_string, str, i);
+ new_string[i] = 0;
+ strcat(new_string, var->value);
+ strcat(new_string, str + i + strlen(var->name));
+ free(str);
+ str = new_string;
+ }
+ }
+ }
+ }
+ return str;
+}