11 const uint8_t *img, uint16_t len)
17 if ((uint32_t)origin + (uint32_t)len > 0x10000u)
26 hdr[6] = (uint8_t)(origin >> 8);
27 hdr[7] = (uint8_t)(origin & 0xff);
28 hdr[8] = (uint8_t)(entry >> 8);
29 hdr[9] = (uint8_t)(entry & 0xff);
30 hdr[10] = (uint8_t)(len >> 8);
31 hdr[11] = (uint8_t)(len & 0xff);
33 if (fwrite(hdr, 1,
sizeof(hdr), fp) !=
sizeof(hdr))
35 if (len && fwrite(img, 1, len, fp) != (size_t)len)
42 uint8_t *buf,
size_t bufcap, uint16_t *len)
50 if (fread(hdr, 1,
sizeof(hdr), fp) !=
sizeof(hdr))
60 o = (uint16_t)((hdr[6] << 8) | hdr[7]);
61 e = (uint16_t)((hdr[8] << 8) | hdr[9]);
62 n = (uint16_t)((hdr[10] << 8) | hdr[11]);
64 if ((uint32_t)o + (uint32_t)n > 0x10000u)
66 if ((
size_t)n > bufcap)
69 if (n && fread(buf, 1, n, fp) != (size_t)n)
72 if (origin) *origin = o;
73 if (entry) *entry = e;
int binimage_read(FILE *fp, uint16_t *origin, uint16_t *entry, uint8_t *buf, size_t bufcap, uint16_t *len)