diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1996-12-13 19:41:18 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1996-12-13 19:41:18 +0000 |
commit | a8aa30d8968bbcb3a9f6f9025305ac9a0f8a09e5 (patch) | |
tree | da3effe7ee81da906d2bf5380b62547c8dd3ce9e | |
parent | dbe26481436613a3886a1b45f0cdb996c852758a (diff) | |
download | guile-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.c | 27 | ||||
-rw-r--r-- | libguile/strports.h | 3 |
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 */ |