remove unnecessary code
[calc.git] / parser.c
index b3f370d0c059f6715fdf0b7141027809ec643f3e..ed39dd78e72e2ca55fcd642b56a9e4cfae943307 100644 (file)
--- 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,11 @@ element_t *parser (char *str, char **next, int prio)
         *next = str;
     }
 
+    /* save string */
+    if (root != NULL) {
+        root->string = string;
+    }
+
     return root;
 }
 
@@ -776,6 +782,7 @@ void prog (int id, int nbmems, element_t *root)
             }
             if ((programs + n)->string) {
                 free ((programs + n)->string);
+                (programs + n)->string = NULL;
             }
         }
     }
@@ -872,11 +879,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;
 
@@ -890,15 +896,16 @@ void save_string (int id, char *string)
             }
         }
     }
-    if (n == -1) {
-        VERBOSE (WARNING, fprintf (stdout, "error unknown program (%d)\n", id));
-        return;
-    }
 
-    /* save program */
-    if ((programs + n)->string) {
-        free ((programs + n)->string);
-    }
+    /* unnecesary code */
+    //if (n == -1) {
+    //    VERBOSE (WARNING, fprintf (stdout, "error unknown program (%d)\n", id));
+    //    return;
+    //}
+    //if ((programs + n)->string) {
+    //    free ((programs + n)->string);
+    //}
+
     (programs + n)->string = strdup (string);
 }
 
@@ -1138,7 +1145,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]) {