diff options
-rw-r--r-- | src/command.c | 17 | ||||
-rw-r--r-- | src/playlist.c | 20 | ||||
-rw-r--r-- | src/playlist.h | 2 |
3 files changed, 39 insertions, 0 deletions
diff --git a/src/command.c b/src/command.c index 54703ca28..9c13948d6 100644 --- a/src/command.c +++ b/src/command.c @@ -84,6 +84,7 @@ #define COMMAND_CROSSFADE "crossfade" #define COMMAND_URL_HANDLERS "urlhandlers" #define COMMAND_PLCHANGES "plchanges" +#define COMMAND_PLCHANGESPOSID "plchangesposid" #define COMMAND_CURRENTSONG "currentsong" #define COMMAND_ENABLE_DEV "enableoutput" #define COMMAND_DISABLE_DEV "disableoutput" @@ -414,6 +415,21 @@ int handlePlaylistChanges(FILE * fp, unsigned int * permission, return playlistChanges(fp, version); } +int handlePlaylistChangesPosId(FILE * fp, unsigned int * permission, + int argArrayLength, char ** argArray) +{ + unsigned long version; + char * test; + + version = strtoul(argArray[1], &test, 10); + if(*test!='\0') { + commandError(fp, ACK_ERROR_ARG, "need a positive integer", + NULL); + return -1; + } + return playlistChangesPosId(fp, version); +} + int handlePlaylistInfo(FILE * fp, unsigned int * permission, int argArrayLength, char ** argArray) { @@ -970,6 +986,7 @@ void initCommands() { addCommand(COMMAND_CROSSFADE ,PERMISSION_CONTROL, 1, 1,handleCrossfade,NULL); addCommand(COMMAND_URL_HANDLERS,PERMISSION_READ, 0, 0,handleUrlHandlers,NULL); addCommand(COMMAND_PLCHANGES ,PERMISSION_READ, 1, 1,handlePlaylistChanges,NULL); + addCommand(COMMAND_PLCHANGESPOSID ,PERMISSION_READ, 1, 1,handlePlaylistChangesPosId,NULL); addCommand(COMMAND_ENABLE_DEV ,PERMISSION_ADMIN, 1, 1,handleEnableDevice,NULL); addCommand(COMMAND_DISABLE_DEV ,PERMISSION_ADMIN, 1, 1,handleDisableDevice,NULL); addCommand(COMMAND_DEVICES ,PERMISSION_ADMIN, 0, 0,handleDevices,NULL); diff --git a/src/playlist.c b/src/playlist.c index d122948e5..8eaac641d 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -458,6 +458,26 @@ int playlistChanges(FILE * fp, mpd_uint32 version) { return 0; } +int playlistChangesPosId(FILE * fp, mpd_uint32 version) { + int i; + + for(i=0; i<playlist.length; i++) { + if(version > playlist.version || + playlist.songMod[i] >= version || + playlist.songMod[i] == 0) + { + myfprintf(fp, "cpos: %i\n", i); + myfprintf(fp, "Id: %i\n", playlist.positionToId[i]); + } + } + + return 0; +} + + + + + int playlistInfo(FILE * fp, int song) { int i; int begin = 0; diff --git a/src/playlist.h b/src/playlist.h index 589cd5650..0d0c7b9a8 100644 --- a/src/playlist.h +++ b/src/playlist.h @@ -114,6 +114,8 @@ void playlistVersionChange(); int playlistChanges(FILE * fp, mpd_uint32 version); +int playlistChangesPosId(FILE * fp, mpd_uint32 version); + int PlaylistInfo(FILE * fp, char * utf8file, int detail); |