all repos — openbox @ b69ee77256dccee0764c07416fe9bc7db9e5a12d

openbox fork - make it a bit more like ryudo

Don't replace ~ when we shouldn't

Bump glib req to 2.14 to get GRegex, now we only replace ~ with your
homedir in an action if it is (at the start of the string or preceded
by whitespace) and (at the end of the string or followed by (whitespace
or a slash)). (?:^|(?<=[ \t]))~(?=[/ \t$])

Fixes bug #4033.
Mikael Magnusson mikachu@gmail.com
commit

b69ee77256dccee0764c07416fe9bc7db9e5a12d

parent

2ed56873b6a51965ff8159f8e0bbf82324f194d8

2 files changed, 7 insertions(+), 5 deletions(-)

jump to
M configure.acconfigure.ac

@@ -70,7 +70,7 @@ if test "$SED" = "no"; then

AC_MSG_ERROR([The program "sed" is not available. This program is required to build Openbox.]) fi -PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.6.0]) +PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.14.0]) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS)
M parser/parse.cparser/parse.c

@@ -456,14 +456,16 @@ }

gchar *parse_expand_tilde(const gchar *f) { - gchar **spl; gchar *ret; + GRegex *regex; if (!f) return NULL; - spl = g_strsplit(f, "~", 0); - ret = g_strjoinv(g_get_home_dir(), spl); - g_strfreev(spl); + + regex = g_regex_new("(?:^|(?<=[ \\t]))~(?=[/ \\t$])", G_REGEX_MULTILINE | G_REGEX_RAW, 0, NULL); + ret = g_regex_replace_literal(regex, f, -1, 0, g_get_home_dir(), 0, NULL); + g_regex_unref(regex); + return ret; }