[tracker-miners/wip/carlosg/better-extractor-errors: 1/5] tracker-extract: Add GError argument to get_metadata() function
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker-miners/wip/carlosg/better-extractor-errors: 1/5] tracker-extract: Add GError argument to get_metadata() function
- Date: Thu, 12 Nov 2020 23:28:55 +0000 (UTC)
commit f87bdb8444bb294f5801e8b456720326a08924a6
Author: Carlos Garnacho <carlosg gnome org>
Date: Sun Nov 8 23:32:12 2020 +0100
tracker-extract: Add GError argument to get_metadata() function
Add a GError argument (unused so far), so modules can return better
error descriptions than "Could not get any metadata".
src/libtracker-extract/tracker-data.h | 3 ++-
src/libtracker-extract/tracker-module-manager.c | 6 ++++--
src/libtracker-extract/tracker-module-manager.h | 4 ++--
src/tracker-extract/tracker-extract-abw.c | 3 ++-
src/tracker-extract/tracker-extract-bmp.c | 3 ++-
src/tracker-extract/tracker-extract-desktop.c | 3 ++-
src/tracker-extract/tracker-extract-dummy.c | 3 ++-
src/tracker-extract/tracker-extract-epub.c | 3 ++-
src/tracker-extract/tracker-extract-gif.c | 3 ++-
src/tracker-extract/tracker-extract-gstreamer.c | 3 ++-
src/tracker-extract/tracker-extract-html.c | 3 ++-
src/tracker-extract/tracker-extract-icon.c | 3 ++-
src/tracker-extract/tracker-extract-iso.c | 23 ++++++++++----------
src/tracker-extract/tracker-extract-jpeg.c | 3 ++-
src/tracker-extract/tracker-extract-libav.c | 3 ++-
src/tracker-extract/tracker-extract-mp3.c | 3 ++-
src/tracker-extract/tracker-extract-msoffice-xml.c | 13 +++++------
src/tracker-extract/tracker-extract-msoffice.c | 3 ++-
src/tracker-extract/tracker-extract-oasis.c | 3 ++-
src/tracker-extract/tracker-extract-pdf.c | 17 ++++++++-------
src/tracker-extract/tracker-extract-playlist.c | 3 ++-
src/tracker-extract/tracker-extract-png.c | 3 ++-
src/tracker-extract/tracker-extract-ps.c | 3 ++-
src/tracker-extract/tracker-extract-raw.c | 12 +++++------
src/tracker-extract/tracker-extract-text.c | 13 +++++------
src/tracker-extract/tracker-extract-tiff.c | 3 ++-
src/tracker-extract/tracker-extract-xps.c | 21 +++++++++---------
src/tracker-extract/tracker-extract.c | 25 ++++++++++++++--------
28 files changed, 112 insertions(+), 79 deletions(-)
---
diff --git a/src/libtracker-extract/tracker-data.h b/src/libtracker-extract/tracker-data.h
index b7101012e..56b5bb10d 100644
--- a/src/libtracker-extract/tracker-data.h
+++ b/src/libtracker-extract/tracker-data.h
@@ -87,7 +87,8 @@ gboolean tracker_extract_module_shutdown (void);
*
* Since: 0.12
*/
-gboolean tracker_extract_get_metadata (TrackerExtractInfo *info);
+gboolean tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error);
G_END_DECLS
diff --git a/src/libtracker-extract/tracker-module-manager.c b/src/libtracker-extract/tracker-module-manager.c
index 6df2f6f65..83c9453e0 100644
--- a/src/libtracker-extract/tracker-module-manager.c
+++ b/src/libtracker-extract/tracker-module-manager.c
@@ -46,7 +46,8 @@ typedef struct {
TrackerExtractShutdownFunc shutdown_func;
} ModuleInfo;
-static gboolean dummy_extract_func (TrackerExtractInfo *info);
+static gboolean dummy_extract_func (TrackerExtractInfo *info,
+ GError **error);
static ModuleInfo dummy_module = {
NULL, dummy_extract_func, NULL, NULL
@@ -64,7 +65,8 @@ struct _TrackerMimetypeInfo {
};
static gboolean
-dummy_extract_func (TrackerExtractInfo *info)
+dummy_extract_func (TrackerExtractInfo *info,
+ GError **error)
{
return TRUE;
}
diff --git a/src/libtracker-extract/tracker-module-manager.h b/src/libtracker-extract/tracker-module-manager.h
index b566b1113..0139c11b5 100644
--- a/src/libtracker-extract/tracker-module-manager.h
+++ b/src/libtracker-extract/tracker-module-manager.h
@@ -37,8 +37,8 @@ typedef struct _TrackerMimetypeInfo TrackerMimetypeInfo;
typedef gboolean (* TrackerExtractInitFunc) (GError **error);
typedef void (* TrackerExtractShutdownFunc) (void);
-typedef gboolean (* TrackerExtractMetadataFunc) (TrackerExtractInfo *info);
-
+typedef gboolean (* TrackerExtractMetadataFunc) (TrackerExtractInfo *info,
+ GError **error);
gboolean tracker_extract_module_manager_init (void) G_GNUC_CONST;
diff --git a/src/tracker-extract/tracker-extract-abw.c b/src/tracker-extract/tracker-extract-abw.c
index 6b8c9d43a..bbc612b5f 100644
--- a/src/tracker-extract/tracker-extract-abw.c
+++ b/src/tracker-extract/tracker-extract-abw.c
@@ -180,7 +180,8 @@ static GMarkupParser parser = {
};
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
int fd;
gchar *filename, *contents;
diff --git a/src/tracker-extract/tracker-extract-bmp.c b/src/tracker-extract/tracker-extract-bmp.c
index 3d924c943..adfb8e393 100644
--- a/src/tracker-extract/tracker-extract-bmp.c
+++ b/src/tracker-extract/tracker-extract-bmp.c
@@ -103,7 +103,8 @@ get_img_resolution (const GFile *file,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *image;
goffset size;
diff --git a/src/tracker-extract/tracker-extract-desktop.c b/src/tracker-extract/tracker-extract-desktop.c
index a042f96b5..0c793d48e 100644
--- a/src/tracker-extract/tracker-extract-desktop.c
+++ b/src/tracker-extract/tracker-extract-desktop.c
@@ -294,7 +294,8 @@ process_desktop_file (TrackerResource *resource,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
diff --git a/src/tracker-extract/tracker-extract-dummy.c b/src/tracker-extract/tracker-extract-dummy.c
index 661b7c2ae..f8ffdbcf9 100644
--- a/src/tracker-extract/tracker-extract-dummy.c
+++ b/src/tracker-extract/tracker-extract-dummy.c
@@ -24,7 +24,8 @@
#include <libtracker-extract/tracker-extract.h>
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
/* Nothing */
return TRUE;
diff --git a/src/tracker-extract/tracker-extract-epub.c b/src/tracker-extract/tracker-extract-epub.c
index 2e65e10bd..0e4af5b16 100644
--- a/src/tracker-extract/tracker-extract-epub.c
+++ b/src/tracker-extract/tracker-extract-epub.c
@@ -666,7 +666,8 @@ extract_opf (const gchar *uri,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *ebook;
gchar *opf_path, *uri;
diff --git a/src/tracker-extract/tracker-extract-gif.c b/src/tracker-extract/tracker-extract-gif.c
index 6b0d2897f..be5fd3353 100644
--- a/src/tracker-extract/tracker-extract-gif.c
+++ b/src/tracker-extract/tracker-extract-gif.c
@@ -471,7 +471,8 @@ read_metadata (GifFileType *gifFile,
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
goffset size;
diff --git a/src/tracker-extract/tracker-extract-gstreamer.c b/src/tracker-extract/tracker-extract-gstreamer.c
index aeb5fff70..f9b41b7cd 100644
--- a/src/tracker-extract/tracker-extract-gstreamer.c
+++ b/src/tracker-extract/tracker-extract-gstreamer.c
@@ -1355,7 +1355,8 @@ tracker_extract_gstreamer (const gchar *uri,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
GFile *file;
gchar *uri;
diff --git a/src/tracker-extract/tracker-extract-html.c b/src/tracker-extract/tracker-extract-html.c
index afe13f72c..a446b4a54 100644
--- a/src/tracker-extract/tracker-extract-html.c
+++ b/src/tracker-extract/tracker-extract-html.c
@@ -229,7 +229,8 @@ parser_characters (void *data,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
GFile *file;
diff --git a/src/tracker-extract/tracker-extract-icon.c b/src/tracker-extract/tracker-extract-icon.c
index 05f482b36..ecdbb3a2c 100644
--- a/src/tracker-extract/tracker-extract-icon.c
+++ b/src/tracker-extract/tracker-extract-icon.c
@@ -125,7 +125,8 @@ find_max_width_and_height (const gchar *uri,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
guint max_width;
diff --git a/src/tracker-extract/tracker-extract-iso.c b/src/tracker-extract/tracker-extract-iso.c
index 9dc77e18a..292e6dadf 100644
--- a/src/tracker-extract/tracker-extract-iso.c
+++ b/src/tracker-extract/tracker-extract-iso.c
@@ -32,7 +32,8 @@
#include <libtracker-sparql/tracker-sparql.h>
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info_)
+tracker_extract_get_metadata (TrackerExtractInfo *info_,
+ GError **error)
{
/* NOTE: This function has to exist, tracker-extract checks
* the symbol table for this function and if it doesn't
@@ -41,7 +42,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info_)
/* File information */
GFile *file;
- GError *error = NULL;
+ GError *inner_error = NULL;
gchar *filename;
OsinfoLoader *loader = NULL;
OsinfoMedia *media;
@@ -61,14 +62,14 @@ tracker_extract_get_metadata (TrackerExtractInfo *info_)
metadata = tracker_resource_new (NULL);
- media = osinfo_media_create_from_location (filename, NULL, &error);
- if (error != NULL) {
- if (error->code != OSINFO_MEDIA_ERROR_NOT_BOOTABLE) {
+ media = osinfo_media_create_from_location (filename, NULL, &inner_error);
+ if (inner_error != NULL) {
+ if (inner_error->code != OSINFO_MEDIA_ERROR_NOT_BOOTABLE) {
g_object_unref (metadata);
g_debug ("Could not extract iso info from '%s': %s",
- filename, error->message);
+ filename, inner_error->message);
g_free (filename);
- g_error_free (error);
+ g_error_free (inner_error);
return FALSE;
}
bootable = FALSE;
@@ -79,11 +80,11 @@ tracker_extract_get_metadata (TrackerExtractInfo *info_)
g_free (filename);
loader = osinfo_loader_new ();
- osinfo_loader_process_default_path (loader, &error);
- if (error != NULL) {
+ osinfo_loader_process_default_path (loader, &inner_error);
+ if (inner_error != NULL) {
g_message ("Error loading libosinfo OS data: %s",
- error->message);
- g_error_free (error);
+ inner_error->message);
+ g_error_free (inner_error);
goto no_os;
}
g_warn_if_fail (media != NULL);
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index c04942cdc..ce00e3155 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -136,7 +136,8 @@ guess_dlna_profile (gint width,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
struct jpeg_decompress_struct cinfo;
struct tej_error_mgr tejerr;
diff --git a/src/tracker-extract/tracker-extract-libav.c b/src/tracker-extract/tracker-extract-libav.c
index e1ab54e01..ee24bd574 100644
--- a/src/tracker-extract/tracker-extract-libav.c
+++ b/src/tracker-extract/tracker-extract-libav.c
@@ -41,7 +41,8 @@ static AVDictionaryEntry *find_tag (AVFormatContext *format, AVStream *stream, c
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
GFile *file;
TrackerResource *metadata;
diff --git a/src/tracker-extract/tracker-extract-mp3.c b/src/tracker-extract/tracker-extract-mp3.c
index c33f82a97..254e5381d 100644
--- a/src/tracker-extract/tracker-extract-mp3.c
+++ b/src/tracker-extract/tracker-extract-mp3.c
@@ -2633,7 +2633,8 @@ parse_id3v2 (const gchar *data,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
gchar *filename, *uri;
int fd;
diff --git a/src/tracker-extract/tracker-extract-msoffice-xml.c
b/src/tracker-extract/tracker-extract-msoffice-xml.c
index ddf85c4a0..463abf5d9 100644
--- a/src/tracker-extract/tracker-extract-msoffice-xml.c
+++ b/src/tracker-extract/tracker-extract-msoffice-xml.c
@@ -800,14 +800,15 @@ extract_content (MsOfficeXMLParserInfo *info)
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *extract_info)
+tracker_extract_get_metadata (TrackerExtractInfo *extract_info,
+ GError **error)
{
MsOfficeXMLParserInfo info = { 0 };
MsOfficeXMLFileType file_type;
TrackerResource *metadata;
TrackerConfig *config;
GMarkupParseContext *context = NULL;
- GError *error = NULL;
+ GError *inner_error = NULL;
GFile *file;
gchar *uri;
@@ -853,11 +854,11 @@ tracker_extract_get_metadata (TrackerExtractInfo *extract_info)
tracker_gsf_parse_xml_in_zip (uri,
"[Content_Types].xml",
context,
- &error);
- if (error) {
+ &inner_error);
+ if (inner_error) {
g_debug ("Parsing the content-types file gave an error: '%s'",
- error->message);
- g_error_free (error);
+ inner_error->message);
+ g_error_free (inner_error);
}
extract_content (&info);
diff --git a/src/tracker-extract/tracker-extract-msoffice.c b/src/tracker-extract/tracker-extract-msoffice.c
index f91481cd5..96ccc1c82 100644
--- a/src/tracker-extract/tracker-extract-msoffice.c
+++ b/src/tracker-extract/tracker-extract-msoffice.c
@@ -1615,7 +1615,8 @@ extract_summary (TrackerResource *metadata,
* @param metadata where to store extracted data to
*/
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
TrackerConfig *config;
diff --git a/src/tracker-extract/tracker-extract-oasis.c b/src/tracker-extract/tracker-extract-oasis.c
index 6f104290f..b29ae5971 100644
--- a/src/tracker-extract/tracker-extract-oasis.c
+++ b/src/tracker-extract/tracker-extract-oasis.c
@@ -167,7 +167,8 @@ extract_oasis_content (const gchar *uri,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *extract_info)
+tracker_extract_get_metadata (TrackerExtractInfo *extract_info,
+ GError **error)
{
TrackerResource *metadata;
TrackerConfig *config;
diff --git a/src/tracker-extract/tracker-extract-pdf.c b/src/tracker-extract/tracker-extract-pdf.c
index 130c364f5..1133d0b59 100644
--- a/src/tracker-extract/tracker-extract-pdf.c
+++ b/src/tracker-extract/tracker-extract-pdf.c
@@ -278,11 +278,12 @@ write_pdf_data (PDFData data,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerConfig *config;
time_t creation_date;
- GError *error = NULL;
+ GError *inner_error = NULL;
TrackerResource *metadata;
TrackerXmpData *xd = NULL;
PDFData pd = { 0 }; /* actual data */
@@ -341,10 +342,10 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
g_free (filename);
uri = g_file_get_uri (file);
- document = poppler_document_new_from_data (contents, len, NULL, &error);
+ document = poppler_document_new_from_data (contents, len, NULL, &inner_error);
- if (error) {
- if (error->code == POPPLER_ERROR_ENCRYPTED) {
+ if (inner_error) {
+ if (inner_error->code == POPPLER_ERROR_ENCRYPTED) {
metadata = tracker_resource_new (NULL);
tracker_resource_add_uri (metadata, "rdf:type", "nfo:PaginatedTextDocument");
@@ -353,7 +354,7 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
tracker_extract_info_set_resource (info, metadata);
g_object_unref (metadata);
- g_error_free (error);
+ g_error_free (inner_error);
g_free (uri);
close (fd);
@@ -361,9 +362,9 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
} else {
g_warning ("Couldn't create PopplerDocument from uri:'%s', %s",
uri,
- error->message ? error->message : "no error given");
+ inner_error->message);
- g_error_free (error);
+ g_error_free (inner_error);
g_free (uri);
close (fd);
diff --git a/src/tracker-extract/tracker-extract-playlist.c b/src/tracker-extract/tracker-extract-playlist.c
index 8c354bab0..c95f85a02 100644
--- a/src/tracker-extract/tracker-extract-playlist.c
+++ b/src/tracker-extract/tracker-extract-playlist.c
@@ -115,7 +115,8 @@ entry_parsed (TotemPlParser *parser,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TotemPlParser *pl;
TrackerResource *metadata;
diff --git a/src/tracker-extract/tracker-extract-png.c b/src/tracker-extract/tracker-extract-png.c
index 18f061aa1..fa22cfc84 100644
--- a/src/tracker-extract/tracker-extract-png.c
+++ b/src/tracker-extract/tracker-extract-png.c
@@ -638,7 +638,8 @@ guess_dlna_profile (gint depth,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
goffset size;
diff --git a/src/tracker-extract/tracker-extract-ps.c b/src/tracker-extract/tracker-extract-ps.c
index 02eadbef4..a78a3f200 100644
--- a/src/tracker-extract/tracker-extract-ps.c
+++ b/src/tracker-extract/tracker-extract-ps.c
@@ -209,7 +209,8 @@ extract_ps_gz (const gchar *uri)
#endif /* USING_UNZIPPSFILES */
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
GFile *file;
diff --git a/src/tracker-extract/tracker-extract-raw.c b/src/tracker-extract/tracker-extract-raw.c
index f51cb381a..c1e6a1889 100644
--- a/src/tracker-extract/tracker-extract-raw.c
+++ b/src/tracker-extract/tracker-extract-raw.c
@@ -319,9 +319,10 @@ out:
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
- GError *error;
+ GError *inner_error = NULL;
GFile *file;
GExiv2Metadata *metadata = NULL;
GExiv2Orientation orientation;
@@ -339,10 +340,9 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
file = tracker_extract_info_get_file (info);
filename = g_file_get_path (file);
- error = NULL;
- if (!gexiv2_metadata_open_path (metadata, filename, &error)) {
- g_warning ("Could not open %s for reading metadata: %s", filename, error->message);
- g_error_free (error);
+ if (!gexiv2_metadata_open_path (metadata, filename, &inner_error)) {
+ g_warning ("Could not open %s for reading metadata: %s", filename, inner_error->message);
+ g_error_free (inner_error);
goto out;
}
diff --git a/src/tracker-extract/tracker-extract-text.c b/src/tracker-extract/tracker-extract-text.c
index 3ac111b05..5333e02a3 100644
--- a/src/tracker-extract/tracker-extract-text.c
+++ b/src/tracker-extract/tracker-extract-text.c
@@ -95,14 +95,15 @@ get_file_content (GFile *file,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
TrackerConfig *config;
GFile *file;
GSList *text_allowlist_patterns;
gchar *content = NULL;
- GError *error = NULL;
+ GError *inner_error = NULL;
config = tracker_main_get_config ();
text_allowlist_patterns = tracker_config_get_text_allowlist_patterns (config);
@@ -114,12 +115,12 @@ tracker_extract_get_metadata (TrackerExtractInfo *info)
if (allow_file (text_allowlist_patterns, file)) {
content = get_file_content (tracker_extract_info_get_file (info),
tracker_config_get_max_bytes (config),
- &error);
+ &inner_error);
- if (error != NULL) {
+ if (inner_error != NULL) {
/* An error occurred, perhaps the file was deleted. */
- g_debug ("Error extracting content: %s", error->message);
- g_error_free (error);
+ g_debug ("Error extracting content: %s", inner_error->message);
+ g_error_free (inner_error);
return FALSE;
}
diff --git a/src/tracker-extract/tracker-extract-tiff.c b/src/tracker-extract/tracker-extract-tiff.c
index 41a1ceeec..6d48b05f9 100644
--- a/src/tracker-extract/tracker-extract-tiff.c
+++ b/src/tracker-extract/tracker-extract-tiff.c
@@ -251,7 +251,8 @@ tag_to_string (TIFF *image,
}
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *metadata;
TIFF *image;
diff --git a/src/tracker-extract/tracker-extract-xps.c b/src/tracker-extract/tracker-extract-xps.c
index 096bdd11b..d089dee1d 100644
--- a/src/tracker-extract/tracker-extract-xps.c
+++ b/src/tracker-extract/tracker-extract-xps.c
@@ -25,32 +25,33 @@
#include <libtracker-extract/tracker-extract.h>
G_MODULE_EXPORT gboolean
-tracker_extract_get_metadata (TrackerExtractInfo *info)
+tracker_extract_get_metadata (TrackerExtractInfo *info,
+ GError **error)
{
TrackerResource *resource;
GXPSDocument *document;
GXPSFile *xps_file;
GFile *file;
gchar *filename;
- GError *error = NULL;
+ GError *inner_error = NULL;
file = tracker_extract_info_get_file (info);
- xps_file = gxps_file_new (file, &error);
+ xps_file = gxps_file_new (file, &inner_error);
filename = g_file_get_path (file);
- if (error != NULL) {
- g_warning ("Unable to open '%s': %s", filename, error->message);
- g_error_free (error);
+ if (inner_error != NULL) {
+ g_warning ("Unable to open '%s': %s", filename, inner_error->message);
+ g_error_free (inner_error);
g_free (filename);
return FALSE;
}
- document = gxps_file_get_document (xps_file, 0, &error);
+ document = gxps_file_get_document (xps_file, 0, &inner_error);
g_object_unref (xps_file);
- if (error != NULL) {
- g_warning ("Unable to read '%s': %s", filename, error->message);
- g_error_free (error);
+ if (inner_error != NULL) {
+ g_warning ("Unable to read '%s': %s", filename, inner_error->message);
+ g_error_free (inner_error);
g_free (filename);
return FALSE;
}
diff --git a/src/tracker-extract/tracker-extract.c b/src/tracker-extract/tracker-extract.c
index 6270f7e8e..3bd7b4b35 100644
--- a/src/tracker-extract/tracker-extract.c
+++ b/src/tracker-extract/tracker-extract.c
@@ -278,7 +278,8 @@ notify_task_finish (TrackerExtractTask *task,
static gboolean
get_file_metadata (TrackerExtractTask *task,
- TrackerExtractInfo **info_out)
+ TrackerExtractInfo **info_out,
+ GError **error)
{
TrackerExtractInfo *info;
GFile *file;
@@ -301,7 +302,7 @@ get_file_metadata (TrackerExtractTask *task,
g_debug ("Using %s...",
g_module_name (task->module));
- task->success = (task->func) (info);
+ task->success = (task->func) (info, error);
} else {
TrackerResource *resource;
@@ -463,6 +464,7 @@ get_metadata (TrackerExtractTask *task)
{
TrackerExtractPrivate *priv = TRACKER_EXTRACT_GET_PRIVATE (task->extract);
TrackerExtractInfo *info;
+ GError *error = NULL;
#ifdef THREAD_ENABLE_TRACE
g_debug ("Thread:%p --> '%s': Collected metadata",
@@ -494,16 +496,21 @@ get_metadata (TrackerExtractTask *task)
#endif
if (!filter_module (task->extract, task->module) &&
- get_file_metadata (task, &info)) {
+ get_file_metadata (task, &info, &error)) {
g_task_return_pointer (G_TASK (task->res), info,
(GDestroyNotify) tracker_extract_info_unref);
extract_task_free (task);
} else {
- g_task_return_new_error (G_TASK (task->res),
- tracker_extract_error_quark (),
- TRACKER_EXTRACT_ERROR_NO_EXTRACTOR,
- "Could not get any metadata for uri:'%s' and mime:'%s'",
- task->file, task->mimetype);
+ if (error) {
+ g_task_return_error (G_TASK (task->res), error);
+ } else {
+ g_task_return_new_error (G_TASK (task->res),
+ tracker_extract_error_quark (),
+ TRACKER_EXTRACT_ERROR_NO_EXTRACTOR,
+ "Could not get any metadata for uri:'%s' and mime:'%s'",
+ task->file, task->mimetype);
+ }
+
extract_task_free (task);
}
@@ -689,7 +696,7 @@ tracker_extract_get_metadata_by_cmdline (TrackerExtract *object,
&task->func);
if (!filter_module (object, task->module) &&
- get_file_metadata (task, &info)) {
+ get_file_metadata (task, &info, NULL)) {
resource = tracker_extract_info_get_resource (info);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]