static int parse_dbi_ex_header(char *data, int max_len, SDBIExHeader *dbi_ex_header) { ut32 read_bytes = 0, before_read_bytes = 0; READ(read_bytes, 4, max_len, dbi_ex_header->opened, data, ut32); before_read_bytes = read_bytes; read_bytes += parse_ssymbol_range (data, max_len, &dbi_ex_header->range); data += (read_bytes - before_read_bytes); READ(read_bytes, 2, max_len, dbi_ex_header->flags, data, ut16); READ(read_bytes, 2, max_len, dbi_ex_header->stream, data, short); READ(read_bytes, 4, max_len, dbi_ex_header->symSize, data, ut32); READ(read_bytes, 4, max_len, dbi_ex_header->oldLineSize, data, ut32); READ(read_bytes, 4, max_len, dbi_ex_header->lineSize, data, ut32); READ(read_bytes, 2, max_len, dbi_ex_header->nSrcFiles, data, short); READ(read_bytes, 2, max_len, dbi_ex_header->padding1, data, short); READ(read_bytes, 4, max_len, dbi_ex_header->offsets, data, ut32); READ(read_bytes, 4, max_len, dbi_ex_header->niSource, data, ut32); READ(read_bytes, 4, max_len, dbi_ex_header->niCompiler, data, ut32); before_read_bytes = read_bytes; parse_sctring(&dbi_ex_header->modName, (unsigned char *)data, &read_bytes, max_len); data += (read_bytes - before_read_bytes); before_read_bytes = read_bytes; parse_sctring(&dbi_ex_header->objName, (unsigned char *)data, &read_bytes, max_len); data += (read_bytes - before_read_bytes); return read_bytes; }
static int parse_global(char *data, int data_size, SGlobal *global) { unsigned int read_bytes = 2; READ(read_bytes, 4, data_size, global->symtype, data, unsigned int); READ(read_bytes, 4, data_size, global->offset, data, unsigned int); READ(read_bytes, 2, data_size, global->segment, data, unsigned short); if (global->leaf_type == 0x110E) { parse_sctring(&global->name, (unsigned char *)data, &read_bytes, data_size); } else { READ(read_bytes, 1, data_size, global->name.size, data, unsigned char); init_scstring(&global->name, global->name.size, data); } return read_bytes; }