Compare commits

...

14 Commits

Author SHA1 Message Date
Klaus Schmidinger
9de29712ad Final release of version 1.2.6 2003-11-14 13:29:42 +01:00
Klaus Schmidinger
277ac424d4 Fixed processing EPG data in case there is no title 2003-11-09 12:06:18 +01:00
Klaus Schmidinger
454b63416b Fixed handling Priority -1 in cDvbDevice::ProvidesChannel() 2003-11-09 11:16:21 +01:00
Klaus Schmidinger
a6809c5c7b Fixed getting the list of recordings in case VDR is started from a directory where it doesn't have access to 2003-11-08 15:45:59 +01:00
Klaus Schmidinger
eec1af5845 Added North American satellites to 'sources.conf' 2003-11-07 16:20:33 +01:00
Klaus Schmidinger
66a7ba2e88 Added Asia-Pacific satellites to 'sources.conf' 2003-11-07 15:31:39 +01:00
Klaus Schmidinger
e8db44547e Version 1.2.6pre5 2003-11-07 15:31:00 +01:00
Klaus Schmidinger
30d9af07a8 Added cDevice::GetSTC() 2003-11-07 15:30:51 +01:00
Klaus Schmidinger
327b4c35ac Added missing 'const' to some cChannel member functions 2003-10-26 13:49:59 +01:00
Klaus Schmidinger
ccbebacc16 Fixed handling CAM menus in case the CAM connection fails while the menu is being presented 2003-10-26 13:30:36 +01:00
Klaus Schmidinger
d8a8e37988 Fixed handling comments in editing marks 2003-10-24 15:49:00 +02:00
Klaus Schmidinger
40a7b8505a Continuing learning remote control keys in case one rc fails 2003-10-24 15:48:00 +02:00
Klaus Schmidinger
514ee9e63a Improved cDvbDevice::StillPicture() (cont'd) 2003-10-24 14:32:38 +02:00
Klaus Schmidinger
262c266637 Improved cDvbDevice::StillPicture() 2003-10-19 11:43:07 +02:00
15 changed files with 176 additions and 44 deletions

View File

@ -606,6 +606,7 @@ Thomas Sailer <sailer@scs.ch>
Sven Goethel <sgoethel@jausoft.com> Sven Goethel <sgoethel@jausoft.com>
for making switching audio channels work without stopping/restarting the DMX for making switching audio channels work without stopping/restarting the DMX
for fixing initializing the highlight area in cDvbSpuDecoder for fixing initializing the highlight area in cDvbSpuDecoder
for suggesting to add cDevice::GetSTC()
Jan Rieger <jan@ricomp.de> Jan Rieger <jan@ricomp.de>
for suggestions and testing raw keyboard input for suggestions and testing raw keyboard input
@ -641,6 +642,9 @@ Torsten Herz <torsten.herz@web.de>
to switch to an other channel to switch to an other channel
for reporting a wrong EPG bugfix code number for the MAX_USEFUL_SUBTITLE_LENGTH fix for reporting a wrong EPG bugfix code number for the MAX_USEFUL_SUBTITLE_LENGTH fix
for fixing a bug in resetting OSD color palettes for fixing a bug in resetting OSD color palettes
for adding missing 'const' to some cChannel member functions
for fixing handling Priority -1 in cDvbDevice::ProvidesChannel()
for fixing processing EPG data in case there is no title
Steffen Becker <stbecker@rbg.informatik.tu-darmstadt.de> Steffen Becker <stbecker@rbg.informatik.tu-darmstadt.de>
for reporting a problem with CPU load peaks (in the EPG scanner) for reporting a problem with CPU load peaks (in the EPG scanner)
@ -844,3 +848,17 @@ Markus Hardt <markus.hardt@gmx.net>
Thomas Rausch <Thomas.Rausch@gmx.de> Thomas Rausch <Thomas.Rausch@gmx.de>
for making VDR try to get a timer's channel without RID when loading 'timers.conf' for making VDR try to get a timer's channel without RID when loading 'timers.conf'
Thomas v. Keller <v.keller@neckarufer.de>
for reporting a crash in case the CAM connection fails while a CAM menu
is being presented
Richard Scobie <r.scobie@clear.net.nz>
for adding Asia-Pacific satellites to 'sources.conf'
Luke Jenkins <a@xmission.com>
for adding North American satellites to 'sources.conf'
Dirk Mueller <dmuell@gmx.net>
for fixing getting the list of recordings in case VDR is started from a directory
where it doesn't have access to

36
HISTORY
View File

@ -2433,3 +2433,39 @@ Video Disk Recorder Revision History
full (suggested by Emil Naepflein). full (suggested by Emil Naepflein).
- Channel IDs are now checked when reading 'channels.conf' to avoid later - Channel IDs are now checked when reading 'channels.conf' to avoid later
problems with timers. problems with timers.
2003-10-19: Version 1.2.6pre2
- Improved cDvbDevice::StillPicture() (thanks to Thomas Heiligenmann).
2003-10-24: Version 1.2.6pre3
- Improved cDvbDevice::StillPicture() (thanks to Oliver Endriss).
- Continuing learning remote control keys in case one rc fails (thanks to
Oliver Endriss).
- Fixed handling comments in editing marks.
2003-10-26: Version 1.2.6pre4
- Fixed handling CAM menus in case the CAM connection fails while the menu
is being presented (thanks to Thomas v. Keller for reportign this one).
- Added missing 'const' to some cChannel member functions (thanks to Torsten
Herz).
2003-11-08: Version 1.2.6pre5
- Added cDevice::GetSTC() (suggested by Sven Goethel).
- Added Asia-Pacific satellites to 'sources.conf' (thanks to Richard Scobie).
- Added North American satellites to 'sources.conf' (thanks to Luke Jenkins).
- Fixed getting the list of recordings in case VDR is started from a directory
where it doesn't have access to (thanks to Dirk Mueller).
2003-11-09: Version 1.2.6pre6
- Fixed handling Priority -1 in cDvbDevice::ProvidesChannel() (thanks to
Torsten Herz).
- Fixed processing EPG data in case there is no title (thanks to Torsten Herz).
2003-11-14: Version 1.2.6
- Final release of version 1.2.6.

View File

@ -6,7 +6,7 @@
<center><h1>The VDR Plugin System</h1></center> <center><h1>The VDR Plugin System</h1></center>
<center><b>Version 1.2</b></center> <center><b>Version 1.2.6</b></center>
<p> <p>
<center> <center>
Copyright &copy; 2003 Klaus Schmidinger<br> Copyright &copy; 2003 Klaus Schmidinger<br>
@ -14,6 +14,10 @@ Copyright &copy; 2003 Klaus Schmidinger<br>
<a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a> <a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a>
</center> </center>
<p> <p>
<!--X1.1.32--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
Important modifications introduced in version 1.2.6 are marked like this.
<!--X1.1.32--></td></tr></table>
<p>
VDR provides an easy to use plugin interface that allows additional functionality VDR provides an easy to use plugin interface that allows additional functionality
to be added to the program by implementing a dynamically loadable library file. to be added to the program by implementing a dynamically loadable library file.
This interface allows programmers to develop additional functionality for VDR completely This interface allows programmers to develop additional functionality for VDR completely
@ -1318,6 +1322,9 @@ The functions to implement replaying capabilites are
virtual bool HasDecoder(void) const; virtual bool HasDecoder(void) const;
virtual bool CanReplay(void) const; virtual bool CanReplay(void) const;
virtual bool SetPlayMode(ePlayMode PlayMode); virtual bool SetPlayMode(ePlayMode PlayMode);
<!--X1.1.32--><table width=100%><tr><td bgcolor=#FF0000>&nbsp;</td><td width=100%>
virtual int64_t GetSTC(void);
<!--X1.1.32--></td></tr></table>
virtual void TrickSpeed(int Speed); virtual void TrickSpeed(int Speed);
virtual void Clear(void); virtual void Clear(void);
virtual void Play(void); virtual void Play(void);

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: channels.h 1.8 2003/08/16 09:12:15 kls Exp $ * $Id: channels.h 1.8.1.1 2003/10/26 13:32:00 kls Exp $
*/ */
#ifndef __CHANNELS_H #ifndef __CHANNELS_H
@ -119,9 +119,9 @@ public:
int Transmission(void) const { return transmission; } int Transmission(void) const { return transmission; }
int Guard(void) const { return guard; } int Guard(void) const { return guard; }
int Hierarchy(void) const { return hierarchy; } int Hierarchy(void) const { return hierarchy; }
bool IsCable(void) { return (source & cSource::st_Mask) == cSource::stCable; } bool IsCable(void) const { return (source & cSource::st_Mask) == cSource::stCable; }
bool IsSat(void) { return (source & cSource::st_Mask) == cSource::stSat; } bool IsSat(void) const { return (source & cSource::st_Mask) == cSource::stSat; }
bool IsTerr(void) { return (source & cSource::st_Mask) == cSource::stTerr; } bool IsTerr(void) const { return (source & cSource::st_Mask) == cSource::stTerr; }
tChannelID GetChannelID(void) const; tChannelID GetChannelID(void) const;
}; };

50
ci.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: ci.c 1.16 2003/08/02 10:00:01 kls Exp $ * $Id: ci.c 1.16.1.1 2003/10/26 13:04:23 kls Exp $
*/ */
/* XXX TODO /* XXX TODO
@ -1004,15 +1004,15 @@ bool cCiDateTime::Process(int Length, const uint8_t *Data)
class cCiMMI : public cCiSession { class cCiMMI : public cCiSession {
private: private:
char *GetText(int &Length, const uint8_t **Data); char *GetText(int &Length, const uint8_t **Data);
cCiMenu *menu; cCiMenu *menu, *fetchedMenu;
cCiEnquiry *enquiry; cCiEnquiry *enquiry, *fetchedEnquiry;
public: public:
cCiMMI(int SessionId, cCiTransportConnection *Tc); cCiMMI(int SessionId, cCiTransportConnection *Tc);
virtual ~cCiMMI(); virtual ~cCiMMI();
virtual bool Process(int Length = 0, const uint8_t *Data = NULL); virtual bool Process(int Length = 0, const uint8_t *Data = NULL);
virtual bool HasUserIO(void) { return menu || enquiry; } virtual bool HasUserIO(void) { return menu || enquiry; }
cCiMenu *Menu(void); cCiMenu *Menu(bool Clear = false);
cCiEnquiry *Enquiry(void); cCiEnquiry *Enquiry(bool Clear = false);
bool SendMenuAnswer(uint8_t Selection); bool SendMenuAnswer(uint8_t Selection);
bool SendAnswer(const char *Text); bool SendAnswer(const char *Text);
}; };
@ -1021,13 +1021,21 @@ cCiMMI::cCiMMI(int SessionId, cCiTransportConnection *Tc)
:cCiSession(SessionId, RI_MMI, Tc) :cCiSession(SessionId, RI_MMI, Tc)
{ {
dbgprotocol("New MMI (session id %d)\n", SessionId); dbgprotocol("New MMI (session id %d)\n", SessionId);
menu = NULL; menu = fetchedMenu = NULL;
enquiry = NULL; enquiry = fetchedEnquiry = NULL;
} }
cCiMMI::~cCiMMI() cCiMMI::~cCiMMI()
{ {
if (fetchedMenu) {
cMutexLock MutexLock(&fetchedMenu->mutex);
fetchedMenu->mmi = NULL;
}
delete menu; delete menu;
if (fetchedEnquiry) {
cMutexLock MutexLock(&fetchedEnquiry->mutex);
fetchedEnquiry->mmi = NULL;
}
delete enquiry; delete enquiry;
} }
@ -1123,18 +1131,26 @@ bool cCiMMI::Process(int Length, const uint8_t *Data)
return true; return true;
} }
cCiMenu *cCiMMI::Menu(void) cCiMenu *cCiMMI::Menu(bool Clear)
{ {
cCiMenu *m = menu; if (Clear)
fetchedMenu = NULL;
else if (menu) {
fetchedMenu = menu;
menu = NULL; menu = NULL;
return m; }
return fetchedMenu;
} }
cCiEnquiry *cCiMMI::Enquiry(void) cCiEnquiry *cCiMMI::Enquiry(bool Clear)
{ {
cCiEnquiry *e = enquiry; if (Clear)
fetchedEnquiry = NULL;
else if (enquiry) {
fetchedEnquiry = enquiry;
enquiry = NULL; enquiry = NULL;
return e; }
return fetchedEnquiry;
} }
bool cCiMMI::SendMenuAnswer(uint8_t Selection) bool cCiMMI::SendMenuAnswer(uint8_t Selection)
@ -1170,6 +1186,9 @@ cCiMenu::cCiMenu(cCiMMI *MMI, bool Selectable)
cCiMenu::~cCiMenu() cCiMenu::~cCiMenu()
{ {
cMutexLock MutexLock(&mutex);
if (mmi)
mmi->Menu(true);
free(titleText); free(titleText);
free(subTitleText); free(subTitleText);
free(bottomText); free(bottomText);
@ -1188,6 +1207,7 @@ bool cCiMenu::AddEntry(char *s)
bool cCiMenu::Select(int Index) bool cCiMenu::Select(int Index)
{ {
cMutexLock MutexLock(&mutex);
if (mmi && -1 <= Index && Index < numEntries) if (mmi && -1 <= Index && Index < numEntries)
return mmi->SendMenuAnswer(Index + 1); return mmi->SendMenuAnswer(Index + 1);
return false; return false;
@ -1210,11 +1230,15 @@ cCiEnquiry::cCiEnquiry(cCiMMI *MMI)
cCiEnquiry::~cCiEnquiry() cCiEnquiry::~cCiEnquiry()
{ {
cMutexLock MutexLock(&mutex);
if (mmi)
mmi->Enquiry(true);
free(text); free(text);
} }
bool cCiEnquiry::Reply(const char *s) bool cCiEnquiry::Reply(const char *s)
{ {
cMutexLock MutexLock(&mutex);
return mmi ? mmi->SendAnswer(s) : false; return mmi ? mmi->SendAnswer(s) : false;
} }

4
ci.h
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: ci.h 1.8 2003/05/25 11:44:47 kls Exp $ * $Id: ci.h 1.8.1.1 2003/10/26 12:22:09 kls Exp $
*/ */
#ifndef __CI_H #ifndef __CI_H
@ -21,6 +21,7 @@ class cCiMenu {
private: private:
enum { MAX_CIMENU_ENTRIES = 64 }; ///< XXX is there a specified maximum? enum { MAX_CIMENU_ENTRIES = 64 }; ///< XXX is there a specified maximum?
cCiMMI *mmi; cCiMMI *mmi;
cMutex mutex;
bool selectable; bool selectable;
char *titleText; char *titleText;
char *subTitleText; char *subTitleText;
@ -45,6 +46,7 @@ class cCiEnquiry {
friend class cCiMMI; friend class cCiMMI;
private: private:
cCiMMI *mmi; cCiMMI *mmi;
cMutex mutex;
char *text; char *text;
bool blind; bool blind;
int expectedLength; int expectedLength;

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.176 2003/10/17 12:35:23 kls Exp $ * $Id: config.h 1.176.1.6 2003/11/14 13:29:13 kls Exp $
*/ */
#ifndef __CONFIG_H #ifndef __CONFIG_H
@ -19,7 +19,7 @@
#include "device.h" #include "device.h"
#include "tools.h" #include "tools.h"
#define VDRVERSION "1.2.6pre1" #define VDRVERSION "1.2.6"
#define VDRVERSNUM 10206 // Version * 10000 + Major * 100 + Minor #define VDRVERSNUM 10206 // Version * 10000 + Major * 100 + Minor
#define MAXPRIORITY 99 #define MAXPRIORITY 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: device.c 1.47 2003/08/15 12:34:36 kls Exp $ * $Id: device.c 1.47.1.1 2003/11/07 13:16:12 kls Exp $
*/ */
#include "device.h" #include "device.h"
@ -498,6 +498,11 @@ bool cDevice::SetPlayMode(ePlayMode PlayMode)
return false; return false;
} }
int64_t cDevice::GetSTC(void)
{
return -1;
}
void cDevice::TrickSpeed(int Speed) void cDevice::TrickSpeed(int Speed)
{ {
} }

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: device.h 1.34 2003/08/15 13:05:50 kls Exp $ * $Id: device.h 1.34.1.1 2003/11/07 13:15:45 kls Exp $
*/ */
#ifndef __DEVICE_H #ifndef __DEVICE_H
@ -320,6 +320,10 @@ protected:
///< Sets the device into the given play mode. ///< Sets the device into the given play mode.
///< \return true if the operation was successful. ///< \return true if the operation was successful.
public: public:
virtual int64_t GetSTC(void);
///< Gets the current System Time Counter, which can be used to
///< synchronize audio and video. If this device is unable to
///< provide the STC, -1 will be returned.
virtual void TrickSpeed(int Speed); virtual void TrickSpeed(int Speed);
///< Sets the device into a mode where replay is done slower. ///< Sets the device into a mode where replay is done slower.
///< Every single frame shall then be displayed the given number of ///< Every single frame shall then be displayed the given number of

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: dvbdevice.c 1.67 2003/10/17 15:36:13 kls Exp $ * $Id: dvbdevice.c 1.67.1.4 2003/11/09 11:08:22 kls Exp $
*/ */
#include "dvbdevice.h" #include "dvbdevice.h"
@ -326,6 +326,7 @@ cDvbDevice::cDvbDevice(int n)
fd_osd = DvbOpen(DEV_DVB_OSD, n, O_RDWR); fd_osd = DvbOpen(DEV_DVB_OSD, n, O_RDWR);
fd_video = DvbOpen(DEV_DVB_VIDEO, n, O_RDWR | O_NONBLOCK); fd_video = DvbOpen(DEV_DVB_VIDEO, n, O_RDWR | O_NONBLOCK);
fd_audio = DvbOpen(DEV_DVB_AUDIO, n, O_RDWR | O_NONBLOCK); fd_audio = DvbOpen(DEV_DVB_AUDIO, n, O_RDWR | O_NONBLOCK);
fd_stc = DvbOpen(DEV_DVB_DEMUX, n, O_RDWR);
// The DVR device (will be opened and closed as needed): // The DVR device (will be opened and closed as needed):
@ -653,7 +654,7 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
if (ProvidesSource(Channel->Source()) && ProvidesCa(Channel->Ca())) { if (ProvidesSource(Channel->Source()) && ProvidesCa(Channel->Ca())) {
result = hasPriority; result = hasPriority;
if (Receiving()) { if (Priority >= 0 && Receiving()) {
if (dvbTuner->IsTunedTo(Channel)) { if (dvbTuner->IsTunedTo(Channel)) {
if (!HasPid(Channel->Vpid())) { if (!HasPid(Channel->Vpid())) {
#ifdef DO_MULTIPLE_RECORDINGS #ifdef DO_MULTIPLE_RECORDINGS
@ -869,6 +870,20 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode)
return true; return true;
} }
int64_t cDvbDevice::GetSTC(void)
{
if (fd_stc >= 0) {
struct dmx_stc stc;
stc.num = 0;
if (ioctl(fd_stc, DMX_GET_STC, &stc) == -1) {
esyslog("ERROR: stc %d: %m", CardIndex() + 1);
return -1;
}
return stc.stc / stc.base;
}
return -1;
}
void cDvbDevice::TrickSpeed(int Speed) void cDvbDevice::TrickSpeed(int Speed)
{ {
if (fd_video >= 0) if (fd_video >= 0)
@ -957,10 +972,14 @@ void cDvbDevice::StillPicture(const uchar *Data, int Length)
// skip header extension // skip header extension
if ((Data[i + 6] & 0xC0) == 0x80) { if ((Data[i + 6] & 0xC0) == 0x80) {
// MPEG-2 PES header // MPEG-2 PES header
if (Data[i + 8] >= Length)
break;
offs += 3; offs += 3;
offs += Data[i + 8]; offs += Data[i + 8];
len -= 3; len -= 3;
len -= Data[i + 8]; len -= Data[i + 8];
if (len < 0 || offs + len > Length)
break;
} }
else { else {
// MPEG-1 PES header // MPEG-1 PES header
@ -968,19 +987,19 @@ void cDvbDevice::StillPicture(const uchar *Data, int Length)
offs++; offs++;
len--; len--;
} }
if ((Data[offs] & 0xC0) == 0x40) { if (offs <= Length - 2 && len >= 2 && (Data[offs] & 0xC0) == 0x40) {
offs += 2; offs += 2;
len -= 2; len -= 2;
} }
if ((Data[offs] & 0xF0) == 0x20) { if (offs <= Length - 5 && len >= 5 && (Data[offs] & 0xF0) == 0x20) {
offs += 5; offs += 5;
len -= 5; len -= 5;
} }
else if ((Data[offs] & 0xF0) == 0x30) { else if (offs <= Length - 10 && len >= 10 && (Data[offs] & 0xF0) == 0x30) {
offs += 10; offs += 10;
len -= 10; len -= 10;
} }
else if (Data[offs] == 0x0F) { else if (offs < Length && len > 0) {
offs++; offs++;
len--; len--;
} }

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: dvbdevice.h 1.23 2003/10/04 11:54:50 kls Exp $ * $Id: dvbdevice.h 1.23.1.1 2003/11/07 13:17:13 kls Exp $
*/ */
#ifndef __DVBDEVICE_H #ifndef __DVBDEVICE_H
@ -38,7 +38,7 @@ public:
///< \return True if any devices are available. ///< \return True if any devices are available.
private: private:
fe_type_t frontendType; fe_type_t frontendType;
int fd_osd, fd_audio, fd_video, fd_dvr; int fd_osd, fd_audio, fd_video, fd_dvr, fd_stc;
int OsdDeviceHandle(void) const { return fd_osd; } int OsdDeviceHandle(void) const { return fd_osd; }
protected: protected:
virtual void MakePrimaryDevice(bool On); virtual void MakePrimaryDevice(bool On);
@ -107,6 +107,7 @@ protected:
virtual bool CanReplay(void) const; virtual bool CanReplay(void) const;
virtual bool SetPlayMode(ePlayMode PlayMode); virtual bool SetPlayMode(ePlayMode PlayMode);
public: public:
virtual int64_t GetSTC(void);
virtual void TrickSpeed(int Speed); virtual void TrickSpeed(int Speed);
virtual void Clear(void); virtual void Clear(void);
virtual void Play(void); virtual void Play(void);

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: interface.c 1.65 2003/10/05 09:48:13 kls Exp $ * $Id: interface.c 1.65.1.1 2003/10/24 15:48:00 kls Exp $
*/ */
#include "interface.h" #include "interface.h"
@ -433,7 +433,7 @@ void cInterface::LearnKeys(void)
Clear(); Clear();
if (!rc) { if (!rc) {
Close(); Close();
return; continue;
} }
WriteText(1, 1, Headline); WriteText(1, 1, Headline);
WriteText(1, 3, tr("Phase 3: Saving key codes")); WriteText(1, 3, tr("Phase 3: Saving key codes"));

View File

@ -118,7 +118,6 @@ struct LIST *createVdrProgramInfos (unsigned char *siBuffer)
AddItemToText (Item->Text, AddItemToText (Item->Text,
VdrProgramInfo->ExtendedText); VdrProgramInfo->ExtendedText);
} }
GotVdrProgramInfo = 1;
} }
break; break;
@ -134,7 +133,6 @@ struct LIST *createVdrProgramInfos (unsigned char *siBuffer)
VdrProgramInfo->ContentNibble2 = VdrProgramInfo->ContentNibble2 =
GetContentContentNibble2(Descriptor, j); GetContentContentNibble2(Descriptor, j);
} }
GotVdrProgramInfo = 1;
} }
break; break;
@ -147,12 +145,12 @@ struct LIST *createVdrProgramInfos (unsigned char *siBuffer)
if (!strncmp (VdrProgramInfo->LanguageCode, if (!strncmp (VdrProgramInfo->LanguageCode,
Rating->LanguageCode, 3)) Rating->LanguageCode, 3))
VdrProgramInfo->Rating = Rating->Rating; VdrProgramInfo->Rating = Rating->Rating;
GotVdrProgramInfo = 1;
} }
break; break;
} }
} }
if (GotVdrProgramInfo) xAddTail (Result, VdrProgramInfo); if (GotVdrProgramInfo) xAddTail (Result, VdrProgramInfo);
else xMemFree (VdrProgramInfo);
} }
return (Result); return (Result);

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: recording.c 1.84 2003/10/17 14:36:58 kls Exp $ * $Id: recording.c 1.84.1.2 2003/11/08 15:25:35 kls Exp $
*/ */
#include "recording.h" #include "recording.h"
@ -46,7 +46,7 @@
#define SUMMARYFILESUFFIX "/summary.vdr" #define SUMMARYFILESUFFIX "/summary.vdr"
#define MARKSFILESUFFIX "/marks.vdr" #define MARKSFILESUFFIX "/marks.vdr"
#define FINDCMD "find %s -follow -type d -name '%s' 2> /dev/null" #define FINDCMD "cd '%s' && find '%s' -follow -type d -name '%s' 2> /dev/null"
#define MINDISKSPACE 1024 // MB #define MINDISKSPACE 1024 // MB
@ -621,7 +621,7 @@ bool cRecordings::Load(bool Deleted)
Clear(); Clear();
bool result = false; bool result = false;
char *cmd = NULL; char *cmd = NULL;
asprintf(&cmd, FINDCMD, VideoDirectory, Deleted ? "*" DELEXT : "*" RECEXT); asprintf(&cmd, FINDCMD, VideoDirectory, VideoDirectory, Deleted ? "*" DELEXT : "*" RECEXT);
FILE *p = popen(cmd, "r"); FILE *p = popen(cmd, "r");
if (p) { if (p) {
char *s; char *s;
@ -681,10 +681,8 @@ bool cMark::Parse(const char *s)
const char *p = strchr(s, ' '); const char *p = strchr(s, ' ');
if (p) { if (p) {
p = skipspace(p); p = skipspace(p);
if (*p) { if (*p)
comment = strdup(p); comment = strdup(p);
comment[strlen(comment) - 1] = 0; // strips trailing newline
}
} }
return true; return true;
} }

View File

@ -55,6 +55,15 @@ S76.5E Apstar
S78.5E Thaicom 2/3 S78.5E Thaicom 2/3
S80E Express 6A S80E Express 6A
S83E Insat 2E/3B S83E Insat 2E/3B
S100.5E Asiasat 2
S105.5E Asiasat 3S
S113E Palapa C2
S152E Optus B3
S156E Optus C1
S160E Optus B1
S166E PAS 8
S169E PAS 2
S180E Intelsat 701
S1W Thor 2/3 & Intelsat 707 S1W Thor 2/3 & Intelsat 707
S4W Amos 1 S4W Amos 1
@ -80,6 +89,17 @@ S53W Intelsat 706
S55.5W Intelsat 805 S55.5W Intelsat 805
S58W PAS 9 S58W PAS 9
S61.5W Echostar 3 S61.5W Echostar 3
S79W AMC5
S82W Nimiq 2
S87W AMC3
S91W Nimiq 1
S97W Telestar 5
S105W AMC2
S110W Echostar 6/8
S119W Echostar 7
S121W Echostar 9
S148W Echostar 1/2
S157W Echostar 4
# Cable # Cable