summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-01-02 09:37:27 -0800
committerKaz Kylheku <kaz@kylheku.com>2016-01-02 09:37:27 -0800
commite694dde54a71cad3e2df5b28400aac8c7d564932 (patch)
treed53c8ee9274a1b890b621bd94f9e171973b264f3 /eval.c
parent31c0ddaa876f22274193f6656498d247e42236e6 (diff)
downloadtxr-e694dde54a71cad3e2df5b28400aac8c7d564932.tar.gz
txr-e694dde54a71cad3e2df5b28400aac8c7d564932.tar.bz2
txr-e694dde54a71cad3e2df5b28400aac8c7d564932.zip
Use last-form-evaled mechanism for pattern language.
We need this now, since file system errors aren't handled in the pattern language any more, after the complex_open refactoring. * eval.c (set_last_form_evaled): New function. * eval.h (set_last_form_evaled): Declared. * match.c (do_match_line, match_files): Save, set up and restore last_form_evaled via set_last_form_evaled function.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/eval.c b/eval.c
index c754136d..384408af 100644
--- a/eval.c
+++ b/eval.c
@@ -228,6 +228,13 @@ static val set_origin(val form, val origin)
return form;
}
+val set_last_form_evaled(val form)
+{
+ val prev = last_form_evaled;
+ last_form_evaled = form;
+ return prev;
+}
+
void error_trace(val exsym, val exvals, val out_stream, val prefix)
{
val last = last_form_evaled;