FireBirdLib - Topfield TMS PVR TAP Programming Library
infData_Set.c
Go to the documentation of this file.
1#include <stdio.h>
2#include <string.h>
3#include "FBLib_rec.h"
4
5extern FILE *infDatainfFile;
6
7bool infData_Set(const char *infFileName, char *NameTag, dword PayloadSize, byte *Payload)
8{
9 bool ret;
10 tTFRPlusHdr TFRPlusHdr;
11
12 TRACEENTER();
13
14 ret = FALSE;
15
16 infData_Delete(infFileName, NameTag);
17 if(NameTag && *NameTag && infData_OpenFile(infFileName))
18 {
19 ret = TRUE;
20
21 //Ensure the minimum size of INFDATASTART bytes
23 {
25 infData_Truncate(infFileName, INFDATASTART);
26 infData_OpenFile(infFileName);
27 }
28
29 //Add the data block
30 fseek(infDatainfFile, 0, SEEK_END);
31
32 memcpy(TFRPlusHdr.Magic, INFDATMAGIC, 4);
33 TFRPlusHdr.NameTagLen = strlen(NameTag) + 1;
34 TFRPlusHdr.PayloadSize = PayloadSize;
35
36 if(PayloadSize && (Payload == NULL))
37 {
38 LogEntryFBLibPrintf(TRUE, "infData: PayloadSize of %s:%s is not 0, but data pointer is NULL!", infFileName, NameTag);
39 TFRPlusHdr.PayloadSize = 0;
40 ret = FALSE;
41 }
42
43 fwrite(&TFRPlusHdr, sizeof(tTFRPlusHdr), 1, infDatainfFile);
44 fwrite(NameTag, TFRPlusHdr.NameTagLen, 1, infDatainfFile);
45
46 if(Payload)
47 fwrite(Payload, TFRPlusHdr.PayloadSize, 1, infDatainfFile);
48 }
50
51 TRACEEXIT();
52 return ret;
53}
struct __STDIO_FILE_STRUCT FILE
Definition: FBLib_hdd.h:137
#define INFDATMAGIC
Definition: FBLib_rec.h:18
void infData_Truncate(const char *infFileName, dword Position)
bool infData_OpenFile(const char *infFileName)
void infData_CloseFile(void)
dword infData_Flen(void)
Definition: infData_Flen.c:6
#define INFDATASTART
Definition: FBLib_rec.h:15
void LogEntryFBLibPrintf(bool Console, char *format,...)
FILE * infDatainfFile
bool infData_Set(const char *infFileName, char *NameTag, dword PayloadSize, byte *Payload)
Definition: infData_Set.c:7
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
bool infData_Delete(const char *infFileName, const char *NameTag)
Definition: infData_Delete.c:6
#define SEEK_END
Definition: libFireBird.h:1883
dword NameTagLen
Definition: FBLib_rec.h:23
char Magic[4]
Definition: FBLib_rec.h:22
dword PayloadSize
Definition: FBLib_rec.h:24