FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_RecycleSF.c
Go to the documentation of this file.
1#include <sys/stat.h>
2#include <string.h>
3#include "libFireBird.h"
4#include "FBLib_hdd.h"
5
6bool HDD_RecycleSF(const char *FileName)
7{
9
10 tFileInUse FileInUse;
11 char AbsPath[FBLIB_DIR_SIZE], AbsFileName[MAX_FILE_NAME_SIZE + 1], *Slash;
12 char RecycleDir[FBLIB_DIR_SIZE], MountPoint[FBLIB_DIR_SIZE];
13 tinfBlock infBlock;
14 bool ret;
15
16 ret = FALSE;
17 if(FileName && *FileName && HDD_Exist(FileName))
18 {
19 FileInUse = HDD_isFileInUse(FileName);
20 switch(FileInUse)
21 {
22 case FIU_No: break;
23
24 //Do not differentiate because of a firmware bug
25 case FIU_Playback:
26 case FIU_PlayMP3:
27 {
28 TAP_Hdd_StopTs();
29 TAP_Hdd_StopMp3();
30 break;
31 }
32
33 case FIU_RecSlot1: TAP_Hdd_StopRecord(0); break;
34 case FIU_RecSlot2: TAP_Hdd_StopRecord(1); break;
35 case FIU_RecSlot3: TAP_Hdd_StopRecord(2); break;
36 case FIU_RecSlot4: TAP_Hdd_StopRecord(3); break;
37 }
38
39 ConvertPathType(FileName, AbsPath, PF_FullLinuxPath);
40 if(*AbsPath)
41 {
42 char c;
43
44 Slash = strrchr(AbsPath, '/');
45 c = *Slash;
46 *Slash = '\0';
47
48 //Set the deletion time in the infBlock
49 HDD_InfBlockGet(FileName, &infBlock);
50 strcpy(infBlock.RecoverPath, AbsPath);
51 infBlock.RecycleDate = Now(NULL);
52 HDD_InfBlockSet(FileName, &infBlock);
53
54 //Separate
55 *Slash = c;
56 strcpy(AbsFileName, Slash + 1);
57 Slash[1] = '\0';
58
59 //Find the mount point for that drive and create a RecycleBin folder in the root.
60 //Use DataFiles as root for the internal disk
61 HDD_FindMountPoint(AbsPath, MountPoint);
62 if(strcmp("/mnt/hd/", MountPoint) == 0) strcpy(MountPoint, "/mnt/hd/DataFiles/");
63
64 TAP_SPrint(RecycleDir, "%sRecycleBin-", MountPoint);
65 mkdir(RecycleDir, 0777);
66 ret = HDD_Move(AbsFileName, AbsPath, RecycleDir);
67 }
68 }
69
70 TRACEEXIT();
71 return ret;
72}
void ConvertPathType(const char *Source, char *Dest, tPathFormat DestFormat)
bool HDD_Exist(const char *FileName)
Definition: HDD_Exist.c:4
bool HDD_FindMountPoint(const char *File, char *MountPoint)
bool HDD_InfBlockGet(const char *RecPath, tinfBlock *infBlock)
bool HDD_InfBlockSet(const char *RecPath, tinfBlock *infBlock)
bool HDD_Move(const char *FileName, const char *FromDir, const char *ToDir)
Definition: HDD_Move.c:7
bool HDD_RecycleSF(const char *FileName)
Definition: HDD_RecycleSF.c:6
tFileInUse HDD_isFileInUse(const char *FileName)
#define FBLIB_DIR_SIZE
Definition: libFireBird.h:1871
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
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
dword Now(byte *Sec)
Definition: Now.c:3
char RecoverPath[FBLIB_DIR_SIZE]
Definition: libFireBird.h:1941
dword RecycleDate
Definition: libFireBird.h:1940