From 7375477f7097b4cb835f4e17889fc0674bb1ed38 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Tue, 9 Aug 2022 21:45:04 +0100 Subject: [PATCH] Replace string arrays with const char * and allocated space (part 1) This commit deals with default_programmer, default_serial, default_parallel and default_spi. The long term objective is to remove all fixed-size buffers from the structures that lexer.l and config_gram.y deal with. --- src/config.c | 8 ++++---- src/config.h | 2 -- src/config_gram.y | 12 ++++-------- src/libavrdude.h | 8 ++++---- src/main.c | 17 +++++++++-------- 5 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/config.c b/src/config.c index 8d99848d..f0b65822 100644 --- a/src/config.c +++ b/src/config.c @@ -33,10 +33,10 @@ #include "config_gram.h" -char default_programmer[MAX_STR_CONST]; -char default_parallel[PATH_MAX]; -char default_serial[PATH_MAX]; -char default_spi[PATH_MAX]; +const char *default_programmer; +const char *default_parallel; +const char *default_serial; +const char *default_spi; double default_bitclock; LISTID string_list; diff --git a/src/config.h b/src/config.h index 260d404a..7b6c6d0d 100644 --- a/src/config.h +++ b/src/config.h @@ -30,8 +30,6 @@ #endif -#define MAX_STR_CONST 1024 - enum { V_NONE, V_NUM, V_NUM_REAL, V_STR }; typedef struct value_t { int type; diff --git a/src/config_gram.y b/src/config_gram.y index 0b9cf6cd..554de900 100644 --- a/src/config_gram.y +++ b/src/config_gram.y @@ -246,26 +246,22 @@ def : part_def TKN_SEMI | K_DEFAULT_PROGRAMMER TKN_EQUAL TKN_STRING TKN_SEMI { - strncpy(default_programmer, $3->value.string, MAX_STR_CONST); - default_programmer[MAX_STR_CONST-1] = 0; + default_programmer = cache_string($3->value.string); free_token($3); } | K_DEFAULT_PARALLEL TKN_EQUAL TKN_STRING TKN_SEMI { - strncpy(default_parallel, $3->value.string, PATH_MAX); - default_parallel[PATH_MAX-1] = 0; + default_parallel = cache_string($3->value.string); free_token($3); } | K_DEFAULT_SERIAL TKN_EQUAL TKN_STRING TKN_SEMI { - strncpy(default_serial, $3->value.string, PATH_MAX); - default_serial[PATH_MAX-1] = 0; + default_serial = cache_string($3->value.string); free_token($3); } | K_DEFAULT_SPI TKN_EQUAL TKN_STRING TKN_SEMI { - strncpy(default_spi, $3->value.string, PATH_MAX); - default_spi[PATH_MAX-1] = 0; + default_spi = cache_string($3->value.string); free_token($3); } | diff --git a/src/libavrdude.h b/src/libavrdude.h index 840d8fc1..3c2f2a57 100644 --- a/src/libavrdude.h +++ b/src/libavrdude.h @@ -992,10 +992,10 @@ void walk_programmer_types(/*LISTID programmer_types,*/ walk_programmer_types_cb extern LISTID part_list; extern LISTID programmers; -extern char default_programmer[]; -extern char default_parallel[]; -extern char default_serial[]; -extern char default_spi[]; +extern const char *default_programmer; +extern const char *default_parallel; +extern const char *default_serial; +extern const char *default_spi; extern double default_bitclock; /* This name is fixed, it's only here for symmetry with diff --git a/src/main.c b/src/main.c index b696d6d7..08266f00 100644 --- a/src/main.c +++ b/src/main.c @@ -314,10 +314,11 @@ int main(int argc, char * argv []) else progname = argv[0]; - default_parallel[0] = 0; - default_serial[0] = 0; - default_spi[0] = 0; - default_bitclock = 0.0; + default_programmer = ""; + default_parallel = ""; + default_serial = ""; + default_spi = ""; + default_bitclock = 0.0; init_config(); @@ -351,7 +352,7 @@ int main(int argc, char * argv []) quell_progress = 0; exitspecs = NULL; pgm = NULL; - programmer = default_programmer; + programmer = cfg_strdup("main()", default_programmer); verbose = 0; baudrate = 0; bitclock = 0.0; @@ -755,7 +756,7 @@ int main(int argc, char * argv []) int dev_opts = 0; // Developer option -c /[ASsrt] prints programmer description(s) and exits if(programmer && (strcmp(programmer, "*") == 0 || strchr(programmer, '/'))) { - dev_output_pgm_defs(programmer); + dev_output_pgm_defs(cfg_strdup("main()", programmer)); dev_opts = 1; } // Developer option -p /[dASsrcow*t] prints part description(s) and exits @@ -849,11 +850,11 @@ int main(int argc, char * argv []) switch (pgm->conntype) { case CONNTYPE_PARALLEL: - port = default_parallel; + port = cfg_strdup("main()", default_parallel); break; case CONNTYPE_SERIAL: - port = default_serial; + port = cfg_strdup("main()", default_serial); break; case CONNTYPE_USB: