aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/output
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-09-15 22:21:12 -0400
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2018-09-28 23:12:24 -0400
commitaf45ee2d8be0d36436d3714f8b6e71cbc4115098 (patch)
tree3e3883c2314efc4a5f66c530cc0115bed1fb7f28 /sway/commands/output
parentMerge pull request #2724 from RedSoxFan/update-man-pages (diff)
downloadsway-af45ee2d8be0d36436d3714f8b6e71cbc4115098.tar.gz
sway-af45ee2d8be0d36436d3714f8b6e71cbc4115098.tar.zst
sway-af45ee2d8be0d36436d3714f8b6e71cbc4115098.zip
Handle shell special characters in bg file path
This changes it back so the path given to swaybg is enclosed in quotes. Additionally, the only character that is escaped in the path stored is double quotes now. This makes it so we don't need to keep an exhaustive list of characters that need to be escaped. The end user will still need to escape these characters in their config or when passed to swaybg.
Diffstat (limited to 'sway/commands/output')
-rw-r--r--sway/commands/output/background.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/sway/commands/output/background.c b/sway/commands/output/background.c
index 9e370d43..30fb47c4 100644
--- a/sway/commands/output/background.c
+++ b/sway/commands/output/background.c
@@ -123,19 +123,13 @@ struct cmd_results *output_cmd_background(int argc, char **argv) {
123 } 123 }
124 free(src); 124 free(src);
125 } else { 125 } else {
126 // Escape spaces and quotes in the final path for swaybg 126 // Escape double quotes in the final path for swaybg
127 for (size_t i = 0; i < strlen(src); i++) { 127 for (size_t i = 0; i < strlen(src); i++) {
128 switch (src[i]) { 128 if (src[i] == '"') {
129 case ' ': 129 src = realloc(src, strlen(src) + 2);
130 case '\'': 130 memmove(src + i + 1, src + i, strlen(src + i) + 1);
131 case '\"': 131 *(src + i) = '\\';
132 src = realloc(src, strlen(src) + 2); 132 i++;
133 memmove(src + i + 1, src + i, strlen(src + i) + 1);
134 *(src + i) = '\\';
135 i++;
136 break;
137 default:
138 break;
139 } 133 }
140 } 134 }
141 135