diff options
Diffstat (limited to 'parser')
| -rw-r--r-- | parser/parse.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/parser/parse.c b/parser/parse.c index 636b451f..ed66f088 100644 --- a/parser/parse.c +++ b/parser/parse.c @@ -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; } |
