diff --git a/lxc/executors/brainfuck b/lxc/executors/brainfuck index eb9725d..7a82aa5 100755 --- a/lxc/executors/brainfuck +++ b/lxc/executors/brainfuck @@ -1,4 +1,33 @@ #!/bin/bash cd /tmp/$1 -timeout -s KILL 3 xargs -a args.args -d '\n' brainfuck code.code < stdin.stdin +sedarg="\ +s/+/P/g;\ +s/-/M/g;\ +s/>/++p;/g;\ +s/ code.c +#include + +char mem[1<<$MEMSIZE]; +char *p = mem + (1<<$((MEMSIZE - 1))); +int c; + +int main() { + $(timeout -s KILL 3 sed 's/[^][<>.,+-]//g' code.code | timeout -s KILL 3 sed $sedarg) +} +EOF +timeout -s KILL 3 gcc -std=c11 -o binary code.c + +# execution +timeout -s KILL 3 ./binary < args.args < stdin.stdin