From 03f02badf02adba317f6358bc0e1ebf669b48204 Mon Sep 17 00:00:00 2001
From: Warren Dukes <warren.dukes@gmail.com>
Date: Thu, 11 Nov 2004 00:41:28 +0000
Subject: this is broken

git-svn-id: https://svn.musicpd.org/mpd/trunk@2597 09075e82-0dd4-0310-85a5-a0d7c8717e4f
---
 src/dbUtils.c |  2 +-
 src/song.c    | 28 +++++++++++++++++++++-------
 src/song.h    | 23 ++++++++++++-----------
 3 files changed, 34 insertions(+), 19 deletions(-)

(limited to 'src')

diff --git a/src/dbUtils.c b/src/dbUtils.c
index 24e3ff75e..63f1f33b7 100644
--- a/src/dbUtils.c
+++ b/src/dbUtils.c
@@ -66,7 +66,7 @@ int printDirectoryInDirectory(FILE * fp, Directory * directory, void * data) {
 }
 
 int printSongInDirectory(FILE * fp, Song * song, void * data) {
-        myfprintf(fp,"file: %s\n",song->utf8url);
+	printSongUrl(fp, song);
         return 0;
 }
 
diff --git a/src/song.c b/src/song.c
index 462a434cc..44afcbe4c 100644
--- a/src/song.c
+++ b/src/song.c
@@ -40,11 +40,12 @@ Song * newNullSong() {
 	song->tag = NULL;
 	song->utf8url = NULL;
 	song->type = SONG_TYPE_FILE;
+	song->parentDir = NULL;
 
 	return song;
 }
 
-Song * newSong(char * utf8url, SONG_TYPE type) {
+Song * newSong(char * url, int type, Directory * parentDir) {
 	Song * song = NULL;
 
         if(strchr(utf8url, '\n')) return NULL;
@@ -53,6 +54,9 @@ Song * newSong(char * utf8url, SONG_TYPE type) {
 
 	song->utf8url = strdup(utf8url);
 	song->type = type;
+	song->parentDir = parentDir;
+
+	assert(type == SONG_TYPE_URL || parentDir);
 
 	if(song->type == SONG_TYPE_FILE) {
                 InputPlugin * plugin;
@@ -86,25 +90,25 @@ SongList * newSongList() {
 	return makeList((ListFreeDataFunc *)freeSong);
 }
 
-Song * addSongToList(SongList * list, char * key, char * utf8url, 
-		SONG_TYPE type) 
+Song * addSongToList(SongList * list, char * url, int songType, 
+		Directory * parentDirectory)
 {
 	Song * song = NULL;
 
 	switch(type) {
 	case SONG_TYPE_FILE:
 		if(isMusic(utf8url,NULL)) {
-			song = newSong(utf8url,type);
+			song = newSong(url, type, parentDirectory);
 		}
 		break;
 	case SONG_TYPE_URL:
-		song = newSong(utf8url,type);
+		song = newSong(utf8url, type, parentDirectory);
 		break;
 	}
 
 	if(song==NULL) return NULL;
 	
-	insertInList(list,key,(void *)song);
+	insertInList(list, url, (void *)song);
 
 	return song;
 }
@@ -113,8 +117,18 @@ void freeSongList(SongList * list) {
 	freeList(list);
 }
 
+void printSongUrl(FILE * fp, Song * song) {
+	if(song->parentDir) {
+		myfprintf(fp, "%s%s%s\n", SONG_FILE, song->parentDir->utf8name,
+				song->url);
+	}
+	else {
+		myfprintf(fp, "%s%s\n", SONG_FILE, song->url);
+	}
+}
+
 int printSongInfo(FILE * fp, Song * song) {
-	myfprintf(fp,"%s%s\n",SONG_FILE,song->utf8url);
+	printSongUrl(fp, song);
 
 	if(song->tag) printMpdTag(fp,song->tag);
 
diff --git a/src/song.h b/src/song.h
index 3a14afb05..45f9e7923 100644
--- a/src/song.h
+++ b/src/song.h
@@ -21,24 +21,23 @@
 
 #include "../config.h"
 
-#define SONG_BEGIN	"songList begin"
-#define SONG_END	"songList end"
-
 #include <sys/param.h>
 #include <time.h>
 
 #include "tag.h"
 #include "list.h"
 
-typedef enum {
-	SONG_TYPE_FILE = 1,
-	SONG_TYPE_URL = 2
-} SONG_TYPE;
+#define SONG_BEGIN	"songList begin"
+#define SONG_END	"songList end"
+
+#define SONG_TYPE_FILE 1
+#define SONG_TYPE_URL 2
 
 typedef struct _Song {
-	char * utf8url;
-	SONG_TYPE type;
+	char * url;
+	mpd_sint8 type;
 	MpdTag * tag;
+	struct _Directory * parentDir;
 	time_t mtime;
 } Song;
 
@@ -46,7 +45,7 @@ typedef List SongList;
 
 Song * newNullSong();
 
-Song * newSong(char * utf8url, SONG_TYPE type);
+Song * newSong(char * utf8url, int songType, struct _Directory * parentDir);
 
 void freeSong(Song *);
 
@@ -57,7 +56,7 @@ SongList * newSongList();
 void freeSongList(SongList * list);
 
 Song * addSongToList(SongList * list, char * key, char * utf8file, 
-		SONG_TYPE type);
+		int songType, struct _Directory * parentDir);
 
 int printSongInfo(FILE * fp, Song * song);
 
@@ -71,4 +70,6 @@ int updateSongInfo(Song * song);
 
 Song * songDup(Song * song);
 
+void printSongUrl(FILE * fp, Song * song);
+
 #endif
-- 
cgit v1.2.3