summaryrefslogtreecommitdiff
path: root/streams.c
diff options
context:
space:
mode:
Diffstat (limited to 'streams.c')
-rw-r--r--streams.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/streams.c b/streams.c
index a11eeb7..e090cdb 100644
--- a/streams.c
+++ b/streams.c
@@ -205,10 +205,8 @@ readterm(Term *stream, Term **term)
}
void
-writeterm(Term *stream, Term *options, Term *term)
+writeterm(Term *stream, Term *options, Term *term, Module *mod)
{
- USED(options);
-
Stream *s = getstream(stream);
if(s == nil)
return;
@@ -217,7 +215,19 @@ writeterm(Term *stream, Term *options, Term *term)
int ignoreops = 0;
int numbervars = 0;
- Rune *output = prettyprint(term, quoted, ignoreops, numbervars);
+ Term *op;
+ for(op = options; op->tag == CompoundTerm; op = op->children->next){
+ Term *opkey = op->children->children;
+ Term *opval = opkey->next;
+ if(runestrcmp(opkey->text, L"quoted") == 0)
+ quoted = opval->ival;
+ else if(runestrcmp(opkey->text, L"ignore_ops") == 0)
+ ignoreops = opval->ival;
+ else if(runestrcmp(opkey->text, L"numbervars") == 0)
+ numbervars = opval->ival;
+ }
+
+ Rune *output = prettyprint(term, quoted, ignoreops, numbervars, mod);
Bprint(s->bio, "%S", output);
Bflush(s->bio);
}