diff options
author | Klaus Schmidinger <vdr@tvdr.de> | 2004-10-31 13:01:35 +0100 |
---|---|---|
committer | Klaus Schmidinger <vdr@tvdr.de> | 2004-10-31 13:01:35 +0100 |
commit | bd62ca6abc61827dd75962e952783acf83565949 (patch) | |
tree | 017e3e4475cfbd81674e0ae03d70de33d1ce2a5c | |
parent | fd9c2d298c0a8fb8e005b46a728841759b126430 (diff) | |
download | vdr-bd62ca6abc61827dd75962e952783acf83565949.tar.gz vdr-bd62ca6abc61827dd75962e952783acf83565949.tar.bz2 |
Added the 'portal name' to cChannels
-rw-r--r-- | CONTRIBUTORS | 1 | ||||
-rw-r--r-- | HISTORY | 1 | ||||
-rw-r--r-- | channels.c | 18 | ||||
-rw-r--r-- | channels.h | 5 | ||||
-rw-r--r-- | eit.c | 8 |
5 files changed, 28 insertions, 5 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 292b8eff..e5a75535 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1068,6 +1068,7 @@ Marco Schlüßler <marco@lordzodiac.de> errors don't occur any more for reporting a problem with initialization of the main program loop variables with older compiler versions + for adding the 'portal name' to cChannels Jürgen Schmitz <j.schmitz@web.de> for reporting a bug in displaying the current channel when switching via the SVDRP @@ -3103,3 +3103,4 @@ Video Disk Recorder Revision History true to make it return the name, if no short name is available. The sequence of 'name' and 'short name' in the channels.conf file has been swapped (see man vdr(5)). +- Added the 'portal name' to cChannels (thanks to Marco Schlüßler). @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.c 1.29 2004/10/31 12:52:50 kls Exp $ + * $Id: channels.c 1.30 2004/10/31 12:54:06 kls Exp $ */ #include "channels.h" @@ -169,6 +169,7 @@ cChannel::cChannel(void) name = strdup(""); shortName = strdup(""); provider = strdup(""); + portalName = strdup(""); memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__); inversion = INVERSION_AUTO; bandwidth = BANDWIDTH_AUTO; @@ -188,6 +189,7 @@ cChannel::cChannel(const cChannel &Channel) name = strdup(""); shortName = strdup(""); provider = strdup(""); + portalName = strdup(""); *this = Channel; vpid = 0; ppid = 0; @@ -227,6 +229,7 @@ cChannel::~cChannel() free(name); free(shortName); free(provider); + free(portalName); } cChannel& cChannel::operator= (const cChannel &Channel) @@ -234,6 +237,7 @@ cChannel& cChannel::operator= (const cChannel &Channel) name = strcpyrealloc(name, Channel.name); shortName = strcpyrealloc(shortName, Channel.shortName); provider = strcpyrealloc(provider, Channel.provider); + portalName = strcpyrealloc(portalName, Channel.portalName); memcpy(&__BeginData__, &Channel.__BeginData__, (char *)&Channel.__EndData__ - (char *)&Channel.__BeginData__); return *this; } @@ -366,6 +370,18 @@ void cChannel::SetName(const char *Name, const char *ShortName, const char *Prov } } +void cChannel::SetPortalName(const char *PortalName) +{ + if (!isempty(PortalName) && strcmp(portalName, PortalName) != 0) { + if (Number()) { + dsyslog("changing portal name of channel %d from '%s' to '%s'", Number(), portalName, PortalName); + modification |= CHANNELMOD_NAME; + Channels.SetModified(); + } + portalName = strcpyrealloc(portalName, PortalName); + } +} + static bool IntArraysDiffer(const int *a, const int *b, const char na[][4] = NULL, const char nb[][4] = NULL) { int i = 0; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.h 1.21 2004/10/31 12:41:38 kls Exp $ + * $Id: channels.h 1.22 2004/10/31 12:54:26 kls Exp $ */ #ifndef __CHANNELS_H @@ -92,6 +92,7 @@ private: char *name; char *shortName; char *provider; + char *portalName; int __BeginData__; int frequency; // MHz int source; @@ -136,6 +137,7 @@ public: const char *Name(void) const { return name; } const char *ShortName(bool OrName = false) const { return (OrName && isempty(shortName)) ? name : shortName; } const char *Provider(void) const { return provider; } + const char *PortalName(void) const { return portalName; } int Frequency(void) const { return frequency; } ///< Returns the actual frequency, as given in 'channels.conf' int Transponder(void) const; ///< Returns the transponder frequency in MHz, plus the polarization in case of sat static int Transponder(int Frequency, char Polarization); ///< builds the transponder from the given Frequency and Polarization @@ -175,6 +177,7 @@ public: bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission); void SetId(int Nid, int Tid, int Sid, int Rid = 0); void SetName(const char *Name, const char *ShortName, const char *Provider); + void SetPortalName(const char *PortalName); void SetPids(int Vpid, int Ppid, int *Apids, char ALangs[][4], int *Dpids, char DLangs[][4], int Tpid); void SetCaIds(const int *CaIds); // list must be zero-terminated void SetCaDescriptors(int Level); @@ -8,7 +8,7 @@ * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>. * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>. * - * $Id: eit.c 1.99 2004/10/31 12:41:04 kls Exp $ + * $Id: eit.c 1.100 2004/10/31 12:56:24 kls Exp $ */ #include "eit.h" @@ -161,10 +161,10 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data) time_t now = time(NULL); bool hit = SiEitEvent.getStartTime() <= now && now < SiEitEvent.getStartTime() + SiEitEvent.getDuration(); if (hit) { + char linkName[ld->privateData.getLength() + 1]; + strn0cpy(linkName, (const char *)ld->privateData.getData(), sizeof(linkName)); cChannel *link = Channels.GetByChannelID(linkID); if (link != channel) { // only link to other channels, not the same one - char linkName[ld->privateData.getLength() + 1]; - strn0cpy(linkName, (const char *)ld->privateData.getData(), sizeof(linkName)); //fprintf(stderr, "Linkage %s %4d %4d %5d %5d %5d %5d %02X '%s'\n", hit ? "*" : "", channel->Number(), link ? link->Number() : -1, SiEitEvent.getEventId(), ld->getOriginalNetworkId(), ld->getTransportStreamId(), ld->getServiceId(), ld->getLinkageType(), linkName);//XXX if (link) { if (Setup.UpdateChannels >= 1) @@ -180,6 +180,8 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data) LinkChannels->Add(new cLinkChannel(link)); } } + else + channel->SetPortalName(linkName); } } } |