CloverBootloader/CloverPackage/utils/clover-genconfig/gfxutil.h
2019-09-03 12:58:42 +03:00

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);