From a942b31a9888e443276a4701442f67e0ddd7909f Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 19 Apr 2024 12:42:32 +0100 Subject: [PATCH 1/4] Make static functions greppable --- src/buspirate.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/buspirate.c b/src/buspirate.c index 6cd61a46..e2f2b9ad 100644 --- a/src/buspirate.c +++ b/src/buspirate.c @@ -88,13 +88,11 @@ static inline int buspirate_uses_ascii(const PROGRAMMER *pgm) { return (PDATA(pgm)->flag & BP_FLAG_XPARM_FORCE_ASCII); } -static inline int -buspirate_uses_pullups(const PROGRAMMER *pgm) { +static inline int buspirate_uses_pullups(const PROGRAMMER *pgm) { return (PDATA(pgm)->flag & BP_FLAG_PULLUPS); } -static inline int -buspirate_uses_hiz(const PROGRAMMER *pgm) { +static inline int buspirate_uses_hiz(const PROGRAMMER *pgm) { return (PDATA(pgm)->flag & BP_FLAG_HIZ); } @@ -223,6 +221,7 @@ static char *buspirate_readline(const PROGRAMMER *pgm, char *buf, size_t len) { } return ret; } + static int buspirate_send(const PROGRAMMER *pgm, const char *str) { int rc; const char * readline; @@ -965,6 +964,7 @@ static int buspirate_paged_load(const PROGRAMMER *pgm, const AVRPART *p, const A return n_bytes; } + /* Paged write function which utilizes the Bus Pirate's "Write then Read" binary SPI instruction */ static int buspirate_paged_write(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *m, unsigned int page_size, unsigned int base_addr, unsigned int n_data_bytes) { @@ -1126,6 +1126,7 @@ static void buspirate_teardown(PROGRAMMER *pgm) { free(pgm->cookie); } + const char buspirate_desc[] = "Using the Bus Pirate's SPI interface for programming"; void buspirate_initpgm(PROGRAMMER *pgm) { From 2ce7580977a92cc13dff46ac5e7397e801d4796c Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Fri, 19 Apr 2024 12:48:24 +0100 Subject: [PATCH 2/4] Utilise magic memory tree interface for buspirate.c --- src/avrdude.h | 1 + src/buspirate.c | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/avrdude.h b/src/avrdude.h index c679a654..6b777d30 100644 --- a/src/avrdude.h +++ b/src/avrdude.h @@ -44,6 +44,7 @@ extern const char *pgmid; // Programmer -c string #define mmt_strdup(s) cfg_strdup(__func__, s) #define mmt_malloc(n) cfg_malloc(__func__, n) #define mmt_realloc(p, n) cfg_realloc(__func__, p, n) +#define mmt_free(p) free(p) int avrdude_message2(FILE *fp, int lno, const char *file, const char *func, int msgmode, int msglvl, const char *format, ...); diff --git a/src/buspirate.c b/src/buspirate.c index e2f2b9ad..e81499b7 100644 --- a/src/buspirate.c +++ b/src/buspirate.c @@ -1115,16 +1115,13 @@ static int buspirate_chip_erase(const PROGRAMMER *pgm, const AVRPART *p) { } /* Interface - management */ -static void buspirate_setup(PROGRAMMER *pgm) -{ - /* Allocate private data */ +static void buspirate_setup(PROGRAMMER *pgm) { pgm->cookie = mmt_malloc(sizeof(struct pdata)); PDATA(pgm)->serial_recv_timeout = 100; } -static void buspirate_teardown(PROGRAMMER *pgm) -{ - free(pgm->cookie); +static void buspirate_teardown(PROGRAMMER *pgm) { + mmt_free(pgm->cookie); } const char buspirate_desc[] = "Using the Bus Pirate's SPI interface for programming"; From 6c05d3f72bc88ab2d0f7a9f8158c9cdd5c601be4 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Mon, 22 Apr 2024 15:17:40 +0100 Subject: [PATCH 3/4] return LIBAVRDUDE_EXIT instead of exit(0) --- src/buspirate.c | 2 +- src/libavrdude.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/buspirate.c b/src/buspirate.c index e81499b7..a675f2fa 100644 --- a/src/buspirate.c +++ b/src/buspirate.c @@ -406,7 +406,7 @@ static int buspirate_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) msg_error(" -xpullups Enable internal pull-ups\n"); msg_error(" -xhiz SPI HiZ mode (open collector)\n"); msg_error(" -xhelp Show this help menu and exit\n"); - exit(0); + return LIBAVRDUDE_EXIT;; } pmsg_error("do not understand extended param '%s'\n", extended_param); diff --git a/src/libavrdude.h b/src/libavrdude.h index 453b22a0..60cf4ebf 100644 --- a/src/libavrdude.h +++ b/src/libavrdude.h @@ -59,6 +59,7 @@ typedef uint32_t pinmask_t; #define LIBAVRDUDE_NOTSUPPORTED (-2) // operation not supported #define LIBAVRDUDE_SOFTFAIL (-3) // returned, eg, by avr_signature() if caller // might proceed with chip erase +#define LIBAVRDUDE_EXIT (-4) // End all operations in this session /* formerly lists.h */ From 74b9a3a3212a46ea123b13eb18729d95cf00246b Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Mon, 22 Apr 2024 15:47:51 +0100 Subject: [PATCH 4/4] Render double teardown() harmless in buspirate --- src/buspirate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/buspirate.c b/src/buspirate.c index a675f2fa..8a741570 100644 --- a/src/buspirate.c +++ b/src/buspirate.c @@ -1122,6 +1122,7 @@ static void buspirate_setup(PROGRAMMER *pgm) { static void buspirate_teardown(PROGRAMMER *pgm) { mmt_free(pgm->cookie); + pgm->cookie = NULL; } const char buspirate_desc[] = "Using the Bus Pirate's SPI interface for programming";