mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
The 'summary' field of a timer definition has been renamed to 'aux'
This commit is contained in:
parent
6b74723336
commit
bc2e59909f
11
HISTORY
11
HISTORY
@ -4371,3 +4371,14 @@ Video Disk Recorder Revision History
|
|||||||
in libsi/descriptor.c obsolete (thanks to Marcel Wiesweg).
|
in libsi/descriptor.c obsolete (thanks to Marcel Wiesweg).
|
||||||
- The "Ok" key in the "Jump" mode of the replay progress display now confirms the
|
- The "Ok" key in the "Jump" mode of the replay progress display now confirms the
|
||||||
jump instead of closing the display (thanks to Christoph Haubrich).
|
jump instead of closing the display (thanks to Christoph Haubrich).
|
||||||
|
- The 'summary' field of a timer definition has been renamed to 'aux', and is now
|
||||||
|
only used for external applications to store auxiliary information with a timer,
|
||||||
|
which has no meaning whatsoever to VDR itself.
|
||||||
|
The contents of the 'aux' field of a timer is copied into the recording's
|
||||||
|
'info.vdr' file, using the tag character '@'.
|
||||||
|
- The description of a recording is now taken exclusively from its related EPG
|
||||||
|
data. If an application wants to use a different description it needs to set
|
||||||
|
it with SVDRP/PUTE and use table ID 0x00, so that it won't be overwritten (as
|
||||||
|
a side effect, however, this also disables VPS for such an event).
|
||||||
|
- There is no more "Summary" menu when pressing "Ok" in the "Timers" menu.
|
||||||
|
The "Ok" key now always opens the "Edit timer" menu.
|
||||||
|
24
i18n.c
24
i18n.c
@ -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: i18n.c 1.247 2006/02/04 14:17:54 kls Exp $
|
* $Id: i18n.c 1.248 2006/02/25 12:07:27 kls Exp $
|
||||||
*
|
*
|
||||||
* Translations provided by:
|
* Translations provided by:
|
||||||
*
|
*
|
||||||
@ -569,28 +569,6 @@ const tI18nPhrase Phrases[] = {
|
|||||||
"Hvad vises som det næste?",
|
"Hvad vises som det næste?",
|
||||||
"Následující program",
|
"Následující program",
|
||||||
},
|
},
|
||||||
{ "Summary",
|
|
||||||
"Inhalt",
|
|
||||||
"Vsebina",
|
|
||||||
"Sommario",
|
|
||||||
"Inhoud",
|
|
||||||
"Resumo",
|
|
||||||
"Résumé",
|
|
||||||
"Sammendrag",
|
|
||||||
"Yhteenveto",
|
|
||||||
"Podsumowanie",
|
|
||||||
"Resumen",
|
|
||||||
"Ðåñéå÷üìåíï",
|
|
||||||
"Sammanfattning",
|
|
||||||
"Cuprins",
|
|
||||||
"Tartalom",
|
|
||||||
"Resum",
|
|
||||||
"¾ßØáÐÝØÕ",
|
|
||||||
"Sadr¾aj",
|
|
||||||
"Ülevaade",
|
|
||||||
"Omtale",
|
|
||||||
"Obsah",
|
|
||||||
},
|
|
||||||
// Button texts (should not be more than 10 characters!):
|
// Button texts (should not be more than 10 characters!):
|
||||||
{ "Button$Edit",
|
{ "Button$Edit",
|
||||||
"Editieren",
|
"Editieren",
|
||||||
|
17
menu.c
17
menu.c
@ -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.416 2006/02/25 10:27:03 kls Exp $
|
* $Id: menu.c 1.417 2006/02/25 12:09:22 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -776,7 +776,6 @@ private:
|
|||||||
eOSState Delete(void);
|
eOSState Delete(void);
|
||||||
eOSState OnOff(void);
|
eOSState OnOff(void);
|
||||||
virtual void Move(int From, int To);
|
virtual void Move(int From, int To);
|
||||||
eOSState Summary(void);
|
|
||||||
cTimer *CurrentTimer(void);
|
cTimer *CurrentTimer(void);
|
||||||
public:
|
public:
|
||||||
cMenuTimers(void);
|
cMenuTimers(void);
|
||||||
@ -870,16 +869,6 @@ void cMenuTimers::Move(int From, int To)
|
|||||||
isyslog("timer %d moved to %d", From + 1, To + 1);
|
isyslog("timer %d moved to %d", From + 1, To + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
eOSState cMenuTimers::Summary(void)
|
|
||||||
{
|
|
||||||
if (HasSubMenu() || Count() == 0)
|
|
||||||
return osContinue;
|
|
||||||
cTimer *ti = CurrentTimer();
|
|
||||||
if (ti && !isempty(ti->Summary()))
|
|
||||||
return AddSubMenu(new cMenuText(tr("Summary"), ti->Summary()));
|
|
||||||
return Edit(); // convenience for people not using the Summary feature ;-)
|
|
||||||
}
|
|
||||||
|
|
||||||
eOSState cMenuTimers::ProcessKey(eKeys Key)
|
eOSState cMenuTimers::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
int TimerNumber = HasSubMenu() ? Count() : -1;
|
int TimerNumber = HasSubMenu() ? Count() : -1;
|
||||||
@ -887,8 +876,8 @@ eOSState cMenuTimers::ProcessKey(eKeys Key)
|
|||||||
|
|
||||||
if (state == osUnknown) {
|
if (state == osUnknown) {
|
||||||
switch (Key) {
|
switch (Key) {
|
||||||
case kOk: return Summary();
|
case kOk: return Edit();
|
||||||
case kRed: return Edit();
|
case kRed: return Edit();//XXX
|
||||||
case kGreen: return New();
|
case kGreen: return New();
|
||||||
case kYellow: return Delete();
|
case kYellow: return Delete();
|
||||||
case kBlue: if (Setup.SortTimers)
|
case kBlue: if (Setup.SortTimers)
|
||||||
|
21
recording.c
21
recording.c
@ -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.137 2006/02/19 13:09:29 kls Exp $
|
* $Id: recording.c 1.138 2006/02/25 11:49:48 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "recording.h"
|
#include "recording.h"
|
||||||
@ -261,6 +261,7 @@ cRecordingInfo::cRecordingInfo(const cChannel *Channel, const cEvent *Event)
|
|||||||
channelID = Channel ? Channel->GetChannelID() : tChannelID::InvalidID;
|
channelID = Channel ? Channel->GetChannelID() : tChannelID::InvalidID;
|
||||||
ownEvent = Event ? NULL : new cEvent(0);
|
ownEvent = Event ? NULL : new cEvent(0);
|
||||||
event = ownEvent ? ownEvent : Event;
|
event = ownEvent ? ownEvent : Event;
|
||||||
|
aux = NULL;
|
||||||
if (Channel) {
|
if (Channel) {
|
||||||
// Since the EPG data's component records can carry only a single
|
// Since the EPG data's component records can carry only a single
|
||||||
// language code, let's see whether the channel's PID data has
|
// language code, let's see whether the channel's PID data has
|
||||||
@ -299,6 +300,7 @@ cRecordingInfo::cRecordingInfo(const cChannel *Channel, const cEvent *Event)
|
|||||||
cRecordingInfo::~cRecordingInfo()
|
cRecordingInfo::~cRecordingInfo()
|
||||||
{
|
{
|
||||||
delete ownEvent;
|
delete ownEvent;
|
||||||
|
free(aux);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cRecordingInfo::SetData(const char *Title, const char *ShortText, const char *Description)
|
void cRecordingInfo::SetData(const char *Title, const char *ShortText, const char *Description)
|
||||||
@ -311,6 +313,12 @@ void cRecordingInfo::SetData(const char *Title, const char *ShortText, const cha
|
|||||||
((cEvent *)event)->SetDescription(Description);
|
((cEvent *)event)->SetDescription(Description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cRecordingInfo::SetAux(const char *Aux)
|
||||||
|
{
|
||||||
|
free(aux);
|
||||||
|
aux = Aux ? strdup(Aux) : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
bool cRecordingInfo::Read(FILE *f)
|
bool cRecordingInfo::Read(FILE *f)
|
||||||
{
|
{
|
||||||
if (ownEvent) {
|
if (ownEvent) {
|
||||||
@ -329,6 +337,9 @@ bool cRecordingInfo::Read(FILE *f)
|
|||||||
channelID = tChannelID::FromString(t);
|
channelID = tChannelID::FromString(t);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case '@': free(aux);
|
||||||
|
aux = strdup(t);
|
||||||
|
break;
|
||||||
default: if (!ownEvent->Parse(s)) {
|
default: if (!ownEvent->Parse(s)) {
|
||||||
esyslog("ERROR: EPG data problem in line %d", line);
|
esyslog("ERROR: EPG data problem in line %d", line);
|
||||||
return false;
|
return false;
|
||||||
@ -346,6 +357,8 @@ bool cRecordingInfo::Write(FILE *f, const char *Prefix) const
|
|||||||
if (channelID.Valid())
|
if (channelID.Valid())
|
||||||
fprintf(f, "%sC %s\n", Prefix, *channelID.ToString());
|
fprintf(f, "%sC %s\n", Prefix, *channelID.ToString());
|
||||||
event->Dump(f, Prefix, true);
|
event->Dump(f, Prefix, true);
|
||||||
|
if (aux)
|
||||||
|
fprintf(f, "%s@ %s\n", Prefix, aux);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -497,11 +510,7 @@ cRecording::cRecording(cTimer *Timer, const cEvent *Event)
|
|||||||
lifetime = Timer->Lifetime();
|
lifetime = Timer->Lifetime();
|
||||||
// handle info:
|
// handle info:
|
||||||
info = new cRecordingInfo(Timer->Channel(), Event);
|
info = new cRecordingInfo(Timer->Channel(), Event);
|
||||||
// this is a somewhat ugly hack to get the 'summary' information from the
|
info->SetAux(Timer->Aux());
|
||||||
// timer into the recording info, but it saves us from having to actually
|
|
||||||
// copy the entire event data:
|
|
||||||
if (!isempty(Timer->Summary()))
|
|
||||||
info->SetData(isempty(info->Title()) ? Timer->File() : NULL, NULL, Timer->Summary());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cRecording::cRecording(const char *FileName)
|
cRecording::cRecording(const char *FileName)
|
||||||
|
@ -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.h 1.51 2006/02/18 16:03:40 kls Exp $
|
* $Id: recording.h 1.52 2006/02/25 10:51:15 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __RECORDING_H
|
#ifndef __RECORDING_H
|
||||||
@ -44,14 +44,17 @@ private:
|
|||||||
tChannelID channelID;
|
tChannelID channelID;
|
||||||
const cEvent *event;
|
const cEvent *event;
|
||||||
cEvent *ownEvent;
|
cEvent *ownEvent;
|
||||||
|
char *aux;
|
||||||
cRecordingInfo(const cChannel *Channel = NULL, const cEvent *Event = NULL);
|
cRecordingInfo(const cChannel *Channel = NULL, const cEvent *Event = NULL);
|
||||||
void SetData(const char *Title, const char *ShortText, const char *Description);
|
void SetData(const char *Title, const char *ShortText, const char *Description);
|
||||||
|
void SetAux(const char *Aux);
|
||||||
public:
|
public:
|
||||||
~cRecordingInfo();
|
~cRecordingInfo();
|
||||||
const char *Title(void) const { return event->Title(); }
|
const char *Title(void) const { return event->Title(); }
|
||||||
const char *ShortText(void) const { return event->ShortText(); }
|
const char *ShortText(void) const { return event->ShortText(); }
|
||||||
const char *Description(void) const { return event->Description(); }
|
const char *Description(void) const { return event->Description(); }
|
||||||
const cComponents *Components(void) const { return event->Components(); }
|
const cComponents *Components(void) const { return event->Components(); }
|
||||||
|
const char *Aux(void) const { return aux; }
|
||||||
bool Read(FILE *f);
|
bool Read(FILE *f);
|
||||||
bool Write(FILE *f, const char *Prefix = "") const;
|
bool Write(FILE *f, const char *Prefix = "") const;
|
||||||
};
|
};
|
||||||
|
29
timers.c
29
timers.c
@ -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: timers.c 1.46 2006/02/03 15:20:14 kls Exp $
|
* $Id: timers.c 1.47 2006/02/25 10:44:50 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
@ -41,7 +41,7 @@ cTimer::cTimer(bool Instant, bool Pause, cChannel *Channel)
|
|||||||
priority = Pause ? Setup.PausePriority : Setup.DefaultPriority;
|
priority = Pause ? Setup.PausePriority : Setup.DefaultPriority;
|
||||||
lifetime = Pause ? Setup.PauseLifetime : Setup.DefaultLifetime;
|
lifetime = Pause ? Setup.PauseLifetime : Setup.DefaultLifetime;
|
||||||
*file = 0;
|
*file = 0;
|
||||||
summary = NULL;
|
aux = NULL;
|
||||||
event = NULL;
|
event = NULL;
|
||||||
if (Instant && channel)
|
if (Instant && channel)
|
||||||
snprintf(file, sizeof(file), "%s%s", Setup.MarkInstantRecord ? "@" : "", *Setup.NameInstantRecord ? Setup.NameInstantRecord : channel->Name());
|
snprintf(file, sizeof(file), "%s%s", Setup.MarkInstantRecord ? "@" : "", *Setup.NameInstantRecord ? Setup.NameInstantRecord : channel->Name());
|
||||||
@ -76,20 +76,20 @@ cTimer::cTimer(const cEvent *Event)
|
|||||||
const char *Title = Event->Title();
|
const char *Title = Event->Title();
|
||||||
if (!isempty(Title))
|
if (!isempty(Title))
|
||||||
strn0cpy(file, Event->Title(), sizeof(file));
|
strn0cpy(file, Event->Title(), sizeof(file));
|
||||||
summary = NULL;
|
aux = NULL;
|
||||||
event = Event;
|
event = Event;
|
||||||
}
|
}
|
||||||
|
|
||||||
cTimer::~cTimer()
|
cTimer::~cTimer()
|
||||||
{
|
{
|
||||||
free(summary);
|
free(aux);
|
||||||
}
|
}
|
||||||
|
|
||||||
cTimer& cTimer::operator= (const cTimer &Timer)
|
cTimer& cTimer::operator= (const cTimer &Timer)
|
||||||
{
|
{
|
||||||
memcpy(this, &Timer, sizeof(*this));
|
memcpy(this, &Timer, sizeof(*this));
|
||||||
if (summary)
|
if (aux)
|
||||||
summary = strdup(summary);
|
aux = strdup(aux);
|
||||||
event = NULL;
|
event = NULL;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
@ -109,9 +109,7 @@ cString cTimer::ToText(bool UseChannelID)
|
|||||||
{
|
{
|
||||||
char *buffer;
|
char *buffer;
|
||||||
strreplace(file, ':', '|');
|
strreplace(file, ':', '|');
|
||||||
strreplace(summary, '\n', '|');
|
asprintf(&buffer, "%u:%s:%s:%04d:%04d:%d:%d:%s:%s\n", flags, UseChannelID ? *Channel()->GetChannelID().ToString() : *itoa(Channel()->Number()), *PrintDay(day, weekdays), start, stop, priority, lifetime, file, aux ? aux : "");
|
||||||
asprintf(&buffer, "%u:%s:%s:%04d:%04d:%d:%d:%s:%s\n", flags, UseChannelID ? *Channel()->GetChannelID().ToString() : *itoa(Channel()->Number()), *PrintDay(day, weekdays), start, stop, priority, lifetime, file, summary ? summary : "");
|
|
||||||
strreplace(summary, '|', '\n');
|
|
||||||
strreplace(file, '|', ':');
|
strreplace(file, '|', ':');
|
||||||
return cString(buffer, true);
|
return cString(buffer, true);
|
||||||
}
|
}
|
||||||
@ -226,8 +224,8 @@ bool cTimer::Parse(const char *s)
|
|||||||
char *channelbuffer = NULL;
|
char *channelbuffer = NULL;
|
||||||
char *daybuffer = NULL;
|
char *daybuffer = NULL;
|
||||||
char *filebuffer = NULL;
|
char *filebuffer = NULL;
|
||||||
free(summary);
|
free(aux);
|
||||||
summary = NULL;
|
aux = NULL;
|
||||||
//XXX Apparently sscanf() doesn't work correctly if the last %a argument
|
//XXX Apparently sscanf() doesn't work correctly if the last %a argument
|
||||||
//XXX results in an empty string (this first occured when the EIT gathering
|
//XXX results in an empty string (this first occured when the EIT gathering
|
||||||
//XXX was put into a separate thread - don't know why this happens...
|
//XXX was put into a separate thread - don't know why this happens...
|
||||||
@ -244,17 +242,16 @@ bool cTimer::Parse(const char *s)
|
|||||||
s = s2;
|
s = s2;
|
||||||
}
|
}
|
||||||
bool result = false;
|
bool result = false;
|
||||||
if (8 <= sscanf(s, "%u :%a[^:]:%a[^:]:%d :%d :%d :%d :%a[^:\n]:%a[^\n]", &flags, &channelbuffer, &daybuffer, &start, &stop, &priority, &lifetime, &filebuffer, &summary)) {
|
if (8 <= sscanf(s, "%u :%a[^:]:%a[^:]:%d :%d :%d :%d :%a[^:\n]:%a[^\n]", &flags, &channelbuffer, &daybuffer, &start, &stop, &priority, &lifetime, &filebuffer, &aux)) {
|
||||||
ClrFlags(tfRecording);
|
ClrFlags(tfRecording);
|
||||||
if (summary && !*skipspace(summary)) {
|
if (aux && !*skipspace(aux)) {
|
||||||
free(summary);
|
free(aux);
|
||||||
summary = NULL;
|
aux = NULL;
|
||||||
}
|
}
|
||||||
//TODO add more plausibility checks
|
//TODO add more plausibility checks
|
||||||
result = ParseDay(daybuffer, day, weekdays);
|
result = ParseDay(daybuffer, day, weekdays);
|
||||||
strn0cpy(file, filebuffer, MaxFileName);
|
strn0cpy(file, filebuffer, MaxFileName);
|
||||||
strreplace(file, '|', ':');
|
strreplace(file, '|', ':');
|
||||||
strreplace(summary, '|', '\n');
|
|
||||||
if (isnumber(channelbuffer))
|
if (isnumber(channelbuffer))
|
||||||
channel = Channels.GetByNumber(atoi(channelbuffer));
|
channel = Channels.GetByNumber(atoi(channelbuffer));
|
||||||
else
|
else
|
||||||
|
6
timers.h
6
timers.h
@ -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: timers.h 1.24 2006/01/15 13:29:44 kls Exp $
|
* $Id: timers.h 1.25 2006/02/25 10:42:10 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __TIMERS_H
|
#ifndef __TIMERS_H
|
||||||
@ -38,7 +38,7 @@ private:
|
|||||||
int priority;
|
int priority;
|
||||||
int lifetime;
|
int lifetime;
|
||||||
char file[MaxFileName];
|
char file[MaxFileName];
|
||||||
char *summary;
|
char *aux;
|
||||||
const cEvent *event;
|
const cEvent *event;
|
||||||
public:
|
public:
|
||||||
cTimer(bool Instant = false, bool Pause = false, cChannel *Channel = NULL);
|
cTimer(bool Instant = false, bool Pause = false, cChannel *Channel = NULL);
|
||||||
@ -59,7 +59,7 @@ public:
|
|||||||
int Lifetime(void) const { return lifetime; }
|
int Lifetime(void) const { return lifetime; }
|
||||||
const char *File(void) const { return file; }
|
const char *File(void) const { return file; }
|
||||||
time_t FirstDay(void) const { return weekdays ? day : 0; }
|
time_t FirstDay(void) const { return weekdays ? day : 0; }
|
||||||
const char *Summary(void) const { return summary; }
|
const char *Aux(void) const { return aux; }
|
||||||
cString ToText(bool UseChannelID = false);
|
cString ToText(bool UseChannelID = false);
|
||||||
cString ToDescr(void) const;
|
cString ToDescr(void) const;
|
||||||
const cEvent *Event(void) const { return event; }
|
const cEvent *Event(void) const { return event; }
|
||||||
|
19
vdr.5
19
vdr.5
@ -8,7 +8,7 @@
|
|||||||
.\" 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.49 2006/02/18 15:59:00 kls Exp $
|
.\" $Id: vdr.5 1.50 2006/02/25 11:16:02 kls Exp $
|
||||||
.\"
|
.\"
|
||||||
.TH vdr 5 "19 Feb 2006" "1.3.43" "Video Disk Recorder Files"
|
.TH vdr 5 "19 Feb 2006" "1.3.43" "Video Disk Recorder Files"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@ -321,11 +321,11 @@ recording (if that data is available). If at the time of recording either
|
|||||||
of these cannot be determined, \fBTITLE\fR will default to the channel name, and
|
of these cannot be determined, \fBTITLE\fR will default to the channel name, and
|
||||||
\fBEPISODE\fR will default to a blank.
|
\fBEPISODE\fR will default to a blank.
|
||||||
.TP
|
.TP
|
||||||
.B Summary
|
.B Auxiliary data
|
||||||
Arbitrary text that describes the recording made by this timer.
|
An arbitrary string that can be used by external applications to store any
|
||||||
Any newline characters in the summary have to be replaced by '|', and
|
kind of data related to this timer. The string must not contain any newline
|
||||||
the summary may contain ':' characters. If this field is not empty, its
|
characters. If this field is not empty, its contents will be written into the
|
||||||
contents will be written into the \fIinfo.vdr\fR file of the recording.
|
\fIinfo.vdr\fR file of the recording with the '@' tag.
|
||||||
.SS SOURCES
|
.SS SOURCES
|
||||||
The file \fIsources.conf\fR defines the codes to be used in the \fBSource\fR field
|
The file \fIsources.conf\fR defines the codes to be used in the \fBSource\fR field
|
||||||
of channels in \fIchannels.conf\fR and assigns descriptive texts to them.
|
of channels in \fIchannels.conf\fR and assigns descriptive texts to them.
|
||||||
@ -567,8 +567,9 @@ actual contents of this file.
|
|||||||
.SS INFO
|
.SS INFO
|
||||||
The file \fIinfo.vdr\fR (if present in a recording directory) contains
|
The file \fIinfo.vdr\fR (if present in a recording directory) contains
|
||||||
a description of the recording, derived from the EPG data at recording time
|
a description of the recording, derived from the EPG data at recording time
|
||||||
(if such data was available) or the \fBSummary\fR field of the corresponding
|
(if such data was available). The \fBAux\fR field of the corresponding
|
||||||
timer. This is a plain ASCII file and contains tagged lines like the \fBEPG DATA\fR
|
timer (if given) is copied into this file, using the '@' tag.
|
||||||
|
This is a plain ASCII file and contains tagged lines like the \fBEPG DATA\fR
|
||||||
file (see the description of the \fIepg.data\fR file). Note that the tags
|
file (see the description of the \fIepg.data\fR file). Note that the tags
|
||||||
c, E, e and V will not appear in an \fIinfo.vdr\fR file.
|
c, E, e and V will not appear in an \fIinfo.vdr\fR file.
|
||||||
.SS RESUME
|
.SS RESUME
|
||||||
@ -626,6 +627,8 @@ All other tags are optional (although every event
|
|||||||
should at least have a \fBT\fR entry).
|
should at least have a \fBT\fR entry).
|
||||||
There may be several \fBX\fR tags, depending on the number of tracks (video, audio etc.)
|
There may be several \fBX\fR tags, depending on the number of tracks (video, audio etc.)
|
||||||
the event provides.
|
the event provides.
|
||||||
|
The special tag character \fB@\fR is used to mark the \fBauxiliary data\fR from
|
||||||
|
a timer definition in the \fIinfo.vdr\fR file.
|
||||||
|
|
||||||
.TS
|
.TS
|
||||||
tab (@);
|
tab (@);
|
||||||
|
Loading…
Reference in New Issue
Block a user