int main (int argc, char *argv[]) { setlocale (LC_ALL, ""); gen_progname (argv[0]); parse_args (argc, argv); if (args_index != argc - 1) { fprintf (stderr, "%s: no database file specified\n", progname); usage (); return 1; } db_file = strdup (argv[args_index]); if (load_image_info () < 0) return 2; /* Nothing to do? */ if (img_info_size == 0) return 0; dump_rebasedb (stdout, &hdr, img_info_list, img_info_size); return 0; }
static int acquire_linux_images( struct image **images, unsigned int *num_images, unsigned int *bmt_address) { const unsigned int NUM_IMAGES = sizeof(LINUX_PARTITION_IMAGE_FILE_PATH) / sizeof(LINUX_PARTITION_IMAGE_FILE_PATH[0]); /*const unsigned int NUM_IMAGES_NAME = sizeof(LINUX_PARTITION_IMAGE_NAME) / sizeof(LINUX_PARTITION_IMAGE_NAME[0]);*/ unsigned int i; //assert(NUM_IMAGES == NUM_IMAGES_NAME); assert(images != NULL); *images = (struct image *)malloc(sizeof(struct image) * NUM_IMAGES); memset(*images, 0, sizeof(struct image) * NUM_IMAGES); assert(*images != NULL); assert(num_images != NULL); *num_images = NUM_IMAGES; for (i=0; i<NUM_IMAGES; ++i) { struct image *image_i = &(*images)[i]; if (load_image(image_i, LINUX_PARTITION_IMAGE_FILE_PATH[i], LINUX_PARTITION_FILE_ADDR[i]) != 0) return -1; load_image_info(image_i, LINUX_PARTITION_IMAGE_NAME[i], LINUX_PARTITION_TYPE[i]); if(!strcmp(LINUX_PARTITION_IMAGE_NAME[i], "_BMTPOOL")) { *bmt_address = LINUX_PARTITION_FILE_ADDR[i]; } } return 0; }
void Image::load() { flags |= USED; if (tex != 0 || image != NULL) return; if (flags & FILE) { ((FileImage*)this)->load_file(); return; } unsigned int size, out_size; unsigned char * buf; int ret; if (startup_data) { unsigned int start = AssetFile::get_offset(0, AssetFile::IMAGE_DATA); unsigned int self = AssetFile::get_offset(handle, AssetFile::IMAGE_DATA); unsigned int offset = self - start; ArrayStream stream((char*)startup_data, startup_size); stream.seek(offset); load_image_info(*this, stream, size, out_size); buf = &startup_data[stream.pos]; ret = stbi_zlib_decode_buffer((char*)image, out_size, (const char*)buf, size); } else { open_image_file(); image_file.set_item(handle, AssetFile::IMAGE_DATA); FileStream stream(image_file); load_image_info(*this, stream, size, out_size); buf = new unsigned char[size]; image_file.read(buf, size); ret = stbi_zlib_decode_buffer((char*)image, out_size, (const char*)buf, size); delete[] buf; } if (ret < 0) { std::cout << "Could not load image " << handle << std::endl; std::cout << stbi_failure_reason() << std::endl; stbi_image_free(image); image = NULL; } }
shared_ptr< image_info<symbol_info> > mapped_module_ex::get_image_info() const { return load_image_info(path.c_str()); }