summaryrefslogtreecommitdiff
path: root/src/scheme/ao_scheme_rep.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/scheme/ao_scheme_rep.c')
-rw-r--r--src/scheme/ao_scheme_rep.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/scheme/ao_scheme_rep.c b/src/scheme/ao_scheme_rep.c
index b35ba5b8..49ab0559 100644
--- a/src/scheme/ao_scheme_rep.c
+++ b/src/scheme/ao_scheme_rep.c
@@ -15,13 +15,15 @@
#include "ao_scheme.h"
ao_poly
-ao_scheme_read_eval_print(void)
+ao_scheme_read_eval_print(FILE *read_file, FILE *write_file, bool interactive)
{
ao_poly in, out = AO_SCHEME_NIL;
ao_scheme_exception = 0;
for(;;) {
- in = ao_scheme_read();
+ if (interactive)
+ fputs("> ", write_file);
+ in = ao_scheme_read(read_file);
if (in == _ao_scheme_atom_eof)
break;
out = ao_scheme_eval(in);
@@ -30,8 +32,10 @@ ao_scheme_read_eval_print(void)
break;
ao_scheme_exception = 0;
} else {
- ao_scheme_poly_write(out, true);
- putchar ('\n');
+ if (write_file) {
+ ao_scheme_poly_write(write_file, out, true);
+ putc('\n', write_file);
+ }
}
}
return out;