ArgParser: allow fractional seconds in ParseCommandArg(SongTime)

This commit is contained in:
Max Kellermann 2014-08-29 23:46:38 +02:00
parent 7c567e3cbd
commit d5287682d1
3 changed files with 13 additions and 10 deletions

1
NEWS
View File

@ -8,6 +8,7 @@ ver 0.19 (not yet released)
- "list" on album artist falls back to the artist tag
- "list" and "count" allow grouping
- new "search"/"find" filter "modified-since"
- "seek*" allows fractional position
- close connection after syntax error
* database
- proxy: forward "idle" events

View File

@ -877,8 +877,8 @@
<listitem>
<para>
Seeks to the position <varname>TIME</varname> (in
seconds) of entry <varname>SONGPOS</varname> in the
playlist.
seconds; fractions allowed) of entry
<varname>SONGPOS</varname> in the playlist.
</para>
</listitem>
</varlistentry>
@ -893,7 +893,8 @@
<listitem>
<para>
Seeks to the position <varname>TIME</varname> (in
seconds) of song <varname>SONGID</varname>.
seconds; fractions allowed) of song
<varname>SONGID</varname>.
</para>
</listitem>
</varlistentry>
@ -907,9 +908,10 @@
</term>
<listitem>
<para>
Seeks to the position <varname>TIME</varname> within the
current song. If prefixed by '+' or '-', then the time
is relative to the current playing position.
Seeks to the position <varname>TIME</varname> (in
seconds; fractions allowed) within the current song. If
prefixed by '+' or '-', then the time is relative to the
current playing position.
</para>
</listitem>
</varlistentry>

View File

@ -191,8 +191,8 @@ check_float(Client &client, float *value_r, const char *s)
bool
ParseCommandArg(Client &client, SongTime &value_r, const char *s)
{
unsigned value;
bool success = check_unsigned(client, &value, s);
float value;
bool success = check_float(client, &value, s) && value >= 0;
if (success)
value_r = SongTime::FromS(value);
@ -202,8 +202,8 @@ ParseCommandArg(Client &client, SongTime &value_r, const char *s)
bool
ParseCommandArg(Client &client, SignedSongTime &value_r, const char *s)
{
int value;
bool success = check_int(client, &value, s);
float value;
bool success = check_float(client, &value, s);
if (success)
value_r = SignedSongTime::FromS(value);