17 #include "libsi/section.h"
18 #include "libsi/descriptor.h"
20 #define VALID_TIME (31536000 * 2) // two years
35 time_t Now = time(NULL);
52 bool Modified =
false;
53 time_t SegmentStart = 0;
54 time_t SegmentEnd = 0;
56 struct tm t = *localtime_r(&Now, &tm_r);
65 if (StartTime == 0 || StartTime > 0 && Duration == 0)
69 SegmentStart = StartTime;
70 SegmentEnd = StartTime + Duration;
74 if (!pEvent || handledExternally) {
75 if (OnlyRunningStatus)
84 if (!handledExternally)
113 if (OnlyRunningStatus) {
119 int LanguagePreferenceShort = -1;
120 int LanguagePreferenceExt = -1;
121 bool UseExtendedEventDescriptor =
false;
132 delete ExtendedEventDescriptors;
134 UseExtendedEventDescriptor =
true;
136 if (UseExtendedEventDescriptor) {
137 ExtendedEventDescriptors->
Add(eed);
141 UseExtendedEventDescriptor =
false;
147 delete ShortEventDescriptor;
148 ShortEventDescriptor = sed;
168 int LanguagePreferenceRating = -1;
173 int ParentalRating = (Rating.
getRating() & 0xFF);
174 switch (ParentalRating) {
176 case 0x01 ... 0x0F: ParentalRating += 3;
break;
178 case 0x11: ParentalRating = 10;
break;
179 case 0x12: ParentalRating = 12;
break;
180 case 0x13: ParentalRating = 16;
break;
181 default: ParentalRating = 0;
191 int month = t.tm_mon;
197 if (month == 11 && t.tm_mon == 0)
199 else if (month == 0 && t.tm_mon == 11)
201 time_t vps = mktime(&t);
222 bool hit = StartTime <= Now && Now < StartTime + Duration;
228 if (link != channel) {
232 link->
SetName(linkName,
"",
"");
257 if (1 <= Stream && Stream <= 6 && Type != 0) {
271 if (ShortEventDescriptor) {
280 if (ExtendedEventDescriptors) {
287 delete ExtendedEventDescriptors;
288 delete ShortEventDescriptor;
297 if (handledExternally)
306 if (Modified && !OnlyRunningStatus) {
328 :
SI::TDT(Data, false)
333 time_t loctim = time(NULL);
335 int diff = abs(sattim - loctim);
339 if (stime(&sattim) == 0)
342 esyslog(
"ERROR while setting system time: %m");
355 Set(0x12, 0x40, 0xC0);
375 if (Tid >= 0x4E && Tid <= 0x6F) {
388 cEIT EIT(Schedules,
Source(), Tid, Data,
true);