From ead340a66039096c7b4bf12dcd65e189769c6653 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Mon, 18 Oct 2021 17:51:11 -0700 Subject: feat(rc): job control prototype working for basic commands --- sys/cmd/rc/code.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'sys/cmd/rc/code.c') diff --git a/sys/cmd/rc/code.c b/sys/cmd/rc/code.c index 6deed89..8dec021 100644 --- a/sys/cmd/rc/code.c +++ b/sys/cmd/rc/code.c @@ -13,9 +13,9 @@ struct Interpreter Code *compiled = nil; static struct Interpreter interpreter; -#define emiti(x) ((void)(interpreter.i != interpreter.cap || grow()), interpreter.code[interpreter.i].i = (x), interpreter.i++) -#define emitf(x) ((void)(interpreter.i != interpreter.cap || grow()), interpreter.code[interpreter.i].f = (x), interpreter.i++) -#define emits(x) ((void)(interpreter.i != interpreter.cap || grow()), interpreter.code[interpreter.i].s = (x), interpreter.i++) +#define emiti(x) ((void)(interpreter.i != interpreter.cap || grow()), interpreter.code[interpreter.i].i = (x), interpreter.i++) +#define emitf(x) ((void)(interpreter.i != interpreter.cap || grow()), interpreter.code[interpreter.i].f = (x), interpreter.i++) +#define emits(x) ((void)(interpreter.i != interpreter.cap || grow()), interpreter.code[interpreter.i].s = (x), interpreter.i++) static int @@ -59,18 +59,21 @@ walk(Tree *node) emitf(Xdollar); break; +#if 0 case '&': emitf(Xasync); p = emiti(0); emitf(Xexit); stashaddr(p); break; +#endif case ';': walk(node->child[0]); walk(node->child[1]); break; +#if 0 case '^': emitf(Xmark); walk(node->child[1]); @@ -78,6 +81,7 @@ walk(Tree *node) walk(node->child[0]); emitf(Xconcatenate); break; +#endif case Targs: walk(node->child[1]); @@ -149,9 +153,11 @@ int compile(Tree *node) { flush(errio); - print(errio, "%t\n", node); + //print(errio, "%t\n", node); + + interpreter.i = 0; + interpreter.code = emalloc(100*sizeof(*interpreter.code)); - interpreter.i = 0; emiti(1); // reference count walk(node); -- cgit v1.2.1