diff --git a/gio/glocalvfs.c b/gio/glocalvfs.c index c29d071b7..f8d85e458 100644 --- a/gio/glocalvfs.c +++ b/gio/glocalvfs.c @@ -27,6 +27,7 @@ #include #include #ifdef G_OS_UNIX +#include "glib-unix.h" #include #endif #include @@ -160,15 +161,17 @@ g_local_vfs_parse_name (GVfs *vfs, struct passwd *passwd_file_entry; char *user_name; - user_name = g_strndup (user_start, user_end - user_start); - passwd_file_entry = getpwnam (user_name); - g_free (user_name); - - if (passwd_file_entry != NULL && - passwd_file_entry->pw_dir != NULL) - user_prefix = g_strdup (passwd_file_entry->pw_dir); - else - user_prefix = g_strdup (g_get_home_dir ()); + user_name = g_strndup (user_start, user_end - user_start); + passwd_file_entry = g_unix_get_passwd_entry (user_name, NULL); + g_free (user_name); + + if (passwd_file_entry != NULL && + passwd_file_entry->pw_dir != NULL) + user_prefix = g_strdup (passwd_file_entry->pw_dir); + else + user_prefix = g_strdup (g_get_home_dir ()); + + g_free (passwd_file_entry); } #else user_prefix = g_strdup (g_get_home_dir ());