From ae206f47681acaf30a5549bd08784499f377dd11 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Sat, 6 Apr 2019 19:07:43 +0200 Subject: Eliminate a compiler warning in searchtimer.c --- searchtimer.c | 73 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/searchtimer.c b/searchtimer.c index 51a94c5..6f191f4 100644 --- a/searchtimer.c +++ b/searchtimer.c @@ -210,31 +210,31 @@ bool cTVGuideSearchTimer::Parse(bool readTemplate) { return false; for (int value = 0; value < numValues; value++) { switch (value) { - case 0: + case 0: if (!readTemplate) ID = atoi(values[value].c_str()); break; - case 1: + case 1: if (!readTemplate) { std::string searchStringMasked = values[value]; std::replace(searchStringMasked.begin(), searchStringMasked.end(), '|', ':'); searchString = searchStringMasked; } break; - case 2: + case 2: useTime = atoi(values[value].c_str()); break; case 3: if (useTime) { - startTime = atoi(values[value].c_str()); - } - break; + startTime = atoi(values[value].c_str()); + } + break; case 4: if (useTime) { - stopTime = atoi(values[value].c_str()); - } - break; - case 5: + stopTime = atoi(values[value].c_str()); + } + break; + case 5: useChannel = atoi(values[value].c_str()); break; case 6: @@ -242,39 +242,44 @@ bool cTVGuideSearchTimer::Parse(bool readTemplate) { channelMin = NULL; channelMax = NULL; } else if (useChannel == 1) { - char *channelMinbuffer = NULL; - char *channelMaxbuffer = NULL; - int channels = sscanf(values[value].c_str(), "%a[^|]|%a[^|]", &channelMinbuffer, &channelMaxbuffer); + int minNum = 0, maxNum = 0; + int fields = sscanf(values[value].c_str(), "%d-%d", &minNum, &maxNum); + if (fields == 0) { // stored with ID + char *channelMinbuffer = NULL; + char *channelMaxbuffer = NULL; + int channels = sscanf(values[value].c_str(), "%m[^|]|%m[^|]", &channelMinbuffer, &channelMaxbuffer); #if VDRVERSNUM >= 20301 - LOCK_CHANNELS_READ; - channelMin = Channels->GetByChannelID(tChannelID::FromString(channelMinbuffer), true, true); + LOCK_CHANNELS_READ; + channelMin = Channels->GetByChannelID(tChannelID::FromString(channelMinbuffer), true, true); #else - channelMin = Channels.GetByChannelID(tChannelID::FromString(channelMinbuffer), true, true); + channelMin = Channels.GetByChannelID(tChannelID::FromString(channelMinbuffer), true, true); #endif - if (!channelMin) { - channelMin = channelMax = NULL; - useChannel = 0; - } - if (channels == 1) - channelMax = channelMin; - else { + if (!channelMin) { + esyslog("ERROR: channel '%s' not defined", channelMinbuffer); + channelMin = channelMax = NULL; + useChannel = 0; + } + if (channels == 1) + channelMax = channelMin; + else { #if VDRVERSNUM >= 20301 - channelMax = Channels->GetByChannelID(tChannelID::FromString(channelMaxbuffer), true, true); + channelMax = Channels->GetByChannelID(tChannelID::FromString(channelMaxbuffer), true, true); #else - channelMax = Channels.GetByChannelID(tChannelID::FromString(channelMaxbuffer), true, true); + channelMax = Channels.GetByChannelID(tChannelID::FromString(channelMaxbuffer), true, true); #endif - if (!channelMax) { - channelMin = channelMax = NULL; - useChannel = 0; + if (!channelMax) { + esyslog("ERROR: channel '%s' not defined", channelMaxbuffer); + channelMin = channelMax = NULL; + useChannel = 0; + } } + free(channelMinbuffer); + free(channelMaxbuffer); } - free(channelMinbuffer); - free(channelMaxbuffer); - } else if (useChannel == 2) { - channelGroup = values[value]; - } + } else if (useChannel == 2) + channelGroup = values[value]; break; - case 7: + case 7: useCase = atoi(values[value].c_str()); break; case 8: -- cgit v1.2.3