From 275677dd44b18b1cef3acfa30f52d8afa562b639 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Mon, 2 Apr 2018 12:29:22 -0400 Subject: libinterp changes --- src/main.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/main.c b/src/main.c index b39053a..79f3e92 100644 --- a/src/main.c +++ b/src/main.c @@ -90,12 +90,14 @@ void task_interpreter(void) instance *it = inewinstance(); script_loadlib(it); + // load '/init' file char *s = initrd_readfile("init"); if (s == 0) { dsp_puts("can't find init"); goto end; } + // read in, parse into script code char *linebuf = (char *)malloc(120); uint32_t i = 0, prev = 0, lc; uint32_t size = initrd_filesize("init"); @@ -109,21 +111,27 @@ void task_interpreter(void) } strncpy(linebuf, s + prev, lc + 1); linebuf[lc] = '\0'; - ret = idoline(it, linebuf); - if (ret < 0) - break; + ret = iaddline(it, linebuf); + if (ret != 0) + goto fail; prev = ++i; } - - if (ret < 0) { - dsp_puts("\nError: "); - dsp_puts(itoa(ret, linebuf, 10)); - } free(linebuf); - //iend(&it); // nah + + // run the script + ret = irun(it); + if (ret != 0) + goto fail; + idelinstance(it); end: while (1) delay(10); +fail: + if (ret < 0) { + dsp_puts("\nError: "); + dsp_puts(itoa(ret, linebuf, 10)); + } + goto end; } -- cgit v1.2.3