Limiting Subtitle length when creating a recording file name from EPG data

This commit is contained in:
Klaus Schmidinger 2003-01-06 15:37:33 +01:00
parent 4b1440737a
commit bcb0aca954
2 changed files with 14 additions and 1 deletions

View File

@ -1913,3 +1913,6 @@ Video Disk Recorder Revision History
2002-01-06 or higher (with the new firmware supporting the "Link Layer" protocol). 2002-01-06 or higher (with the new firmware supporting the "Link Layer" protocol).
- Added an EPG bugfix that moves the Subtitle data to the Extended Description in - Added an EPG bugfix that moves the Subtitle data to the Extended Description in
case the latter is empty and the Subtitle exceeds some useful length. case the latter is empty and the Subtitle exceeds some useful length.
- Since several channels put very long strings into the Subtitle part of their
EPG data, that string is now limited in length when used in a recording's
file name.

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.71 2002/12/23 12:41:20 kls Exp $ * $Id: recording.c 1.72 2003/01/06 15:36:12 kls Exp $
*/ */
#include "recording.h" #include "recording.h"
@ -58,6 +58,8 @@
#define TIMERMACRO_TITLE "TITLE" #define TIMERMACRO_TITLE "TITLE"
#define TIMERMACRO_EPISODE "EPISODE" #define TIMERMACRO_EPISODE "EPISODE"
#define MAX_SUBTITLE_LENGTH 40
void RemoveDeletedRecordings(void) void RemoveDeletedRecordings(void)
{ {
static time_t LastRemoveCheck = 0; static time_t LastRemoveCheck = 0;
@ -306,10 +308,17 @@ cRecording::cRecording(cTimer *Timer, const char *Title, const char *Subtitle, c
fileName = NULL; fileName = NULL;
name = NULL; name = NULL;
// set up the actual name: // set up the actual name:
const char *OriginalSubtitle = Subtitle;
char SubtitleBuffer[MAX_SUBTITLE_LENGTH];
if (isempty(Title)) if (isempty(Title))
Title = Timer->Channel()->Name(); Title = Timer->Channel()->Name();
if (isempty(Subtitle)) if (isempty(Subtitle))
Subtitle = " "; Subtitle = " ";
else if (strlen(Subtitle) > MAX_SUBTITLE_LENGTH) {
// let's make sure the Subtitle doesn't produce too long a file name:
strn0cpy(SubtitleBuffer, Subtitle, MAX_SUBTITLE_LENGTH);
Subtitle = SubtitleBuffer;
}
char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE); char *macroTITLE = strstr(Timer->File(), TIMERMACRO_TITLE);
char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE); char *macroEPISODE = strstr(Timer->File(), TIMERMACRO_EPISODE);
if (macroTITLE || macroEPISODE) { if (macroTITLE || macroEPISODE) {
@ -333,6 +342,7 @@ cRecording::cRecording(cTimer *Timer, const char *Title, const char *Subtitle, c
// handle summary: // handle summary:
summary = !isempty(Timer->Summary()) ? strdup(Timer->Summary()) : NULL; summary = !isempty(Timer->Summary()) ? strdup(Timer->Summary()) : NULL;
if (!summary) { if (!summary) {
Subtitle = OriginalSubtitle;
if (isempty(Subtitle)) if (isempty(Subtitle))
Subtitle = ""; Subtitle = "";
if (isempty(Summary)) if (isempty(Summary))