code->allocator->iterate(updater,fixup);
}
+bool factor_vm::read_embedded_image_footer(FILE *file, embedded_image_footer *footer)
+{
+ safe_fseek(file, -(off_t)sizeof(embedded_image_footer), SEEK_END);
+ safe_fread(footer, (off_t)sizeof(embedded_image_footer), 1, file);
+ return footer->magic == image_magic;
+}
+
FILE* factor_vm::open_image(vm_parameters *p)
{
if (p->embedded_image)
std::cout << strerror(errno) << std::endl;
exit(1);
}
- safe_fseek(file, -sizeof(embedded_image_footer), SEEK_END);
embedded_image_footer footer;
- safe_fread(&footer, sizeof(embedded_image_footer), 1, file);
- if (footer.magic != image_magic)
+ if (!read_embedded_image_footer(file, &footer))
{
std::cout << "No embedded image" << std::endl;
exit(1);
FILE *file = OPEN_READ(vm_path);
if (!file)
return false;
- safe_fseek(file, -sizeof(embedded_image_footer), SEEK_END);
embedded_image_footer footer;
- safe_fread(&footer, sizeof(embedded_image_footer), 1, file);
+ bool embedded_p = read_embedded_image_footer(file, &footer);
fclose(file);
- return footer.magic == image_magic;
+ return embedded_p;
}
}
void fixup_code(cell data_offset, cell code_offset);
FILE *open_image(vm_parameters *p);
void load_image(vm_parameters *p);
+ bool read_embedded_image_footer(FILE *file, embedded_image_footer *footer);
bool embedded_image_p();
// callstack