Fixed SETPROP() macro behaviour in config.def.h to handle escapes correctly.
authorAlexander Sedov <alex0player@gmail.com>
Thu, 21 Mar 2013 16:49:10 +0000 (20:49 +0400)
committerChristoph Lohmann <20h@r-36.net>
Thu, 21 Mar 2013 17:10:35 +0000 (18:10 +0100)
xprop prints information in format PROPERTY(STRING) = "escaped string",
which causes problem with repeated Ctrl-F: any non-ascii turns into
\ooo\ooo, this later turns into \\ooo\\ooo, and so on. To de-escape
string, printf(1) is used, getting information from xargs -0; without -0
xargs will try to handle escapes by itself and also do shenanigans
with quotes, which is totally undesired.

Signed-off-by: Christoph Lohmann <20h@r-36.net>
config.def.h

index 052313c..3ddfaf8 100644 (file)
@@ -23,7 +23,7 @@ static Bool hidebackground  = FALSE;
 
 #define SETPROP(p, q) { \
        .v = (char *[]){ "/bin/sh", "-c", \
 
 #define SETPROP(p, q) { \
        .v = (char *[]){ "/bin/sh", "-c", \
-               "prop=\"`xprop -id $2 $0 | cut -d '\"' -f 2 | dmenu`\" &&" \
+               "prop=\"`xprop -id $2 $0 | cut -d '\"' -f 2 | xargs -0 printf | dmenu`\" &&" \
                "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
                p, q, winid, NULL \
        } \
                "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
                p, q, winid, NULL \
        } \