diff options
Diffstat (limited to 'streams.c')
-rw-r--r-- | streams.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -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); } |