FireBirdLib - Topfield TMS PVR TAP Programming Library
HDD_InfBlockGet.c
Go to the documentation of this file.
1#include <string.h>
2#include <stdio.h>
3#include "FBLib_hdd.h"
4
5bool HDD_InfBlockGet(const char *RecPath, tinfBlock *infBlock)
6{
8
9 bool ret;
10 FILE *FileHandle;
11 tinfBlock TempinfBlock;
12 char AbsFileName[FBLIB_DIR_SIZE];
13 tstat64 statbuf;
14
15 if(!RecPath && !*RecPath)
16 {
17 TRACEEXIT();
18 return FALSE;
19 }
20
21 ret = FALSE;
22 if(infBlock) memset(infBlock, 0, sizeof(tinfBlock));
23
24 ConvertPathType(RecPath, AbsFileName, PF_FullLinuxPath);
25 if(*AbsFileName)
26 {
27 if(!StringEndsWith(AbsFileName, ".inf"))
28 {
29 strcat(AbsFileName, ".inf");
30
31 //Falls es keine .inf gibt, dann die eigentliche Datei nehmen
32 if(stat64(AbsFileName, &statbuf) != 0)
33 {
34 AbsFileName[strlen(AbsFileName) - 4] = '\0';
35 }
36 }
37
38 FileHandle = fopen64(AbsFileName, "rb");
39 if(FileHandle)
40 {
41 fseeko64(FileHandle, -((__off64_t)sizeof(tinfBlock)), SEEK_END);
42 fread(&TempinfBlock, sizeof(tinfBlock), 1, FileHandle);
43 fclose(FileHandle);
44 if((memcmp(TempinfBlock.Magic, INFBLOCKMAGIC, 4) == 0) && (TempinfBlock.Version == INFBLOCKVERSION))
45 {
46 if(infBlock) memcpy(infBlock, &TempinfBlock, sizeof(tinfBlock));
47 ret = TRUE;
48 }
49 }
50 }
51
52 TRACEEXIT();
53 return ret;
54}
void ConvertPathType(const char *Source, char *Dest, tPathFormat DestFormat)
struct __STDIO_FILE_STRUCT FILE
Definition: FBLib_hdd.h:137
int stat64(__const char *__restrict __file, tstat64 *__restrict __buf) __THROW
int fseeko64(FILE *__stream, __off64_t __off, int __whence)
FILE * fopen64(__const char *__restrict __filename, __const char *__restrict __modes)
bool HDD_InfBlockGet(const char *RecPath, tinfBlock *infBlock)
#define INFBLOCKVERSION
Definition: libFireBird.h:1930
#define FBLIB_DIR_SIZE
Definition: libFireBird.h:1871
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
bool StringEndsWith(const char *text, const char *postfix)
Definition: StringEndsWith.c:4
#define SEEK_END
Definition: libFireBird.h:1883
@ PF_FullLinuxPath
Definition: libFireBird.h:1926
#define INFBLOCKMAGIC
Definition: libFireBird.h:1929
char Magic[4]
Definition: libFireBird.h:1934
byte Version
Definition: libFireBird.h:1935