cleanup cmd node
[protos/libecoli.git] / lib / ecoli_node_expr_test.c
index f14cf50..ee67cbf 100644 (file)
@@ -51,7 +51,9 @@ ec_node_expr_test_eval_var(void **result, void *userctx,
        const struct ec_parsed *var)
 {
        const struct ec_strvec *vec;
-       struct my_eval_result *eval;
+       const struct ec_node *node;
+       struct my_eval_result *eval = NULL;
+       int64_t val;
 
        (void)userctx;
 
@@ -60,11 +62,15 @@ ec_node_expr_test_eval_var(void **result, void *userctx,
        if (ec_strvec_len(vec) != 1)
                return -EINVAL;
 
+       node = ec_parsed_get_node(var);
+       if (ec_node_int_getval(node, ec_strvec_val(vec, 0), &val) < 0)
+               return -EINVAL;
+
        eval = ec_malloc(sizeof(*eval));
        if (eval == NULL)
                return -ENOMEM;
 
-       eval->val = atoi(ec_strvec_val(vec, 0)); // XXX use strtol
+       eval->val = val;
        printf("eval var %d\n", eval->val);
        *result = eval;
 
@@ -192,8 +198,6 @@ static int ec_node_expr_test_eval(struct ec_node *lex_node,
        struct my_eval_result *eval;
        int ret;
 
-       /* XXX check node type (again and again) */
-
        p = ec_node_parse(lex_node, str);
        if (p == NULL)
                return -1;