X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fglocalvfs.c;h=b0bae9cf768c12715953b4a8698d04f88be7c782;hb=cea9de93c8838099661f5b54462f9c4b6410bfc9;hp=6e78e74d8412bf18a780e2da9a589fe565abba63;hpb=77a8c5cc15a8e083057877ee499f00020b9ded14;p=platform%2Fupstream%2Fglib.git diff --git a/gio/glocalvfs.c b/gio/glocalvfs.c index 6e78e74..b0bae9c 100644 --- a/gio/glocalvfs.c +++ b/gio/glocalvfs.c @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General - * Public License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place, Suite 330, - * Boston, MA 02111-1307, USA. + * Public License along with this library; if not, see . * * Author: Alexander Larsson */ @@ -24,14 +22,15 @@ #include "glocalvfs.h" #include "glocalfile.h" #include "giomodule.h" +#include "giomodule-priv.h" #include "gvfs.h" #include #include -#ifdef HAVE_PWD_H +#ifdef G_OS_UNIX #include #endif +#include -#include "gioalias.h" struct _GLocalVfs { @@ -46,6 +45,7 @@ struct _GLocalVfsClass #define g_local_vfs_get_type _g_local_vfs_get_type G_DEFINE_TYPE_WITH_CODE (GLocalVfs, g_local_vfs, G_TYPE_VFS, + _g_io_modules_ensure_extension_points_registered (); g_io_extension_point_implement (G_VFS_EXTENSION_POINT_NAME, g_define_type_id, "local", @@ -88,9 +88,22 @@ g_local_vfs_get_file_for_uri (GVfs *vfs, { char *path; GFile *file; + char *stripped_uri, *hash; + + if (strchr (uri, '#') != NULL) + { + stripped_uri = g_strdup (uri); + hash = strchr (stripped_uri, '#'); + *hash = 0; + } + else + stripped_uri = (char *)uri; + + path = g_filename_from_uri (stripped_uri, NULL, NULL); - path = g_filename_from_uri (uri, NULL, NULL); - + if (stripped_uri != uri) + g_free (stripped_uri); + if (path != NULL) file = _g_local_file_new (path); else @@ -140,7 +153,7 @@ g_local_vfs_parse_name (GVfs *vfs, user_prefix = g_strdup (g_get_home_dir ()); else { -#ifdef HAVE_PWD_H +#ifdef G_OS_UNIX struct passwd *passwd_file_entry; char *user_name;