Version 1.0.0

- Fixed a problem with wrong EPG data in the Schedules menu (thanks to Tobias
  Kerner, problem was initially reported by Michel Moster, but somehow I had
  misplaced his message...).
- Added Spanish language texts (thanks to Ruben Nunez Francisco).
- Fixed resetting the "First day" timer parameter once the timer actually starts
  recording.
- Fixed the still picture workaround in case the progress display is active
  (thanks to Gerald Raaf).
- Fixed a problem with accessing the epg.data file before it is fully written
  (thanks to Thilo Wunderlich for reporting this one).
- Now the EPG scan skips channels that have their 'Ca' parameter explicitly set
  to an other DVB card (suggested by Sergei Haller).
- Fixed a possible hangup when reading a broken epg.data file (thanks to Henning
  Holtschneider for pointing this one out).
- Fixed a bug in the editing process in case a previously edited file with the
  same name was manually deleted on a system with more than one video directory
  (thanks to Dirk Wiebel for reporting this one).
This commit is contained in:
Klaus Schmidinger 2002-04-07 18:00:00 +02:00
parent 262327908d
commit c9a5d8ea53
12 changed files with 287 additions and 126 deletions

View File

@ -88,6 +88,7 @@ Benjamin Reichardt <reichard@math.uni-goettingen.de>
Henning Holtschneider <hh@holtschneider.com> Henning Holtschneider <hh@holtschneider.com>
for patching 'runvdr' to check whether the driver is already loaded for patching 'runvdr' to check whether the driver is already loaded
for reporting a bug in parsing group separators in channels.conf for reporting a bug in parsing group separators in channels.conf
for pointing out a possible hangup when reading a broken epg.data file
Paulo Lopes <pmml@netvita.pt> Paulo Lopes <pmml@netvita.pt>
for translating OSD texts to the Portugese language for translating OSD texts to the Portugese language
@ -186,6 +187,7 @@ Norbert Schmidt <nschmidt-nrw@t-online.de>
Thilo Wunderlich <tw@ubcom.net> Thilo Wunderlich <tw@ubcom.net>
for his help in keeping 'channels.conf' up to date for his help in keeping 'channels.conf' up to date
for reporting a problem with accessing the epg.data file before it is fully written
Stephan Schreiber <stephan@sschreiber.de> Stephan Schreiber <stephan@sschreiber.de>
for his support in keeping the Premiere World channels up to date in 'channels.conf.cable' for his support in keeping the Premiere World channels up to date in 'channels.conf.cable'
@ -198,6 +200,8 @@ Sergei Haller <Sergei.Haller@math.uni-giessen.de>
for fixing the LastActivity timestamp after a shutdown prompt for fixing the LastActivity timestamp after a shutdown prompt
for fixing the "Low disk space!" message for fixing the "Low disk space!" message
for adding the TPID to Hessen-3 in 'channels.conf' for adding the TPID to Hessen-3 in 'channels.conf'
for suggesting that the EPG scan should skip channels with their 'Ca' parameter
explicitly set to an other DVB card
Andreas Gebel <andreas@xcapenet.de> Andreas Gebel <andreas@xcapenet.de>
for his help in keeping 'channels.conf' up to date for his help in keeping 'channels.conf' up to date
@ -252,6 +256,27 @@ Truls Slevigen <truls@slevigen.no>
Ruben Nunez Francisco <ruben.nunez@tang-it.com> Ruben Nunez Francisco <ruben.nunez@tang-it.com>
for implementing FreeDiskSpaceMB() without external 'df' command for implementing FreeDiskSpaceMB() without external 'df' command
for translating OSD texts to the Spanish language
Mirko Dölle <mdoelle@linux-user.de>
for reporting a bug when a timer records over midnight of a day that had a
change in Daylight Saving Time
Michael Rakowski <mrak@gmx.de> Michael Rakowski <mrak@gmx.de>
for translating OSD texts to the Polish language for translating OSD texts to the Polish language
Michael Moster <dvb@juelich-gmbh.de>
for initally reporting the problem with wrong EPG data in the Schedules menu
(somehow I had misplaced his message...)
Tobias Kerner <tobschle@gmx.de>
for helping to debug a problem with wrong EPG data in the Schedules menu
Dirk Wiebel <dirk@wiebel.de>
for reporting a bug in the editing process in case a previously edited file
with the same name was manually deleted on a system with more than one video
directory
Gerald Raaf <graaf@attglobal.net>
for helping to fix the still picture workaround in case the progress display
is active

24
HISTORY
View File

@ -1151,7 +1151,7 @@ Video Disk Recorder Revision History
commands.conf starts with a digit in the range '1'...'9', followed by a blank. commands.conf starts with a digit in the range '1'...'9', followed by a blank.
- Fixed a bug in switching back the replay mode display in time shift mode - Fixed a bug in switching back the replay mode display in time shift mode
(thanks to Achim Lange for reporting this one). (thanks to Achim Lange for reporting this one).
- Fixed a bug in the 'First day' timer parameter for timers that record over - Fixed a bug in the "First day" timer parameter for timers that record over
midnight. midnight.
- Added units to Setup parameters. - Added units to Setup parameters.
- Changed time entry in the 'Jump' command during replay, so that it is filled - Changed time entry in the 'Jump' command during replay, so that it is filled
@ -1161,7 +1161,7 @@ Video Disk Recorder Revision History
- Fixed skipping the next hit of a repeating timer (thanks to Rainer Zocholl - Fixed skipping the next hit of a repeating timer (thanks to Rainer Zocholl
for reporting this one). for reporting this one).
- Fixed a bug when a timer records over midnight of a day that had a change in - Fixed a bug when a timer records over midnight of a day that had a change in
Daylight Saving Time. Daylight Saving Time (thanks to Mirko Dölle for reporting this one).
- Added Polish language texts (thanks to Michael Rakowski). - Added Polish language texts (thanks to Michael Rakowski).
- Fixed a bug in parsing group separators in channels.conf (thanks to Henning - Fixed a bug in parsing group separators in channels.conf (thanks to Henning
Holtschneider for reporting this one). Holtschneider for reporting this one).
@ -1170,3 +1170,23 @@ Video Disk Recorder Revision History
the F-keys on top. the F-keys on top.
- Fixed a bug in the EPG bugfix mechanism if the extended description is shorter - Fixed a bug in the EPG bugfix mechanism if the extended description is shorter
than 3 characters (thanks to Andreas Schultz). than 3 characters (thanks to Andreas Schultz).
2002-04-07: Version 1.0.0
- Fixed a problem with wrong EPG data in the Schedules menu (thanks to Tobias
Kerner, problem was initially reported by Michel Moster, but somehow I had
misplaced his message...).
- Added Spanish language texts (thanks to Ruben Nunez Francisco).
- Fixed resetting the "First day" timer parameter once the timer actually starts
recording.
- Fixed the still picture workaround in case the progress display is active
(thanks to Gerald Raaf).
- Fixed a problem with accessing the epg.data file before it is fully written
(thanks to Thilo Wunderlich for reporting this one).
- Now the EPG scan skips channels that have their 'Ca' parameter explicitly set
to an other DVB card (suggested by Sergei Haller).
- Fixed a possible hangup when reading a broken epg.data file (thanks to Henning
Holtschneider for pointing this one out).
- Fixed a bug in the editing process in case a previously edited file with the
same name was manually deleted on a system with more than one video directory
(thanks to Dirk Wiebel for reporting this one).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: config.c 1.96 2002/04/01 11:54:05 kls Exp $ * $Id: config.c 1.97 2002/04/02 21:56:51 kls Exp $
*/ */
#include "config.h" #include "config.h"
@ -606,14 +606,14 @@ bool cTimer::Matches(time_t t)
if ((!firstday || a >= firstday) && t <= b) { if ((!firstday || a >= firstday) && t <= b) {
startTime = a; startTime = a;
stopTime = b; stopTime = b;
if (t >= firstday + SECSINDAY)
firstday = 0;
break; break;
} }
} }
} }
if (!startTime) if (!startTime)
startTime = firstday; // just to have something that's more than a week in the future startTime = firstday; // just to have something that's more than a week in the future
else if (t > startTime || t > firstday + SECSINDAY + 3600) // +3600 in case of DST change
firstday = 0;
return active && startTime <= t && t < stopTime; // must stop *before* stopTime to allow adjacent timers return active && startTime <= t && t < stopTime; // must stop *before* stopTime to allow adjacent timers
} }

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: config.h 1.107 2002/03/31 21:17:30 kls Exp $ * $Id: config.h 1.109 2002/04/07 13:08:12 kls Exp $
*/ */
#ifndef __CONFIG_H #ifndef __CONFIG_H
@ -19,7 +19,7 @@
#include "eit.h" #include "eit.h"
#include "tools.h" #include "tools.h"
#define VDRVERSION "1.0.0pre5" #define VDRVERSION "1.0.0"
#define MAXPRIORITY 99 #define MAXPRIORITY 99
#define MAXLIFETIME 99 #define MAXLIFETIME 99

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: dvbapi.c 1.166 2002/03/29 11:32:47 kls Exp $ * $Id: dvbapi.c 1.170 2002/04/07 09:35:51 kls Exp $
*/ */
#include "dvbapi.h" #include "dvbapi.h"
@ -1194,8 +1194,10 @@ void cReplayBuffer::DisplayFrame(uchar *b, int Length)
CHECK(ioctl(videoDev, VIDEO_STILLPICTURE, &sp)); CHECK(ioctl(videoDev, VIDEO_STILLPICTURE, &sp));
#else #else
#define MIN_IFRAME 400000 #define MIN_IFRAME 400000
for (int i = MIN_IFRAME / Length + 1; i > 0; i--) for (int i = MIN_IFRAME / Length + 1; i > 0; i--) {
safe_write(videoDev, b, Length); safe_write(videoDev, b, Length);
usleep(1); // allows the buffer to be displayed in case the progress display is active
}
#endif #endif
} }
@ -1612,6 +1614,18 @@ bool cVideoCutter::Start(const char *FileName)
cRecording Recording(FileName); cRecording Recording(FileName);
const char *evn = Recording.PrefixFileName('%'); const char *evn = Recording.PrefixFileName('%');
if (evn && RemoveVideoFile(evn) && MakeDirs(evn, true)) { if (evn && RemoveVideoFile(evn) && MakeDirs(evn, true)) {
// XXX this can be removed once RenameVideoFile() follows symlinks (see videodir.c)
// remove a possible deleted recording with the same name to avoid symlink mixups:
char *s = strdup(evn);
char *e = strrchr(s, '.');
if (e) {
if (strcmp(e, ".rec") == 0) {
strcpy(e, ".del");
RemoveVideoFile(s);
}
}
delete s;
// XXX
editedVersionName = strdup(evn); editedVersionName = strdup(evn);
Recording.WriteSummary(); Recording.WriteSummary();
cuttingBuffer = new cCuttingBuffer(FileName, editedVersionName); cuttingBuffer = new cCuttingBuffer(FileName, editedVersionName);
@ -2803,12 +2817,16 @@ void cEITScanner::Process(void)
numTransponders = 0; numTransponders = 0;
} }
cChannel *Channel = Channels.GetByNumber(ch); cChannel *Channel = Channels.GetByNumber(ch);
if (Channel && Channel->pnr && !TransponderScanned(Channel)) { if (Channel) {
if (DvbApi == cDvbApi::PrimaryDvbApi && !currentChannel) if (Channel->ca <= MAXDVBAPI && !DvbApi->ProvidesCa(Channel->ca))
currentChannel = DvbApi->Channel(); break; // the channel says it explicitly needs a different card
Channel->Switch(DvbApi, false); if (Channel->pnr && !TransponderScanned(Channel)) {
lastChannel = ch; if (DvbApi == cDvbApi::PrimaryDvbApi && !currentChannel)
break; currentChannel = DvbApi->Channel();
Channel->Switch(DvbApi, false);
lastChannel = ch;
break;
}
} }
ch++; ch++;
} }

16
eit.c
View File

@ -16,7 +16,7 @@
* the Free Software Foundation; either version 2 of the License, or * * the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. * * (at your option) any later version. *
* * * *
* $Id: eit.c 1.42 2002/04/01 12:58:20 kls Exp $ * $Id: eit.c 1.44 2002/04/06 13:58:59 kls Exp $
***************************************************************************/ ***************************************************************************/
#include "eit.h" #include "eit.h"
@ -390,12 +390,12 @@ bool cEventInfo::Read(FILE *f, cSchedule *Schedule)
case 'e': pEvent = NULL; case 'e': pEvent = NULL;
break; break;
case 'c': // to keep things simple we react on 'c' here case 'c': // to keep things simple we react on 'c' here
return false; return true;
default: esyslog(LOG_ERR, "ERROR: unexpected tag while reading EPG data: %s", s); default: esyslog(LOG_ERR, "ERROR: unexpected tag while reading EPG data: %s", s);
return false; return false;
} }
} }
return true; esyslog(LOG_ERR, "ERROR: unexpected end of file while reading EPG data");
} }
return false; return false;
} }
@ -754,8 +754,8 @@ bool cSchedule::Read(FILE *f, cSchedules *Schedules)
if (1 == sscanf(s + 1, "%u", &uServiceID)) { if (1 == sscanf(s + 1, "%u", &uServiceID)) {
cSchedule *p = (cSchedule *)Schedules->SetCurrentServiceID(uServiceID); cSchedule *p = (cSchedule *)Schedules->SetCurrentServiceID(uServiceID);
if (p) { if (p) {
while (cEventInfo::Read(f, p)) if (!cEventInfo::Read(f, p))
; // loop stops after having read the closing 'c' return false;
} }
} }
} }
@ -1090,10 +1090,10 @@ void cSIProcessor::Action()
if (epgDataFileName && now - lastDump > 600) if (epgDataFileName && now - lastDump > 600)
{ {
cMutexLock MutexLock(&schedulesMutex); cMutexLock MutexLock(&schedulesMutex);
FILE *f = fopen(GetEpgDataFileName(), "w"); cSafeFile f(GetEpgDataFileName());
if (f) { if (f.Open()) {
schedules->Dump(f); schedules->Dump(f);
fclose(f); f.Close();
} }
else else
LOG_ERROR; LOG_ERROR;

View File

@ -1,25 +0,0 @@
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux VDR
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.21 -> 1.22
# eit.c 1.6 -> 1.7
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/04/01 aschultz@warp10.net 1.22
# fix segfault in eit.c
# --------------------------------------------
#
diff -Nru a/eit.c b/eit.c
--- a/eit.c Mon Apr 1 14:38:00 2002
+++ b/eit.c Mon Apr 1 14:38:00 2002
@@ -559,7 +559,7 @@
pSubtitle = compactspace(pSubtitle);
pExtendedDescription = compactspace(pExtendedDescription);
// Remove superfluous hyphens:
- if (pExtendedDescription) {
+ if (pExtendedDescription && strlen(pExtendedDescription) >= 3) {
char *p = pExtendedDescription + 1;
while (*p) {
if (*p == '-' && *(p + 1) == ' ' && *(p + 2) && islower(*(p - 1)) && islower(*(p + 2))) {

203
i18n.c

File diff suppressed because it is too large Load Diff

12
menu.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: menu.c 1.180 2002/03/31 21:17:42 kls Exp $ * $Id: menu.c 1.182 2002/04/06 09:41:59 kls Exp $
*/ */
#include "menu.h" #include "menu.h"
@ -694,7 +694,7 @@ public:
}; };
cMenuEditChannel::cMenuEditChannel(int Index) cMenuEditChannel::cMenuEditChannel(int Index)
:cOsdMenu(tr("Edit Channel"), 14) :cOsdMenu(tr("Edit channel"), 14)
{ {
channel = Channels.Get(Index); channel = Channels.Get(Index);
if (channel) { if (channel) {
@ -1070,7 +1070,7 @@ public:
}; };
cMenuEditTimer::cMenuEditTimer(int Index, bool New) cMenuEditTimer::cMenuEditTimer(int Index, bool New)
:cOsdMenu(tr("Edit Timer"), 12) :cOsdMenu(tr("Edit timer"), 12)
{ {
firstday = NULL; firstday = NULL;
timer = Timers.Get(Index); timer = Timers.Get(Index);
@ -1539,6 +1539,7 @@ private:
void PrepareSchedule(cChannel *Channel); void PrepareSchedule(cChannel *Channel);
public: public:
cMenuSchedule(void); cMenuSchedule(void);
virtual ~cMenuSchedule();
virtual eOSState ProcessKey(eKeys Key); virtual eOSState ProcessKey(eKeys Key);
}; };
@ -1556,6 +1557,11 @@ cMenuSchedule::cMenuSchedule(void)
} }
} }
cMenuSchedule::~cMenuSchedule()
{
cMenuWhatsOn::ScheduleEventInfo(); // makes sure any posted data is cleared
}
static int CompareEventTime(const void *p1, const void *p2) static int CompareEventTime(const void *p1, const void *p2)
{ {
return (int)((*(cEventInfo **)p1)->GetTime() - (*(cEventInfo **)p2)->GetTime()); return (int)((*(cEventInfo **)p1)->GetTime() - (*(cEventInfo **)p2)->GetTime());

View File

@ -1,56 +0,0 @@
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux VDR
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.20 -> 1.21
# config.c 1.4 -> 1.5
# tools.c 1.2 -> 1.3
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/04/01 aschultz@warp10.net 1.21
# fix memory management due to MPatrol
# --------------------------------------------
#
diff -Nru a/config.c b/config.c
--- a/config.c Mon Apr 1 14:37:48 2002
+++ b/config.c Mon Apr 1 14:37:48 2002
@@ -265,7 +265,7 @@
sscanf(apidbuf, "%d ,%d ", &apid1, &apid2);
if (p)
sscanf(p, "%d ,%d ", &dpid1, &dpid2);
- delete apidbuf;
+ free(apidbuf);
}
else
return false;
@@ -277,7 +277,7 @@
tpid = 0;
}
strn0cpy(name, buffer, MaxChannelName);
- delete buffer;
+ free(buffer);
}
else
return false;
diff -Nru a/tools.c b/tools.c
--- a/tools.c Mon Apr 1 14:37:48 2002
+++ b/tools.c Mon Apr 1 14:37:48 2002
@@ -71,7 +71,7 @@
esyslog(LOG_ERR, "ERROR: out of memory");
}
else {
- delete dest;
+ free(dest);
dest = NULL;
}
return dest;
@@ -230,7 +230,7 @@
const char *AddDirectory(const char *DirName, const char *FileName)
{
static char *buf = NULL;
- delete buf;
+ free(buf);
asprintf(&buf, "%s/%s", DirName && *DirName ? DirName : ".", FileName);
return buf;
}

4
vdr.1
View File

@ -8,9 +8,9 @@
.\" License as specified in the file COPYING that comes with the .\" License as specified in the file COPYING that comes with the
.\" vdr distribution. .\" vdr distribution.
.\" .\"
.\" $Id: vdr.1 1.2 2002/03/29 10:10:04 kls Exp $ .\" $Id: vdr.1 1.3 2002/04/07 13:11:43 kls Exp $
.\" .\"
.TH vdr 1 "29 Mar 2002" "1.0.0" "Video Disk Recorder" .TH vdr 1 "7 Apr 2002" "1.0.0" "Video Disk Recorder"
.SH NAME .SH NAME
vdr - the Video Disk Recorder vdr - the Video Disk Recorder
.SH SYNOPSIS .SH SYNOPSIS

4
vdr.5
View File

@ -8,9 +8,9 @@
.\" License as specified in the file COPYING that comes with the .\" License as specified in the file COPYING that comes with the
.\" vdr distribution. .\" vdr distribution.
.\" .\"
.\" $Id: vdr.5 1.3 2002/04/01 12:32:59 kls Exp $ .\" $Id: vdr.5 1.4 2002/04/07 13:12:04 kls Exp $
.\" .\"
.TH vdr 5 "29 Mar 2002" "1.0.0" "Video Disk Recorder Files" .TH vdr 5 "7 Apr 2002" "1.0.0" "Video Disk Recorder Files"
.SH NAME .SH NAME
vdr file formats - the Video Disk Recorder Files vdr file formats - the Video Disk Recorder Files
.SH DESCRIPTION .SH DESCRIPTION