Commit f468aba1 authored by Warren Dukes's avatar Warren Dukes

new command "addid", this is the same as "add" command, except it also returns…

new command "addid", this is the same as "add" command, except it also returns the songid of the added song. Note that "addid" does not work on directories git-svn-id: https://svn.musicpd.org/mpd/trunk@2487 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent 78c5d884
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
#define COMMAND_KILL "kill" #define COMMAND_KILL "kill"
#define COMMAND_CLOSE "close" #define COMMAND_CLOSE "close"
#define COMMAND_ADD "add" #define COMMAND_ADD "add"
#define COMMAND_ADDID "addid"
#define COMMAND_DELETE "delete" #define COMMAND_DELETE "delete"
#define COMMAND_DELETEID "deleteid" #define COMMAND_DELETEID "deleteid"
#define COMMAND_PLAYLIST "playlist" #define COMMAND_PLAYLIST "playlist"
...@@ -298,11 +299,17 @@ int handleAdd(FILE * fp, unsigned int * permission, int argArrayLength, ...@@ -298,11 +299,17 @@ int handleAdd(FILE * fp, unsigned int * permission, int argArrayLength,
if(argArrayLength == 2) { if(argArrayLength == 2) {
path = argArray[1]; path = argArray[1];
if(isRemoteUrl(path)) return addToPlaylist(fp,path); if(isRemoteUrl(path)) return addToPlaylist(fp, path, 0);
} }
return addAllIn(fp,path); return addAllIn(fp,path);
} }
int handleAddId(FILE * fp, unsigned int * permission, int argArrayLength,
char ** argArray)
{
return addToPlaylist(fp, argArray[0], 1);
}
int handleDelete(FILE * fp, unsigned int * permission, int argArrayLength, int handleDelete(FILE * fp, unsigned int * permission, int argArrayLength,
char ** argArray) char ** argArray)
{ {
...@@ -811,6 +818,7 @@ void initCommands() { ...@@ -811,6 +818,7 @@ void initCommands() {
addCommand(COMMAND_KILL ,PERMISSION_ADMIN, -1,-1,handleKill,NULL); addCommand(COMMAND_KILL ,PERMISSION_ADMIN, -1,-1,handleKill,NULL);
addCommand(COMMAND_CLOSE ,0, -1,-1,handleClose,NULL); addCommand(COMMAND_CLOSE ,0, -1,-1,handleClose,NULL);
addCommand(COMMAND_ADD ,PERMISSION_ADD, 0, 1,handleAdd,NULL); addCommand(COMMAND_ADD ,PERMISSION_ADD, 0, 1,handleAdd,NULL);
addCommand(COMMAND_ADDID ,PERMISSION_ADD, 0, 1,handleAddId,NULL);
addCommand(COMMAND_DELETE ,PERMISSION_CONTROL, 1, 1,handleDelete,NULL); addCommand(COMMAND_DELETE ,PERMISSION_CONTROL, 1, 1,handleDelete,NULL);
addCommand(COMMAND_DELETEID ,PERMISSION_CONTROL, 1, 1,handleDeleteId,NULL); addCommand(COMMAND_DELETEID ,PERMISSION_CONTROL, 1, 1,handleDeleteId,NULL);
addCommand(COMMAND_PLAYLIST ,PERMISSION_READ, 0, 0,handlePlaylist,NULL); addCommand(COMMAND_PLAYLIST ,PERMISSION_READ, 0, 0,handlePlaylist,NULL);
......
...@@ -1289,7 +1289,7 @@ int printAllIn(FILE * fp, char * name) { ...@@ -1289,7 +1289,7 @@ int printAllIn(FILE * fp, char * name) {
} }
int directoryAddSongToPlaylist(FILE * fp, Song * song, void * data) { int directoryAddSongToPlaylist(FILE * fp, Song * song, void * data) {
return addSongToPlaylist(fp,song); return addSongToPlaylist(fp, song, 0);
} }
int addAllIn(FILE * fp, char * name) { int addAllIn(FILE * fp, char * name) {
......
...@@ -315,7 +315,7 @@ void loadPlaylistFromStateFile(FILE * fp, char * buffer, int state, int current, ...@@ -315,7 +315,7 @@ void loadPlaylistFromStateFile(FILE * fp, char * buffer, int state, int current,
playlist_stateFile); playlist_stateFile);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if(addToPlaylist(stderr,temp)==0 && current==song) { if(addToPlaylist(stderr, temp, 0)==0 && current==song) {
if(state!=PLAYER_STATE_STOP) { if(state!=PLAYER_STATE_STOP) {
playPlaylist(stderr,playlist.length-1,0); playPlaylist(stderr,playlist.length-1,0);
} }
...@@ -595,7 +595,7 @@ void clearPlayerQueue() { ...@@ -595,7 +595,7 @@ void clearPlayerQueue() {
} }
} }
int addToPlaylist(FILE * fp, char * url) { int addToPlaylist(FILE * fp, char * url, int printId) {
Song * song; Song * song;
DEBUG("add to playlist: %s\n",url); DEBUG("add to playlist: %s\n",url);
...@@ -613,10 +613,12 @@ int addToPlaylist(FILE * fp, char * url) { ...@@ -613,10 +613,12 @@ int addToPlaylist(FILE * fp, char * url) {
return -1; return -1;
} }
return addSongToPlaylist(fp,song); return addSongToPlaylist(fp,song, printId);
} }
int addSongToPlaylist(FILE * fp, Song * song) { int addSongToPlaylist(FILE * fp, Song * song, int printId) {
int id;
if(playlist.length==playlist_max_length) { if(playlist.length==playlist_max_length) {
commandError(fp, ACK_ERROR_PLAYLIST_MAX, commandError(fp, ACK_ERROR_PLAYLIST_MAX,
"playlist is at the max size", NULL); "playlist is at the max size", NULL);
...@@ -631,10 +633,12 @@ int addSongToPlaylist(FILE * fp, Song * song) { ...@@ -631,10 +633,12 @@ int addSongToPlaylist(FILE * fp, Song * song) {
} }
} }
id = getNextId();
playlist.songs[playlist.length] = song; playlist.songs[playlist.length] = song;
playlist.songMod[playlist.length] = playlist.version; playlist.songMod[playlist.length] = playlist.version;
playlist.order[playlist.length] = playlist.length; playlist.order[playlist.length] = playlist.length;
playlist.positionToId[playlist.length] = getNextId(); playlist.positionToId[playlist.length] = id;
playlist.idToPosition[playlist.positionToId[playlist.length]] = playlist.length; playlist.idToPosition[playlist.positionToId[playlist.length]] = playlist.length;
playlist.length++; playlist.length++;
...@@ -653,6 +657,8 @@ int addSongToPlaylist(FILE * fp, Song * song) { ...@@ -653,6 +657,8 @@ int addSongToPlaylist(FILE * fp, Song * song) {
incrPlaylistVersion(); incrPlaylistVersion();
if(printId) myfprintf(fp, "Id: %i\n", id);
return 0; return 0;
} }
...@@ -1400,7 +1406,7 @@ int loadPlaylist(FILE * fp, char * utf8file) { ...@@ -1400,7 +1406,7 @@ int loadPlaylist(FILE * fp, char * utf8file) {
free(temp); free(temp);
continue; continue;
} }
if((addToPlaylist(stderr,temp))<0) { if((addToPlaylist(stderr, temp, 0))<0) {
if(!erroredFile) erroredFile = strdup(temp); if(!erroredFile) erroredFile = strdup(temp);
} }
free(temp); free(temp);
......
...@@ -42,9 +42,9 @@ void savePlaylistState(); ...@@ -42,9 +42,9 @@ void savePlaylistState();
int clearPlaylist(FILE * fp); int clearPlaylist(FILE * fp);
int addToPlaylist(FILE * fp, char * file); int addToPlaylist(FILE * fp, char * file, int printId);
int addSongToPlaylist(FILE * fp, Song * song); int addSongToPlaylist(FILE * fp, Song * song, int printId);
int showPlaylist(FILE * fp); int showPlaylist(FILE * fp);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment