From cc4feeca51e8b9f2883cfd0efb51092e6a014b4c Mon Sep 17 00:00:00 2001 From: Dirk Herrmann Date: Tue, 18 Jul 2000 07:02:57 +0000 Subject: [PATCH] * Deprecated function scm_call_catching_errors. * Updated root-smob initialization. --- NEWS | 4 ++++ RELEASE | 2 ++ libguile/ChangeLog | 7 +++++++ libguile/root.c | 14 +++++++++----- libguile/root.h | 10 +++++++++- 5 files changed, 31 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index c79e3eb4d..e902d5a4d 100644 --- a/NEWS +++ b/NEWS @@ -79,6 +79,10 @@ SCM_ORD_SIG, SCM_NUM_SIGS Use SCM_ASSERT_RANGE or SCM_VALIDATE_XXX_RANGE instead of SCM_OUTOFRANGE. Use scm_memory_error instead of SCM_NALLOC. +** Deprecated function: scm_call_catching_errors + +Use scm_catch or scm_lazy_catch from throw.[ch] instead. + Changes since Guile 1.3.4: diff --git a/RELEASE b/RELEASE index f9b7ff1b2..497e79b78 100644 --- a/RELEASE +++ b/RELEASE @@ -42,6 +42,8 @@ In release 1.6: SCM_INT_SIGNAL, SCM_FPE_SIGNAL, SCM_BUS_SIGNAL, SCM_SEGV_SIGNAL, SCM_ALRM_SIGNAL, SCM_GC_SIGNAL, SCM_TICK_SIGNAL, SCM_SIG_ORD, SCM_ORD_SIG, SCM_NUM_SIGS +- remove function scm_call_catching_errors + (replaced by catch functions from throw.[ch]) Modules sort.c and random.c should be factored out into separate diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 298f5dea8..880fd9632 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,10 @@ +2000-07-18 Dirk Herrmann + + * root.[ch] (scm_call_catching_errors): Deprecated. + + * root.c (scm_init_root): Initialize the root smob type using the + standard initialization functions. + 2000-07-17 Marius Vollmer * eval.c (unmemocopy): Don't rely on V being a list of at least diff --git a/libguile/root.c b/libguile/root.c index 5504f3544..e58db5304 100644 --- a/libguile/root.c +++ b/libguile/root.c @@ -399,12 +399,13 @@ scm_apply_with_dynamic_root (SCM proc, SCM a1, SCM args, SCM handler) +#if (SCM_DEBUG_DEPRECATED == 0) + /* Call thunk(closure) underneath a top-level error handler. * If an error occurs, pass the exitval through err_filter and return it. * If no error occurs, return the value of thunk. */ - #ifdef _UNICOS typedef int setjmp_type; #else @@ -412,7 +413,6 @@ typedef long setjmp_type; #endif - SCM scm_call_catching_errors (SCM (*thunk)(), SCM (*err_filter)(), void *closure) { @@ -436,12 +436,16 @@ scm_call_catching_errors (SCM (*thunk)(), SCM (*err_filter)(), void *closure) return answer; } +#endif /* SCM_DEBUG_DEPRECATED == 0 */ + + void scm_init_root () { - scm_tc16_root = scm_make_smob_type_mfpe ("root", sizeof (struct scm_root_state), - mark_root, NULL, print_root, NULL); - + scm_tc16_root = scm_make_smob_type ("root", sizeof (struct scm_root_state)); + scm_set_smob_mark (scm_tc16_root, mark_root); + scm_set_smob_print (scm_tc16_root, print_root); + #include "libguile/root.x" } diff --git a/libguile/root.h b/libguile/root.h index c769e6c98..2c6bdc255 100644 --- a/libguile/root.h +++ b/libguile/root.h @@ -161,9 +161,17 @@ extern SCM scm_internal_cwdr (scm_catch_body_t body, extern SCM scm_call_with_dynamic_root (SCM thunk, SCM handler); extern SCM scm_dynamic_root (void); extern SCM scm_apply_with_dynamic_root (SCM proc, SCM a1, SCM args, SCM handler); -extern SCM scm_call_catching_errors (SCM (*thunk)(), SCM (*err_filter)(), void * closure); extern void scm_init_root (void); + + +#if (SCM_DEBUG_DEPRECATED == 0) + +/* Use the catch functions from throw.[ch] instead of: */ +extern SCM scm_call_catching_errors (SCM (*thunk)(), SCM (*err_filter)(), void * closure); + +#endif /* SCM_DEBUG_DEPRECATED == 0 */ + #endif /* ROOTH */ /*