From c1a037822945ccdd2ed41c8625a08dc5e6cbb61c Mon Sep 17 00:00:00 2001 From: MCUdude Date: Mon, 29 Jul 2024 06:31:50 +0200 Subject: [PATCH] Print -x help text when invalid extended option is passed --- src/arduino.c | 21 +++++++++------- src/butterfly.c | 18 +++++++------ src/stk500.c | 67 ++++++++++++++++++++++++++----------------------- src/wiring.c | 22 +++++++++------- 4 files changed, 71 insertions(+), 57 deletions(-) diff --git a/src/arduino.c b/src/arduino.c index 06dbff5b..b4bed6c5 100644 --- a/src/arduino.c +++ b/src/arduino.c @@ -40,7 +40,7 @@ static int arduino_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) { const char *extended_param; int attempts; - int rv = 0; + int rv = 0, help = 0; for (LNODEID ln = lfirst(extparms); ln; ln = lnext(ln)) { extended_param = ldata(ln); @@ -57,17 +57,20 @@ static int arduino_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) { } if (str_eq(extended_param, "help")) { - msg_error("%s -c %s extended options:\n", progname, pgmid); - msg_error(" -xattempts= Specify the number of connection retry attempts\n"); - msg_error(" -xnoautoreset Don't toggle RTS/DTR lines on port open to prevent a hardware reset\n"); - msg_error(" -xhelp Show this help menu and exit\n"); - return LIBAVRDUDE_EXIT; + help = 1; + rv = LIBAVRDUDE_EXIT; } - pmsg_error("invalid extended parameter %s\n", extended_param); - rv = -1; + if (!help) { + pmsg_error("invalid extended parameter %s\n", extended_param); + rv = -1; + } + msg_error("%s -c %s extended options:\n", progname, pgmid); + msg_error(" -xattempts= Specify the number of connection retry attempts\n"); + msg_error(" -xnoautoreset Don't toggle RTS/DTR lines on port open to prevent a hardware reset\n"); + msg_error(" -xhelp Show this help menu and exit\n"); + return rv; } - return rv; } diff --git a/src/butterfly.c b/src/butterfly.c index a84d4935..3d6e3e18 100644 --- a/src/butterfly.c +++ b/src/butterfly.c @@ -696,7 +696,7 @@ static int butterfly_read_sig_bytes(const PROGRAMMER *pgm, const AVRPART *p, con static int butterfly_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) { const char *extended_param; - int rv = 0; + int rv = 0, help = 0; for (LNODEID ln = lfirst(extparms); ln; ln = lnext(ln)) { extended_param = ldata(ln); @@ -707,14 +707,18 @@ static int butterfly_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) } if (str_eq(extended_param, "help")) { - msg_error("%s -c %s extended options:\n", progname, pgmid); - msg_error(" -xautoreset Toggle RTS/DTR lines on port open to issue a hardware reset\n"); - msg_error(" -xhelp Show this help menu and exit\n"); - exit(0); + help = 1; + rv = LIBAVRDUDE_EXIT; } - pmsg_error("invalid extended parameter %s\n", extended_param); - rv = -1; + if (!help) { + pmsg_error("invalid extended parameter %s\n", extended_param); + rv = -1; + } + msg_error("%s -c %s extended options:\n", progname, pgmid); + msg_error(" -xautoreset Toggle RTS/DTR lines on port open to issue a hardware reset\n"); + msg_error(" -xhelp Show this help menu and exit\n"); + return rv; } return rv; diff --git a/src/stk500.c b/src/stk500.c index 85835096..0ef79b30 100644 --- a/src/stk500.c +++ b/src/stk500.c @@ -640,15 +640,14 @@ static int stk500_initialize(const PROGRAMMER *pgm, const AVRPART *p) { return pgm->program_enable(pgm, p); } -static int stk500_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) - { - LNODEID ln; - const char *extended_param; - int attempts; - int rv = 0; +static int stk500_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) { + LNODEID ln; + const char *extended_param; + int attempts; + int rv = 0, help = 0; - for (ln = lfirst(extparms); ln; ln = lnext(ln)) { - extended_param = ldata(ln); + for (ln = lfirst(extparms); ln; ln = lnext(ln)) { + extended_param = ldata(ln); if (sscanf(extended_param, "attempts=%i", &attempts) == 1) { PDATA(pgm)->retry_attempts = attempts; @@ -783,33 +782,37 @@ static int stk500_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) } else if (str_eq(extended_param, "help")) { - msg_error("%s -c %s extended options:\n", progname, pgmid); - msg_error(" -xattempts= Specify the number of connection retry attempts\n"); - if (pgm->extra_features & HAS_VTARG_READ) { - msg_error(" -xvtarg Read target supply voltage\n"); - } - if (pgm->extra_features & HAS_VTARG_ADJ) { - msg_error(" -xvtarg= Set target supply voltage\n"); - } - if (pgm->extra_features & HAS_VAREF_ADJ) { - msg_error(" -xvaref Read analog reference voltage\n"); - msg_error(" -xvaref= Set analog reference voltage\n"); - } - if (pgm->extra_features & HAS_FOSC_ADJ) { - msg_error(" -xfosc Read oscillator clock frequency\n"); - msg_error(" -xfosc=[M|k]|off Set oscillator clock frequency\n"); - } - msg_error(" -xxtal=[M|k] Set programmer xtal frequency\n"); - msg_error(" -xhelp Show this help menu and exit\n"); - return LIBAVRDUDE_EXIT;; + help = 1; + rv = LIBAVRDUDE_EXIT; } - pmsg_error("invalid extended parameter %s\n", extended_param); - rv = -1; - } + if (!help) { + pmsg_error("invalid extended parameter %s\n", extended_param); + rv = -1; + } + msg_error("%s -c %s extended options:\n", progname, pgmid); + msg_error(" -xattempts= Specify the number of connection retry attempts\n"); + if (pgm->extra_features & HAS_VTARG_READ) { + msg_error(" -xvtarg Read target supply voltage\n"); + } + if (pgm->extra_features & HAS_VTARG_ADJ) { + msg_error(" -xvtarg= Set target supply voltage\n"); + } + if (pgm->extra_features & HAS_VAREF_ADJ) { + msg_error(" -xvaref Read analog reference voltage\n"); + msg_error(" -xvaref= Set analog reference voltage\n"); + } + if (pgm->extra_features & HAS_FOSC_ADJ) { + msg_error(" -xfosc Read oscillator clock frequency\n"); + msg_error(" -xfosc=[M|k]|off Set oscillator clock frequency\n"); + } + msg_error(" -xxtal=[M|k] Set programmer xtal frequency\n"); + msg_error(" -xhelp Show this help menu and exit\n"); + return rv; + } - return rv; - } + return rv; +} static void stk500_disable(const PROGRAMMER *pgm) { unsigned char buf[16]; diff --git a/src/wiring.c b/src/wiring.c index dc77bf71..9d0046d8 100644 --- a/src/wiring.c +++ b/src/wiring.c @@ -83,7 +83,7 @@ static void wiring_teardown(PROGRAMMER *pgm) { static int wiring_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) { LNODEID ln; const char *extended_param, *errstr; - int rv = 0; + int rv = 0, help = 0; for (ln = lfirst(extparms); ln; ln = lnext(ln)) { extended_param = ldata(ln); @@ -113,16 +113,20 @@ static int wiring_parseextparms(const PROGRAMMER *pgm, const LISTID extparms) { continue; } else if (str_eq(extended_param, "help")) { - msg_error("%s -c %s extended options:\n", progname, pgmid); - msg_error(" -xsnooze= Wait snooze ms before protocol sync after port open\n"); - msg_error(" -xdelay= Add delay [n] ms after reset, can be negative\n"); - msg_error(" -xnoautoreset Don't toggle RTS/DTR lines on port open to prevent a hardware reset\n"); - msg_error(" -xhelp Show this help menu and exit\n"); - return LIBAVRDUDE_EXIT;; + help = 1; + rv = LIBAVRDUDE_EXIT; } - pmsg_error("invalid extended parameter %s\n", extended_param); - rv = -1; + if (!help) { + pmsg_error("invalid extended parameter %s\n", extended_param); + rv = -1; + } + msg_error("%s -c %s extended options:\n", progname, pgmid); + msg_error(" -xsnooze= Wait snooze ms before protocol sync after port open\n"); + msg_error(" -xdelay= Add delay [n] ms after reset, can be negative\n"); + msg_error(" -xnoautoreset Don't toggle RTS/DTR lines on port open to prevent a hardware reset\n"); + msg_error(" -xhelp Show this help menu and exit\n"); + return rv; } return rv;