From 01b494a85245c589ae6369ef75608743b2f73149 Mon Sep 17 00:00:00 2001
From: Warren Dukes <warren.dukes@gmail.com>
Date: Thu, 11 Nov 2004 00:04:16 +0000
Subject: make copyTag to metadatachunk a little more efficient

git-svn-id: https://svn.musicpd.org/mpd/trunk@2594 09075e82-0dd4-0310-85a5-a0d7c8717e4f
---
 src/metadataChunk.c | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)

(limited to 'src')

diff --git a/src/metadataChunk.c b/src/metadataChunk.c
index e5c64f7b3..20b0d7c6f 100644
--- a/src/metadataChunk.c
+++ b/src/metadataChunk.c
@@ -49,7 +49,7 @@ MpdTag * metadataChunkToMpdTagDup(MetadataChunk * chunk) {
 }
 
 #define copyStringToChunk(string, element) { \
-	if(string && (slen = strlen(string)) && \
+	if(element < 0 && string && (slen = strlen(string)) && \
                         pos < METADATA_BUFFER_LENGTH-1) \
         { \
 		strncpy(chunk->buffer+pos, string, \
@@ -62,21 +62,26 @@ MpdTag * metadataChunkToMpdTagDup(MetadataChunk * chunk) {
 void copyMpdTagToMetadataChunk(MpdTag * tag, MetadataChunk * chunk) {
 	int pos = 0;
 	int slen;
+	int i;
 
 	initMetadataChunk(chunk);
 
 	if(!tag) return;
 
-	copyStringToChunk(
-			getNextItemFromMpdTag(tag, TAG_ITEM_NAME, NULL), 
-			chunk->name);
-	copyStringToChunk(
-			getNextItemFromMpdTag(tag, TAG_ITEM_TITLE, NULL), 
-			chunk->title);
-	copyStringToChunk(
-			getNextItemFromMpdTag(tag, TAG_ITEM_ARTIST, NULL), 
-			chunk->artist);
-	copyStringToChunk(
-			getNextItemFromMpdTag(tag, TAG_ITEM_ALBUM, NULL), 
-			chunk->album);
+	for(i = 0; i < tag->numOfItems; i++) {
+		switch(tag->items[i].type) {
+		case TAG_ITEM_NAME:
+			copyStringToChunk(tag->items[i].value, chunk->name);
+			break;
+		case TAG_ITEM_TITLE:
+			copyStringToChunk(tag->items[i].value, chunk->title);
+			break;
+		case TAG_ITEM_ARTIST:
+			copyStringToChunk(tag->items[i].value, chunk->artist);
+			break;
+		case TAG_ITEM_ALBUM:
+			copyStringToChunk(tag->items[i].value, chunk->artist);
+			break;
+		}
+	}
 }
-- 
cgit v1.2.3