]> code.bitgloo.com Git - clyne/calculator.git/commitdiff
libinterp changes
authorClyne Sullivan <clyne@bitgloo.com>
Mon, 2 Apr 2018 16:29:22 +0000 (12:29 -0400)
committerClyne Sullivan <clyne@bitgloo.com>
Mon, 2 Apr 2018 16:29:22 +0000 (12:29 -0400)
libinterp.a
src/main.c

index 04391e1deab3ed92d758cec68b99c0349ca1cd77..46f2a26b7188d1666eb6ef155e4bad47fe15995b 100644 (file)
Binary files a/libinterp.a and b/libinterp.a differ
index b39053abca2036dcd2aa5baf38289b4fb081a373..79f3e9237c6ce37b7131e4f62f53610b063ed21b 100644 (file)
@@ -90,12 +90,14 @@ void task_interpreter(void)
        instance *it = inewinstance();\r
        script_loadlib(it);\r
 \r
+       // load '/init' file\r
        char *s = initrd_readfile("init");\r
        if (s == 0) {\r
                dsp_puts("can't find init");\r
                goto end;\r
        }\r
 \r
+       // read in, parse into script code\r
        char *linebuf = (char *)malloc(120);\r
        uint32_t i = 0, prev = 0, lc;\r
        uint32_t size = initrd_filesize("init");\r
@@ -109,21 +111,27 @@ void task_interpreter(void)
                }\r
                strncpy(linebuf, s + prev, lc + 1);\r
                linebuf[lc] = '\0';\r
-               ret = idoline(it, linebuf);\r
-               if (ret < 0)\r
-                       break;\r
+               ret = iaddline(it, linebuf);\r
+               if (ret != 0)\r
+                       goto fail;\r
                prev = ++i;\r
        }\r
-\r
-       if (ret < 0) {\r
-               dsp_puts("\nError: ");\r
-               dsp_puts(itoa(ret, linebuf, 10));\r
-       }\r
        free(linebuf);\r
-       //iend(&it); // nah\r
+\r
+       // run the script\r
+       ret = irun(it);\r
+       if (ret != 0)\r
+               goto fail;\r
+       idelinstance(it);\r
 \r
 end:\r
        while (1)\r
                delay(10);\r
+fail:\r
+       if (ret < 0) {\r
+               dsp_puts("\nError: ");\r
+               dsp_puts(itoa(ret, linebuf, 10));\r
+       }\r
+       goto end;\r
 }\r
 \r