mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Fixed deleting the source recording after moving it to a different volume (cont'd)
This commit is contained in:
		
							
								
								
									
										32
									
								
								recording.c
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								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 3.12 2014/01/16 11:03:41 kls Exp $
 | 
			
		||||
 * $Id: recording.c 3.13 2014/01/18 12:54:56 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "recording.h"
 | 
			
		||||
@@ -1519,22 +1519,24 @@ void cRecordings::DelByName(const char *FileName)
 | 
			
		||||
{
 | 
			
		||||
  LOCK_THREAD;
 | 
			
		||||
  cRecording *recording = GetByName(FileName);
 | 
			
		||||
  if (recording) {
 | 
			
		||||
     cThreadLock DeletedRecordingsLock(&DeletedRecordings);
 | 
			
		||||
  cRecording *dummy = NULL;
 | 
			
		||||
  if (!recording)
 | 
			
		||||
     recording = dummy = new cRecording(FileName); // allows us to use a FileName that is not in the Recordings list
 | 
			
		||||
  cThreadLock DeletedRecordingsLock(&DeletedRecordings);
 | 
			
		||||
  if (!dummy)
 | 
			
		||||
     Del(recording, false);
 | 
			
		||||
     char *ext = strrchr(recording->fileName, '.');
 | 
			
		||||
     if (ext) {
 | 
			
		||||
        strncpy(ext, DELEXT, strlen(ext));
 | 
			
		||||
        if (access(recording->FileName(), F_OK) == 0) {
 | 
			
		||||
           recording->deleted = time(NULL);
 | 
			
		||||
           DeletedRecordings.Add(recording);
 | 
			
		||||
           recording = NULL; // to prevent it from being deleted below
 | 
			
		||||
           }
 | 
			
		||||
  char *ext = strrchr(recording->fileName, '.');
 | 
			
		||||
  if (ext) {
 | 
			
		||||
     strncpy(ext, DELEXT, strlen(ext));
 | 
			
		||||
     if (access(recording->FileName(), F_OK) == 0) {
 | 
			
		||||
        recording->deleted = time(NULL);
 | 
			
		||||
        DeletedRecordings.Add(recording);
 | 
			
		||||
        recording = NULL; // to prevent it from being deleted below
 | 
			
		||||
        }
 | 
			
		||||
     delete recording;
 | 
			
		||||
     ChangeState();
 | 
			
		||||
     TouchUpdate();
 | 
			
		||||
     }
 | 
			
		||||
  delete recording;
 | 
			
		||||
  ChangeState();
 | 
			
		||||
  TouchUpdate();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cRecordings::UpdateByName(const char *FileName)
 | 
			
		||||
@@ -1880,7 +1882,7 @@ bool cRecordingsHandlerEntry::Active(bool &Error)
 | 
			
		||||
  if (CopierFinishedOk && (Usage() & ruMove) != 0) {
 | 
			
		||||
     cRecording Recording(FileNameSrc());
 | 
			
		||||
     if (Recording.Delete())
 | 
			
		||||
        DeletedRecordings.AddByName(Recording.FileName());
 | 
			
		||||
        Recordings.DelByName(Recording.FileName());
 | 
			
		||||
     }
 | 
			
		||||
  Recordings.ChangeState();
 | 
			
		||||
  Recordings.TouchUpdate();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user