FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_Recycle.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <string.h>
3#include "libFireBird.h"
4
5bool HDD_Recycle(const char *FileName)
6{
8
10 char OldName[TS_FILE_NAME_SIZE], NewName[TS_FILE_NAME_SIZE], LinuxPath[FBLIB_DIR_SIZE];
11 bool isRec, isDel, ret;
12 int fNumber;
13 tFileInUse FileInUse;
14
15 ret = FALSE;
16 if(FileName && HDD_Exist(FileName))
17 {
18 FileInUse = HDD_isFileInUse(FileName);
19 switch(FileInUse)
20 {
21 case FIU_No: break;
22
23 //Do not differentiate because of a firmware bug
24 case FIU_Playback:
25 case FIU_PlayMP3:
26 {
27 TAP_Hdd_StopTs();
28 TAP_Hdd_StopMp3();
29 break;
30 }
31
32 case FIU_RecSlot1: TAP_Hdd_StopRecord(0); break;
33 case FIU_RecSlot2: TAP_Hdd_StopRecord(1); break;
34 case FIU_RecSlot3: TAP_Hdd_StopRecord(2); break;
35 case FIU_RecSlot4: TAP_Hdd_StopRecord(3); break;
36 }
37
38 ConvertPathType(FileName, LinuxPath, PF_FullLinuxPath);
39 SeparateFileNameComponents(LinuxPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
40
41 if(!isDel)
42 {
43 if(fNumber)
44 TAP_SPrint(OldName, "%s%s-%d%s", Path, Name, fNumber, Ext);
45 else
46 TAP_SPrint(OldName, "%s%s%s", Path, Name, Ext);
47
48 TAP_SPrint(NewName, "%s.del", OldName);
49 MakeUniqueFileName(NewName);
50
51 if(rename(OldName, NewName) == 0)
52 {
53 if(isRec && HDD_isRecFileName(FileName))
54 {
55 //.rec.inf
56 strcat(OldName, ".inf");
57 NewName[strlen(NewName) - 4] = '\0';
58 strcat(NewName, ".inf.del");
59 rename(OldName, NewName);
60
61 //.rec.nav
62 OldName[strlen(OldName) - 4] = '\0';
63 strcat(OldName, ".nav");
64 NewName[strlen(NewName) - 8] = '\0';
65 strcat(NewName, ".nav.del");
66 rename(OldName, NewName);
67
68 //.cut
69 OldName[strlen(OldName) - 8] = '\0';
70 strcat(OldName, ".cut");
71 NewName[strlen(NewName) - 12] = '\0';
72 strcat(NewName, ".cut.del");
73 rename(OldName, NewName);
74
75 //.cut.bak
76 OldName[strlen(OldName) - 4] = '\0';
77 strcat(OldName, ".cut.bak");
78 NewName[strlen(NewName) - 8] = '\0';
79 strcat(NewName, ".cut.bak.del");
80 rename(OldName, NewName);
81
82 //.srt
83 OldName[strlen(OldName) - 8] = '\0';
84 strcat(OldName, ".srt");
85 NewName[strlen(NewName) - 12] = '\0';
86 strcat(NewName, ".srt.del");
87 rename(OldName, NewName);
88 }
89 ret = TRUE;
90 }
91 }
92 }
93
94 TRACEEXIT();
95 return ret;
96}
void ConvertPathType(const char *Source, char *Dest, tPathFormat DestFormat)
bool HDD_Exist(const char *FileName)
Definition: HDD_Exist.c:4
bool HDD_Recycle(const char *FileName)
Definition: HDD_Recycle.c:5
tFileInUse HDD_isFileInUse(const char *FileName)
void MakeUniqueFileName(char *FileName)
void SeparateFileNameComponents(const char *FileName, char *Path, char *Name, char *Ext, int *Index, bool *isRec, bool *isDel)
bool HDD_isRecFileName(const char *FileName)
#define FBLIB_DIR_SIZE
Definition: libFireBird.h:1871
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
#define TS_FILE_NAME_SIZE
Definition: libFireBird.h:167
tFileInUse
Definition: libFireBird.h:1901
@ FIU_PlayMP3
Definition: libFireBird.h:1904
@ FIU_RecSlot4
Definition: libFireBird.h:1908
@ FIU_RecSlot3
Definition: libFireBird.h:1907
@ FIU_RecSlot2
Definition: libFireBird.h:1906
@ FIU_RecSlot1
Definition: libFireBird.h:1905
@ FIU_No
Definition: libFireBird.h:1902
@ FIU_Playback
Definition: libFireBird.h:1903
@ PF_FullLinuxPath
Definition: libFireBird.h:1926