Index: apps/gui/wps_parser.c =================================================================== --- apps/gui/wps_parser.c (Revision 18777) +++ apps/gui/wps_parser.c (Arbeitskopie) @@ -131,8 +131,10 @@ }; /* prototypes of all special parse functions : */ -static int parse_timeout(const char *wps_bufptr, +static int parse_timeout_subline(const char *wps_bufptr, struct wps_token *token, struct wps_data *wps_data); +static int parse_timeout_volume_change(const char *wps_bufptr, + struct wps_token *token, struct wps_data *wps_data); static int parse_progressbar(const char *wps_bufptr, struct wps_token *token, struct wps_data *wps_data); static int parse_dir_level(const char *wps_bufptr, @@ -280,7 +282,7 @@ { WPS_TOKEN_REPEAT_MODE, "mm", WPS_REFRESH_DYNAMIC, NULL }, { WPS_TOKEN_PLAYBACK_STATUS, "mp", WPS_REFRESH_DYNAMIC, NULL }, { WPS_TOKEN_BUTTON_VOLUME, "mv", WPS_REFRESH_DYNAMIC, - parse_timeout }, + parse_timeout_volume_change }, #ifdef HAVE_LCD_BITMAP { WPS_TOKEN_PEAKMETER, "pm", WPS_REFRESH_PEAK_METER, NULL }, @@ -315,7 +317,7 @@ #endif { WPS_NO_TOKEN, "s", WPS_REFRESH_SCROLL, NULL }, - { WPS_TOKEN_SUBLINE_TIMEOUT, "t", 0, parse_timeout }, + { WPS_TOKEN_SUBLINE_TIMEOUT, "t", 0, parse_timeout_subline }, #ifdef HAVE_LCD_BITMAP { WPS_NO_TOKEN, "we", 0, parse_statusbar_enable }, @@ -802,23 +804,43 @@ if (have_tenth == false) val *= 10; - if (val == 0 && skip == 0) + token->value.i = val; + + return skip; +} + +static int parse_timeout_subline(const char *wps_bufptr, + struct wps_token *token, + struct wps_data *wps_data) +{ + int skip; + skip = parse_timeout(wps_bufptr, token, wps_data); + + if (skip == 0) { - /* decide what to do if no value was specified */ - switch (token->type) - { - case WPS_TOKEN_SUBLINE_TIMEOUT: - return -1; - case WPS_TOKEN_BUTTON_VOLUME: - val = HZ; - break; - } + /* No parameter was specified -> error */ + return -1; } - token->value.i = val; return skip; } +static int parse_timeout_volume_change(const char *wps_bufptr, + struct wps_token *token, + struct wps_data *wps_data) +{ + int skip; + skip = parse_timeout(wps_bufptr, token, wps_data); + + if (skip == 0) + { + /* No parameter was specified, use default */ + token->value.i = HZ; + } + + return skip; +} + static int parse_progressbar(const char *wps_bufptr, struct wps_token *token, struct wps_data *wps_data)