Insert a paragraph for each -T/-U option in AVRDUDE's output

This commit is contained in:
Stefan Rueger
2023-06-01 01:03:21 +01:00
parent e0e7bd7ff5
commit fa9370d570
3 changed files with 49 additions and 1 deletions

View File

@@ -130,7 +130,36 @@ char *fileio_fmtstr(FILEFMT format) {
return "octal byte list";
default:
return "invalid format";
};
}
}
int fileio_fmtchr(FILEFMT format) {
switch (format) {
case FMT_AUTO:
return 'a';
case FMT_SREC:
return 's';
case FMT_IHEX:
return 'i';
case FMT_IHXC:
return 'I';
case FMT_RBIN:
return 'r';
case FMT_ELF:
return 'e';
case FMT_IMM:
return 'm';
case FMT_BIN:
return 'b';
case FMT_DEC:
return 'd';
case FMT_HEX:
return 'h';
case FMT_OCT:
return 'o';
default:
return '?';
}
}

View File

@@ -1020,6 +1020,8 @@ FILEFMT fileio_format(char c);
char *fileio_fmtstr(FILEFMT format);
int fileio_fmtchr(FILEFMT format);
FILE *fileio_fopenr(const char *fname);
int fileio_fmt_autodetect_fp(FILE *f);
@@ -1078,6 +1080,7 @@ UPDATE *dup_update(const UPDATE *upd);
UPDATE *new_update(int op, const char *memstr, int filefmt, const char *fname);
UPDATE *cmd_update(const char *cmd);
extern void free_update(UPDATE *upd);
char *update_str(const UPDATE *upd);
int do_op(const PROGRAMMER *pgm, const AVRPART *p, const UPDATE *upd,
enum updateflags flags);
int memstats(const AVRPART *p, const char *memtype, int size, Filestats *fsp);

View File

@@ -145,6 +145,15 @@ void free_update(UPDATE * u)
}
}
char *update_str(const UPDATE *upd) {
if(upd->cmdline)
return str_sprintf("-T %s", upd->cmdline);
return str_sprintf("-U %s:%c:%s:%c",
upd->memtype,
upd->op == DEVICE_READ? 'r': upd->op == DEVICE_WRITE? 'w': 'v',
upd->filename,
fileio_fmtchr(upd->format));
}
// Memory statistics considering holes after a file read returned size bytes
int memstats(const AVRPART *p, const char *memtype, int size, Filestats *fsp) {
@@ -361,6 +370,13 @@ int do_op(const PROGRAMMER *pgm, const AVRPART *p, const UPDATE *upd, enum updat
int rc;
Filestats fs, fs_patched;
if(!upd->cmdline || !str_eq(upd->cmdline, "abort # Reset cache")) {
char *tofree;
msg_info("\v\n");
pmsg_info("processing %s\n", tofree = update_str(upd));
free(tofree);
}
if(upd->cmdline)
return terminal_line(pgm, p, upd->cmdline);