summaryrefslogtreecommitdiff
path: root/eit.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2001-08-12 18:00:00 +0200
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2001-08-12 18:00:00 +0200
commitefea0f64d08052b0189d962101e1a3634d4adfc8 (patch)
treea3feff7ccf6874da549b25ea3b671d15a65d0e3d /eit.c
parentf1d1c9849c8e27cccb46cf9c0d0ccb59da3f91f9 (diff)
downloadvdr-patch-lnbsharing-efea0f64d08052b0189d962101e1a3634d4adfc8.tar.gz
vdr-patch-lnbsharing-efea0f64d08052b0189d962101e1a3634d4adfc8.tar.bz2
Version 0.91vdr-0.91
- Fixed displaying colored button texts that are too long. - Suppressing replay progress display when replaying a DVD. - Updated channels.conf.cable (thanks to Uwe Scheffler). - Updated French OSD texts (thanks to Jean-Claude Repetto). - Improved AC3 decoding when replaying DVDs (thanks to Matjaz Thaler). - Fixed handling DVB card indexes when using only one card in a multi-card system. - Changed the 'Eject DVD' button text to a simple 'Eject' (the German text was too long...). - Made the font file generation more stable (thanks to Artur Skawina). - Changed the default value for the "DiSEqC" setup parameter to "off". - The new command line option '-E' can be used to define where the EPG data shall be written to. This is especially useful if VDR runs in a system that turns off the video disk when it is not used, and therefore needs to write the EPG file to a ramdisk (or turn off writing it alltogether). See 'vdr --help' for details. - Making sure the disk is up and running before starting recording (this is important for systems that turn off the video disk when it is not used). - Added the "Jump" function in replay mode (thanks to Stefan Huelswitt). See the description of the "Red" key in MANUAL under "Replay Control" for details. - Fixed displaying editing marks when toggling a mark in "pause" mode. - If there is no free DVB device to record, the log message will now be given only once. - Made I/O more robust by handling EINTR (thanks to Werner Fink).
Diffstat (limited to 'eit.c')
-rw-r--r--eit.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/eit.c b/eit.c
index 3de6102..14738f3 100644
--- a/eit.c
+++ b/eit.c
@@ -13,7 +13,7 @@
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
- * $Id: eit.c 1.16 2001/05/26 10:58:01 kls Exp $
+ * $Id: eit.c 1.19 2001/08/12 15:04:37 kls Exp $
***************************************************************************/
#include "eit.h"
@@ -1099,10 +1099,12 @@ bool cEIT::WriteExtEventDescriptor(unsigned short service, eit_loop_t *eitloop,
// --- cSIProcessor ----------------------------------------------------------
#define MAX_FILTERS 20
+#define EPGDATAFILENAME "epg.data"
int cSIProcessor::numSIProcessors = 0;
cSchedules *cSIProcessor::schedules = NULL;
cMutex cSIProcessor::schedulesMutex;
+const char *cSIProcessor::epgDataFileName = EPGDATAFILENAME;
/** */
cSIProcessor::cSIProcessor(const char *FileName)
@@ -1129,6 +1131,20 @@ cSIProcessor::~cSIProcessor()
delete fileName;
}
+void cSIProcessor::SetEpgDataFileName(const char *FileName)
+{
+ epgDataFileName = NULL;
+ if (FileName)
+ epgDataFileName = strdup(DirectoryOk(FileName) ? AddDirectory(FileName, EPGDATAFILENAME) : FileName);
+}
+
+const char *cSIProcessor::GetEpgDataFileName(void)
+{
+ if (epgDataFileName)
+ return *epgDataFileName == '/' ? epgDataFileName : AddDirectory(VideoDirectory, epgDataFileName);
+ return NULL;
+}
+
void cSIProcessor::SetStatus(bool On)
{
LOCK_THREAD;
@@ -1174,16 +1190,18 @@ void cSIProcessor::Action()
schedulesMutex.Unlock();
lastCleanup = now;
}
- if (now - lastDump > 600)
+ if (epgDataFileName && now - lastDump > 600)
{
LOCK_THREAD;
schedulesMutex.Lock();
- FILE *f = fopen(AddDirectory(VideoDirectory, "epg.data"), "w");
+ FILE *f = fopen(GetEpgDataFileName(), "w");
if (f) {
schedules->Dump(f);
fclose(f);
}
+ else
+ LOG_ERROR;
lastDump = now;
schedulesMutex.Unlock();
}
@@ -1211,11 +1229,11 @@ void cSIProcessor::Action()
{
/* read section */
unsigned char buf[4096+1]; // max. allowed size for any EIT section (+1 for safety ;-)
- if (read(filters[a].handle, buf, 3) == 3)
+ if (safe_read(filters[a].handle, buf, 3) == 3)
{
int seclen = ((buf[1] & 0x0F) << 8) | (buf[2] & 0xFF);
int pid = filters[a].pid;
- int n = read(filters[a].handle, buf + 3, seclen);
+ int n = safe_read(filters[a].handle, buf + 3, seclen);
if (n == seclen)
{
seclen += 3;