diff --git a/libgnucash/engine/gnc-uri-utils.c b/libgnucash/engine/gnc-uri-utils.c index 56390041c2..0158820e31 100644 --- a/libgnucash/engine/gnc-uri-utils.c +++ b/libgnucash/engine/gnc-uri-utils.c @@ -323,7 +323,22 @@ gchar *gnc_uri_create_uri (const gchar *scheme, else uri_scheme = g_strdup (scheme); - if (g_str_has_prefix (abs_path, "/")) + /* Arrive here with... + * + * /my/path/to/file with space.txt + * becomes file:///my/path/to/file with space.txt + * + * c:\my\path\to\file with space.txt + * becomes file:///c:\my\path\to\file with space.txt + * + * \\myserver\share\path\to\file with space.txt + * becomes file://\\myserver\share\path\to\file with space.txt + * + * probably they should all be forward slashs and spaces escaped + * also with UNC it could be file://myserver/share/path/to/file with space.txt + */ + + if (g_str_has_prefix (abs_path, "/") || g_str_has_prefix (abs_path, "\\")) uri = g_strdup_printf ( "%s://%s", uri_scheme, abs_path ); else // for windows add an extra "/" uri = g_strdup_printf ( "%s:///%s", uri_scheme, abs_path );