mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
9de29712ad | ||
|
277ac424d4 | ||
|
454b63416b | ||
|
a6809c5c7b | ||
|
eec1af5845 | ||
|
66a7ba2e88 | ||
|
e8db44547e | ||
|
30d9af07a8 | ||
|
327b4c35ac | ||
|
ccbebacc16 | ||
|
d8a8e37988 | ||
|
40a7b8505a | ||
|
514ee9e63a | ||
|
262c266637 |
18
CONTRIBUTORS
18
CONTRIBUTORS
@ -606,6 +606,7 @@ Thomas Sailer <sailer@scs.ch>
|
||||
Sven Goethel <sgoethel@jausoft.com>
|
||||
for making switching audio channels work without stopping/restarting the DMX
|
||||
for fixing initializing the highlight area in cDvbSpuDecoder
|
||||
for suggesting to add cDevice::GetSTC()
|
||||
|
||||
Jan Rieger <jan@ricomp.de>
|
||||
for suggestions and testing raw keyboard input
|
||||
@ -641,6 +642,9 @@ Torsten Herz <torsten.herz@web.de>
|
||||
to switch to an other channel
|
||||
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 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>
|
||||
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>
|
||||
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
36
HISTORY
@ -2433,3 +2433,39 @@ Video Disk Recorder Revision History
|
||||
full (suggested by Emil Naepflein).
|
||||
- Channel IDs are now checked when reading 'channels.conf' to avoid later
|
||||
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.
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
<center><h1>The VDR Plugin System</h1></center>
|
||||
|
||||
<center><b>Version 1.2</b></center>
|
||||
<center><b>Version 1.2.6</b></center>
|
||||
<p>
|
||||
<center>
|
||||
Copyright © 2003 Klaus Schmidinger<br>
|
||||
@ -14,6 +14,10 @@ Copyright © 2003 Klaus Schmidinger<br>
|
||||
<a href="http://www.cadsoft.de/vdr">www.cadsoft.de/vdr</a>
|
||||
</center>
|
||||
<p>
|
||||
<!--X1.1.32--><table width=100%><tr><td bgcolor=#FF0000> </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
|
||||
to be added to the program by implementing a dynamically loadable library file.
|
||||
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 CanReplay(void) const;
|
||||
virtual bool SetPlayMode(ePlayMode PlayMode);
|
||||
<!--X1.1.32--><table width=100%><tr><td bgcolor=#FF0000> </td><td width=100%>
|
||||
virtual int64_t GetSTC(void);
|
||||
<!--X1.1.32--></td></tr></table>
|
||||
virtual void TrickSpeed(int Speed);
|
||||
virtual void Clear(void);
|
||||
virtual void Play(void);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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
|
||||
@ -119,9 +119,9 @@ public:
|
||||
int Transmission(void) const { return transmission; }
|
||||
int Guard(void) const { return guard; }
|
||||
int Hierarchy(void) const { return hierarchy; }
|
||||
bool IsCable(void) { return (source & cSource::st_Mask) == cSource::stCable; }
|
||||
bool IsSat(void) { return (source & cSource::st_Mask) == cSource::stSat; }
|
||||
bool IsTerr(void) { return (source & cSource::st_Mask) == cSource::stTerr; }
|
||||
bool IsCable(void) const { return (source & cSource::st_Mask) == cSource::stCable; }
|
||||
bool IsSat(void) const { return (source & cSource::st_Mask) == cSource::stSat; }
|
||||
bool IsTerr(void) const { return (source & cSource::st_Mask) == cSource::stTerr; }
|
||||
tChannelID GetChannelID(void) const;
|
||||
};
|
||||
|
||||
|
54
ci.c
54
ci.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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
|
||||
@ -1004,15 +1004,15 @@ bool cCiDateTime::Process(int Length, const uint8_t *Data)
|
||||
class cCiMMI : public cCiSession {
|
||||
private:
|
||||
char *GetText(int &Length, const uint8_t **Data);
|
||||
cCiMenu *menu;
|
||||
cCiEnquiry *enquiry;
|
||||
cCiMenu *menu, *fetchedMenu;
|
||||
cCiEnquiry *enquiry, *fetchedEnquiry;
|
||||
public:
|
||||
cCiMMI(int SessionId, cCiTransportConnection *Tc);
|
||||
virtual ~cCiMMI();
|
||||
virtual bool Process(int Length = 0, const uint8_t *Data = NULL);
|
||||
virtual bool HasUserIO(void) { return menu || enquiry; }
|
||||
cCiMenu *Menu(void);
|
||||
cCiEnquiry *Enquiry(void);
|
||||
cCiMenu *Menu(bool Clear = false);
|
||||
cCiEnquiry *Enquiry(bool Clear = false);
|
||||
bool SendMenuAnswer(uint8_t Selection);
|
||||
bool SendAnswer(const char *Text);
|
||||
};
|
||||
@ -1021,13 +1021,21 @@ cCiMMI::cCiMMI(int SessionId, cCiTransportConnection *Tc)
|
||||
:cCiSession(SessionId, RI_MMI, Tc)
|
||||
{
|
||||
dbgprotocol("New MMI (session id %d)\n", SessionId);
|
||||
menu = NULL;
|
||||
enquiry = NULL;
|
||||
menu = fetchedMenu = NULL;
|
||||
enquiry = fetchedEnquiry = NULL;
|
||||
}
|
||||
|
||||
cCiMMI::~cCiMMI()
|
||||
{
|
||||
if (fetchedMenu) {
|
||||
cMutexLock MutexLock(&fetchedMenu->mutex);
|
||||
fetchedMenu->mmi = NULL;
|
||||
}
|
||||
delete menu;
|
||||
if (fetchedEnquiry) {
|
||||
cMutexLock MutexLock(&fetchedEnquiry->mutex);
|
||||
fetchedEnquiry->mmi = NULL;
|
||||
}
|
||||
delete enquiry;
|
||||
}
|
||||
|
||||
@ -1123,18 +1131,26 @@ bool cCiMMI::Process(int Length, const uint8_t *Data)
|
||||
return true;
|
||||
}
|
||||
|
||||
cCiMenu *cCiMMI::Menu(void)
|
||||
cCiMenu *cCiMMI::Menu(bool Clear)
|
||||
{
|
||||
cCiMenu *m = menu;
|
||||
menu = NULL;
|
||||
return m;
|
||||
if (Clear)
|
||||
fetchedMenu = NULL;
|
||||
else if (menu) {
|
||||
fetchedMenu = menu;
|
||||
menu = NULL;
|
||||
}
|
||||
return fetchedMenu;
|
||||
}
|
||||
|
||||
cCiEnquiry *cCiMMI::Enquiry(void)
|
||||
cCiEnquiry *cCiMMI::Enquiry(bool Clear)
|
||||
{
|
||||
cCiEnquiry *e = enquiry;
|
||||
enquiry = NULL;
|
||||
return e;
|
||||
if (Clear)
|
||||
fetchedEnquiry = NULL;
|
||||
else if (enquiry) {
|
||||
fetchedEnquiry = enquiry;
|
||||
enquiry = NULL;
|
||||
}
|
||||
return fetchedEnquiry;
|
||||
}
|
||||
|
||||
bool cCiMMI::SendMenuAnswer(uint8_t Selection)
|
||||
@ -1170,6 +1186,9 @@ cCiMenu::cCiMenu(cCiMMI *MMI, bool Selectable)
|
||||
|
||||
cCiMenu::~cCiMenu()
|
||||
{
|
||||
cMutexLock MutexLock(&mutex);
|
||||
if (mmi)
|
||||
mmi->Menu(true);
|
||||
free(titleText);
|
||||
free(subTitleText);
|
||||
free(bottomText);
|
||||
@ -1188,6 +1207,7 @@ bool cCiMenu::AddEntry(char *s)
|
||||
|
||||
bool cCiMenu::Select(int Index)
|
||||
{
|
||||
cMutexLock MutexLock(&mutex);
|
||||
if (mmi && -1 <= Index && Index < numEntries)
|
||||
return mmi->SendMenuAnswer(Index + 1);
|
||||
return false;
|
||||
@ -1210,11 +1230,15 @@ cCiEnquiry::cCiEnquiry(cCiMMI *MMI)
|
||||
|
||||
cCiEnquiry::~cCiEnquiry()
|
||||
{
|
||||
cMutexLock MutexLock(&mutex);
|
||||
if (mmi)
|
||||
mmi->Enquiry(true);
|
||||
free(text);
|
||||
}
|
||||
|
||||
bool cCiEnquiry::Reply(const char *s)
|
||||
{
|
||||
cMutexLock MutexLock(&mutex);
|
||||
return mmi ? mmi->SendAnswer(s) : false;
|
||||
}
|
||||
|
||||
|
4
ci.h
4
ci.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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
|
||||
@ -21,6 +21,7 @@ class cCiMenu {
|
||||
private:
|
||||
enum { MAX_CIMENU_ENTRIES = 64 }; ///< XXX is there a specified maximum?
|
||||
cCiMMI *mmi;
|
||||
cMutex mutex;
|
||||
bool selectable;
|
||||
char *titleText;
|
||||
char *subTitleText;
|
||||
@ -45,6 +46,7 @@ class cCiEnquiry {
|
||||
friend class cCiMMI;
|
||||
private:
|
||||
cCiMMI *mmi;
|
||||
cMutex mutex;
|
||||
char *text;
|
||||
bool blind;
|
||||
int expectedLength;
|
||||
|
4
config.h
4
config.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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
|
||||
@ -19,7 +19,7 @@
|
||||
#include "device.h"
|
||||
#include "tools.h"
|
||||
|
||||
#define VDRVERSION "1.2.6pre1"
|
||||
#define VDRVERSION "1.2.6"
|
||||
#define VDRVERSNUM 10206 // Version * 10000 + Major * 100 + Minor
|
||||
|
||||
#define MAXPRIORITY 99
|
||||
|
7
device.c
7
device.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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"
|
||||
@ -498,6 +498,11 @@ bool cDevice::SetPlayMode(ePlayMode PlayMode)
|
||||
return false;
|
||||
}
|
||||
|
||||
int64_t cDevice::GetSTC(void)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
void cDevice::TrickSpeed(int Speed)
|
||||
{
|
||||
}
|
||||
|
6
device.h
6
device.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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
|
||||
@ -320,6 +320,10 @@ protected:
|
||||
///< Sets the device into the given play mode.
|
||||
///< \return true if the operation was successful.
|
||||
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);
|
||||
///< Sets the device into a mode where replay is done slower.
|
||||
///< Every single frame shall then be displayed the given number of
|
||||
|
31
dvbdevice.c
31
dvbdevice.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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"
|
||||
@ -326,6 +326,7 @@ cDvbDevice::cDvbDevice(int n)
|
||||
fd_osd = DvbOpen(DEV_DVB_OSD, n, O_RDWR);
|
||||
fd_video = DvbOpen(DEV_DVB_VIDEO, 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):
|
||||
|
||||
@ -653,7 +654,7 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
|
||||
|
||||
if (ProvidesSource(Channel->Source()) && ProvidesCa(Channel->Ca())) {
|
||||
result = hasPriority;
|
||||
if (Receiving()) {
|
||||
if (Priority >= 0 && Receiving()) {
|
||||
if (dvbTuner->IsTunedTo(Channel)) {
|
||||
if (!HasPid(Channel->Vpid())) {
|
||||
#ifdef DO_MULTIPLE_RECORDINGS
|
||||
@ -869,6 +870,20 @@ bool cDvbDevice::SetPlayMode(ePlayMode PlayMode)
|
||||
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)
|
||||
{
|
||||
if (fd_video >= 0)
|
||||
@ -957,10 +972,14 @@ void cDvbDevice::StillPicture(const uchar *Data, int Length)
|
||||
// skip header extension
|
||||
if ((Data[i + 6] & 0xC0) == 0x80) {
|
||||
// MPEG-2 PES header
|
||||
if (Data[i + 8] >= Length)
|
||||
break;
|
||||
offs += 3;
|
||||
offs += Data[i + 8];
|
||||
len -= 3;
|
||||
len -= Data[i + 8];
|
||||
if (len < 0 || offs + len > Length)
|
||||
break;
|
||||
}
|
||||
else {
|
||||
// MPEG-1 PES header
|
||||
@ -968,19 +987,19 @@ void cDvbDevice::StillPicture(const uchar *Data, int Length)
|
||||
offs++;
|
||||
len--;
|
||||
}
|
||||
if ((Data[offs] & 0xC0) == 0x40) {
|
||||
if (offs <= Length - 2 && len >= 2 && (Data[offs] & 0xC0) == 0x40) {
|
||||
offs += 2;
|
||||
len -= 2;
|
||||
}
|
||||
if ((Data[offs] & 0xF0) == 0x20) {
|
||||
if (offs <= Length - 5 && len >= 5 && (Data[offs] & 0xF0) == 0x20) {
|
||||
offs += 5;
|
||||
len -= 5;
|
||||
}
|
||||
else if ((Data[offs] & 0xF0) == 0x30) {
|
||||
else if (offs <= Length - 10 && len >= 10 && (Data[offs] & 0xF0) == 0x30) {
|
||||
offs += 10;
|
||||
len -= 10;
|
||||
}
|
||||
else if (Data[offs] == 0x0F) {
|
||||
else if (offs < Length && len > 0) {
|
||||
offs++;
|
||||
len--;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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
|
||||
@ -38,7 +38,7 @@ public:
|
||||
///< \return True if any devices are available.
|
||||
private:
|
||||
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; }
|
||||
protected:
|
||||
virtual void MakePrimaryDevice(bool On);
|
||||
@ -107,6 +107,7 @@ protected:
|
||||
virtual bool CanReplay(void) const;
|
||||
virtual bool SetPlayMode(ePlayMode PlayMode);
|
||||
public:
|
||||
virtual int64_t GetSTC(void);
|
||||
virtual void TrickSpeed(int Speed);
|
||||
virtual void Clear(void);
|
||||
virtual void Play(void);
|
||||
|
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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"
|
||||
@ -433,7 +433,7 @@ void cInterface::LearnKeys(void)
|
||||
Clear();
|
||||
if (!rc) {
|
||||
Close();
|
||||
return;
|
||||
continue;
|
||||
}
|
||||
WriteText(1, 1, Headline);
|
||||
WriteText(1, 3, tr("Phase 3: Saving key codes"));
|
||||
|
@ -118,7 +118,6 @@ struct LIST *createVdrProgramInfos (unsigned char *siBuffer)
|
||||
AddItemToText (Item->Text,
|
||||
VdrProgramInfo->ExtendedText);
|
||||
}
|
||||
GotVdrProgramInfo = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -134,7 +133,6 @@ struct LIST *createVdrProgramInfos (unsigned char *siBuffer)
|
||||
VdrProgramInfo->ContentNibble2 =
|
||||
GetContentContentNibble2(Descriptor, j);
|
||||
}
|
||||
GotVdrProgramInfo = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -147,12 +145,12 @@ struct LIST *createVdrProgramInfos (unsigned char *siBuffer)
|
||||
if (!strncmp (VdrProgramInfo->LanguageCode,
|
||||
Rating->LanguageCode, 3))
|
||||
VdrProgramInfo->Rating = Rating->Rating;
|
||||
GotVdrProgramInfo = 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (GotVdrProgramInfo) xAddTail (Result, VdrProgramInfo);
|
||||
else xMemFree (VdrProgramInfo);
|
||||
}
|
||||
|
||||
return (Result);
|
||||
|
10
recording.c
10
recording.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* 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"
|
||||
@ -46,7 +46,7 @@
|
||||
#define SUMMARYFILESUFFIX "/summary.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
|
||||
|
||||
@ -621,7 +621,7 @@ bool cRecordings::Load(bool Deleted)
|
||||
Clear();
|
||||
bool result = false;
|
||||
char *cmd = NULL;
|
||||
asprintf(&cmd, FINDCMD, VideoDirectory, Deleted ? "*" DELEXT : "*" RECEXT);
|
||||
asprintf(&cmd, FINDCMD, VideoDirectory, VideoDirectory, Deleted ? "*" DELEXT : "*" RECEXT);
|
||||
FILE *p = popen(cmd, "r");
|
||||
if (p) {
|
||||
char *s;
|
||||
@ -681,10 +681,8 @@ bool cMark::Parse(const char *s)
|
||||
const char *p = strchr(s, ' ');
|
||||
if (p) {
|
||||
p = skipspace(p);
|
||||
if (*p) {
|
||||
if (*p)
|
||||
comment = strdup(p);
|
||||
comment[strlen(comment) - 1] = 0; // strips trailing newline
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
20
sources.conf
20
sources.conf
@ -55,6 +55,15 @@ S76.5E Apstar
|
||||
S78.5E Thaicom 2/3
|
||||
S80E Express 6A
|
||||
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
|
||||
S4W Amos 1
|
||||
@ -80,6 +89,17 @@ S53W Intelsat 706
|
||||
S55.5W Intelsat 805
|
||||
S58W PAS 9
|
||||
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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user