mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-28 12:25:19 +01:00
e8a29b1a29
The internal parser is retro compatible with old Clover revisions since r3250. This is possible because a check for the existence of any variable inside SETTING_DATA structure is performed before the call. Variables are all accessed using the label property of the Mirror class, so as a string.
76 lines
1.9 KiB
C
76 lines
1.9 KiB
C
/*
|
|
* Created by mcmatrix on 08.01.08.
|
|
* Copyright 2008 mcmatrix All rights reserved.
|
|
*
|
|
*/
|
|
|
|
// Constants
|
|
#define MAX_FILENAME 255
|
|
#define DETECT_NUMBERS 1
|
|
//#define NULL (void*)0
|
|
|
|
typedef enum DATA_TYPES
|
|
{
|
|
DATA_INT8 = 1,
|
|
DATA_INT16 = 2,
|
|
DATA_INT32 = 3,
|
|
DATA_BINARY = 4,
|
|
DATA_STRING = 5
|
|
|
|
} DATA_TYPES;
|
|
|
|
typedef enum FILE_TYPES
|
|
{
|
|
FILE_BIN = 1,
|
|
FILE_HEX = 2,
|
|
FILE_XML = 3
|
|
|
|
} FILE_TYPES;
|
|
|
|
typedef struct SETTINGS
|
|
{
|
|
char ifile[MAX_FILENAME]; // input filename
|
|
FILE_TYPES ifile_type; // input file type
|
|
char ofile[MAX_FILENAME]; // output filename
|
|
FILE_TYPES ofile_type; // output file type
|
|
int verbose; // verbose mode
|
|
int detect_strings; // detect strings from binary data
|
|
int detect_numbers; // detect numberic data from binary
|
|
} SETTINGS;
|
|
|
|
// gfx main header
|
|
typedef struct GFX_HEADER
|
|
{
|
|
unsigned int filesize; // filesize
|
|
unsigned int var1; // unknown
|
|
unsigned int countofblocks; // count of datablocks
|
|
struct GFX_BLOCKHEADER * blocks; // pointer to datablock
|
|
} GFX_HEADER;
|
|
|
|
// gfx block header
|
|
typedef struct GFX_BLOCKHEADER
|
|
{
|
|
unsigned int blocksize; // datablock size
|
|
unsigned int records; // records count
|
|
struct _EFI_DEVICE_PATH_P_TAG *devpath; // device address binary
|
|
unsigned int devpath_len; // device address binary len
|
|
struct GFX_ENTRY * entries; // pointer to block entries
|
|
struct GFX_BLOCKHEADER * next; // pointer to next datablock
|
|
} GFX_BLOCKHEADER;
|
|
|
|
// gfx data entries
|
|
typedef struct GFX_ENTRY
|
|
{
|
|
unsigned char *bkey; // unicode key binary value
|
|
unsigned int bkey_len; // binary unicode key length
|
|
char *key; // ascii key value
|
|
unsigned int key_len; // ascii key length
|
|
unsigned char *val; // data binary value
|
|
unsigned int val_len; // binary data length
|
|
DATA_TYPES val_type; // binary data type
|
|
struct GFX_ENTRY * next;
|
|
} GFX_ENTRY;
|
|
|
|
GFX_HEADER *parse_binary(const unsigned char *bp);
|
|
//CFDictionaryRef CreateGFXDictionary(GFX_HEADER * gfx);
|