Show input file staistics before patching in update.c

This commit is contained in:
Stefan Rueger 2022-11-10 23:00:18 +00:00
parent 321bddbf7b
commit c67bfe39a3
No known key found for this signature in database
GPG Key ID: B0B4F1FD86B1EC55
1 changed files with 20 additions and 13 deletions

View File

@ -485,23 +485,11 @@ int do_op(const PROGRAMMER *pgm, const AVRPART *p, UPDATE *upd, enum updateflags
pmsg_error("read from file %s failed\n", update_inname(upd->filename)); pmsg_error("read from file %s failed\n", update_inname(upd->filename));
return LIBAVRDUDE_GENERAL_FAILURE; return LIBAVRDUDE_GENERAL_FAILURE;
} }
// Patch input if for flash, eg, for vector bootloaders?
if(pgm->flash_readhook) {
AVRMEM *mem = avr_locate_mem(p, upd->memtype);
if(mem && !strcmp(mem->desc, "flash")) {
rc = pgm->flash_readhook(pgm, p, mem, upd->filename, rc);
if (rc < 0) {
pmsg_notice("readhook for file %s failed\n", update_inname(upd->filename));
return LIBAVRDUDE_GENERAL_FAILURE;
}
}
}
size = rc;
pmsg_info("reading input file %s for %s%s\n", pmsg_info("reading input file %s for %s%s\n",
update_inname(upd->filename), mem->desc, alias_mem_desc); update_inname(upd->filename), mem->desc, alias_mem_desc);
if(memstats(p, upd->memtype, size, &fs) < 0) if(memstats(p, upd->memtype, rc, &fs) < 0)
return LIBAVRDUDE_GENERAL_FAILURE; return LIBAVRDUDE_GENERAL_FAILURE;
imsg_info("with %d byte%s in %d section%s within %s\n", imsg_info("with %d byte%s in %d section%s within %s\n",
@ -518,6 +506,25 @@ int do_op(const PROGRAMMER *pgm, const AVRPART *p, UPDATE *upd, enum updateflags
msg_info("\n"); msg_info("\n");
} }
// Patch input if for flash, eg, for vector bootloaders?
if(pgm->flash_readhook) {
AVRMEM *mem = avr_locate_mem(p, upd->memtype);
if(mem && !strcmp(mem->desc, "flash")) {
Filestats fs_patched;
rc = pgm->flash_readhook(pgm, p, mem, upd->filename, rc);
if (rc < 0) {
pmsg_notice("readhook for file %s failed\n", update_inname(upd->filename));
return LIBAVRDUDE_GENERAL_FAILURE;
}
if(memstats(p, upd->memtype, rc, &fs_patched) < 0)
return LIBAVRDUDE_GENERAL_FAILURE;
if(memcmp(&fs_patched, &fs, sizeof fs))
imsg_info("and patching flash input for device%s\n",
pgm->prog_modes & PM_SPM? " bootloader": "");
}
}
size = rc;
// Write the buffer contents to the selected memory type // Write the buffer contents to the selected memory type
pmsg_info("writing %d byte%s %s%s ...\n", fs.nbytes, pmsg_info("writing %d byte%s %s%s ...\n", fs.nbytes,
update_plural(fs.nbytes), mem->desc, alias_mem_desc); update_plural(fs.nbytes), mem->desc, alias_mem_desc);