From 779282bba9b01f32ff208220e35cfc266721bacc Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Tue, 31 Jan 2023 23:03:49 +0100 Subject: [PATCH] full edit function --- calc.c | 3 --- parser.c | 14 ++++++++++---- parser.h | 3 +-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/calc.c b/calc.c index 042bda7..d5b0246 100644 --- a/calc.c +++ b/calc.c @@ -224,9 +224,6 @@ int main (int argc, char *argv[]) if (!element->hidden) { print (answer); } - if (element->func == Prog) { - save_string (element->ops[0]->value, line[i]); - } delelement (element); ret = 0; } diff --git a/parser.c b/parser.c index b3f370d..3d8681c 100644 --- a/parser.c +++ b/parser.c @@ -206,6 +206,7 @@ element_t *subparser (element_t **proot, char **pstr, func_t func, int nbops, in element_t *parser (char *str, char **next, int prio) { element_t *root = NULL; + char *string = str; int i; VERBOSE (DEBUG, fprintf (stdout, "Starting parsing\n")); @@ -478,6 +479,9 @@ element_t *parser (char *str, char **next, int prio) *next = str; } + /* save string */ + root->string = string; + return root; } @@ -872,11 +876,10 @@ void edit (int id) } /* set string program */ - //rl_insert_text ((programs + n)->string); - VERBOSE (INFO, fprintf (stdout, "edit: %s\n", (programs + n)->string)); + fprintf (stdout, "edit: %s\n", (programs + n)->string); } -void save_string (int id, char *string) +void savestring (int id, char *string) { int i, n = -1; @@ -1138,7 +1141,10 @@ double evaluate_element (element_t *root, char mask) case While: return while_do (root->ops[0], root->ops[1]); case Code: return execute_code (root->ops, root->nbops); case Print: return print (op0); - case Prog: prog ((int)op0, (int)op1, root->ops[2]); break; + case Prog: + prog ((int)op0, (int)op1, root->ops[2]); + savestring ((int)op0, root->string); + break; case Call: for (i = 1, nb =0; i < root->nbops; i++) { if (root->ops[i]) { diff --git a/parser.h b/parser.h index 9fbde3a..0b9233f 100644 --- a/parser.h +++ b/parser.h @@ -43,6 +43,7 @@ typedef struct _element_t { double value; int prio; int hidden; + char *string; } element_t; #define ERROR_OP ((element_t *)(-1)) @@ -68,8 +69,6 @@ void print_element (element_t *root, int level); double evaluate_element (element_t *root, char mask); -void save_string (int id, char *string); - /* completion functions */ char **generate_completion_list (); -- 2.30.2