glocalfile: fix g_file_get_parse_name() on win32

When getting the parse name for a file: URI on win32, we were not
translating "\" to "/", resulting in incorrect output.

https://bugzilla.gnome.org/show_bug.cgi?id=669331
This commit is contained in:
Dan Winship 2012-02-03 11:10:50 -05:00 committed by Matthias Clasen
parent b2ddbd8f55
commit 5c91af7e41

View File

@ -414,6 +414,23 @@ g_local_file_get_parse_name (GFile *file)
}
else
{
#ifdef G_OS_WIN32
char *dup_filename, *p, *backslash;
/* Turn backslashes into forward slashes like
* g_filename_to_uri() would do (but we can't use that because
* it doesn't output IRIs).
*/
dup_filename = g_strdup (filename);
filename = p = dup_filename;
while ((backslash = strchr (p, '\\')) != NULL)
{
*backslash = '/';
p = backslash + 1;
}
#endif
escaped_path = g_uri_escape_string (filename,
G_URI_RESERVED_CHARS_ALLOWED_IN_PATH_ELEMENT "/",
TRUE);
@ -423,7 +440,9 @@ g_local_file_get_parse_name (GFile *file)
NULL);
g_free (escaped_path);
#ifdef G_OS_WIN32
g_free (dup_filename);
#endif
if (free_utf8_filename)
g_free (utf8_filename);
}