FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_Move.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <string.h>
3#include <stdlib.h>
4#include "FBLib_hdd.h"
5#include "libFireBird.h"
6
7bool HDD_Move(const char *FileName, const char *FromDir, const char *ToDir)
8{
10
12 char OldInfName[FBLIB_DIR_SIZE], NewInfName[FBLIB_DIR_SIZE];
13 bool isRec, isDel;
14 int fNumber;
15 char OldPath[FBLIB_DIR_SIZE], NewPath[FBLIB_DIR_SIZE];
16 bool ret;
17
18 ret = FALSE;
19 if(FileName && *FileName && FromDir && ToDir)
20 {
21 ConvertPathType(FromDir, OldPath, PF_LinuxPathOnly);
22 strcat(OldPath, FileName);
23 if(HDD_Exist(OldPath))
24 {
25 ConvertPathType(ToDir, NewPath, PF_LinuxPathOnly);
26 strcat(NewPath, FileName);
27
28 MakeUniqueFileName(NewPath);
29 if(rename(OldPath, NewPath) != 0)
30 {
31 TRACEEXIT();
32 return FALSE;
33 }
34
35 SeparateFileNameComponents(OldPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
36 if(isRec && strcmp(Ext, ".nav"))
37 {
38 //.rec.inf
39 if(fNumber)
40 TAP_SPrint(OldInfName, "%s%s-%d%s.inf%s", Path, Name, fNumber, Ext, isDel ? ".del" : "");
41 else
42 TAP_SPrint(OldInfName, "%s%s%s.inf%s", Path, Name, Ext, isDel ? ".del" : "");
43
44 SeparateFileNameComponents(NewPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
45 if(fNumber)
46 TAP_SPrint(NewInfName, "%s%s-%d%s.inf%s", Path, Name, fNumber, Ext, isDel ? ".del" : "");
47 else
48 TAP_SPrint(NewInfName, "%s%s%s.inf%s", Path, Name, Ext, isDel ? ".del" : "");
49
50 rename(OldInfName, NewInfName);
51
52 //.rec.nav
53 SeparateFileNameComponents(OldPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
54 if(fNumber)
55 TAP_SPrint(OldInfName, "%s%s-%d%s.nav%s", Path, Name, fNumber, Ext, isDel ? ".del" : "");
56 else
57 TAP_SPrint(OldInfName, "%s%s%s.nav%s", Path, Name, Ext, isDel ? ".del" : "");
58
59 SeparateFileNameComponents(NewPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
60 if(fNumber)
61 TAP_SPrint(NewInfName, "%s%s-%d%s.nav%s", Path, Name, fNumber, Ext, isDel ? ".del" : "");
62 else
63 TAP_SPrint(NewInfName, "%s%s%s.nav%s", Path, Name, Ext, isDel ? ".del" : "");
64
65 rename(OldInfName, NewInfName);
66
67 //.cut
68 SeparateFileNameComponents(OldPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
69 if(fNumber)
70 TAP_SPrint(OldInfName, "%s%s-%d.cut%s", Path, Name, fNumber, isDel ? ".del" : "");
71 else
72 TAP_SPrint(OldInfName, "%s%s.cut%s", Path, Name, isDel ? ".del" : "");
73
74 SeparateFileNameComponents(NewPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
75 if(fNumber)
76 TAP_SPrint(NewInfName, "%s%s-%d.cut%s", Path, Name, fNumber, isDel ? ".del" : "");
77 else
78 TAP_SPrint(NewInfName, "%s%s.cut%s", Path, Name, isDel ? ".del" : "");
79
80 rename(OldInfName, NewInfName);
81
82 //.cut.bak
83 SeparateFileNameComponents(OldPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
84 if(fNumber)
85 TAP_SPrint(OldInfName, "%s%s-%d.cut.bak%s", Path, Name, fNumber, isDel ? ".del" : "");
86 else
87 TAP_SPrint(OldInfName, "%s%s.cut.bak%s", Path, Name, isDel ? ".del" : "");
88
89 SeparateFileNameComponents(NewPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
90 if(fNumber)
91 TAP_SPrint(NewInfName, "%s%s-%d.cut.bak%s", Path, Name, fNumber, isDel ? ".del" : "");
92 else
93 TAP_SPrint(NewInfName, "%s%s.cut.bak%s", Path, Name, isDel ? ".del" : "");
94
95 rename(OldInfName, NewInfName);
96
97 //.srt
98 SeparateFileNameComponents(OldPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
99 if(fNumber)
100 TAP_SPrint(OldInfName, "%s%s-%d.srt%s", Path, Name, fNumber, isDel ? ".del" : "");
101 else
102 TAP_SPrint(OldInfName, "%s%s.srt%s", Path, Name, isDel ? ".del" : "");
103
104 SeparateFileNameComponents(NewPath, Path, Name, Ext, &fNumber, &isRec, &isDel);
105 if(fNumber)
106 TAP_SPrint(NewInfName, "%s%s-%d.srt%s", Path, Name, fNumber, isDel ? ".del" : "");
107 else
108 TAP_SPrint(NewInfName, "%s%s.srt%s", Path, Name, isDel ? ".del" : "");
109
110 rename(OldInfName, NewInfName);
111
112 ret = TRUE;
113 }
114 }
115 }
116
117 TRACEEXIT();
118 return ret;
119}
void ConvertPathType(const char *Source, char *Dest, tPathFormat DestFormat)
bool HDD_Exist(const char *FileName)
Definition: HDD_Exist.c:4
bool HDD_Move(const char *FileName, const char *FromDir, const char *ToDir)
Definition: HDD_Move.c:7
void MakeUniqueFileName(char *FileName)
void SeparateFileNameComponents(const char *FileName, char *Path, char *Name, char *Ext, int *Index, bool *isRec, bool *isDel)
#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
@ PF_LinuxPathOnly
Definition: libFireBird.h:1924