From b62d4b4317455e69e3e4bb265e99878464139f53 Mon Sep 17 00:00:00 2001 From: Moritz Grimm Date: Thu, 14 May 2015 23:23:48 +0200 Subject: [PATCH] Fix regression in handling of refresh_interval --- src/cfg.c | 6 ++++-- src/cfg.h | 3 +-- src/cfg_private.h | 21 ++++++++++++++++++++- src/ezstream.c | 2 +- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/cfg.c b/src/cfg.c index a1fa260..1b5ed21 100644 --- a/src/cfg.c +++ b/src/cfg.c @@ -56,6 +56,8 @@ _cfg_reset(struct cfg *c) xfree(c->metadata.format_str); memset(c, 0, sizeof(*c)); + + c->metadata.refresh_interval = -1; } static void @@ -517,7 +519,7 @@ cfg_set_metadata_format_str(const char *format_str, const char **errstrp) int cfg_set_metadata_refresh_interval(const char *num_str, const char **errstrp) { - SET_UINTNUM(cfg.metadata.refresh_interval, num_str, errstrp); + SET_INTNUM(cfg.metadata.refresh_interval, num_str, errstrp); return (0); } @@ -756,7 +758,7 @@ cfg_get_metadata_format_str(void) return (cfg.metadata.format_str); } -unsigned int +int cfg_get_metadata_refresh_interval(void) { return (cfg.metadata.refresh_interval); diff --git a/src/cfg.h b/src/cfg.h index 55d5f49..dab3f20 100644 --- a/src/cfg.h +++ b/src/cfg.h @@ -182,8 +182,7 @@ const char * cfg_get_metadata_program(void); const char * cfg_get_metadata_format_str(void); -unsigned int - cfg_get_metadata_refresh_interval(void); +int cfg_get_metadata_refresh_interval(void); int cfg_get_metadata_normalize_strings(void); int cfg_get_metadata_no_updates(void); diff --git a/src/cfg_private.h b/src/cfg_private.h index 5b5ace2..b56e659 100644 --- a/src/cfg_private.h +++ b/src/cfg_private.h @@ -73,7 +73,7 @@ struct cfg { struct metadata { char program[PATH_MAX]; char *format_str; - unsigned int refresh_interval; + int refresh_interval; int normalize_strings; int no_updates; } metadata; @@ -146,6 +146,25 @@ struct cfg { (t) = num; \ } while (0) +#define SET_INTNUM(t, s, e) do { \ + const char *errstr; \ + unsigned int num; \ + \ + if (!(s) || !(s)[0]) { \ + if ((e)) \ + *(e) = "empty"; \ + return (-1); \ + } \ + \ + num = strtonum((s), INT_MIN, INT_MAX, &errstr); \ + if (errstr) { \ + if ((e)) \ + *(e) = errstr; \ + return (-1); \ + } \ + (t) = num; \ +} while (0) + #define CHECKPH_PROHIBITED(s, p) do { \ if (NULL != strstr((s), (p))) { \ if (errstrp) \ diff --git a/src/ezstream.c b/src/ezstream.c index b05d7f4..ecbdc89 100644 --- a/src/ezstream.c +++ b/src/ezstream.c @@ -747,7 +747,7 @@ sendStream(shout_t *shout, FILE *filepstream, const char *fileName, ez_gettimeofday((void *)¤tTime); if (queryMetadata || - (cfg_get_metadata_refresh_interval() && + (0 <= cfg_get_metadata_refresh_interval() && (currentTime.tv_sec - callTime.tv_sec >= cfg_get_metadata_refresh_interval()))) { queryMetadata = 0;