static gboolean get_file_metadata (TrackerExtractTask *task, TrackerExtractInfo **info_out) { TrackerExtractInfo *info; GFile *file; gchar *mime_used = NULL; gint items = 0; *info_out = NULL; file = g_file_new_for_uri (task->file); info = tracker_extract_info_new (file, task->mimetype, task->graph); g_object_unref (file); if (task->mimetype && *task->mimetype) { /* We know the mime */ mime_used = g_strdup (task->mimetype); } else { tracker_extract_info_unref (info); return FALSE; } /* Now we have sanity checked everything, actually get the * data we need from the extractors. */ if (mime_used) { if (task->cur_func) { TrackerSparqlBuilder *statements; g_debug ("Using %s...", g_module_name (task->cur_module)); (task->cur_func) (info); statements = tracker_extract_info_get_metadata_builder (info); items = tracker_sparql_builder_get_length (statements); if (items > 0) { tracker_sparql_builder_insert_close (statements); task->success = TRUE; } } g_free (mime_used); } g_debug ("Done (%d objects added)\n", items); if (items == 0) { tracker_extract_info_unref (info); info = NULL; } *info_out = info; return (items > 0); }
static gboolean get_file_metadata (TrackerExtractTask *task, TrackerExtractInfo **info_out) { TrackerExtractInfo *info; GFile *file; gchar *mime_used = NULL; #ifdef HAVE_LIBSTREAMANALYZER gchar *content_type = NULL; #endif gint items = 0; g_debug ("Extracting..."); *info_out = NULL; file = g_file_new_for_uri (task->file); info = tracker_extract_info_new (file, task->mimetype, task->graph); g_object_unref (file); #ifdef HAVE_LIBSTREAMANALYZER /* FIXME: This entire section is completely broken, * it doesn't even build these days. It should be removed or fixed. * -mr (05/09/11) */ if (!priv->force_internal_extractors) { g_debug (" Using libstreamanalyzer..."); tracker_topanalyzer_extract (task->file, statements, &content_type); if (tracker_sparql_builder_get_length (statements) > 0) { g_free (content_type); tracker_sparql_builder_insert_close (statements); *info_out = info; return TRUE; } } else { g_debug (" Using internal extractors ONLY..."); } #endif /* HAVE_LIBSTREAMANALYZER */ if (task->mimetype && *task->mimetype) { /* We know the mime */ mime_used = g_strdup (task->mimetype); } #ifdef HAVE_LIBSTREAMANALYZER else if (content_type && *content_type) { /* We know the mime from LSA */ mime_used = content_type; g_strstrip (mime_used); } #endif /* HAVE_LIBSTREAMANALYZER */ else { tracker_extract_info_unref (info); return FALSE; } /* Now we have sanity checked everything, actually get the * data we need from the extractors. */ if (mime_used) { if (task->cur_func) { TrackerSparqlBuilder *statements; g_debug (" Using %s...", g_module_name (task->cur_module)); (task->cur_func) (info); statements = tracker_extract_info_get_metadata_builder (info); items = tracker_sparql_builder_get_length (statements); if (items > 0) { tracker_sparql_builder_insert_close (statements); g_debug ("Done (%d items)", items); task->success = TRUE; } } g_free (mime_used); } if (items == 0) { g_debug ("No extractor or failed"); tracker_extract_info_unref (info); info = NULL; } *info_out = info; return (items > 0); }