[rhythmbox] rhythmdb: don't write empty sortnames and musicbrainz IDs to disk



commit 2f69fc7681fb73e39a61aaffc19a7398f06a9fa2
Author: Jonathan Matthew <jonathan d14n org>
Date:   Sun Jan 31 14:25:35 2010 +1000

    rhythmdb: don't write empty sortnames and musicbrainz IDs to disk
    
    This reduces the on-disk size of my database by about 25%.

 rhythmdb/rhythmdb-tree.c |   28 +++++++++++++++++-----------
 1 files changed, 17 insertions(+), 11 deletions(-)
---
diff --git a/rhythmdb/rhythmdb-tree.c b/rhythmdb/rhythmdb-tree.c
index 905c2b5..4edca7c 100644
--- a/rhythmdb/rhythmdb-tree.c
+++ b/rhythmdb/rhythmdb-tree.c
@@ -836,6 +836,16 @@ save_entry_string (struct RhythmDBTreeSaveContext *ctx,
 }
 
 static void
+save_entry_string_if_set (struct RhythmDBTreeSaveContext *ctx,
+			  const xmlChar *elt_name,
+			  const char *str)
+{
+	if (str == NULL || str[0] == '\0')
+		return;
+	save_entry_string (ctx, elt_name, str);
+}
+
+static void
 save_entry_int (struct RhythmDBTreeSaveContext *ctx,
 		const xmlChar *elt_name,
 		int num)
@@ -959,22 +969,22 @@ save_entry (RhythmDBTree *db,
 			save_entry_string(ctx, elt_name, rb_refstring_get (entry->genre));
 			break;
 		case RHYTHMDB_PROP_MUSICBRAINZ_TRACKID:
-			save_entry_string(ctx, elt_name, rb_refstring_get (entry->musicbrainz_trackid));
+			save_entry_string_if_set (ctx, elt_name, rb_refstring_get (entry->musicbrainz_trackid));
 			break;
 		case RHYTHMDB_PROP_MUSICBRAINZ_ARTISTID:
-			save_entry_string(ctx, elt_name, rb_refstring_get (entry->musicbrainz_artistid));
+			save_entry_string_if_set (ctx, elt_name, rb_refstring_get (entry->musicbrainz_artistid));
 			break;
 		case RHYTHMDB_PROP_MUSICBRAINZ_ALBUMID:
-			save_entry_string(ctx, elt_name, rb_refstring_get (entry->musicbrainz_albumid));
+			save_entry_string_if_set (ctx, elt_name, rb_refstring_get (entry->musicbrainz_albumid));
 			break;
 		case RHYTHMDB_PROP_MUSICBRAINZ_ALBUMARTISTID:
-			save_entry_string(ctx, elt_name, rb_refstring_get (entry->musicbrainz_albumartistid));
+			save_entry_string_if_set (ctx, elt_name, rb_refstring_get (entry->musicbrainz_albumartistid));
 			break;
 		case RHYTHMDB_PROP_ARTIST_SORTNAME:
-			save_entry_string(ctx, elt_name, rb_refstring_get (entry->artist_sortname));
+			save_entry_string_if_set (ctx, elt_name, rb_refstring_get (entry->artist_sortname));
 			break;
 		case RHYTHMDB_PROP_ALBUM_SORTNAME:
-			save_entry_string(ctx, elt_name, rb_refstring_get (entry->album_sortname));
+			save_entry_string_if_set (ctx, elt_name, rb_refstring_get (entry->album_sortname));
 			break;
 		case RHYTHMDB_PROP_TRACK_NUMBER:
 			save_entry_ulong (ctx, elt_name, entry->tracknum, FALSE);
@@ -1010,11 +1020,7 @@ save_entry (RhythmDBTree *db,
 			save_entry_string(ctx, elt_name, rb_refstring_get (entry->location));
 			break;
 		case RHYTHMDB_PROP_MOUNTPOINT:
-			/* Avoid crashes on exit when upgrading from 0.8
-			 * and no mountpoint is available from some entries */
-			if (entry->mountpoint) {
-				save_entry_string(ctx, elt_name, rb_refstring_get (entry->mountpoint));
-			}
+			save_entry_string_if_set (ctx, elt_name, rb_refstring_get (entry->mountpoint));
 			break;
 		case RHYTHMDB_PROP_FILE_SIZE:
 			save_entry_uint64(ctx, elt_name, entry->file_size);



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