FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_FappendOpen.c
Go to the documentation of this file.
1#include <stdio.h>
2#include "libFireBird.h"
3
4TYPE_File *HDD_FappendOpen(const char *FileName)
5{
7
8 TYPE_File *file;
9 char buffer[512];
10 dword pos, blks, i;
11 char *end;
12 char TAPPath[FBLIB_DIR_SIZE], Name[FBLIB_DIR_SIZE];
13
14 if(!FileName || !*FileName)
15 {
16 TRACEEXIT();
17 return NULL;
18 }
19
20 ConvertPathType(FileName, TAPPath, PF_TAPPathOnly);
21 ConvertPathType(FileName, Name, PF_FileNameOnly);
22
24 if(*TAPPath) HDD_ChangeDir(TAPPath);
25
26 if(!TAP_Hdd_Exist(Name)) TAP_Hdd_Create(Name, ATTR_NORMAL);
27
28 if((file = TAP_Hdd_Fopen(Name)))
29 {
30 if(TAP_Hdd_Fseek(file, 0, SEEK_SET) != 0)
31 {
32 TAP_Hdd_Fclose(file);
33 file = NULL;
34 }
35 else
36 {
37 pos = 0;
38
39 do
40 {
41 memset(buffer, 0, sizeof(buffer));
42 blks = TAP_Hdd_Fread(&buffer, sizeof(buffer), 1, file);
43
44 for(i = 0, end = buffer; i < sizeof(buffer); i++)
45 if(buffer[i] == '\0')
46 {
47 end = buffer + i;
48 break;
49 }
50
51 if(i < sizeof(buffer)) break;
52 else pos += sizeof(buffer);
53 }
54 while(blks == 1);
55
56 pos += end - buffer;
57
58 if(TAP_Hdd_Fseek(file, pos, SEEK_SET) != pos)
59 {
60 TAP_Hdd_Fclose(file);
61 file = NULL;
62 }
63 }
64 }
65
67
68 TRACEEXIT();
69 return file;
70}
void ConvertPathType(const char *Source, char *Dest, tPathFormat DestFormat)
bool HDD_ChangeDir(const char *Dir)
Definition: HDD_ChangeDir.c:5
TYPE_File * HDD_FappendOpen(const char *FileName)
#define SEEK_SET
Definition: libFireBird.h:1875
bool HDD_TAP_PushDir(void)
#define FBLIB_DIR_SIZE
Definition: libFireBird.h:1871
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
bool HDD_TAP_PopDir(void)
Definition: HDD_TAP_PopDir.c:3
@ PF_TAPPathOnly
Definition: libFireBird.h:1923
@ PF_FileNameOnly
Definition: libFireBird.h:1922