diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-05-30 14:16:51 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-06-28 23:55:22 +0200 |
commit | a6f701b9c56d602c1c1eb03cbf7f94ff0bd1848e (patch) | |
tree | 1f9efcf39a2e6e24ad4e94fdffed245f3b0bdf8c | |
parent | 7377bbc25ebabd858b3f5205354593f40292314c (diff) | |
download | tracker-a6f701b9c56d602c1c1eb03cbf7f94ff0bd1848e.tar.gz |
libtracker-data: Take a GFile for ontology location in the data manager
The other tracker_data_manager_init() arguments taking file paths will
follow. This fully exposes the ability to load ontologies from resource://
locations.
-rw-r--r-- | src/libtracker-data/libtracker-data.vapi | 4 | ||||
-rw-r--r-- | src/libtracker-data/tracker-data-backup.c | 2 | ||||
-rw-r--r-- | src/libtracker-data/tracker-data-backup.h | 2 | ||||
-rw-r--r-- | src/libtracker-data/tracker-data-manager.c | 47 | ||||
-rw-r--r-- | src/libtracker-data/tracker-data-manager.h | 2 | ||||
-rw-r--r-- | src/libtracker-direct/tracker-direct.vala | 4 | ||||
-rw-r--r-- | src/tracker-store/tracker-main.vala | 4 |
7 files changed, 33 insertions, 32 deletions
diff --git a/src/libtracker-data/libtracker-data.vapi b/src/libtracker-data/libtracker-data.vapi index dd641e5be..42b2eb02f 100644 --- a/src/libtracker-data/libtracker-data.vapi +++ b/src/libtracker-data/libtracker-data.vapi @@ -224,12 +224,12 @@ namespace Tracker { public delegate void BackupFinished (GLib.Error error); public void backup_save (GLib.File destination, owned BackupFinished callback); - public void backup_restore (GLib.File journal, string? cache_location, string? data_location, string? ontology_location, [CCode (array_length = false)] string[]? test_schema, BusyCallback busy_callback) throws GLib.Error; + public void backup_restore (GLib.File journal, string? cache_location, string? data_location, GLib.File? ontology_location, [CCode (array_length = false)] string[]? test_schema, BusyCallback busy_callback) throws GLib.Error; } [CCode (cheader_filename = "libtracker-data/tracker-data-manager.h")] namespace Data.Manager { - public bool init (DBManagerFlags flags, string? cache_location, string? data_location, string? ontology_location, [CCode (array_length = false)] string[]? test_schema, out bool first_time, bool journal_check, bool restoring_backup, uint select_cache_size, uint update_cache_size, BusyCallback? busy_callback, string? busy_status) throws DBInterfaceError, DBJournalError; + public bool init (DBManagerFlags flags, string? cache_location, string? data_location, GLib.File? ontology_location, [CCode (array_length = false)] string[]? test_schema, out bool first_time, bool journal_check, bool restoring_backup, uint select_cache_size, uint update_cache_size, BusyCallback? busy_callback, string? busy_status) throws DBInterfaceError, DBJournalError; public void shutdown (); } diff --git a/src/libtracker-data/tracker-data-backup.c b/src/libtracker-data/tracker-data-backup.c index 5065f1fdd..ee9430e0e 100644 --- a/src/libtracker-data/tracker-data-backup.c +++ b/src/libtracker-data/tracker-data-backup.c @@ -585,7 +585,7 @@ void tracker_data_backup_restore (GFile *journal, const gchar *cache_location, const gchar *data_location, - const gchar *ontology_location, + GFile *ontology_location, const gchar **test_schemas, TrackerBusyCallback busy_callback, gpointer busy_user_data, diff --git a/src/libtracker-data/tracker-data-backup.h b/src/libtracker-data/tracker-data-backup.h index e02bbc054..e85ba6652 100644 --- a/src/libtracker-data/tracker-data-backup.h +++ b/src/libtracker-data/tracker-data-backup.h @@ -50,7 +50,7 @@ void tracker_data_backup_save (GFile *destination, void tracker_data_backup_restore (GFile *journal, const gchar *cache_location, const gchar *data_location, - const gchar *ontology_location, + GFile *ontology_location, const gchar **test_schema, TrackerBusyCallback busy_callback, gpointer busy_user_data, diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c index 1fca65054..14ccf30d5 100644 --- a/src/libtracker-data/tracker-data-manager.c +++ b/src/libtracker-data/tracker-data-manager.c @@ -65,8 +65,8 @@ #define ZLIBBUFSIZ 8192 -static gchar *ontologies_dir; -static gchar *ontology_location_stored; +static GFile *ontologies_dir = NULL; +static GFile *ontology_location_stored = NULL; static gchar *cache_location_stored; static gchar *data_location_stored; static gboolean initialized; @@ -3419,14 +3419,12 @@ compare_file_names (GFile *file_a, } static GList* -get_ontologies (const gchar *ontologies_dir, - GError **error) +get_ontologies (GFile *ontologies, + GError **error) { GFileEnumerator *enumerator; - GFile *ontologies; GList *sorted = NULL; - ontologies = g_file_new_for_path (ontologies_dir); enumerator = g_file_enumerate_children (ontologies, G_FILE_ATTRIBUTE_STANDARD_NAME, G_FILE_QUERY_INFO_NONE, @@ -3728,7 +3726,7 @@ gboolean tracker_data_manager_init (TrackerDBManagerFlags flags, const gchar *cache_location, const gchar *data_location, - const gchar *ontology_location, + GFile *ontology_location, const gchar **test_schemas, gboolean *first_time, gboolean journal_check, @@ -3864,11 +3862,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags, else cache_location_stored = NULL; - g_free (ontology_location_stored); - if (ontology_location != NULL) - ontology_location_stored = g_strdup(ontology_location); - else - ontology_location_stored = NULL; + g_set_object (&ontology_location_stored, ontology_location); g_free (data_location_stored); if (data_location != NULL) @@ -3879,19 +3873,26 @@ tracker_data_manager_init (TrackerDBManagerFlags flags, if (G_LIKELY (!env_path)) { if (ontology_location == NULL) { + gchar *file_path; + /* SHAREDIR/tracker/ontologies */ - ontologies_dir = g_build_filename (SHAREDIR, "tracker", - "ontologies", NULL); + file_path = g_build_filename (SHAREDIR, "tracker", + "ontologies", NULL); + ontologies_dir = g_file_new_for_path (file_path); + g_free (file_path); } else { /* Typically SHAREDIR/tracker/domain-ontologies/domain/ontology-name */ - ontologies_dir = g_strdup (ontology_location); + ontologies_dir = g_object_ref (ontology_location); } - /* TODO: support GResource here */ - if (!g_file_test (ontologies_dir, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)) { + if (g_file_query_file_type (ontologies_dir, G_FILE_QUERY_INFO_NONE, NULL) != G_FILE_TYPE_DIRECTORY) { + gchar *uri; + + uri = g_file_get_uri (ontologies_dir); g_set_error (error, TRACKER_DATA_ONTOLOGY_ERROR, TRACKER_DATA_ONTOLOGY_NOT_FOUND, - "'%s' is not a ontology location", ontologies_dir); + "'%s' is not a ontology location", uri); + g_free (uri); tracker_db_manager_shutdown (); tracker_ontologies_shutdown (); if (!reloading) { @@ -3901,7 +3902,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags, return FALSE; } } else { - ontologies_dir = g_strdup (env_path); + ontologies_dir = g_file_new_for_path (env_path); } #ifndef DISABLE_JOURNAL @@ -4359,7 +4360,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags, if (ontos) { g_list_free_full (ontos, g_object_unref); } - g_free (ontologies_dir); + g_object_unref (ontologies_dir); if (uri_id_map) { g_hash_table_unref (uri_id_map); } @@ -4453,7 +4454,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags, if (ontos) { g_list_free_full (ontos, g_object_unref); } - g_free (ontologies_dir); + g_clear_object (&ontologies_dir); if (uri_id_map) { g_hash_table_unref (uri_id_map); } @@ -4562,7 +4563,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags, if (ontos) { g_list_free_full (ontos, g_object_unref); } - g_free (ontologies_dir); + g_clear_object (&ontologies_dir); if (uri_id_map) { g_hash_table_unref (uri_id_map); } @@ -4759,7 +4760,7 @@ tracker_data_manager_init (TrackerDBManagerFlags flags, initialized = TRUE; - g_free (ontologies_dir); + g_clear_object (&ontologies_dir); /* This is the only one which doesn't show the 'OPERATION' part */ if (busy_callback) { diff --git a/src/libtracker-data/tracker-data-manager.h b/src/libtracker-data/tracker-data-manager.h index 0dcd21070..3d3e14116 100644 --- a/src/libtracker-data/tracker-data-manager.h +++ b/src/libtracker-data/tracker-data-manager.h @@ -47,9 +47,9 @@ typedef enum { GQuark tracker_data_ontology_error_quark (void); gboolean tracker_data_manager_init (TrackerDBManagerFlags flags, - const gchar *ontology_location, const gchar *cache_location, const gchar *data_location, + GFile *ontology_location, const gchar **test_schema, gboolean *first_time, gboolean journal_check, diff --git a/src/libtracker-direct/tracker-direct.vala b/src/libtracker-direct/tracker-direct.vala index 256f295aa..f89f31787 100644 --- a/src/libtracker-direct/tracker-direct.vala +++ b/src/libtracker-direct/tracker-direct.vala @@ -49,7 +49,7 @@ public class Tracker.Direct.Connection : Tracker.Sparql.Connection { } } - public Connection.custom_ontology (string? loc, string? domain, string? ontology_name) throws Sparql.Error, IOError, DBusError { + public Connection.custom_ontology (string? loc, string? domain, File? ontology_loc) throws Sparql.Error, IOError, DBusError { try { if (use_count == 0) { // make sure that current locale vs db locale are the same, @@ -65,7 +65,7 @@ public class Tracker.Direct.Connection : Tracker.Sparql.Connection { } Data.Manager.init (DBManagerFlags.READONLY | DBManagerFlags.ENABLE_MUTEXES, - loc, domain, ontology_name, + loc, domain, ontology_loc, null, null, false, false, select_cache_size, 0, null, null); } diff --git a/src/tracker-store/tracker-main.vala b/src/tracker-store/tracker-main.vala index 96bc03ffa..271d87d63 100644 --- a/src/tracker-store/tracker-main.vala +++ b/src/tracker-store/tracker-main.vala @@ -347,8 +347,8 @@ License which can be viewed at: try { string final_cache_location = cache_location != null ? cache_location.replace ("%HOME%", Environment.get_home_dir()).replace("%SHAREDIR%", SHAREDIR) : null; string final_data_location = data_location != null ? data_location.replace ("%HOME%", Environment.get_home_dir()).replace("%SHAREDIR%", SHAREDIR) : null; - string final_ontology_location = ontology_location != null ? ontology_location.replace ("%HOME%", Environment.get_home_dir()).replace("%SHAREDIR%", SHAREDIR) : null; - + File final_ontology_location = ontology_location != null ? File.new_for_path (ontology_location.replace ("%HOME%", Environment.get_home_dir()).replace("%SHAREDIR%", SHAREDIR)) : null; + Tracker.Data.Manager.init (flags, final_cache_location, final_data_location, |