FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_Write.c
Go to the documentation of this file.
1#include "libFireBird.h"
2
3bool HDD_Write(void *data, dword length, TYPE_File *f)
4{
6
7 static byte block[512];
8 static byte *b = block;
9 bool success = TRUE;
10 dword blen;
11
12 // flush buffer
13 if(length == 0)
14 {
15 if(b > block)
16 {
17 success = (TAP_Hdd_Fwrite(block, sizeof(block), 1, f) == 1);
18 b = block;
19 }
20 }
21 // can't buffer data
22 else if(length > sizeof(block)) success = (TAP_Hdd_Fwrite(data, length, 1, f) == 1);
23 else
24 {
25 blen = sizeof(block) - (b - block);
26
27 // not enough space in buffer
28 if(length > blen)
29 {
30 // fill rest of buffer
31 memcpy(b, data, blen);
32 success = (TAP_Hdd_Fwrite(block, sizeof(block), 1, f) == 1);
33
34 //(byte *) data += blen;
35 data = (byte*)data + blen;
36
37 length -= blen;
38 b = block;
39 }
40
41 // new buffer
42 if(b == block) memset(block, 0, sizeof(block));
43
44 // enough space in buffer
45 memcpy(b, data, length);
46 b += length;
47 }
48
49 TRACEEXIT();
50 return success;
51}
bool HDD_Write(void *data, dword length, TYPE_File *f)
Definition: HDD_Write.c:3
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243