Index: src/tracker-indexer/modules/files.c =================================================================== --- src/tracker-indexer/modules/files.c (revision 1882) +++ src/tracker-indexer/modules/files.c (working copy) @@ -125,8 +125,9 @@ tracker_metadata_get_embedded (const cha if (!utf_value) continue; - /* FIXME: name should be const */ - g_hash_table_insert (table, g_strdup (name), utf_value); + g_hash_table_insert (table, + g_object_ref (tracker_ontology_get_field_def (name)), + utf_value); } g_strfreev (values); @@ -215,38 +216,51 @@ tracker_module_file_get_metadata (Tracke } g_lstat (path, &st); - metadata = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, + metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal, + (GDestroyNotify) g_object_unref, (GDestroyNotify) g_free); ext = strrchr (path, '.'); if (ext) { - g_hash_table_insert (metadata, METADATA_FILE_EXT, g_strdup (ext + 1)); + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_EXT)), + g_strdup (ext + 1)); } mimetype = tracker_file_get_mime_type (path); - g_hash_table_insert (metadata, METADATA_FILE_NAME, g_filename_display_basename (path)); - g_hash_table_insert (metadata, METADATA_FILE_PATH, g_path_get_dirname (path)); - g_hash_table_insert (metadata, METADATA_FILE_NAME_DELIMITED, + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)), + g_filename_display_basename (path)); + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)), + g_path_get_dirname (path)); + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME_DELIMITED)), g_filename_to_utf8 (path, -1, NULL, NULL, NULL)); - g_hash_table_insert (metadata, METADATA_FILE_MIMETYPE, mimetype); + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_MIMETYPE)), + mimetype); if (S_ISLNK (st.st_mode)) { gchar *link_path; link_path = g_file_read_link (path, NULL); - g_hash_table_insert (metadata, METADATA_FILE_LINK, + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_LINK)), g_filename_to_utf8 (link_path, -1, NULL, NULL, NULL)); g_free (link_path); } /* FIXME: These should be dealt directly as integer/times/whatever, not strings */ - g_hash_table_insert (metadata, METADATA_FILE_SIZE, + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_SIZE)), tracker_uint_to_string (st.st_size)); - g_hash_table_insert (metadata, METADATA_FILE_MODIFIED, + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_MODIFIED)), tracker_uint_to_string (st.st_mtime)); - g_hash_table_insert (metadata, METADATA_FILE_ACCESSED, + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_ACCESSED)), tracker_uint_to_string (st.st_atime)); tracker_metadata_get_embedded (path, mimetype, metadata); Index: src/tracker-indexer/modules/evolution.c =================================================================== --- src/tracker-indexer/modules/evolution.c (revision 1882) +++ src/tracker-indexer/modules/evolution.c (working copy) @@ -30,6 +30,7 @@ #include #include #include +#include #define METADATA_FILE_PATH "File:Path" #define METADATA_FILE_NAME "File:Name" @@ -578,24 +579,34 @@ get_metadata_for_mbox (TrackerFile *file return NULL; } - metadata = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, - (GDestroyNotify) g_free); - - dir = tracker_string_replace (file->path, local_dir, NULL); - name = g_strdup_printf ("%s;uid=%d", dir, get_mbox_message_id (message)); - - g_hash_table_insert (metadata, METADATA_FILE_PATH, g_strdup ("email://local@local")); - g_hash_table_insert (metadata, METADATA_FILE_NAME, name); - - g_mime_message_get_date (message, &date, NULL); - g_hash_table_insert (metadata, METADATA_EMAIL_DATE, - tracker_uint_to_string (date)); - - g_hash_table_insert (metadata, METADATA_EMAIL_SENDER, - g_strdup (g_mime_message_get_sender (message))); - g_hash_table_insert (metadata, METADATA_EMAIL_SUBJECT, - g_strdup (g_mime_message_get_subject (message))); + metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal, + (GDestroyNotify) g_object_unref, + (GDestroyNotify) g_free); + + dir = tracker_string_replace (file->path, local_dir, NULL); + name = g_strdup_printf ("%s;uid=%d", dir, get_mbox_message_id (message)); + + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)), + g_strdup ("email://local@local")); + + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)), + name); + + g_mime_message_get_date (message, &date, NULL); + + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_DATE)), + tracker_uint_to_string (date)); + + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SENDER)), + g_strdup (g_mime_message_get_sender (message))); + + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SUBJECT)), + g_strdup (g_mime_message_get_subject (message))); /* Missing: * @@ -716,21 +727,33 @@ get_metadata_for_imap (TrackerFile *file SUMMARY_TYPE_STRING, NULL, /* mlist */ -1); - metadata = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, - (GDestroyNotify) g_free); + metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal, + (GDestroyNotify) g_object_unref, + (GDestroyNotify) g_free); - get_imap_uri (file->path, &dirname, &basename); + get_imap_uri (file->path, &dirname, &basename); - g_hash_table_insert (metadata, METADATA_FILE_PATH, dirname); - g_hash_table_insert (metadata, METADATA_FILE_NAME, g_strdup_printf ("%s;uid=%s", basename, uid)); - g_free (basename); + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)), + dirname); + + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)), + g_strdup_printf ("%s;uid=%s", basename, uid)); + + g_free (basename); + + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_DATE)), + tracker_uint_to_string (date)); - g_hash_table_insert (metadata, METADATA_EMAIL_DATE, - tracker_uint_to_string (date)); + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SENDER)), + from); - g_hash_table_insert (metadata, METADATA_EMAIL_SENDER, from); - g_hash_table_insert (metadata, METADATA_EMAIL_SUBJECT, subject); + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SUBJECT)), + subject); g_free (uid); g_free (to); Index: src/tracker-indexer/modules/applications.c =================================================================== --- src/tracker-indexer/modules/applications.c (revision 1882) +++ src/tracker-indexer/modules/applications.c (working copy) @@ -19,7 +19,9 @@ #include #include +#include #include +#include #define GROUP_DESKTOP_ENTRY "Desktop Entry" #define KEY_TYPE "Type" @@ -102,21 +104,53 @@ tracker_module_file_get_metadata (Tracke } /* Begin collecting data */ - metadata = g_hash_table_new_full (g_str_hash, g_str_equal, - NULL, + metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal, + (GDestroyNotify) g_object_unref, (GDestroyNotify) g_free); - insert_data_from_desktop_file (metadata, METADATA_APP_NAME, key_file, KEY_NAME, FALSE); - insert_data_from_desktop_file (metadata, METADATA_APP_DISPLAY_NAME, key_file, KEY_NAME, TRUE); - insert_data_from_desktop_file (metadata, METADATA_APP_GENERIC_NAME, key_file, KEY_GENERIC_NAME, TRUE); - insert_data_from_desktop_file (metadata, METADATA_APP_COMMENT, key_file, KEY_COMMENT, TRUE); - insert_data_from_desktop_file (metadata, METADATA_APP_EXECUTABLE, key_file, KEY_EXECUTABLE, FALSE); - insert_data_from_desktop_file (metadata, METADATA_APP_ICON, key_file, KEY_ICON, FALSE); + insert_data_from_desktop_file (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_APP_NAME)), + key_file, + KEY_NAME, + FALSE); + + insert_data_from_desktop_file (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_APP_DISPLAY_NAME)), + key_file, + KEY_NAME, + TRUE); + + insert_data_from_desktop_file (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_APP_GENERIC_NAME)), + key_file, + KEY_GENERIC_NAME, + TRUE); + + insert_data_from_desktop_file (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_APP_COMMENT)), + key_file, + KEY_COMMENT, + TRUE); + + insert_data_from_desktop_file (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_APP_EXECUTABLE)), + key_file, + KEY_EXECUTABLE, + FALSE); + + insert_data_from_desktop_file (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_APP_ICON)), + key_file, + KEY_ICON, + FALSE); /* FIXME: mimetypes list and categories? */ filename = g_filename_display_basename (file->path); - g_hash_table_insert (metadata, METADATA_FILE_NAME, filename); + + g_hash_table_insert (metadata, + g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)), + filename); g_key_file_free (key_file); g_free (type); Index: src/tracker-indexer/tracker-indexer.c =================================================================== --- src/tracker-indexer/tracker-indexer.c (revision 1882) +++ src/tracker-indexer/tracker-indexer.c (working copy) @@ -706,7 +706,7 @@ index_metadata_foreach (gpointer key, } /* Parse */ - field = tracker_ontology_get_field_def ((gchar *) key); + field = key; /* tracker_ontology_get_field_def ((gchar *) key); */ parsed_value = tracker_parser_text_to_string ((gchar *) value, data->language, Index: ChangeLog =================================================================== --- ChangeLog (revision 1882) +++ ChangeLog (working copy) @@ -15,6 +15,18 @@ 2008-07-17 Philip Van Hoof + * src/tracker-indexer/modules/files.c: + * src/tracker-indexer/modules/evolution.c: + * src/tracker-indexer/modules/applications.c: + * src/tracker-indexer/tracker-indexer.c: + + tracker-indexer modules returned a GHashTable with field name/value + pairs, we now use TrackerField pointers for the hashtable keys, so we + could deal with values in their native format (instead of having to + convert everything to strings) + +2008-07-17 Philip Van Hoof + * src/libtracker-db/tracker-db-manager.c: Add the functions for the combine-attached db connections