aboutsummaryrefslogtreecommitdiffstats
path: root/src/script.c
diff options
context:
space:
mode:
authorClyne Sullivan <tullivan99@gmail.com>2018-03-28 22:33:39 -0400
committerClyne Sullivan <tullivan99@gmail.com>2018-03-28 22:33:39 -0400
commit93396d69eb71cb724d47dc927becf5a129baa168 (patch)
tree81b0ce0569f8d52b1cc387ecb72b31b67ca9c788 /src/script.c
parentefd1e11475088284803f5db0f554f6ef2d0268f5 (diff)
adding support for loading files throught script
Diffstat (limited to 'src/script.c')
-rw-r--r--src/script.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/script.c b/src/script.c
index 0ce5509..518edc5 100644
--- a/src/script.c
+++ b/src/script.c
@@ -25,6 +25,7 @@
#include <display.h>
#include <display_draw.h>
#include <heap.h>
+#include <initrd.h>
#include <random.h>
#include <serial.h>
#include <stdlib.h>
@@ -46,6 +47,7 @@ int script_rand(instance *it);
int script_getkey(instance *it);
int script_pixel(instance *it);
int script_menu(instance *it);
+int script_filemenu(instance *it);
void script_loadlib(instance *it)
{
@@ -64,6 +66,7 @@ void script_loadlib(instance *it)
inew_cfunc(it, "delay", script_delay);
inew_cfunc(it, "menu", script_menu);
+ inew_cfunc(it, "filemenu", script_filemenu);
}
int script_menu(instance *it)
@@ -83,6 +86,23 @@ int script_menu(instance *it)
return 0;
}
+int script_filemenu(instance *it)
+{
+ char listbuf[4];
+ char *buf = calloc(17, 1);
+ char *fname;
+ strncpy(listbuf, " : \0", 4);
+ dsp_puts("Choose a file: \n");
+ for (unsigned int i = 0; (fname = initrd_getnfile(i)) != 0; i++) {
+ listbuf[0] = i + '0';
+ dsp_puts(listbuf);
+ dsp_puts(strncpy(buf, fname, 16));
+ dsp_puts("\n");
+ }
+ free(buf);
+ return script_gets(it);
+}
+
int script_puts(instance *it)
{
variable *v = igetarg(it, 0);