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.
This commit is contained in:
parent
2ed56873b6
commit
b69ee77256
2 changed files with 7 additions and 5 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -456,14 +456,16 @@ void parse_paths_shutdown(void)
|
|||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue