From 4d05e2bc73496cd2e5637dd2153f09d9a34e6b3d Mon Sep 17 00:00:00 2001 From: Markus Uhlin Date: Mon, 1 Apr 2024 19:31:28 +0200 Subject: Revised set_prompt() --- FICS/variable.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/FICS/variable.c b/FICS/variable.c index 7840b40..0d28752 100644 --- a/FICS/variable.c +++ b/FICS/variable.c @@ -468,22 +468,29 @@ PRIVATE int set_promote(int p, char *var, char *val) return VAR_OK; } -PRIVATE int set_prompt(int p, char *var, char *val) +PRIVATE int +set_prompt(int p, char *var, char *val) { - if (!val) { - if (parray[p].prompt && (parray[p].prompt != def_prompt)) - rfree(parray[p].prompt); - parray[p].prompt = def_prompt; - return VAR_OK; - } - if (!printablestring(val)) - return VAR_BADVAL; - if (parray[p].prompt != def_prompt) - rfree(parray[p].prompt); - parray[p].prompt = (char *) rmalloc(strlen(val) + 2); - strcpy(parray[p].prompt, val); - strcat(parray[p].prompt, " "); - return VAR_OK; + if (!val) { + if (parray[p].prompt && parray[p].prompt != def_prompt) + rfree(parray[p].prompt); + parray[p].prompt = def_prompt; + return VAR_OK; + } + + if (!printablestring(val)) + return VAR_BADVAL; + + if (parray[p].prompt != def_prompt) + rfree(parray[p].prompt); + + const size_t size = strlen(val) + 2; + parray[p].prompt = rmalloc(size); + + strlcpy(parray[p].prompt, val, size); + strlcat(parray[p].prompt, " ", size); + + return VAR_OK; } PRIVATE int -- cgit v1.2.3