From 3edad9d50e13e140dc0fa1ef1323c7b80e325a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matti=20Lehtim=C3=A4ki?= Date: Sat, 5 May 2012 12:30:22 +0300 Subject: Several bugs fixes. Code cleanup. Update history. --- tools.c | 104 +++++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 44 deletions(-) (limited to 'tools.c') diff --git a/tools.c b/tools.c index 22b90d4..ca16d1b 100644 --- a/tools.c +++ b/tools.c @@ -152,41 +152,6 @@ char *striphtml(char *str) return NULL; } -int count(const char *string, const char separator) -{ - int num = 0; - while (string) { - num++; - string = strchr(string+1, separator); - } - return num; -} - -int loadChannelsFromString(const char *string, int **channels_num, char ***channels_str) -{ - int numchannels = count(string, ','); - if (numchannels > 0) { - char *c = strdup(string); - // Use channel numbers - if (atoi(string)) - *channels_num = (int *)malloc(sizeof(int)*numchannels); - else// use channel IDs - *channels_str = (char **)malloc(sizeof(char *)*numchannels); - int i = 0; - char *pc = strtok(c, ","); - while (i < numchannels) { - // Use channel numbers - if (atoi(string)) - (*channels_num)[i] = atoi(pc); - else// use channel IDs - (*channels_str)[i] = strdup(pc); - pc = strtok(NULL, ","); - i++; - } - } - return numchannels; -} - cListItem::cListItem() { enabled = false; @@ -203,19 +168,18 @@ cListItem::~cListItem(void) void cListItem::Free(void) { - free(channels_num); if (channels_str) { int i = 0; while (i < numchannels) { free(channels_str[i]); - i++; + ++i; } } - free(channels_str); - free(string); - channels_num = NULL; - channels_str = NULL; - string = NULL; + FREE(channels_num); + FREE(channels_str); + FREE(string); + numchannels = 0; + enabled = false; } const char *cListItem::GetChannelID(int index) @@ -231,10 +195,62 @@ int cListItem::GetChannelNum(int index) if (channels_num && index >= 0 && index < numchannels) return channels_num[index]; else - return -1; + return 0; +} + +bool cListItem::IsActive(tChannelID ChannelID) +{ + bool active = true; + if (numchannels > 0) { + bool found = false; + int i = 0; + while (i < numchannels) { + if ((Channels.GetByChannelID(ChannelID)->Number() == GetChannelNum(i)) || + (GetChannelID(i) && strcmp(*(ChannelID.ToString()), GetChannelID(i)) == 0)) { + found = true; + break; + } + ++i; + } + if (!found) + active = false; + } + return active; +} + +int cListItem::LoadChannelsFromString(const char *string) +{ + numchannels = 0; + char *tmpstring = strdup(string); + char *c = tmpstring; + while (c) { + ++numchannels; + c = strchr(c+1, ','); + } + if (numchannels > 0) { + char *c = tmpstring; + // Use channel numbers + if (atoi(string)) + channels_num = (int *)malloc(sizeof(int)*numchannels); + else// use channel IDs + channels_str = (char **)malloc(sizeof(char *)*numchannels); + int i = 0; + char *pc = strtok(c, ","); + while (i < numchannels) { + // Use channel numbers + if (atoi(string)) + (channels_num)[i] = atoi(pc); + else// use channel IDs + (channels_str)[i] = strdup(pc); + pc = strtok(NULL, ","); + ++i; + } + } + free(tmpstring); + return numchannels; } void cListItem::ToggleEnabled(void) { - enabled = enabled ? 0 : 1; + enabled = !enabled; } -- cgit v1.2.3