queue/playlist/command: move range

The move command now accepts a range for the first argument, in the same
form as other range commands, e.g. move 15:17 3.  The first song in the
range is placed at the destination position. Note that as with other
range commands, the range is inclusive on the left only; this example
would move only songs 15 and 16, not 17.

[mk: fixed signed/unsigned warnings; use G_MAXUINT instead of
UINT_MAX]
This commit is contained in:
Jeffrey Middleton
2009-03-26 22:02:56 +01:00
committed by Max Kellermann
parent 7684c446c6
commit 13208bf5a7
6 changed files with 79 additions and 20 deletions
+5 -3
View File
@@ -1181,14 +1181,16 @@ handle_list(struct client *client, int argc, char *argv[])
static enum command_return
handle_move(struct client *client, G_GNUC_UNUSED int argc, char *argv[])
{
int from, to;
unsigned start, end;
int to;
enum playlist_result result;
if (!check_int(client, &from, argv[1], check_integer, argv[1]))
if (!check_range(client, &start, &end,
argv[1], need_range))
return COMMAND_RETURN_ERROR;
if (!check_int(client, &to, argv[2], check_integer, argv[2]))
return COMMAND_RETURN_ERROR;
result = moveSongInPlaylist(&g_playlist, from, to);
result = moveSongRangeInPlaylist(&g_playlist, start, end, to);
return print_playlist_result(client, result);
}