sway

i3-compatible Wayland compositor
git clone https://git.awy.one/sway
Log | Files | Refs | README | LICENSE

commit b7e3d05ace895fce6be87592c9dfee3817436aae
parent e7c0573a980938a5174bc647faf41f24fa523b0b
Author: S. Christoffer Eliesen <christoffer@eliesen.no>
Date:   Wed, 18 Nov 2015 15:03:20 +0100

stringop: Properly handle criteria strings.

A criteria string (e.g. '[class="something" title="something"]') is now
correctly treated as a single argument.

Diffstat:
Msway/stringop.c | 9+++++++--
1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/sway/stringop.c b/sway/stringop.c @@ -117,6 +117,7 @@ char **split_args(const char *start, int *argc) { bool in_token = false; bool in_string = false; bool in_char = false; + bool in_brackets = false; // brackets are used for critera bool escaped = false; const char *end = start; if (start) { @@ -129,10 +130,14 @@ char **split_args(const char *start, int *argc) { in_string = !in_string; } else if (*end == '\'' && !in_string && !escaped) { in_char = !in_char; + } else if (*end == '[' && !in_string && !in_char && !in_brackets && !escaped) { + in_brackets = true; + } else if (*end == ']' && !in_string && !in_char && in_brackets && !escaped) { + in_brackets = false; } else if (*end == '\\') { escaped = !escaped; - } else if (*end == '\0' || (!in_string && !in_char && !escaped - && strchr(whitespace, *end))) { + } else if (*end == '\0' || (!in_string && !in_char && !in_brackets + && !escaped && strchr(whitespace, *end))) { goto add_token; } if (*end != '\\') {