implmented ID functions, need to implemented id commands

git-svn-id: https://svn.musicpd.org/mpd/trunk@1407 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
Warren Dukes 2004-06-09 01:30:51 +00:00
parent 1ca828c49d
commit 304639c9a6

View File

@ -463,6 +463,32 @@ int playlistInfo(FILE * fp, int song) {
return 0;
}
# define checkSongId(id) { \
if(id < 0 || id >= PLAYLIST_HASH_MULT*playlist_max_length || \
playlist.idToNum[id] == -1 ) \
{ \
commandError(fp, ACK_ERROR_NO_EXIST, \
"song id doesn't exist: \"%i\"", id); \
return -1; \
} \
}
int playlistId(FILE * fp, int id) {
int i;
int begin = 0;
int end = playlist.length;
if(id>=0) {
checkSongId(id);
begin = playlist.idToNum[id];
end = begin+1;
}
for(i=begin; i<end; i++) printPlaylistSongInfo(fp, i);
return 0;
}
void swapSongs(int song1, int song2) {
Song * sTemp;
int iTemp;
@ -634,7 +660,6 @@ int swapSongsInPlaylist(FILE * fp, int song1, int song2) {
"song doesn't exist: \"%i\"", song2);
return -1;
}
if(playlist_state==PLAYLIST_STATE_PLAY) {
if(playlist.queued>=0) {
@ -673,6 +698,14 @@ int swapSongsInPlaylist(FILE * fp, int song1, int song2) {
return 0;
}
int swapSongsInPlaylistById(FILE * fp, int id1, int id2) {
checkSongId(id1);
checkSongId(id2);
return swapSongsInPlaylist(fp, playlist.idToNum[id1],
playlist.idToNum[id2]);
}
#define moveSongFromTo(from, to) { \
playlist.idToNum[playlist.numToId[from]] = to; \
playlist.numToId[to] = playlist.numToId[from]; \
@ -748,6 +781,12 @@ int deleteFromPlaylist(FILE * fp, int song) {
return 0;
}
int deleteFromPlaylistById(FILE * fp, int id) {
checkSongId(id);
return deleteFromPlaylist(fp, playlist.idToNum[id]);
}
void deleteASongFromPlaylist(Song * song) {
int i;
@ -839,6 +878,16 @@ int playPlaylist(FILE * fp, int song, int stopOnError) {
return playPlaylistOrderNumber(fp,i);
}
int playPlaylistById(FILE * fp, int id, int stopOnError) {
if(id == -1) {
return playPlaylist(fp, id, stopOnError);
}
checkSongId(id);
return playPlaylist(fp, playlist.idToNum[id], stopOnError);
}
void syncCurrentPlayerDecodeMetadata() {
Song * songPlayer = playerCurrentDecodeSong();
Song * song;
@ -1032,6 +1081,14 @@ int moveSongInPlaylist(FILE * fp, int from, int to) {
return 0;
}
int moveSongInPlaylistById(FILE * fp, int id1, int id2) {
checkSongId(id1);
checkSongId(id2);
return moveSongInPlaylist(fp, playlist.idToNum[id1],
playlist.idToNum[id2]);
}
void orderPlaylist() {
int i;
@ -1398,3 +1455,9 @@ int seekSongInPlaylist(FILE * fp, int song, float time) {
return playerSeek(fp, playlist.songs[playlist.order[i]], time);
}
int seekSongInPlaylistById(FILE * fp, int id, float time) {
checkSongId(id);
return seekSongInPlaylist(fp, playlist.idToNum[id], time);
}