#endif
}
+#ifdef __AFL_HAVE_MANUAL_CONTROL
+
+ANN static void gwion_reset(const Gwion gwion) {
+ release_ctx(gwion->env->scope, gwion);
+ pop_global(gwion);
+ push_global(gwion, "[user]");
+}
+
+#define BUFSIZE 1024
+
+static void afl_run(const Gwion gwion) {
+ char buf[BUFSIZE];
+ __AFL_INIT();
+ while (__AFL_LOOP(1000)) {
+ memset(buf, 0, BUFSIZE);
+ read(0, buf, BUFSIZE);
+ if(compile_string(gwion, "afl", buf))
+ gwion_run(gwion);
+ gwion_reset(gwion);
+ }
+}
+#define gwion_run(a) afl_run(a)
+#endif
+
int main(int argc, char** argv) {
Arg arg = { .arg={.argc=argc, .argv=argv}, .loop=-1 };
signal(SIGINT, sig);