Added cRecording::Undelete()

This commit is contained in:
Klaus Schmidinger
2007-10-14 10:23:19 +02:00
parent c6ef96a6ae
commit 7780e3664a
4 changed files with 34 additions and 2 deletions

View File

@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recording.c 1.155 2007/10/12 14:48:20 kls Exp $
* $Id: recording.c 1.156 2007/10/14 10:21:54 kls Exp $
*/
#include "recording.h"
@@ -829,6 +829,32 @@ bool cRecording::Remove(void)
return RemoveVideoFile(FileName());
}
bool cRecording::Undelete(void)
{
bool result = true;
char *NewName = strdup(FileName());
char *ext = strrchr(NewName, '.');
if (ext && strcmp(ext, DELEXT) == 0) {
strncpy(ext, RECEXT, strlen(ext));
if (access(NewName, F_OK) == 0) {
// the new name already exists, so let's not remove that one:
esyslog("ERROR: attempt to undelete '%s', while recording '%s' exists", FileName(), NewName);
result = false;
}
else {
isyslog("undeleting recording '%s'", FileName());
if (access(FileName(), F_OK) == 0)
result = RenameVideoFile(FileName(), NewName);
else {
isyslog("deleted recording '%s' vanished", FileName());
result = false;
}
}
}
free(NewName);
return result;
}
void cRecording::ResetResume(void) const
{
resume = RESUME_NOT_INITIALIZED;