summaryrefslogtreecommitdiff
path: root/obt/paths.c
diff options
context:
space:
mode:
Diffstat (limited to 'obt/paths.c')
-rw-r--r--obt/paths.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/obt/paths.c b/obt/paths.c
index 61004998..68615433 100644
--- a/obt/paths.c
+++ b/obt/paths.c
@@ -169,14 +169,16 @@ void obt_paths_unref(ObtPaths *p)
gchar *obt_paths_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;
}