[tracker/tracker-0.6] Fixed compiler warning, added offset type funcs & reduced mem allocs



commit 40ca8acf658f8bfce01d6ae3c97a3d97b1ed622e
Author: Martyn Russell <martyn imendio com>
Date:   Fri Jun 26 14:56:09 2009 +0100

    Fixed compiler warning, added offset type funcs & reduced mem allocs
    
    Don't create "unknown" mime_type using g_strdup() since we are
    returned a const normally from g_file_info_get_content_type() and we
    only duplicate it later on anyway.
    
    We were creating path_delimited to only free it too, so I removed
    this.
    
    Added _offset_to_string functions for goffset type from GIO.

 src/libtracker-common/tracker-type-utils.c         |    6 ++
 src/libtracker-common/tracker-type-utils.h         |    1 +
 .../tracker-module-metadata-utils.c                |   58 ++++++++++----------
 src/tracker-indexer/tracker-module-metadata.c      |   14 +++++
 src/tracker-indexer/tracker-module-metadata.h      |    3 +
 5 files changed, 54 insertions(+), 28 deletions(-)
---
diff --git a/src/libtracker-common/tracker-type-utils.c b/src/libtracker-common/tracker-type-utils.c
index c3e4206..d21d5a1 100644
--- a/src/libtracker-common/tracker-type-utils.c
+++ b/src/libtracker-common/tracker-type-utils.c
@@ -677,6 +677,12 @@ tracker_guint64_to_string (guint64 i)
 	return g_strdup_printf ("%" G_GUINT64_FORMAT, i);
 }
 
+gchar *
+tracker_goffset_to_string (goffset i)
+{
+	return g_strdup_printf ("%" G_GOFFSET_FORMAT, i);
+}
+
 gboolean
 tracker_string_to_uint (const gchar *s,
 			guint	    *value)
diff --git a/src/libtracker-common/tracker-type-utils.h b/src/libtracker-common/tracker-type-utils.h
index bc16606..925bf0f 100644
--- a/src/libtracker-common/tracker-type-utils.h
+++ b/src/libtracker-common/tracker-type-utils.h
@@ -43,6 +43,7 @@ gchar *  tracker_gint32_to_string	       (gint32	      i);
 gchar *  tracker_guint32_to_string	       (guint32       i);
 gchar *  tracker_gint64_to_string              (gint64        i);
 gchar *  tracker_guint64_to_string             (guint64       i);
+gchar *  tracker_goffset_to_string             (goffset       i);
 
 gboolean tracker_string_to_uint		       (const gchar  *s,
 						guint	     *ret);
diff --git a/src/tracker-indexer/tracker-module-metadata-utils.c b/src/tracker-indexer/tracker-module-metadata-utils.c
index a6d52ca..0717306 100644
--- a/src/tracker-indexer/tracker-module-metadata-utils.c
+++ b/src/tracker-indexer/tracker-module-metadata-utils.c
@@ -849,8 +849,9 @@ tracker_module_metadata_utils_get_data (GFile *file)
 {
 	TrackerModuleMetadata *metadata;
 	GFileInfo             *info;
-	gchar                 *path, *mime_type;
-	gchar                 *dirname, *basename, *path_delimited;
+	gchar                 *path;
+	const gchar           *mime_type;
+	gchar                 *dirname, *basename;
 	guint64                modified, accessed;
 	GError                *error = NULL;
 
@@ -859,49 +860,50 @@ tracker_module_metadata_utils_get_data (GFile *file)
 				  G_FILE_ATTRIBUTE_STANDARD_SIZE ","
 				  G_FILE_ATTRIBUTE_TIME_ACCESS "," 
 				  G_FILE_ATTRIBUTE_TIME_MODIFIED,  
-				  G_FILE_QUERY_INFO_NONE, NULL, &error);
+				  G_FILE_QUERY_INFO_NONE, 
+				  NULL, 
+				  &error);
 	
 	if (error) {
 		g_warning ("Unable to retrieve info from file (%s)", error->message);
 		return NULL;
 	}
 
-	metadata = tracker_module_metadata_new ();
-	
-	mime_type = g_file_info_get_content_type (info);
-	if (!mime_type) {
-		/* Tracker convention... duplicated with tracker-file-utils.c */
-		mime_type = g_strdup ("unknown");
-	}
-
 	path = g_file_get_path (file);
 	dirname = g_path_get_dirname (path);
 	basename = g_filename_display_basename (path);
-	path_delimited = g_filename_to_utf8 (path, -1, NULL, NULL, NULL);
-
-	tracker_module_metadata_add_string (metadata, METADATA_FILE_NAME, basename);
-	tracker_module_metadata_add_string (metadata, METADATA_FILE_PATH, dirname);
-	tracker_module_metadata_add_string (metadata, METADATA_FILE_MIMETYPE, mime_type);
-
-	g_free (path_delimited);
-	g_free (basename);
-	g_free (dirname);
-
-	tracker_module_metadata_add_int64 (metadata, 
-					   METADATA_FILE_SIZE, 
-					   g_file_info_get_size (info));
 
+	mime_type = g_file_info_get_content_type (info);
 	modified = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_MODIFIED);
-	tracker_module_metadata_add_uint64 (metadata, METADATA_FILE_MODIFIED, modified);
-
 	accessed = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_ACCESS);
-	tracker_module_metadata_add_uint64 (metadata, METADATA_FILE_ACCESSED, accessed);
 
+	metadata = tracker_module_metadata_new ();
+
+	tracker_module_metadata_add_string (metadata, 
+					    METADATA_FILE_NAME, 
+					    basename);
+	tracker_module_metadata_add_string (metadata, 
+					    METADATA_FILE_PATH, 
+					    dirname);
+	tracker_module_metadata_add_string (metadata, 
+					    METADATA_FILE_MIMETYPE, 
+					    mime_type ? mime_type : "unknown");
+	tracker_module_metadata_add_offset (metadata, 
+					    METADATA_FILE_SIZE, 
+					    g_file_info_get_size (info));
+	tracker_module_metadata_add_uint64 (metadata, 
+					    METADATA_FILE_MODIFIED, 
+					    modified);
+	tracker_module_metadata_add_uint64 (metadata, 
+					    METADATA_FILE_ACCESSED, 
+					    accessed);
 	tracker_module_metadata_add_date (metadata, METADATA_FILE_ADDED, time (NULL));
 
 	metadata_utils_get_embedded (file, mime_type, metadata);
 
-	g_free (mime_type);
+
+	g_free (basename);
+	g_free (dirname);
 	g_free (path);
 
 	return metadata;
diff --git a/src/tracker-indexer/tracker-module-metadata.c b/src/tracker-indexer/tracker-module-metadata.c
index b1d82ab..a279550 100644
--- a/src/tracker-indexer/tracker-module-metadata.c
+++ b/src/tracker-indexer/tracker-module-metadata.c
@@ -233,6 +233,20 @@ tracker_module_metadata_add_uint64 (TrackerModuleMetadata *metadata,
 	}
 }
 
+void
+tracker_module_metadata_add_offset (TrackerModuleMetadata *metadata,
+				    const gchar           *field_name,
+				    goffset                value)
+{
+	gchar *str;
+
+	str = tracker_goffset_to_string (value);
+
+	if (!tracker_module_metadata_add_take_string (metadata, field_name, str)) {
+		g_free (str);
+	}
+}
+
 /**
  * tracker_module_metadata_add_double:
  * @metadata: A #TrackerModuleMetadata
diff --git a/src/tracker-indexer/tracker-module-metadata.h b/src/tracker-indexer/tracker-module-metadata.h
index 2b483c1..114673b 100644
--- a/src/tracker-indexer/tracker-module-metadata.h
+++ b/src/tracker-indexer/tracker-module-metadata.h
@@ -68,6 +68,9 @@ void                   tracker_module_metadata_add_int64        (TrackerModuleMe
 void                   tracker_module_metadata_add_uint64       (TrackerModuleMetadata *metadata,
 								 const gchar           *field_name,
 								 guint64                value);
+void                   tracker_module_metadata_add_offset       (TrackerModuleMetadata *metadata,
+								 const gchar           *field_name,
+								 goffset                value);
 void                   tracker_module_metadata_add_double       (TrackerModuleMetadata *metadata,
 								 const gchar           *field_name,
 								 gdouble                value);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]