? api_lyrics.php?auth=Rhythmbox
? introhi.asx
? tools
? bindings/python/rb.defs.new
? bindings/python/rhythmbox.defs.new
? data/Avernum4Settings.dat
? help/sv/.xml2po.mo
? help/sv/rhythmbox.xml
? lib/mkdtemp.loT
? metadata/vorbistag.c
? plugins/beagle-import
? plugins/gst-plugin-install
? plugins/hdd100
? plugins/mtp
? plugins/artdisplay/artdisplay/AmazonCoverArtSearch.pyc
? plugins/artdisplay/artdisplay/CoverArtDatabase.pyc
? plugins/artdisplay/artdisplay/Loader.pyc
? plugins/artdisplay/artdisplay/Makefile
? plugins/artdisplay/artdisplay/Makefile.in
? plugins/artdisplay/artdisplay/__init__.pyc
? plugins/audioscrobbler/rb-lastfm-source.c
? plugins/audioscrobbler/rb-lastfm-source.h
? plugins/generic-player/Makefile
? plugins/generic-player/Makefile.in
? plugins/generic-player/generic-player.rb-plugin
? plugins/ipod/rb-ipod-manager.c
? plugins/ipod/rb-ipod-manager.h
? plugins/ipod/rb-ipod-playlist-source.c
? plugins/ipod/rb-ipod-playlist-source.h
? plugins/ipod/rb-ipod.c
? plugins/ipod/rb-ipod.h
? plugins/lyrics/Loader.pyc
? plugins/lyrics/Makefile
? plugins/lyrics/Makefile.in
? plugins/lyrics/lyrics.pyc
? plugins/lyrics/lyrics.rb-plugin
? plugins/pythonconsole/pythonconsole.pyc
? plugins/sample-python/sample-python.pyc
? plugins/sample-python/sample-python.rb-plugin
? remote/Makefile
? remote/Makefile.in
? remote/dbus/rhythmbox-client
? rhythmdb/.rhythmdb-tree.c.swp
? rhythmdb/rhythmdb-query-collator.c
? rhythmdb/rhythmdb-query-collator.h
? shell/rb-play-order-loop-one.c
? shell/rb-play-order-loop-one.h
? shell/rb-shell-binding.h
? shell/rb-shell-player-binding.h
? tests/test-rb-ipod-manager
? tests/test-rb-ipod-manager.c
? tests/test-rhythmdb
Index: daapsharing/rb-daap-connection.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/daapsharing/rb-daap-connection.c,v
retrieving revision 1.31
diff -u -p -r1.31 rb-daap-connection.c
--- daapsharing/rb-daap-connection.c	19 Jun 2006 04:35:18 -0000	1.31
+++ daapsharing/rb-daap-connection.c	24 Jun 2006 02:14:23 -0000
@@ -667,16 +667,9 @@ entry_set_string_prop (RhythmDB        *
 		       const char      *str)
 {
 	GValue value = {0,};
-	gchar *tmp;
-
-	if (str == NULL || *str == '\0' || !g_utf8_validate (str, -1, NULL)) {
-		tmp = g_strdup (_("Unknown"));
-	} else {
-		tmp = g_strdup (str);
-	}
 
 	g_value_init (&value, G_TYPE_STRING);
-	g_value_set_string_take_ownership (&value, tmp);
+	g_value_set_string (&value, str);
 	rhythmdb_entry_set_uninserted (RHYTHMDB (db), entry, propid, &value);
 	g_value_unset (&value);
 }
Index: lib/rb-cut-and-paste-code.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/lib/rb-cut-and-paste-code.c,v
retrieving revision 1.8
diff -u -p -r1.8 rb-cut-and-paste-code.c
--- lib/rb-cut-and-paste-code.c	17 May 2006 02:43:32 -0000	1.8
+++ lib/rb-cut-and-paste-code.c	24 Jun 2006 02:14:24 -0000
@@ -257,7 +257,7 @@ rb_utf_friendly_time (time_t date)
 	nowdate = time (NULL);
 
 	if (date == 0)
-		return NULL;
+		return g_strdup (_("Unknown"));
 	
 	localtime_r (&date, &then);
 	localtime_r (&nowdate, &now);
Index: plugins/audioscrobbler/rb-audioscrobbler.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/plugins/audioscrobbler/rb-audioscrobbler.c,v
retrieving revision 1.25
diff -u -p -r1.25 rb-audioscrobbler.c
--- plugins/audioscrobbler/rb-audioscrobbler.c	2 Jun 2006 22:27:46 -0000	1.25
+++ plugins/audioscrobbler/rb-audioscrobbler.c	24 Jun 2006 02:14:28 -0000
@@ -418,10 +418,7 @@ rb_audioscrobbler_timeout_cb (RBAudioscr
 				rb_debug ("Adding song to queue");
 
 				entry->artist = soup_uri_encode (audioscrobbler->priv->artist, EXTRA_URI_ENCODE_CHARS);
-				if (strcmp (audioscrobbler->priv->album, _("Unknown")) != 0)
-					entry->album = soup_uri_encode (audioscrobbler->priv->album, EXTRA_URI_ENCODE_CHARS);
-				else
-					entry->album = g_strdup ("");
+				entry->album = soup_uri_encode (audioscrobbler->priv->album, EXTRA_URI_ENCODE_CHARS);
 				entry->title = soup_uri_encode (audioscrobbler->priv->title, EXTRA_URI_ENCODE_CHARS);
 				entry->length = audioscrobbler->priv->duration;
 				entry->mbid = g_strdup ("");
@@ -1030,8 +1027,8 @@ rb_audioscrobbler_song_changed_cb (RBShe
 
 	/* Ignore tracks that violate the specification (v1.1) */
 	if (audioscrobbler->priv->duration < 30 ||
-	    ! strcmp (audioscrobbler->priv->artist, _("Unknown")) ||
-	    ! strcmp (audioscrobbler->priv->title, _("Unknown"))) {
+	    ! strcmp (audioscrobbler->priv->artist, "") ||
+	    ! strcmp (audioscrobbler->priv->title, "")) {
 		audioscrobbler->priv->should_queue = FALSE;
 	} else if (strcmp(audioscrobbler->priv->artist, old_artist) ||
 		   strcmp(audioscrobbler->priv->album, old_album) ||
Index: podcast/rb-feed-podcast-properties-dialog.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/podcast/rb-feed-podcast-properties-dialog.c,v
retrieving revision 1.11
diff -u -p -r1.11 rb-feed-podcast-properties-dialog.c
--- podcast/rb-feed-podcast-properties-dialog.c	20 Apr 2006 20:43:27 -0000	1.11
+++ podcast/rb-feed-podcast-properties-dialog.c	24 Jun 2006 02:14:28 -0000
@@ -55,7 +55,6 @@ static void rb_feed_podcast_properties_d
 static void rb_feed_podcast_properties_dialog_update_last_episode (RBFeedPodcastPropertiesDialog *dialog);
 static void rb_feed_podcast_properties_dialog_update_copyright (RBFeedPodcastPropertiesDialog *dialog);
 static void rb_feed_podcast_properties_dialog_update_summary (RBFeedPodcastPropertiesDialog *dialog);
-static gchar* rb_feed_podcast_properties_dialog_parse_time (gulong time);
 
 struct RBFeedPodcastPropertiesDialogPrivate
 {
@@ -267,7 +266,7 @@ rb_feed_podcast_properties_dialog_update
 	gulong time_val;
 
 	time_val = rhythmdb_entry_get_ulong (dialog->priv->current_entry, RHYTHMDB_PROP_LAST_SEEN);
-	time_str = rb_feed_podcast_properties_dialog_parse_time (time_val);
+	time_str = rb_utf_friendly_time ((time_t)time_val);
 	gtk_label_set (GTK_LABEL (dialog->priv->last_update), time_str);
 	g_free (time_str);
 }
@@ -279,7 +278,7 @@ rb_feed_podcast_properties_dialog_update
 	gulong time_val;
 
 	time_val = rhythmdb_entry_get_ulong (dialog->priv->current_entry, RHYTHMDB_PROP_POST_TIME);
-	time_str = rb_feed_podcast_properties_dialog_parse_time (time_val);
+	time_str = rb_utf_friendly_time ((time_t)time_val);
 	gtk_label_set (GTK_LABEL (dialog->priv->last_episode), time_str);
 	g_free (time_str);
 }
@@ -293,16 +292,3 @@ rb_feed_podcast_properties_dialog_update
 	gtk_label_set (GTK_LABEL (dialog->priv->summary), summary);
 }
 
-static char *
-rb_feed_podcast_properties_dialog_parse_time (gulong value)
-{
-	char *str;
-
-	if (0 == value) {
-		str = g_strdup (_("Unknown"));
-	} else {
-		str = rb_utf_friendly_time ((time_t)value);
-	}
-
-	return str;
-}
Index: podcast/rb-podcast-manager.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/podcast/rb-podcast-manager.c,v
retrieving revision 1.49
diff -u -p -r1.49 rb-podcast-manager.c
--- podcast/rb-podcast-manager.c	22 Jun 2006 10:27:39 -0000	1.49
+++ podcast/rb-podcast-manager.c	24 Jun 2006 02:14:29 -0000
@@ -1404,7 +1404,7 @@ rb_podcast_manager_insert_feed (RBPodcas
 				    	    (gchar *) data->url);
 		if (entry == NULL)
 			return;
-		rb_debug("New entry create\n");
+		rb_debug("New entry create");
 	
 		g_value_init (&title_val, G_TYPE_STRING);
 		g_value_set_string (&title_val, (gchar * ) data->title);
@@ -1412,10 +1412,7 @@ rb_podcast_manager_insert_feed (RBPodcas
 		g_value_unset (&title_val);
 	
 		g_value_init (&author_val, G_TYPE_STRING);
-		if (data->author)
-			g_value_set_string (&author_val, (gchar *) data->author);
-		else
-			g_value_set_static_string (&author_val, _("Unknown"));
+		g_value_set_string (&author_val, (gchar *) data->author);
 		rhythmdb_entry_set_uninserted (db, entry, RHYTHMDB_PROP_ARTIST, &author_val);
 		g_value_unset (&author_val);
 	
Index: podcast/rb-podcast-properties-dialog.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/podcast/rb-podcast-properties-dialog.c,v
retrieving revision 1.10
diff -u -p -r1.10 rb-podcast-properties-dialog.c
--- podcast/rb-podcast-properties-dialog.c	20 Apr 2006 20:43:27 -0000	1.10
+++ podcast/rb-podcast-properties-dialog.c	24 Jun 2006 02:14:29 -0000
@@ -67,7 +67,6 @@ static void rb_podcast_properties_dialog
 static void rb_podcast_properties_dialog_update_rating (RBPodcastPropertiesDialog *dialog);
 static void rb_podcast_properties_dialog_update_date (RBPodcastPropertiesDialog *dialog);
 static void rb_podcast_properties_dialog_update_description (RBPodcastPropertiesDialog *dialog);
-static gchar* rb_podcast_properties_dialog_parse_time (gulong time);
 static void rb_podcast_properties_dialog_rated_cb (RBRating *rating,
 						   double score,
 						   RBPodcastPropertiesDialog *dialog);
@@ -460,7 +459,7 @@ rb_podcast_properties_dialog_update_date
 	char *time;
 	
 	post_time = rhythmdb_entry_get_ulong (dialog->priv->current_entry, RHYTHMDB_PROP_POST_TIME);
-	time = rb_podcast_properties_dialog_parse_time (post_time);
+	time = rb_utf_friendly_time ((time_t)post_time);
 
 	gtk_label_set (GTK_LABEL (dialog->priv->date),
 		       time);
@@ -476,16 +475,3 @@ rb_podcast_properties_dialog_update_desc
 	gtk_label_set (GTK_LABEL (dialog->priv->description), str);
 }
 
-static char *
-rb_podcast_properties_dialog_parse_time (gulong value)
-{
-	char *str;
-
-	if (0 == value) {
-		str = g_strdup (_("Unknown"));
-	} else {
-		str = rb_utf_friendly_time ((time_t)value);
-	}
-
-	return str;
-}
Index: rhythmdb/rb-refstring.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rb-refstring.c,v
retrieving revision 1.11
diff -u -p -r1.11 rb-refstring.c
--- rhythmdb/rb-refstring.c	20 Apr 2006 20:43:28 -0000	1.11
+++ rhythmdb/rb-refstring.c	24 Jun 2006 02:14:30 -0000
@@ -64,6 +64,9 @@ rb_refstring_new (const char *init)
 {
 	RBRefString *ret;
 
+	if (init == NULL)
+		return NULL;
+
 	g_mutex_lock (rb_refstrings_mutex);
 	ret = g_hash_table_lookup (rb_refstrings, init);
 
Index: rhythmdb/rhythmdb-tree.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rhythmdb-tree.c,v
retrieving revision 1.110
diff -u -p -r1.110 rhythmdb-tree.c
--- rhythmdb/rhythmdb-tree.c	19 Jun 2006 04:38:45 -0000	1.110
+++ rhythmdb/rhythmdb-tree.c	24 Jun 2006 02:14:32 -0000
@@ -95,7 +95,7 @@ static void rhythmdb_hash_tree_foreach (
 					gpointer data);
 
 
-#define RHYTHMDB_TREE_XML_VERSION "1.2"
+#define RHYTHMDB_TREE_XML_VERSION "1.3"
 
 static void destroy_tree_property (RhythmDBTreeProperty *prop);
 static RhythmDBTreeProperty *get_or_create_album (RhythmDBTree *db, RhythmDBTreeProperty *artist,
@@ -214,6 +214,7 @@ struct RhythmDBTreeLoadContext
 	/* updating */
 	gboolean has_date;
 	gboolean canonicalise_uris;
+	gboolean reload_all_metadata;
 };
 
 static void
@@ -242,9 +243,12 @@ rhythmdb_tree_parser_start_element (stru
 						ctx->canonicalise_uris = TRUE;
 						rb_debug ("old version of rhythmdb, performing URI canonicalisation for all entries");
 					} else if (!strcmp (version, "1.2")) {
-						/* current version*/
+						rb_debug ("reloading all file metadata becuase of Unknown->'' transition");
+						ctx->reload_all_metadata = TRUE;
+					} else if (!strcmp (version, "1.3")) {
+						/* current version */
 					} else {
-						/* too new */
+						/* too new. FIXME quit gracefully with error */
 						g_assert_not_reached ();
 					}
 				} else {
@@ -267,8 +271,10 @@ rhythmdb_tree_parser_start_element (stru
 				if (!strcmp (*attrs, "type")) {
 					const char *typename = *(attrs+1);
 					type = rhythmdb_entry_type_get_by_name (typename);
-					if (!type)
+					if (!type) {
+						rb_debug ("found unknown entry type");
 						return;
+					}
 					type_set = TRUE;
 					break;
 				}
@@ -321,7 +327,7 @@ rhythmdb_tree_parser_end_element (struct
 		break;
 	case RHYTHMDB_TREE_PARSER_STATE_ENTRY:
 	{
-		if (!ctx->has_date) {
+		if (!ctx->has_date | ctx->reload_all_metadata) {
 			/* there is no date metadata, so this is from an old version
 			 * reset the last-modified timestamp, so that the file is re-read
 			 */
@@ -907,19 +913,19 @@ rhythmdb_tree_entry_new (RhythmDB *rdb, 
 
 	if (entry->title == NULL) {
 		g_warning ("Entry %s has missing title",entry->location);
-		entry->title = rb_refstring_new (_("Unknown"));
+		entry->title = rb_refstring_new ("");
 	}
 	if (entry->artist == NULL) {
 		g_warning ("Entry %s has missing artist",entry->location);
-		entry->artist = rb_refstring_new (_("Unknown"));
+		entry->artist = rb_refstring_new ("");
 	}
 	if (entry->album == NULL) {
 		g_warning ("Entry %s has missing album",entry->location);
-		entry->album = rb_refstring_new (_("Unknown"));
+		entry->album = rb_refstring_new ("");
 	}
 	if (entry->genre == NULL) {
 		g_warning ("Entry %s has missing genre",entry->location);
-		entry->genre = rb_refstring_new (_("Unknown"));
+		entry->genre = rb_refstring_new ("");
 	}
 	if (entry->mimetype == NULL) {
 		g_warning ("Entry %s has missing mimetype",entry->location);
Index: rhythmdb/rhythmdb.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/rhythmdb/rhythmdb.c,v
retrieving revision 1.229
diff -u -p -r1.229 rhythmdb.c
--- rhythmdb/rhythmdb.c	22 Jun 2006 10:27:40 -0000	1.229
+++ rhythmdb/rhythmdb.c	24 Jun 2006 02:14:34 -0000
@@ -1146,7 +1146,7 @@ set_metadata_string_default_unknown (Rhy
 				     RBMetaDataField field,
 				     RhythmDBPropType prop)
 {
-	const char *unknown = _("Unknown");
+	const char *unknown = "";
 	GValue val = {0, };
 	
 	if (!(rb_metadata_get (metadata,
@@ -2396,16 +2396,8 @@ record_entry_change (RhythmDB *db, Rhyth
 	changedata = g_new0 (RhythmDBEntryChange, 1);
 	changedata->prop = propid;
 
-	/* Copy a temporary gvalue, since _entry_get uses
-	 * _set_static_string to avoid memory allocations. */
-	{
-		GValue tem = {0,};
-		g_value_init (&tem, G_VALUE_TYPE (value));
-		rhythmdb_entry_get (db, entry, propid, &tem);
-		g_value_init (&changedata->old, G_VALUE_TYPE (value));
-		g_value_copy (&tem, &changedata->old);
-		g_value_unset (&tem);
-	}
+	g_value_init (&changedata->old, rhythmdb_get_property_type (db, propid));
+	rhythmdb_entry_get (db, entry, propid, &changedata->old);
 	g_value_init (&changedata->new, G_VALUE_TYPE (value));
 	g_value_copy (value, &changedata->new);
 
@@ -2446,13 +2438,22 @@ rhythmdb_entry_set_internal (RhythmDB *d
 	RhythmDBClass *klass = RHYTHMDB_GET_CLASS (db);
 	gboolean handled;
 	RhythmDBPodcastFields *podcast = NULL;
+	GValue val = {0,};
+
+	g_value_init (&val, G_VALUE_TYPE (value));
+	g_value_copy (value, &val);
 
 #ifndef G_DISABLE_ASSERT	
-	switch (G_VALUE_TYPE (value)) {
+	switch (G_VALUE_TYPE (&val)) {
 	case G_TYPE_STRING:
-		/* the playback error is allowed to be NULL */
-		if (propid != RHYTHMDB_PROP_PLAYBACK_ERROR || g_value_get_string (value))
-			g_assert (g_utf8_validate (g_value_get_string (value), -1, NULL));
+		if (g_value_get_string (value)) {
+			if (!g_utf8_validate (g_value_get_string (&val), -1, NULL)) {
+				rb_debug ("Got invalid UTF-8 data");
+				g_value_set_static_string (&val, _("<Invalid unicode>"));
+			}
+		} else if (propid != RHYTHMDB_PROP_PLAYBACK_ERROR) { /* the playback error is allowed to be NULL */
+			g_value_set_static_string (&val, "");
+		}
 		break;
 	case G_TYPE_BOOLEAN:
 	case G_TYPE_ULONG:
@@ -2466,10 +2467,10 @@ rhythmdb_entry_set_internal (RhythmDB *d
 #endif
 
 	if ((entry->flags & RHYTHMDB_ENTRY_INSERTED) && notify_if_inserted) {
-		record_entry_change (db, entry, propid, value);
+		record_entry_change (db, entry, propid, &val);
 	}
 
-	handled = klass->impl_entry_set (db, entry, propid, value);
+	handled = klass->impl_entry_set (db, entry, propid, &val);
 
 	if (!handled) {
 		if (entry->type == RHYTHMDB_ENTRY_TYPE_PODCAST_FEED ||
@@ -2482,36 +2483,36 @@ rhythmdb_entry_set_internal (RhythmDB *d
 			break;
 		case RHYTHMDB_PROP_TITLE:
 			rb_refstring_unref (entry->title);
-			entry->title = rb_refstring_new (g_value_get_string (value));
+			entry->title = rb_refstring_new (g_value_get_string (&val));
 			break;
 		case RHYTHMDB_PROP_ALBUM:
 			rb_refstring_unref (entry->album);
-			entry->album = rb_refstring_new (g_value_get_string (value));
+			entry->album = rb_refstring_new (g_value_get_string (&val));
 			break;
 		case RHYTHMDB_PROP_ARTIST:
 			rb_refstring_unref (entry->artist);
-			entry->artist = rb_refstring_new (g_value_get_string (value));
+			entry->artist = rb_refstring_new (g_value_get_string (&val));
 			break;
 		case RHYTHMDB_PROP_GENRE:
 			rb_refstring_unref (entry->genre);
-			entry->genre = rb_refstring_new (g_value_get_string (value));
+			entry->genre = rb_refstring_new (g_value_get_string (&val));
 			break;
 		case RHYTHMDB_PROP_TRACK_NUMBER:
-			entry->tracknum = g_value_get_ulong (value);
+			entry->tracknum = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_DISC_NUMBER:
-			entry->discnum = g_value_get_ulong (value);
+			entry->discnum = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_DURATION:
-			entry->duration = g_value_get_ulong (value);
+			entry->duration = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_BITRATE:
-			entry->bitrate = g_value_get_ulong (value);
+			entry->bitrate = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_DATE:
 		{
 			gulong julian;
-			julian = g_value_get_ulong (value);
+			julian = g_value_get_ulong (&val);
 			if (julian > 0)
 				g_date_set_julian (&entry->date, julian);
 			else
@@ -2519,60 +2520,59 @@ rhythmdb_entry_set_internal (RhythmDB *d
 			break;
 		}
 		case RHYTHMDB_PROP_TRACK_GAIN:
-			entry->track_gain = g_value_get_double (value);
+			entry->track_gain = g_value_get_double (&val);
 			break;
 		case RHYTHMDB_PROP_TRACK_PEAK:
-			entry->track_peak = g_value_get_double (value);
+			entry->track_peak = g_value_get_double (&val);
 			break;
 		case RHYTHMDB_PROP_ALBUM_GAIN:
-			entry->album_gain = g_value_get_double (value);
+			entry->album_gain = g_value_get_double (&val);
 			break;
 		case RHYTHMDB_PROP_ALBUM_PEAK:
-			entry->album_peak = g_value_get_double (value);
+			entry->album_peak = g_value_get_double (&val);
 			break;
 		case RHYTHMDB_PROP_LOCATION:
 			g_free (entry->location);
-			entry->location = g_value_dup_string (value);
+			entry->location = g_value_dup_string (&val);
 			break;
 		case RHYTHMDB_PROP_PLAYBACK_ERROR:
 			g_free (entry->playback_error);
-			if (g_value_get_string (value))
-				entry->playback_error = g_value_dup_string (value);
+			if (g_value_get_string (&val))
+				entry->playback_error = g_value_dup_string (&val);
 			else
 				entry->playback_error = NULL;
 			break;
 		case RHYTHMDB_PROP_MOUNTPOINT:
 			rb_refstring_unref (entry->mountpoint);
-			entry->mountpoint = rb_refstring_new (g_value_get_string (value));
+			entry->mountpoint = rb_refstring_new (g_value_get_string (&val));
 			break;
 		case RHYTHMDB_PROP_FILE_SIZE:
-			entry->file_size = g_value_get_uint64 (value);
+			entry->file_size = g_value_get_uint64 (&val);
 			break;
 		case RHYTHMDB_PROP_MIMETYPE:
-			if (entry->mimetype)
-				rb_refstring_unref (entry->mimetype);
-			entry->mimetype = rb_refstring_new (g_value_get_string (value));
+			rb_refstring_unref (entry->mimetype);
+			entry->mimetype = rb_refstring_new (g_value_get_string (&val));
 			break;
 		case RHYTHMDB_PROP_MTIME:
-			entry->mtime = g_value_get_ulong (value);
+			entry->mtime = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_FIRST_SEEN:
-			entry->first_seen = g_value_get_ulong (value);
+			entry->first_seen = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_LAST_SEEN:
-			entry->last_seen = g_value_get_ulong (value);
+			entry->last_seen = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_RATING:
-			entry->rating = g_value_get_double (value);
+			entry->rating = g_value_get_double (&val);
 			break;
 		case RHYTHMDB_PROP_PLAY_COUNT:
-			entry->play_count = g_value_get_ulong (value);
+			entry->play_count = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_LAST_PLAYED:
-			entry->last_played = g_value_get_ulong (value);
+			entry->last_played = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_HIDDEN:
-			if (g_value_get_boolean (value)) {
+			if (g_value_get_boolean (&val)) {
 				entry->flags |= RHYTHMDB_ENTRY_HIDDEN;
 			} else {
 				entry->flags &= ~RHYTHMDB_ENTRY_HIDDEN;
@@ -2580,41 +2580,41 @@ rhythmdb_entry_set_internal (RhythmDB *d
 			break;
 		case RHYTHMDB_PROP_STATUS:
 			g_assert (podcast);
-			podcast->status = g_value_get_ulong (value);
+			podcast->status = g_value_get_ulong (&val);
 			break;
 		case RHYTHMDB_PROP_DESCRIPTION:
 			g_assert (podcast);
 			rb_refstring_unref (podcast->description);
-			podcast->description = rb_refstring_new (g_value_get_string (value));
+			podcast->description = rb_refstring_new (g_value_get_string (&val));
 			break;	
 		case RHYTHMDB_PROP_SUBTITLE:
 			g_assert (podcast);
 			rb_refstring_unref (podcast->subtitle);
-			podcast->subtitle = rb_refstring_new (g_value_get_string (value));
+			podcast->subtitle = rb_refstring_new (g_value_get_string (&val));
 			break;	
 		case RHYTHMDB_PROP_SUMMARY:
 			g_assert (podcast);
 			rb_refstring_unref (podcast->summary);
-			podcast->summary = rb_refstring_new (g_value_get_string (value));
+			podcast->summary = rb_refstring_new (g_value_get_string (&val));
 			break;	
 		case RHYTHMDB_PROP_LANG:
 			g_assert (podcast);
 			rb_refstring_unref (podcast->lang);
-			podcast->lang = rb_refstring_new (g_value_get_string (value));
+			podcast->lang = rb_refstring_new (g_value_get_string (&val));
 			break;	
 		case RHYTHMDB_PROP_COPYRIGHT:
 			g_assert (podcast);
 			rb_refstring_unref (podcast->copyright);
-			podcast->copyright = rb_refstring_new (g_value_get_string (value));
+			podcast->copyright = rb_refstring_new (g_value_get_string (&val));
 			break;	
 		case RHYTHMDB_PROP_IMAGE:
 			g_assert (podcast);
 			rb_refstring_unref (podcast->image);
-			podcast->image = rb_refstring_new (g_value_get_string (value));
+			podcast->image = rb_refstring_new (g_value_get_string (&val));
 			break;
 		case RHYTHMDB_PROP_POST_TIME:
 			g_assert (podcast);
-			podcast->post_time = g_value_get_ulong (value);
+			podcast->post_time = g_value_get_ulong (&val);
 			break;	
 		case RHYTHMDB_NUM_PROPERTIES:
 			g_assert_not_reached ();
Index: shell/rb-shell-player.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/shell/rb-shell-player.c,v
retrieving revision 1.247
diff -u -p -r1.247 rb-shell-player.c
--- shell/rb-shell-player.c	22 Jun 2006 10:27:40 -0000	1.247
+++ shell/rb-shell-player.c	24 Jun 2006 02:14:36 -0000
@@ -2595,8 +2595,7 @@ info_available_cb (RBPlayer *mmplayer,
 		/* check if the db entry already has a genre; if so, don't change it */
 		existing = rhythmdb_entry_get_string (entry, RHYTHMDB_PROP_GENRE);
 		if ((existing == NULL) || 
-		    (strcmp (existing, "") == 0) ||
-		    (strcmp (existing, _("Unknown")) == 0)) {
+		    (strcmp (existing, "") == 0)) {
 			entry_field = RHYTHMDB_PROP_GENRE;
 			rb_debug ("setting genre of iradio station to %s", genre);
 			set_field = TRUE;
Index: sources/rb-audiocd-source.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/rb-audiocd-source.c,v
retrieving revision 1.39
diff -u -p -r1.39 rb-audiocd-source.c
--- sources/rb-audiocd-source.c	19 Jun 2006 04:40:04 -0000	1.39
+++ sources/rb-audiocd-source.c	24 Jun 2006 02:14:36 -0000
@@ -198,14 +198,6 @@ entry_set_string_prop (RhythmDB *db,
 {
 	GValue value = {0,};
 
-	if (!str)
-		str = _("Unknown");
-
-	if (!g_utf8_validate (str, -1, NULL)) {
-		rb_debug ("Got invalid UTF-8 tag data");
-		str = _("<Invalid unicode>");
-	}
-
 	g_value_init (&value, G_TYPE_STRING);
 	g_value_set_string (&value, str);
 	if (is_inserted)
Index: sources/rb-ipod-source.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/rb-ipod-source.c,v
retrieving revision 1.56
diff -u -p -r1.56 rb-ipod-source.c
--- sources/rb-ipod-source.c	19 Jun 2006 04:40:04 -0000	1.56
+++ sources/rb-ipod-source.c	24 Jun 2006 02:14:38 -0000
@@ -225,11 +225,8 @@ entry_set_string_prop (RhythmDB *db, Rhy
 {
 	GValue value = {0,};
 
-	if (!str)
-		str = _("Unknown");
-
 	g_value_init (&value, G_TYPE_STRING);
-	g_value_set_static_string (&value, str);
+	g_value_set_string (&value, str);
 	rhythmdb_entry_set_uninserted (RHYTHMDB (db), entry, propid, &value);
 	g_value_unset (&value);
 }
Index: sources/rb-iradio-source.c
===================================================================
RCS file: /cvs/gnome/rhythmbox/sources/rb-iradio-source.c,v
retrieving revision 1.122
diff -u -p -r1.122 rb-iradio-source.c
--- sources/rb-iradio-source.c	19 Jun 2006 04:40:04 -0000	1.122
+++ sources/rb-iradio-source.c	24 Jun 2006 02:14:38 -0000
@@ -470,9 +470,6 @@ rb_iradio_source_add_station (RBIRadioSo
 
 	rhythmdb_entry_set_uninserted (source->priv->db, entry, RHYTHMDB_PROP_TITLE, &val);
 	g_value_reset (&val);
-		
-	if ((!genre) || (strcmp (genre, "") == 0))
-		genre = _("Unknown");
 	g_value_set_string (&val, genre);
 	rhythmdb_entry_set_uninserted (source->priv->db, entry, RHYTHMDB_PROP_GENRE, &val);
 	g_value_unset (&val);
