channel: fix channel_find_by_number for maj.min support, fixes #2321

This commit is contained in:
Jaroslav Kysela 2014-09-20 21:54:56 +02:00
parent 710119a707
commit 1b6c2275a6
3 changed files with 17 additions and 5 deletions

View file

@ -402,11 +402,23 @@ channel_find_by_id ( uint32_t i )
}
channel_t *
channel_find_by_number ( int no )
channel_find_by_number ( const char *no )
{
channel_t *ch;
uint32_t maj, min = 0;
uint64_t cno;
char *s;
if (no == NULL)
return NULL;
if ((s = strchr(no, '.')) != NULL) {
*s = '\0';
min = atoi(s + 1);
}
maj = atoi(no);
cno = (uint64_t)maj * CHANNEL_SPLIT + (uint64_t)min;
CHANNEL_FOREACH(ch)
if(channel_get_number(ch) == no)
if(channel_get_number(ch) == cno)
break;
return ch;
}

View file

@ -149,7 +149,7 @@ channel_t *channel_find_by_name(const char *name);
channel_t *channel_find_by_id(uint32_t id);
channel_t *channel_find_by_number(int no);
channel_t *channel_find_by_number(const char *no);
#define channel_find channel_find_by_uuid

View file

@ -722,7 +722,7 @@ page_http_playlist(http_connection_t *hc, const char *remain, void *opaque)
if(nc == 2 && !strcmp(components[0], "channelid"))
ch = channel_find_by_id(atoi(components[1]));
else if(nc == 2 && !strcmp(components[0], "channelnumber"))
ch = channel_find_by_number(atoi(components[1]));
ch = channel_find_by_number(components[1]);
else if(nc == 2 && !strcmp(components[0], "channelname"))
ch = channel_find_by_name(components[1]);
else if(nc == 2 && !strcmp(components[0], "channel"))
@ -1004,7 +1004,7 @@ http_stream(http_connection_t *hc, const char *remain, void *opaque)
if(!strcmp(components[0], "channelid")) {
ch = channel_find_by_id(atoi(components[1]));
} else if(!strcmp(components[0], "channelnumber")) {
ch = channel_find_by_number(atoi(components[1]));
ch = channel_find_by_number(components[1]);
} else if(!strcmp(components[0], "channelname")) {
ch = channel_find_by_name(components[1]);
} else if(!strcmp(components[0], "channel")) {