From d69e0ab53a4f856f2b20fd58ff7ae141984fecbd Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 18 Oct 2009 01:24:49 +0200 Subject: command: omitting the range end is possible When the range end is missing, then the maximum possible value is assumed. --- NEWS | 1 + doc/protocol.xml | 14 ++++++++++++++ src/command.c | 5 ++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 2b19b52b0..46a717f5d 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,7 @@ ver 0.16 (20??/??/??) - "addid" with negative position is deprecated - "load" supports remote playlists (m3u, pls, xspf, lastfm://) - allow changing replay gain mode on-the-fly + - omitting the range end is possible * input: - lastfm: obsolete plugin removed * tags: diff --git a/doc/protocol.xml b/doc/protocol.xml index 3db128b18..eb48185e9 100644 --- a/doc/protocol.xml +++ b/doc/protocol.xml @@ -67,6 +67,20 @@ successful command executed in the command list. + +
+ Ranges + + + Some commands (e.g. delete) + allow specifying a range in the form + START:END (the END + item is not included in the range, similar to ranges in the + Python programming language). If END is + omitted, then the maximum possible value is assumed. + +
diff --git a/src/command.c b/src/command.c index 2abdf47fa..38673f008 100644 --- a/src/command.c +++ b/src/command.c @@ -221,7 +221,7 @@ check_range(struct client *client, unsigned *value_r1, unsigned *value_r2, if (*test == ':') { value = strtol(++test, &test2, 10); - if (*test2 != '\0' || test == test2) { + if (*test2 != '\0') { va_list args; va_start(args, fmt); command_error_v(client, ACK_ERROR_ARG, fmt, args); @@ -229,6 +229,9 @@ check_range(struct client *client, unsigned *value_r1, unsigned *value_r2, return false; } + if (test == test2) + value = G_MAXUINT; + if (value < 0) { command_error(client, ACK_ERROR_ARG, "Number is negative: %s", s); -- cgit v1.2.3