From ea65504a9b9d2e9336c6de87562d820eed82a37a Mon Sep 17 00:00:00 2001 From: Kjartan Maraas Date: Thu, 11 Jan 2007 00:53:00 +0000 Subject: [PATCH] Make a single tilde go to $HOME in the location entry. Patch from Yevgen 2007-01-11 Kjartan Maraas * gtk/gtkfilesystemunix.c: (expand_tilde): Make a single tilde go to $HOME in the location entry. Patch from Yevgen Muntyan. Closes the gtk+ part of bug #334168. svn path=/trunk/; revision=17130 --- ChangeLog | 7 +++++++ gtk/gtkfilesystemunix.c | 15 ++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6d8033d7c6..43cc6472b4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-01-11 Kjartan Maraas + + * gtk/gtkfilesystemunix.c: (expand_tilde): + Make a single tilde go to $HOME in the location entry. + Patch from Yevgen Muntyan. Closes the gtk+ part of + bug #334168. + 2007-01-10 Behdad Esfahbod * gdk/gdkpango.c (gdk_draw_layout_with_colors): diff --git a/gtk/gtkfilesystemunix.c b/gtk/gtkfilesystemunix.c index 3df4932315..38a6cd064b 100644 --- a/gtk/gtkfilesystemunix.c +++ b/gtk/gtkfilesystemunix.c @@ -1442,10 +1442,8 @@ expand_tilde (const char *filename) notilde = filename + 1; slash = strchr (notilde, G_DIR_SEPARATOR); - if (!slash) - return NULL; - if (slash == notilde) + if (slash == notilde || !*notilde) { home = g_get_home_dir (); @@ -1457,7 +1455,11 @@ expand_tilde (const char *filename) char *username; struct passwd *passwd; - username = g_strndup (notilde, slash - notilde); + if (slash) + username = g_strndup (notilde, slash - notilde); + else + username = g_strdup (notilde); + passwd = getpwnam (username); g_free (username); @@ -1467,7 +1469,10 @@ expand_tilde (const char *filename) home = passwd->pw_dir; } - return g_build_filename (home, G_DIR_SEPARATOR_S, slash + 1, NULL); + if (slash) + return g_build_filename (home, G_DIR_SEPARATOR_S, slash + 1, NULL); + else + return g_strdup (home); } static gboolean