[librsvg: 1/2] Fix rsvg_handle_new_from_file() so that it will load URIs again
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 1/2] Fix rsvg_handle_new_from_file() so that it will load URIs again
- Date: Tue, 6 Feb 2018 21:42:35 +0000 (UTC)
commit b5906eee12a0b7401be5878337f51e283f7afbb5
Author: Federico Mena Quintero <federico gnome org>
Date: Tue Feb 6 15:41:18 2018 -0600
Fix rsvg_handle_new_from_file() so that it will load URIs again
It is documented to being able to do so.
Add a test for this, too.
rsvg-base-file-util.c | 10 +++++++++-
tests/api.c | 26 ++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 1 deletion(-)
---
diff --git a/rsvg-base-file-util.c b/rsvg-base-file-util.c
index c4be0d5..6b2aca1 100644
--- a/rsvg-base-file-util.c
+++ b/rsvg-base-file-util.c
@@ -88,10 +88,18 @@ rsvg_handle_new_from_file (const gchar * file_name, GError ** error)
gsize data_len;
RsvgHandle *handle = NULL;
GFile *file;
+ char *scheme;
rsvg_return_val_if_fail (file_name != NULL, NULL, error);
- file = g_file_new_for_path (file_name);
+ scheme = g_uri_parse_scheme (file_name);
+ if (scheme) {
+ file = g_file_new_for_uri (file_name);
+ g_free (scheme);
+ } else {
+ file = g_file_new_for_path (file_name);
+ }
+
base_uri = g_file_get_uri (file);
if (!base_uri) {
g_set_error (error,
diff --git a/tests/api.c b/tests/api.c
index 35ff499..34b4fae 100644
--- a/tests/api.c
+++ b/tests/api.c
@@ -256,6 +256,31 @@ handle_write_close_free (void)
g_free (data);
}
+static void
+handle_new_from_file (void)
+{
+ char *filename = get_test_filename ("dpi.svg");
+ char *uri = g_strconcat ("file://", filename, NULL);
+
+ RsvgHandle *handle;
+ GError *error = NULL;
+
+ /* rsvg_handle_new_from_file() can take both filenames and URIs */
+
+ handle = rsvg_handle_new_from_file (filename, &error);
+ g_assert (handle != NULL);
+ g_assert (error == NULL);
+ g_object_unref (handle);
+
+ handle = rsvg_handle_new_from_file (uri, &error);
+ g_assert (handle != NULL);
+ g_assert (error == NULL);
+ g_object_unref (handle);
+
+ g_free (filename);
+ g_free (uri);
+}
+
static void
handle_new_from_data (void)
{
@@ -457,6 +482,7 @@ main (int argc, char **argv)
g_test_add_func ("/api/error_quark", error_quark);
g_test_add_func ("/api/auto_generated", auto_generated);
g_test_add_func ("/api/handle_write_close_free", handle_write_close_free);
+ g_test_add_func ("/api/handle_new_from_file", handle_new_from_file);
g_test_add_func ("/api/handle_new_from_data", handle_new_from_data);
g_test_add_func ("/api/handle_new_from_gfile_sync", handle_new_from_gfile_sync);
g_test_add_func ("/api/handle_new_from_stream_sync", handle_new_from_stream_sync);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]