From ad70fe8c64d1acdec15db886f91676b86f5f7bd4 Mon Sep 17 00:00:00 2001 From: lordjaxom Date: Fri, 11 Feb 2005 16:44:14 +0000 Subject: - transfer --- common.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) (limited to 'common.c') diff --git a/common.c b/common.c index 850623d..09fcd6b 100644 --- a/common.c +++ b/common.c @@ -1,5 +1,5 @@ /* - * $Id: common.c,v 1.3 2005/02/10 22:24:26 lordjaxom Exp $ + * $Id: common.c,v 1.4 2005/02/11 16:44:14 lordjaxom Exp $ */ #include @@ -18,6 +18,7 @@ const char *StreamTypes[st_Count] = { "PES", "PS", "ES", + "Extern", "", // used internally only }; @@ -47,23 +48,24 @@ char *GetNextLine(char *String, uint Length, uint &Offset) { return NULL; } -const cChannel *ChannelFromString(char *String, int *Apid) { - cChannel *channel = NULL; +const cChannel *ChannelFromString(const char *String, int *Apid) { + const cChannel *channel = NULL; + char *string = strdup(String); char *ptr, *end; int apididx = 0; - if ((ptr = strrchr(String, '+')) != NULL) { + if ((ptr = strrchr(string, '+')) != NULL) { *(ptr++) = '\0'; apididx = strtoul(ptr, &end, 10); Dprintf("found apididx: %d\n", apididx); } - if (isnumber(String)) { + if (isnumber(string)) { int temp = strtol(String, NULL, 10); if (temp >= 1 && temp <= Channels.MaxNumber()) channel = Channels.GetByNumber(temp); } else { - channel = Channels.GetByChannelID(tChannelID::FromString(String)); + channel = Channels.GetByChannelID(tChannelID::FromString(string)); if (channel == NULL) { int i = 1; @@ -78,22 +80,18 @@ const cChannel *ChannelFromString(char *String, int *Apid) { if (channel != NULL && apididx > 0) { int apid = 0, index = 1; - const int *apids = channel->Apids(); - const int *dpids = channel->Dpids(); - for (int i = 0; apids[i] != 0; ++i, ++index) { - Dprintf("checking apid %d\n", apids[i]); + for (int i = 0; channel->Apid(i) != 0; ++i, ++index) { if (index == apididx) { - apid = apids[i]; + apid = channel->Apid(i); break; } } if (apid == 0) { - for (int i = 0; dpids[i] != 0; ++i, ++index) { - Dprintf("checking dpid %d\n", dpids[i]); + for (int i = 0; channel->Dpid(i) != 0; ++i, ++index) { if (index == apididx) { - apid = dpids[i]; + apid = channel->Dpid(i); break; } } @@ -103,6 +101,7 @@ const cChannel *ChannelFromString(char *String, int *Apid) { *Apid = apid; } + free(string); return channel; } -- cgit v1.2.3