From 44d29a33df81ac07163d5146a9e43a0c4fb80af0 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Sun, 13 Sep 2020 22:06:40 -0400 Subject: new shell --- src/user/highway/cmds.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/user/highway/cmds.c (limited to 'src/user/highway/cmds.c') diff --git a/src/user/highway/cmds.c b/src/user/highway/cmds.c new file mode 100644 index 0000000..d7a89d1 --- /dev/null +++ b/src/user/highway/cmds.c @@ -0,0 +1,46 @@ +#include +#include +#include "line.h" +#include "vars.h" + +void source(const char *path) { + struct file *f = open_file(path); + if (!f) + tell_user_sz("couldn't open file.\n"); + char buf[128]; + while (read_line_from_file(f, buf, 127)) + run_line(buf); + close_file(f); +} + +void set(const char *arg) { + const char *space = arg; + while (*space != ' ') + if (*space) + ++space; + else { + struct no_null_sn vname = { + .data = arg, + .length = space - arg + }; + del_var(vname); + return; + } + + struct no_null_sn vname = { + .data = arg, + .length = space - arg + }; + + const char *vstart = space + 1, + *vend = vstart; + while (*vend) + ++vend; + + struct no_null_sn vval = { + .data = vstart, + .length = vend - vstart + }; + + set_var(vname, vval); +} \ No newline at end of file -- cgit v1.2.3