diff --git a/c/external.c b/c/external.c index f70ab81..d625cc2 100644 --- a/c/external.c +++ b/c/external.c @@ -506,65 +506,124 @@ s48_raise_os_error(int the_errno) { void s48_raise_os_error_1(int the_errno, s48_value arg1) { + + s48_value sch_errno = S48_UNSPECIFIC; + + S48_DECLARE_GC_PROTECT(2); + S48_GC_PROTECT_2 (arg1, sch_errno); + + sch_errno = s48_enter_integer(the_errno); + s48_raise_scheme_exception(S48_EXCEPTION_OS_ERROR, 3, - s48_enter_integer(the_errno), + sch_errno, s48_enter_string(strerror(the_errno)), arg1); + + S48_GC_UNPROTECT(); } void s48_raise_os_error_2(int the_errno, s48_value arg1, s48_value arg2) { + + s48_value sch_errno = S48_UNSPECIFIC; + + S48_DECLARE_GC_PROTECT(3); + S48_GC_PROTECT_3 (arg1, arg2, sch_errno); + + sch_errno = s48_enter_integer(the_errno); + s48_raise_scheme_exception(S48_EXCEPTION_OS_ERROR, 4, - s48_enter_integer(the_errno), + sch_errno, s48_enter_string(strerror(the_errno)), arg1, arg2); + S48_GC_UNPROTECT(); } void s48_raise_os_error_3(int the_errno, s48_value arg1, s48_value arg2, s48_value arg3) { + + s48_value sch_errno = S48_UNSPECIFIC; + + S48_DECLARE_GC_PROTECT(4); + S48_GC_PROTECT_4 (arg1, arg2, arg3, sch_errno); + + sch_errno = s48_enter_integer(the_errno); s48_raise_scheme_exception(S48_EXCEPTION_OS_ERROR, 5, - s48_enter_integer(the_errno), + sch_errno, s48_enter_string(strerror(the_errno)), arg1, arg2, arg3); + S48_GC_UNPROTECT(); } void s48_raise_os_error_4(int the_errno, s48_value arg1, s48_value arg2, s48_value arg3, s48_value arg4) { + + s48_value sch_errno = S48_UNSPECIFIC; + + S48_DECLARE_GC_PROTECT(5); + S48_GC_PROTECT_5 (arg1, arg2, arg3, arg4, sch_errno); + + sch_errno = s48_enter_integer(the_errno); s48_raise_scheme_exception(S48_EXCEPTION_OS_ERROR, 6, - s48_enter_integer(the_errno), + sch_errno, s48_enter_string(strerror(the_errno)), arg1, arg2, arg3, arg4); + S48_GC_UNPROTECT(); } void s48_raise_os_error_5(int the_errno, s48_value arg1, s48_value arg2, s48_value arg3, s48_value arg4, s48_value arg5) { + + s48_value sch_errno = S48_UNSPECIFIC; + + S48_DECLARE_GC_PROTECT(6); + S48_GC_PROTECT_6 (arg1, arg2, arg3, arg4, arg5, sch_errno); + + sch_errno = s48_enter_integer(the_errno); s48_raise_scheme_exception(S48_EXCEPTION_OS_ERROR, 7, - s48_enter_integer(the_errno), + sch_errno, s48_enter_string(strerror(the_errno)), arg1, arg2, arg3, arg4, arg5); + S48_GC_UNPROTECT(); } void s48_raise_os_error_6(int the_errno, s48_value arg1, s48_value arg2, s48_value arg3, s48_value arg4, s48_value arg5, s48_value arg6) { + + s48_value sch_errno = S48_UNSPECIFIC; + + S48_DECLARE_GC_PROTECT(7); + S48_GC_PROTECT_7 (arg1, arg2, arg3, arg4, arg5, arg6, sch_errno); + + sch_errno = s48_enter_integer(the_errno); s48_raise_scheme_exception(S48_EXCEPTION_OS_ERROR, 8, - s48_enter_integer(the_errno), + sch_errno, s48_enter_string(strerror(the_errno)), arg1, arg2, arg3, arg4, arg5, arg6); + S48_GC_UNPROTECT(); } void s48_raise_os_error_7(int the_errno, s48_value arg1, s48_value arg2, s48_value arg3, s48_value arg4, s48_value arg5, s48_value arg6, s48_value arg7) { + + s48_value sch_errno = S48_UNSPECIFIC; + + S48_DECLARE_GC_PROTECT(8); + S48_GC_PROTECT_8 (arg1, arg2, arg3, arg4, arg5, arg6, arg7, sch_errno); + + sch_errno = s48_enter_integer(the_errno); s48_raise_scheme_exception(S48_EXCEPTION_OS_ERROR, 9, - s48_enter_integer(the_errno), + sch_errno, s48_enter_string(strerror(the_errno)), arg1, arg2, arg3, arg4, arg5, arg6, arg7); + S48_GC_UNPROTECT(); } void