tracker r2631 - in trunk: . src/libtracker-common src/libtracker-data src/tracker-extract src/tracker-indexer src/tracker-indexer/modules
- From: mr svn gnome org
- To: svn-commits-list gnome org
- Subject: tracker r2631 - in trunk: . src/libtracker-common src/libtracker-data src/tracker-extract src/tracker-indexer src/tracker-indexer/modules
- Date: Mon, 1 Dec 2008 16:09:44 +0000 (UTC)
Author: mr
Date: Mon Dec 1 16:09:44 2008
New Revision: 2631
URL: http://svn.gnome.org/viewvc/tracker?rev=2631&view=rev
Log:
* src/libtracker-data/tracker-data-metadata.[ch]:
* src/libtracker-data/tracker-data-query.[ch]:
* src/tracker-extract/tracker-extract.c:
* src/tracker-indexer/modules/applications.c:
* src/tracker-indexer/modules/evolution-imap.c:
* src/tracker-indexer/modules/evolution-pop.c:
* src/tracker-indexer/tracker-indexer.c:
* src/tracker-indexer/tracker-metadata-utils.c:
* src/tracker-indexer/tracker-module-file.c: Added more variable
checking to the tracker_data_metadata_() public API. Now all calls
to the tracker_data_metadata_() API take a const argument and are
copied, not inherited. This also fixes a bug where we were double
freeing a GList.
Modified:
trunk/ChangeLog
trunk/src/libtracker-common/tracker-type-utils.c
trunk/src/libtracker-common/tracker-type-utils.h
trunk/src/libtracker-data/tracker-data-metadata.c
trunk/src/libtracker-data/tracker-data-metadata.h
trunk/src/libtracker-data/tracker-data-query.c
trunk/src/libtracker-data/tracker-data-query.h
trunk/src/tracker-extract/tracker-extract.c
trunk/src/tracker-indexer/modules/applications.c
trunk/src/tracker-indexer/modules/evolution-imap.c
trunk/src/tracker-indexer/modules/evolution-pop.c
trunk/src/tracker-indexer/tracker-indexer.c
trunk/src/tracker-indexer/tracker-metadata-utils.c
trunk/src/tracker-indexer/tracker-module-file.c
Modified: trunk/src/libtracker-common/tracker-type-utils.c
==============================================================================
--- trunk/src/libtracker-common/tracker-type-utils.c (original)
+++ trunk/src/libtracker-common/tracker-type-utils.c Mon Dec 1 16:09:44 2008
@@ -19,6 +19,8 @@
* Boston, MA 02110-1301, USA.
*/
+#include "config.h"
+
#include <string.h>
#include <stdlib.h>
@@ -753,10 +755,6 @@
new_list = NULL;
for (l = list; l; l = l->next) {
- if (!l->data) {
- continue;
- }
-
new_list = g_slist_prepend (new_list, g_strdup (l->data));
}
@@ -765,6 +763,27 @@
return new_list;
}
+GList *
+tracker_glist_copy_with_string_data (GList *list)
+{
+ GList *l;
+ GList *new_list;
+
+ if (!list) {
+ return NULL;
+ }
+
+ new_list = NULL;
+
+ for (l = list; l; l = l->next) {
+ new_list = g_list_prepend (new_list, g_strdup (l->data));
+ }
+
+ new_list = g_list_reverse (new_list);
+
+ return new_list;
+}
+
gchar *
tracker_string_boolean_to_string_gint (const gchar *value)
{
Modified: trunk/src/libtracker-common/tracker-type-utils.h
==============================================================================
--- trunk/src/libtracker-common/tracker-type-utils.h (original)
+++ trunk/src/libtracker-common/tracker-type-utils.h Mon Dec 1 16:09:44 2008
@@ -53,6 +53,7 @@
gchar ** tracker_string_to_string_list (const gchar *str);
gchar ** tracker_gslist_to_string_list (GSList *list);
GSList * tracker_gslist_copy_with_string_data (GSList *list);
+GList * tracker_glist_copy_with_string_data (GList *list);
gchar * tracker_string_boolean_to_string_gint (const gchar *value);
G_END_DECLS
Modified: trunk/src/libtracker-data/tracker-data-metadata.c
==============================================================================
--- trunk/src/libtracker-data/tracker-data-metadata.c (original)
+++ trunk/src/libtracker-data/tracker-data-metadata.c Mon Dec 1 16:09:44 2008
@@ -19,8 +19,12 @@
* Boston, MA 02110-1301, USA.
*/
+#include "config.h"
+
#include <glib.h>
+
#include <libtracker-common/tracker-ontology.h>
+
#include "tracker-data-metadata.h"
struct TrackerDataMetadata {
@@ -78,6 +82,8 @@
void
tracker_data_metadata_free (TrackerDataMetadata *metadata)
{
+ g_return_if_fail (metadata != NULL);
+
g_hash_table_foreach_remove (metadata->table,
remove_metadata_foreach,
NULL);
@@ -97,23 +103,22 @@
void
tracker_data_metadata_insert (TrackerDataMetadata *metadata,
const gchar *field_name,
- gchar *value)
+ const gchar *value)
{
TrackerField *field;
- field = tracker_ontology_get_field_by_name (field_name);
+ g_return_if_fail (metadata != NULL);
+ g_return_if_fail (field_name != NULL);
+ g_return_if_fail (value != NULL);
- if (!field) {
- g_warning ("Field name '%s' has isn't described in the ontology", field_name);
- g_free (value);
- return;
- }
+ field = tracker_ontology_get_field_by_name (field_name);
+ g_return_if_fail (TRACKER_IS_FIELD (field));
g_return_if_fail (tracker_field_get_multiple_values (field) == FALSE);
g_hash_table_insert (metadata->table,
g_object_ref (field),
- value);
+ g_strdup (value));
}
/**
@@ -124,14 +129,25 @@
*
* Inserts a list of values into @metadata for the given @field_name.
* The ontology has to specify that @field_name allows multiple values.
+ *
+ * The values in @list and the list itself are copied, the caller is
+ * still responsible for the memory @list uses after calling this
+ * function.
**/
void
tracker_data_metadata_insert_values (TrackerDataMetadata *metadata,
- const gchar *field_name,
- GList *list)
+ const gchar *field_name,
+ GList *list)
{
TrackerField *field;
+ g_return_if_fail (metadata != NULL);
+ g_return_if_fail (field_name != NULL);
+
+ if (!list) {
+ return;
+ }
+
field = tracker_ontology_get_field_by_name (field_name);
g_return_if_fail (TRACKER_IS_FIELD (field));
@@ -139,7 +155,7 @@
g_hash_table_insert (metadata->table,
g_object_ref (field),
- list);
+ tracker_glist_copy_with_string_data (list));
}
/**
@@ -147,9 +163,11 @@
* @metadata: A #TrackerDataMetadata
* @field_name: Field name to look up
*
- * Returns the value corresponding to the metadata specified by @field_name.
+ * Returns the value corresponding to the metadata specified by
+ * @field_name.
*
- * Returns: The value. This string is owned by @metadata and must not be modified or freed.
+ * Returns: The value. This string is owned by @metadata and must not
+ * be modified or freed.
**/
G_CONST_RETURN gchar *
tracker_data_metadata_lookup (TrackerDataMetadata *metadata,
@@ -157,6 +175,9 @@
{
TrackerField *field;
+ g_return_if_fail (metadata != NULL);
+ g_return_if_fail (field_name != NULL);
+
field = tracker_ontology_get_field_by_name (field_name);
g_return_val_if_fail (TRACKER_IS_FIELD (field), NULL);
@@ -170,17 +191,22 @@
* @metadata: A #TrackerDataMetadata
* @field_name: Field name to look up
*
- * Returns the value list corresponding to the metadata specified by @field_name.
+ * Returns the value list corresponding to the metadata specified by
+ * @field_name.
*
- * Returns: A List containing strings. Both the list and the contained strings
- * are owned by @metadata and must not be modified or freed.
+ * Returns: A List containing strings. Both the list and the contained
+ * strings are owned by @metadata and must not be modified or
+ * freed.
**/
G_CONST_RETURN GList *
tracker_data_metadata_lookup_values (TrackerDataMetadata *metadata,
- const gchar *field_name)
+ const gchar *field_name)
{
TrackerField *field;
+ g_return_if_fail (metadata != NULL);
+ g_return_if_fail (field_name != NULL);
+
field = tracker_ontology_get_field_by_name (field_name);
g_return_val_if_fail (TRACKER_IS_FIELD (field), NULL);
@@ -202,6 +228,9 @@
TrackerDataMetadataForeach func,
gpointer user_data)
{
+ g_return_if_fail (metadata != NULL);
+ g_return_if_fail (func != NULL);
+
g_hash_table_foreach (metadata->table,
(GHFunc) func,
user_data);
@@ -213,14 +242,17 @@
* @func: The function to call with each metadata.
* @user_data: user data to pass to the function.
*
- * Calls a function for each element in @metadata and remove the element
- * if @func returns %TRUE.
+ * Calls a function for each element in @metadata and remove the
+ * element if @func returns %TRUE.
**/
void
tracker_data_metadata_foreach_remove (TrackerDataMetadata *metadata,
TrackerDataMetadataRemove func,
gpointer user_data)
{
+ g_return_if_fail (metadata != NULL);
+ g_return_if_fail (func != NULL);
+
g_hash_table_foreach_remove (metadata->table,
(GHRFunc) func,
user_data);
Modified: trunk/src/libtracker-data/tracker-data-metadata.h
==============================================================================
--- trunk/src/libtracker-data/tracker-data-metadata.h (original)
+++ trunk/src/libtracker-data/tracker-data-metadata.h Mon Dec 1 16:09:44 2008
@@ -39,7 +39,7 @@
void tracker_data_metadata_free (TrackerDataMetadata *metadata);
void tracker_data_metadata_insert (TrackerDataMetadata *metadata,
const gchar *field_name,
- gchar *value);
+ const gchar *value);
void tracker_data_metadata_insert_values (TrackerDataMetadata *metadata,
const gchar *field_name,
GList *list);
Modified: trunk/src/libtracker-data/tracker-data-query.c
==============================================================================
--- trunk/src/libtracker-data/tracker-data-query.c (original)
+++ trunk/src/libtracker-data/tracker-data-query.c Mon Dec 1 16:09:44 2008
@@ -318,7 +318,6 @@
{
TrackerDBInterface *iface;
TrackerDBResultSet *result_set;
- gchar *db_mtime_str;
guint db_id;
guint db_mtime;
gboolean found = FALSE;
@@ -334,6 +333,8 @@
basename,
NULL);
if (result_set) {
+ gchar *db_mtime_str;
+
tracker_db_result_set_get (result_set,
0, &db_id,
1, &db_mtime_str,
@@ -388,16 +389,13 @@
static void
result_set_to_metadata (TrackerDBResultSet *result_set,
TrackerDataMetadata *metadata,
- gboolean embedded,
- gboolean non_embedded)
+ gboolean embedded)
{
TrackerField *field;
gint numeric_value;
gint metadata_id;
gboolean valid = TRUE;
- g_return_if_fail (non_embedded || embedded);
-
while (valid) {
GValue transform = {0, };
GValue value = {0, };
@@ -429,8 +427,7 @@
return;
}
- if ((tracker_field_get_embedded (field) && embedded)
- || !tracker_field_get_embedded (field) && non_embedded) {
+ if (tracker_field_get_embedded (field) == embedded) {
if (tracker_field_get_multiple_values (field)) {
GList *new_values;
const GList *old_values;
@@ -439,62 +436,32 @@
old_values = tracker_data_metadata_lookup_values (metadata,
tracker_field_get_name (field));
if (old_values) {
- new_values = g_list_copy ((GList *) old_values);
+ new_values = g_list_copy ((GList*) old_values);
}
new_values = g_list_prepend (new_values, str);
tracker_data_metadata_insert_values (metadata,
tracker_field_get_name (field),
new_values);
+
+ g_list_free (new_values);
} else {
tracker_data_metadata_insert (metadata,
- tracker_field_get_name (field),
- str);
+ tracker_field_get_name (field),
+ str);
}
- } else {
- g_free (str);
}
- valid = tracker_db_result_set_iter_next (result_set);
- }
-}
-
-TrackerDataMetadata *
-tracker_data_query_embedded_metadata (TrackerService *service,
- guint32 service_id)
-{
- TrackerDBInterface *iface;
- TrackerDBResultSet *result_set = NULL;
- gchar *service_id_str;
- TrackerDataMetadata *metadata;
-
- metadata = tracker_data_metadata_new ();
-
- g_return_val_if_fail (TRACKER_IS_SERVICE (service), metadata);
-
- service_id_str = g_strdup_printf ("%d", service_id);
- iface = tracker_db_manager_get_db_interface_by_type (tracker_service_get_name (service),
- TRACKER_DB_CONTENT_TYPE_METADATA);
+ g_free (str);
-
- result_set = tracker_data_manager_exec_proc (iface,
- "GetAllMetadata",
- service_id_str,
- service_id_str,
- service_id_str, NULL);
- if (result_set) {
- result_set_to_metadata (result_set, metadata, TRUE, FALSE);
- g_object_unref (result_set);
+ valid = tracker_db_result_set_iter_next (result_set);
}
-
- g_free (service_id_str);
-
- return metadata;
}
TrackerDataMetadata *
-tracker_data_query_non_embedded_metadata (TrackerService *service,
- guint32 service_id)
+tracker_data_query_metadata (TrackerService *service,
+ guint32 service_id,
+ gboolean embedded)
{
TrackerDBInterface *iface;
TrackerDBResultSet *result_set = NULL;
@@ -516,7 +483,7 @@
service_id_str,
service_id_str, NULL);
if (result_set) {
- result_set_to_metadata (result_set, metadata, FALSE, TRUE);
+ result_set_to_metadata (result_set, metadata, embedded);
g_object_unref (result_set);
}
Modified: trunk/src/libtracker-data/tracker-data-query.h
==============================================================================
--- trunk/src/libtracker-data/tracker-data-query.h (original)
+++ trunk/src/libtracker-data/tracker-data-query.h Mon Dec 1 16:09:44 2008
@@ -50,10 +50,9 @@
const gchar *service_type,
const gchar *service_id,
gchar **fields);
-TrackerDataMetadata *tracker_data_query_embedded_metadata (TrackerService *service,
- guint32 service_id);
-TrackerDataMetadata *tracker_data_query_non_embedded_metadata (TrackerService *service,
- guint32 service_id);
+TrackerDataMetadata *tracker_data_query_metadata (TrackerService *service,
+ guint32 service_id,
+ gboolean embedded);
gchar * tracker_data_query_parsed_metadata (TrackerService *service,
guint32 service_id);
gchar * tracker_data_query_unparsed_metadata (TrackerService *service,
Modified: trunk/src/tracker-extract/tracker-extract.c
==============================================================================
--- trunk/src/tracker-extract/tracker-extract.c (original)
+++ trunk/src/tracker-extract/tracker-extract.c Mon Dec 1 16:09:44 2008
@@ -52,7 +52,7 @@
#define MAX_MEM_AMD64 512
-#define DISABLE_DEBUG
+#undef DISABLE_DEBUG
#ifdef G_HAVE_ISO_VARARGS
# ifdef DISABLE_DEBUG
Modified: trunk/src/tracker-indexer/modules/applications.c
==============================================================================
--- trunk/src/tracker-indexer/modules/applications.c (original)
+++ trunk/src/tracker-indexer/modules/applications.c Mon Dec 1 16:09:44 2008
@@ -106,6 +106,7 @@
if (str) {
tracker_data_metadata_insert (metadata, metadata_key, str);
+ g_free (str);
}
}
@@ -136,6 +137,8 @@
g_free (arr);
tracker_data_metadata_insert_values (metadata, metadata_key, list);
+ g_list_foreach (list, (GFunc) g_free, NULL);
+ g_list_free (list);
}
}
@@ -197,6 +200,7 @@
filename = g_filename_display_basename (path);
tracker_data_metadata_insert (metadata, METADATA_FILE_NAME, filename);
+ g_free (filename);
g_key_file_free (key_file);
g_free (type);
Modified: trunk/src/tracker-indexer/modules/evolution-imap.c
==============================================================================
--- trunk/src/tracker-indexer/modules/evolution-imap.c (original)
+++ trunk/src/tracker-indexer/modules/evolution-imap.c Mon Dec 1 16:09:44 2008
@@ -876,8 +876,9 @@
TrackerEvolutionImapFile *self;
TrackerDataMetadata *metadata = NULL;
gchar *subject, *from, *to, *cc;
+ gchar *date;
gint32 i, count, flags;
- time_t date;
+ time_t t;
GList *list;
gboolean deleted;
@@ -900,7 +901,7 @@
if (!read_summary (self->summary,
SUMMARY_TYPE_UINT32, NULL, /* size */
SUMMARY_TYPE_TIME_T, NULL, /* date sent */
- SUMMARY_TYPE_TIME_T, &date, /* date received */
+ SUMMARY_TYPE_TIME_T, &t, /* date received */
SUMMARY_TYPE_STRING, &subject, /* subject */
SUMMARY_TYPE_STRING, &from, /* from */
SUMMARY_TYPE_STRING, &to, /* to */
@@ -915,21 +916,32 @@
}
if (!deleted) {
+ gchar *date;
+
metadata = tracker_data_metadata_new ();
- tracker_data_metadata_insert (metadata, METADATA_EMAIL_DATE,
- tracker_guint_to_string (date));
+ date = tracker_guint_to_string (t);
+ tracker_data_metadata_insert (metadata, METADATA_EMAIL_DATE, date);
tracker_data_metadata_insert (metadata, METADATA_EMAIL_SENDER, from);
tracker_data_metadata_insert (metadata, METADATA_EMAIL_SUBJECT, subject);
+ g_free (date);
+
list = get_recipient_list (to);
tracker_data_metadata_insert_values (metadata, METADATA_EMAIL_SENT_TO, list);
+ g_list_foreach (list, (GFunc) g_free, NULL);
+ g_list_free (list);
list = get_recipient_list (cc);
tracker_data_metadata_insert_values (metadata, METADATA_EMAIL_CC, list);
+ g_list_foreach (list, (GFunc) g_free, NULL);
+ g_list_free (list);
+
}
+ g_free (subject);
+ g_free (from);
g_free (to);
g_free (cc);
Modified: trunk/src/tracker-indexer/modules/evolution-pop.c
==============================================================================
--- trunk/src/tracker-indexer/modules/evolution-pop.c (original)
+++ trunk/src/tracker-indexer/modules/evolution-pop.c Mon Dec 1 16:09:44 2008
@@ -332,25 +332,31 @@
get_message_metadata (GMimeMessage *message)
{
TrackerDataMetadata *metadata;
- time_t date;
+ time_t t;
GList *list;
+ gchar *date;
metadata = tracker_data_metadata_new ();
- g_mime_message_get_date (message, &date, NULL);
- tracker_data_metadata_insert (metadata, METADATA_EMAIL_DATE,
- tracker_guint_to_string (date));
-
- tracker_data_metadata_insert (metadata, METADATA_EMAIL_SENDER,
- g_strdup (g_mime_message_get_sender (message)));
- tracker_data_metadata_insert (metadata, METADATA_EMAIL_SUBJECT,
- g_strdup (g_mime_message_get_subject (message)));
+ g_mime_message_get_date (message, &t, NULL);
+
+ date = tracker_guint_to_string (t);
+
+ tracker_data_metadata_insert (metadata, METADATA_EMAIL_DATE, date);
+ tracker_data_metadata_insert (metadata, METADATA_EMAIL_SENDER, g_mime_message_get_sender (message));
+ tracker_data_metadata_insert (metadata, METADATA_EMAIL_SUBJECT, g_mime_message_get_subject (message));
+
+ g_free (date);
list = get_message_recipients (message, GMIME_RECIPIENT_TYPE_TO);
tracker_data_metadata_insert_values (metadata, METADATA_EMAIL_SENT_TO, list);
+ g_list_foreach (list, (GFunc) g_free, NULL);
+ g_list_free (list);
list = get_message_recipients (message, GMIME_RECIPIENT_TYPE_CC);
tracker_data_metadata_insert_values (metadata, METADATA_EMAIL_CC, list);
+ g_list_foreach (list, (GFunc) g_free, NULL);
+ g_list_free (list);
return metadata;
}
Modified: trunk/src/tracker-indexer/tracker-indexer.c
==============================================================================
--- trunk/src/tracker-indexer/tracker-indexer.c (original)
+++ trunk/src/tracker-indexer/tracker-indexer.c Mon Dec 1 16:09:44 2008
@@ -1381,8 +1381,8 @@
* 2) Remove from new metadata all non embedded properties that already have value.
* 3) Save the remain new metadata.
*/
- old_metadata_emb = tracker_data_query_embedded_metadata (service, id);
- old_metadata_non_emb = tracker_data_query_non_embedded_metadata (service, id);
+ old_metadata_emb = tracker_data_query_metadata (service, id, TRUE);
+ old_metadata_non_emb = tracker_data_query_metadata (service, id, FALSE);
unindex_metadata (indexer, id, service, old_metadata_emb);
@@ -1493,11 +1493,12 @@
/* Get 'source' ID */
if (!tracker_data_query_service_exists (service,
- dirname,
- basename,
- &id,
- NULL)) {
+ dirname,
+ basename,
+ &id,
+ NULL)) {
g_message ("Source file '%s' not found in database to move", path);
+
g_free (path);
g_free (other_path);
@@ -1509,7 +1510,7 @@
/*
* Updating what changes in move event (Path related properties)
*/
- old_metadata = tracker_data_query_embedded_metadata (service, id);
+ old_metadata = tracker_data_query_metadata (service, id, TRUE);
tracker_data_metadata_foreach_remove (old_metadata,
filter_invalid_after_move_properties,
@@ -1520,18 +1521,20 @@
new_metadata = tracker_data_metadata_new ();
tracker_file_get_path_and_name (other_path, &new_path, &new_name);
+
tracker_data_metadata_insert (new_metadata, METADATA_FILE_PATH, new_path);
tracker_data_metadata_insert (new_metadata, METADATA_FILE_NAME, new_name);
- tracker_data_metadata_insert (new_metadata,
- METADATA_FILE_NAME_DELIMITED,
- g_strdup (other_path));
+ tracker_data_metadata_insert (new_metadata, METADATA_FILE_NAME_DELIMITED, other_path);
+
+ g_free (new_path);
+ g_free (new_name);
ext = strrchr (other_path, '.');
if (ext) {
- tracker_data_metadata_insert (new_metadata, METADATA_FILE_EXT, g_strdup (ext + 1));
+ ext++;
+ tracker_data_metadata_insert (new_metadata, METADATA_FILE_EXT, ext);
}
-
index_metadata (indexer, id, service, new_metadata);
/* tracker_data_metadata_free frees the values */
Modified: trunk/src/tracker-indexer/tracker-metadata-utils.c
==============================================================================
--- trunk/src/tracker-indexer/tracker-metadata-utils.c (original)
+++ trunk/src/tracker-indexer/tracker-metadata-utils.c Mon Dec 1 16:09:44 2008
@@ -183,6 +183,26 @@
status = G_IO_STATUS_NORMAL;
line = NULL;
+ if (!array) {
+ /* FIXME: What do we do here? This has happened to me
+ * before and we get warnings when we try to add to
+ * the empty array later.
+ */
+ g_message ("EEEEEK!!!\n"
+ "\n"
+ "Expected metadata array to be non-NULL!\n"
+ "\n"
+ "This usually means we probably got '\\n' too many times "
+ "and closed the pipe when there is more content available "
+ "to read\n"
+ "\n"
+ "Stopping main loop and this callback");
+
+ g_main_loop_quit (metadata_context->data_incoming_loop);
+
+ return FALSE;
+ }
+
if ((condition & G_IO_IN) || (condition & G_IO_PRI)) {
do {
status = g_io_channel_read_line (metadata_context->stdout_channel,
@@ -381,7 +401,8 @@
g_strfreev (values);
tracker_data_metadata_insert_values (metadata, name, list);
-
+ g_list_foreach (list, (GFunc) g_free, NULL);
+ g_list_free (list);
} else {
if (!g_utf8_validate (value, -1, NULL)) {
utf_value = g_locale_to_utf8 (value, -1, NULL, NULL, NULL);
@@ -389,10 +410,12 @@
utf_value = g_strdup (value);
}
- if (!utf_value)
+ if (!utf_value) {
continue;
+ }
tracker_data_metadata_insert (metadata, name, utf_value);
+ g_free (utf_value);
}
}
@@ -777,7 +800,9 @@
TrackerDataMetadata *metadata;
struct stat st;
const gchar *ext;
- gchar *mime_type, *path;
+ gchar *path, *mime_type;
+ gchar *dirname, *basename, *path_delimited;
+ gchar *size, *mtime, *atime;
path = g_file_get_path (file);
@@ -791,19 +816,23 @@
if (ext) {
ext++;
- tracker_data_metadata_insert (metadata, METADATA_FILE_EXT, g_strdup (ext));
+ tracker_data_metadata_insert (metadata, METADATA_FILE_EXT, ext);
}
mime_type = tracker_file_get_mime_type (path);
- tracker_data_metadata_insert (metadata, METADATA_FILE_NAME,
- g_filename_display_basename (path));
- tracker_data_metadata_insert (metadata, METADATA_FILE_PATH,
- g_path_get_dirname (path));
- tracker_data_metadata_insert (metadata, METADATA_FILE_NAME_DELIMITED,
- g_filename_to_utf8 (path, -1, NULL, NULL, NULL));
- tracker_data_metadata_insert (metadata, METADATA_FILE_MIMETYPE,
- mime_type);
+ dirname = g_path_get_dirname (path);
+ basename = g_filename_display_basename (path);
+ path_delimited = g_filename_to_utf8 (path, -1, NULL, NULL, NULL);
+
+ tracker_data_metadata_insert (metadata, METADATA_FILE_NAME, basename);
+ tracker_data_metadata_insert (metadata, METADATA_FILE_PATH, dirname);
+ tracker_data_metadata_insert (metadata, METADATA_FILE_NAME_DELIMITED, path_delimited);
+ tracker_data_metadata_insert (metadata, METADATA_FILE_MIMETYPE, mime_type);
+
+ g_free (path_delimited);
+ g_free (basename);
+ g_free (dirname);
if (mime_type) {
gchar *uri;
@@ -815,23 +844,33 @@
if (S_ISLNK (st.st_mode)) {
gchar *link_path;
+ gchar *link_path_delimited;
link_path = g_file_read_link (path, NULL);
- tracker_data_metadata_insert (metadata, METADATA_FILE_LINK,
- g_filename_to_utf8 (link_path, -1, NULL, NULL, NULL));
+ link_path_delimited = g_filename_to_utf8 (link_path, -1, NULL, NULL, NULL);
+
+ tracker_data_metadata_insert (metadata, METADATA_FILE_LINK, link_path_delimited);
+
+ g_free (link_path_delimited);
g_free (link_path);
}
/* FIXME: These should be dealt directly as integer/times/whatever, not strings */
- tracker_data_metadata_insert (metadata, METADATA_FILE_SIZE,
- tracker_guint_to_string (st.st_size));
- tracker_data_metadata_insert (metadata, METADATA_FILE_MODIFIED,
- tracker_date_to_string (st.st_mtime));
- tracker_data_metadata_insert (metadata, METADATA_FILE_ACCESSED,
- tracker_date_to_string (st.st_atime));
+ size = tracker_guint_to_string (st.st_size);
+ mtime = tracker_date_to_string (st.st_mtime);
+ atime = tracker_date_to_string (st.st_atime);
+
+ tracker_data_metadata_insert (metadata, METADATA_FILE_SIZE, size);
+ tracker_data_metadata_insert (metadata, METADATA_FILE_MODIFIED, mtime);
+ tracker_data_metadata_insert (metadata, METADATA_FILE_ACCESSED, atime);
+
+ g_free (atime);
+ g_free (mtime);
+ g_free (size);
metadata_utils_get_embedded (path, mime_type, metadata);
+ g_free (mime_type);
g_free (path);
return metadata;
Modified: trunk/src/tracker-indexer/tracker-module-file.c
==============================================================================
--- trunk/src/tracker-indexer/tracker-module-file.c (original)
+++ trunk/src/tracker-indexer/tracker-module-file.c Mon Dec 1 16:09:44 2008
@@ -216,7 +216,9 @@
tracker_data_metadata_insert (metadata, METADATA_FILE_PATH, dirname);
tracker_data_metadata_insert (metadata, METADATA_FILE_NAME, basename);
-
+
+ g_free (dirname);
+ g_free (basename);
g_free (uri);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]