You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.1 KiB
74 lines
2.1 KiB
From 53d83c1a4a7f140149fec7f2aecf91034dbb3546 Mon Sep 17 00:00:00 2001
|
|
From: Bastien Nocera <hadess@hadess.net>
|
|
Date: Mon, 6 Jan 2014 12:45:24 +0100
|
|
Subject: [PATCH] Update skeleton to fix crash with trash/recent files
|
|
|
|
---
|
|
gnome-thumbnailer-skeleton.c | 41 ++++++++++++++++++++++++++++++++++++++++-
|
|
1 file changed, 40 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/gnome-thumbnailer-skeleton.c b/gnome-thumbnailer-skeleton.c
|
|
index b7ec3ec..e4c11a6 100644
|
|
--- a/gnome-thumbnailer-skeleton.c
|
|
+++ b/gnome-thumbnailer-skeleton.c
|
|
@@ -34,6 +34,40 @@ static int output_size = 256;
|
|
static gboolean g_fatal_warnings = FALSE;
|
|
static char **filenames = NULL;
|
|
|
|
+static char *
|
|
+get_target_uri (GFile *file)
|
|
+{
|
|
+ GFileInfo *info;
|
|
+ char *target;
|
|
+
|
|
+ info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI, G_FILE_QUERY_INFO_NONE, NULL, NULL);
|
|
+ if (info == NULL)
|
|
+ return NULL;
|
|
+ target = g_strdup (g_file_info_get_attribute_string (info, G_FILE_ATTRIBUTE_STANDARD_TARGET_URI));
|
|
+ g_object_unref (info);
|
|
+
|
|
+ return target;
|
|
+}
|
|
+
|
|
+static char *
|
|
+get_target_path (GFile *input)
|
|
+{
|
|
+ if (g_file_has_uri_scheme (input, "trash") != FALSE ||
|
|
+ g_file_has_uri_scheme (input, "recent") != FALSE) {
|
|
+ GFile *file;
|
|
+ char *input_uri;
|
|
+ char *input_path;
|
|
+
|
|
+ input_uri = get_target_uri (input);
|
|
+ file = g_file_new_for_uri (input_uri);
|
|
+ g_free (input_uri);
|
|
+ input_path = g_file_get_path (file);
|
|
+ g_object_unref (file);
|
|
+ return input_path;
|
|
+ }
|
|
+ return g_file_get_path (input);
|
|
+}
|
|
+
|
|
static const GOptionEntry entries[] = {
|
|
{ "size", 's', 0, G_OPTION_ARG_INT, &output_size, "Size of the thumbnail in pixels", NULL },
|
|
{"g-fatal-warnings", 0, 0, G_OPTION_ARG_NONE, &g_fatal_warnings, "Make all warnings fatal", NULL},
|
|
@@ -84,9 +118,14 @@ int main (int argc, char **argv)
|
|
}
|
|
|
|
input = g_file_new_for_commandline_arg (filenames[0]);
|
|
- input_filename = g_file_get_path (input);
|
|
+ input_filename = get_target_path (input);
|
|
g_object_unref (input);
|
|
|
|
+ if (input_filename == NULL) {
|
|
+ g_warning ("Could not get file path for %s", filenames[0]);
|
|
+ return 1;
|
|
+ }
|
|
+
|
|
output = filenames[1];
|
|
|
|
#ifdef THUMBNAILER_RETURNS_PIXBUF
|
|
--
|
|
1.8.5.2
|
|
|