summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>1996-12-13 19:41:18 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>1996-12-13 19:41:18 +0000
commita8aa30d8968bbcb3a9f6f9025305ac9a0f8a09e5 (patch)
treeda3effe7ee81da906d2bf5380b62547c8dd3ce9e
parentdbe26481436613a3886a1b45f0cdb996c852758a (diff)
downloadguile-a8aa30d8968bbcb3a9f6f9025305ac9a0f8a09e5.tar.gz
* * strports.c, strports.h: Make scm_eval_0str return the value of
the last expression evaluated (previously, it returned void). * * strports.c, strports.h: New function: scm_read_0str. Does what it sounds like.
-rw-r--r--libguile/strports.c27
-rw-r--r--libguile/strports.h3
2 files changed, 26 insertions, 4 deletions
diff --git a/libguile/strports.c b/libguile/strports.c
index 48d5c088f..e0b1b092b 100644
--- a/libguile/strports.c
+++ b/libguile/strports.c
@@ -229,9 +229,28 @@ scm_call_with_input_string (str, proc)
+/* Given a null-terminated string EXPR containing a Scheme expression
+ read it, and return it as an SCM value. */
+SCM
+scm_read_0str (expr)
+ char *expr;
+{
+ SCM port = scm_mkstrport (SCM_MAKINUM (0),
+ scm_makfrom0str (expr),
+ SCM_OPN | SCM_RDNG,
+ "scm_eval_0str");
+ SCM form;
+
+ /* Read expressions from that port; ignore the values. */
+ form = scm_read (port, SCM_BOOL_F, SCM_BOOL_F);
+
+ scm_close_port (port);
+ return form;
+}
+
/* Given a null-terminated string EXPR containing Scheme program text,
- evaluate it, and discard the result. */
-void
+ evaluate it, and return the result of the last expression evaluated. */
+SCM
scm_eval_0str (expr)
char *expr;
{
@@ -240,12 +259,14 @@ scm_eval_0str (expr)
SCM_OPN | SCM_RDNG,
"scm_eval_0str");
SCM form;
+ SCM ans;
/* Read expressions from that port; ignore the values. */
while ((form = scm_read (port, SCM_BOOL_F, SCM_BOOL_F)) != SCM_EOF_VAL)
- scm_eval_x (form);
+ ans = scm_eval_x (form);
scm_close_port (port);
+ return ans;
}
diff --git a/libguile/strports.h b/libguile/strports.h
index 4e0598f57..fc0a1ed9f 100644
--- a/libguile/strports.h
+++ b/libguile/strports.h
@@ -54,7 +54,8 @@ extern SCM scm_mkstrport SCM_P ((SCM pos, SCM str, long modes, char * caller));
extern SCM scm_call_with_output_string SCM_P ((SCM proc));
extern SCM scm_strprint_obj SCM_P ((SCM obj));
extern SCM scm_call_with_input_string SCM_P ((SCM str, SCM proc));
-extern void scm_eval_0str SCM_P ((char *expr));
+extern SCM scm_read_0str SCM_P ((char *expr));
+extern SCM scm_eval_0str SCM_P ((char *expr));
extern void scm_init_strports SCM_P ((void));
#endif /* STRPORTSH */