From a2ce57d856c299ac5cebf6b0ddc11ad8b7906a12 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 3 Feb 2010 17:20:24 -0600 Subject: [PATCH] Allow setting errno instead of just clearing it --- basis/libc/libc.factor | 8 +++++++- vm/io.cpp | 4 ++-- vm/io.hpp | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/basis/libc/libc.factor b/basis/libc/libc.factor index fe56c83516..e935d49748 100644 --- a/basis/libc/libc.factor +++ b/basis/libc/libc.factor @@ -9,8 +9,14 @@ IN: libc : errno ( -- int ) int "factor" "err_no" { } alien-invoke ; +: set-errno ( int -- ) + void "factor" "set_err_no" { int } alien-invoke ; + : clear-errno ( -- ) - void "factor" "clear_err_no" { } alien-invoke ; + 0 set-errno ; + +: preserve-errno ( quot -- ) + errno [ call ] dip set-errno ; inline