command: add optional range parameter to "load"

This commit is contained in:
Max Kellermann 2012-02-09 23:52:51 +01:00
parent b0ea3f4261
commit b9673fc521
3 changed files with 17 additions and 5 deletions

1
NEWS
View File

@ -3,6 +3,7 @@ ver 0.17 (2011/??/??)
- support client-to-client communication - support client-to-client communication
- "update" and "rescan" need only "CONTROL" permission - "update" and "rescan" need only "CONTROL" permission
- new command "seekcur" for simpler seeking within current song - new command "seekcur" for simpler seeking within current song
- add range parameter to command "load"
* input: * input:
- cdio_paranoia: new input plugin to play audio CDs - cdio_paranoia: new input plugin to play audio CDs
- curl: enable CURLOPT_NETRC - curl: enable CURLOPT_NETRC

View File

@ -1312,12 +1312,14 @@ OK
<cmdsynopsis> <cmdsynopsis>
<command>load</command> <command>load</command>
<arg choice="req"><replaceable>NAME</replaceable></arg> <arg choice="req"><replaceable>NAME</replaceable></arg>
<arg choice="opt"><replaceable>START:END</replaceable></arg>
</cmdsynopsis> </cmdsynopsis>
</term> </term>
<listitem> <listitem>
<para> <para>
Loads the playlist into the current queue. Playlist 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> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -796,12 +796,21 @@ handle_save(struct client *client,
} }
static enum command_return 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; enum playlist_result result;
result = playlist_open_into_queue(argv[1], result = playlist_open_into_queue(argv[1],
0, G_MAXUINT, start_index, end_index,
&g_playlist, &g_playlist,
client->player_control, true); client->player_control, true);
if (result != PLAYLIST_RESULT_NO_SUCH_LIST) 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; GError *error = NULL;
return playlist_load_spl(&g_playlist, client->player_control, return playlist_load_spl(&g_playlist, client->player_control,
argv[1], 0, G_MAXUINT, argv[1], start_index, end_index,
&error) &error)
? COMMAND_RETURN_OK ? COMMAND_RETURN_OK
: print_error(client, error); : print_error(client, error);
@ -2140,7 +2149,7 @@ static const struct command commands[] = {
{ "listplaylist", PERMISSION_READ, 1, 1, handle_listplaylist }, { "listplaylist", PERMISSION_READ, 1, 1, handle_listplaylist },
{ "listplaylistinfo", PERMISSION_READ, 1, 1, handle_listplaylistinfo }, { "listplaylistinfo", PERMISSION_READ, 1, 1, handle_listplaylistinfo },
{ "listplaylists", PERMISSION_READ, 0, 0, handle_listplaylists }, { "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 }, { "lsinfo", PERMISSION_READ, 0, 1, handle_lsinfo },
{ "mixrampdb", PERMISSION_CONTROL, 1, 1, handle_mixrampdb }, { "mixrampdb", PERMISSION_CONTROL, 1, 1, handle_mixrampdb },
{ "mixrampdelay", PERMISSION_CONTROL, 1, 1, handle_mixrampdelay }, { "mixrampdelay", PERMISSION_CONTROL, 1, 1, handle_mixrampdelay },