diff options
author | Max Kellermann <max@duempel.org> | 2012-02-09 23:52:51 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2012-02-09 23:55:34 +0100 |
commit | b9673fc521c453f8729544541ba48fcafefcf4e9 (patch) | |
tree | 18136164865bdf238900065aa2ee6d4d520f3d63 | |
parent | b0ea3f42619d4d831830502f12340105937bf533 (diff) | |
download | mpd-b9673fc521c453f8729544541ba48fcafefcf4e9.tar.gz mpd-b9673fc521c453f8729544541ba48fcafefcf4e9.tar.xz mpd-b9673fc521c453f8729544541ba48fcafefcf4e9.zip |
command: add optional range parameter to "load"
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | doc/protocol.xml | 4 | ||||
-rw-r--r-- | src/command.c | 17 |
3 files changed, 17 insertions, 5 deletions
@@ -3,6 +3,7 @@ ver 0.17 (2011/??/??) - support client-to-client communication - "update" and "rescan" need only "CONTROL" permission - new command "seekcur" for simpler seeking within current song + - add range parameter to command "load" * input: - cdio_paranoia: new input plugin to play audio CDs - curl: enable CURLOPT_NETRC diff --git a/doc/protocol.xml b/doc/protocol.xml index f665c583c..dbc60f40d 100644 --- a/doc/protocol.xml +++ b/doc/protocol.xml @@ -1312,12 +1312,14 @@ OK <cmdsynopsis> <command>load</command> <arg choice="req"><replaceable>NAME</replaceable></arg> + <arg choice="opt"><replaceable>START:END</replaceable></arg> </cmdsynopsis> </term> <listitem> <para> Loads the playlist into the current queue. Playlist - plugins are supported. + plugins are supported. A range may be specified to load + only a part of the playlist. </para> </listitem> </varlistentry> diff --git a/src/command.c b/src/command.c index 1d26acd6b..2737c34e9 100644 --- a/src/command.c +++ b/src/command.c @@ -796,12 +796,21 @@ handle_save(struct client *client, } static enum command_return -handle_load(struct client *client, G_GNUC_UNUSED int argc, char *argv[]) +handle_load(struct client *client, int argc, char *argv[]) { + unsigned start_index, end_index; + + if (argc < 3) { + start_index = 0; + end_index = G_MAXUINT; + } else if (!check_range(client, &start_index, &end_index, + argv[2], need_range)) + return COMMAND_RETURN_ERROR; + enum playlist_result result; result = playlist_open_into_queue(argv[1], - 0, G_MAXUINT, + start_index, end_index, &g_playlist, client->player_control, true); if (result != PLAYLIST_RESULT_NO_SUCH_LIST) @@ -809,7 +818,7 @@ handle_load(struct client *client, G_GNUC_UNUSED int argc, char *argv[]) GError *error = NULL; return playlist_load_spl(&g_playlist, client->player_control, - argv[1], 0, G_MAXUINT, + argv[1], start_index, end_index, &error) ? COMMAND_RETURN_OK : print_error(client, error); @@ -2140,7 +2149,7 @@ static const struct command commands[] = { { "listplaylist", PERMISSION_READ, 1, 1, handle_listplaylist }, { "listplaylistinfo", PERMISSION_READ, 1, 1, handle_listplaylistinfo }, { "listplaylists", PERMISSION_READ, 0, 0, handle_listplaylists }, - { "load", PERMISSION_ADD, 1, 1, handle_load }, + { "load", PERMISSION_ADD, 1, 2, handle_load }, { "lsinfo", PERMISSION_READ, 0, 1, handle_lsinfo }, { "mixrampdb", PERMISSION_CONTROL, 1, 1, handle_mixrampdb }, { "mixrampdelay", PERMISSION_CONTROL, 1, 1, handle_mixrampdelay }, |