[tracker-miners/wip/carlosg/better-extractor-errors: 1/5] tracker-extract: Add GError argument to get_metadata() function




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]