diff options
author | Qball Cow <qball@qballcow.nl> | 2007-09-26 08:25:35 +0000 |
---|---|---|
committer | Qball Cow <qball@qballcow.nl> | 2007-09-26 08:25:35 +0000 |
commit | cb9d1b3d275fac683a4128b93a76ab72c99a0209 (patch) | |
tree | 15e8cccedd2db17faa35a040f9432d61dabb86aa /src/command.c | |
parent | 3a03b89b48eb206c82878dc7743ffc412c30039b (diff) | |
download | mpd-cb9d1b3d275fac683a4128b93a76ab72c99a0209.tar.gz mpd-cb9d1b3d275fac683a4128b93a76ab72c99a0209.tar.xz mpd-cb9d1b3d275fac683a4128b93a76ab72c99a0209.zip |
Playlist queue patch (http://musicpd.org/mantis/view.php?id=1478) version 11.
This adds the following commands:
* queueid <id> Add song <id> to the queue.
* dequeue <pos> Remove song from <pos> from the queue
* queueinfo List the queue
To the statusfield it adds the following entry:
playlistqueue: <uid> UID can be used by clients to track changes in the playlist queue.
git-svn-id: https://svn.musicpd.org/mpd/trunk@6927 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to 'src/command.c')
-rw-r--r-- | src/command.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/command.c b/src/command.c index 84a30db2b..83a8d3a2d 100644 --- a/src/command.c +++ b/src/command.c @@ -98,6 +98,9 @@ #define COMMAND_PLAYLISTSEARCH "playlistsearch" #define COMMAND_PLAYLISTMOVE "playlistmove" #define COMMAND_PLAYLISTDELETE "playlistdelete" +#define COMMAND_QUEUEID "queueid" +#define COMMAND_DEQUEUE "dequeue" +#define COMMAND_QUEUEINFO "queueinfo" #define COMMAND_TAGTYPES "tagtypes" #define COMMAND_COUNT "count" #define COMMAND_RENAME "rename" @@ -107,6 +110,7 @@ #define COMMAND_STATUS_REPEAT "repeat" #define COMMAND_STATUS_RANDOM "random" #define COMMAND_STATUS_PLAYLIST "playlist" +#define COMMAND_STATUS_PLAYLIST_QUEUE "playlistqueue" #define COMMAND_STATUS_PLAYLIST_LENGTH "playlistlength" #define COMMAND_STATUS_SONG "song" #define COMMAND_STATUS_SONGID "songid" @@ -278,6 +282,8 @@ static int commandStatus(int fd, int *permission, int argc, char *argv[]) getPlaylistRandomStatus()); fdprintf(fd, "%s: %li\n", COMMAND_STATUS_PLAYLIST, getPlaylistVersion()); + fdprintf(fd, "%s: %li\n", COMMAND_STATUS_PLAYLIST_QUEUE, + getPlaylistQueueVersion()); fdprintf(fd, "%s: %i\n", COMMAND_STATUS_PLAYLIST_LENGTH, getPlaylistLength()); fdprintf(fd, "%s: %i\n", COMMAND_STATUS_CROSSFADE, @@ -625,6 +631,47 @@ static int handlePlaylistMove(int fd, int *permission, int argc, char *argv[]) return moveSongInStoredPlaylistByPath(fd, playlist, from, to); } +static int handleQueueInfo(int fd, int *permission, int argc, char *argv[]) +{ + return playlistQueueInfo(fd); +} + +static int handleQueueId(int fd, int *permission, int argc, char *argv[]) +{ + int id, position = -1; + char *test; + + id = strtol(argv[1], &test, 10); + if (*test != '\0') { + commandError(fd, ACK_ERROR_ARG, + "\"%s\" is not a integer", argv[1]); + return -1; + } + if (argc == 3) { + position = strtol(argv[2], &test, 10); + if (*test != '\0') { + commandError(fd, ACK_ERROR_ARG, + "\"%s\" is not a integer", argv[2]); + return -1; + } + } + return addToPlaylistQueueById(fd, id, position); +} + +static int handleDequeue(int fd, int *permission, int argc, char *argv[]) +{ + int pos; + char *test; + + pos = strtol(argv[1], &test, 10); + if (*test != '\0') { + commandError(fd, ACK_ERROR_ARG, + "\"%s\" is not a integer", argv[1]); + return -1; + } + return deleteFromPlaylistQueue(fd, pos); +} + static int listHandleUpdate(int fd, int *permission, int argc, @@ -1121,6 +1168,9 @@ void initCommands(void) addCommand(COMMAND_PLAYLISTSEARCH, PERMISSION_READ, 2, -1, handlePlaylistSearch, NULL); addCommand(COMMAND_PLAYLISTMOVE, PERMISSION_CONTROL, 3, 3, handlePlaylistMove, NULL); addCommand(COMMAND_PLAYLISTDELETE, PERMISSION_CONTROL, 2, 2, handlePlaylistDelete, NULL); + addCommand(COMMAND_QUEUEINFO, PERMISSION_CONTROL, 0, 0, handleQueueInfo, NULL); + addCommand(COMMAND_QUEUEID, PERMISSION_CONTROL, 1, 2, handleQueueId, NULL); + addCommand(COMMAND_DEQUEUE, PERMISSION_CONTROL, 1, 1, handleDequeue, NULL); addCommand(COMMAND_TAGTYPES, PERMISSION_READ, 0, 0, handleTagTypes, NULL); addCommand(COMMAND_COUNT, PERMISSION_READ, 2, -1, handleCount, NULL); addCommand(COMMAND_RENAME, PERMISSION_CONTROL, 2, 2, handleRename, NULL); |