From dec3fd0fd96b24ce7d7bdc7bc27b4c483cf6aae3 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Sun, 13 Mar 2022 11:39:06 +0100 Subject: [PATCH] adding expressions in {} as pwl parameters not complete, still requires caring about the FIXME above. --- src/frontend/inpcom.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index 70c354d98..38c1a0eb4 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -5661,6 +5661,8 @@ static void inp_compat(struct card *card) '}' (braces around token after '=') */ if ((str_ptr = strchr(cut_line, '=')) != NULL) *str_ptr = ' '; + /* FIXME: To enable adding expressions in {} as pwl parameters, we need an intelligent + removal of {}, not just brute force as following now. */ if ((str_ptr = strchr(cut_line, '{')) != NULL) *str_ptr = ' '; if ((str_ptr = strchr(cut_line, '}')) != NULL) @@ -5681,8 +5683,16 @@ static void inp_compat(struct card *card) int ipairs = 0; char* pair_line = cut_line; while (*cut_line != '\0') { - firstno = gettok_node(&cut_line); - secondno = gettok_node(&cut_line); + /* If we have expressions in {}, we copy the complete expression, + otherwise only the next token. */ + if (*cut_line == '{') + firstno = gettok_char(&cut_line, '}', TRUE, TRUE); + else + firstno = gettok_node(&cut_line); + if (*cut_line == '{') + secondno = gettok_char(&cut_line, '}', TRUE, TRUE); + else + secondno = gettok_node(&cut_line); if ((!firstno && secondno) || (firstno && !secondno)) { fprintf(stderr, "Error: Missing token in %s\n", curr_line);