diff --git a/basis/io/backend/unix/unix.factor b/basis/io/backend/unix/unix.factor index 10eb5ed103..3a4c31565b 100755 --- a/basis/io/backend/unix/unix.factor +++ b/basis/io/backend/unix/unix.factor @@ -97,7 +97,7 @@ M: fd refill errno { { EINTR [ 2drop +retry+ ] } { EAGAIN [ 2drop +input+ ] } - [ throw-errno ] + [ (throw-errno) ] } case ] if ; @@ -117,7 +117,7 @@ M: fd drain errno { { EINTR [ 2drop +retry+ ] } { EAGAIN [ 2drop +output+ ] } - [ throw-errno ] + [ (throw-errno) ] } case ] if ; diff --git a/basis/io/directories/unix/linux/linux.factor b/basis/io/directories/unix/linux/linux.factor index bc1e53366d..4ef4fafbfa 100644 --- a/basis/io/directories/unix/linux/linux.factor +++ b/basis/io/directories/unix/linux/linux.factor @@ -7,7 +7,7 @@ IN: io.directories.unix.linux : next-dirent ( DIR* dirent* -- dirent* ? ) f void* [ - readdir64_r [ dup strerror libc-error ] unless-zero + readdir64_r [ (throw-errno) ] unless-zero ] 2keep void* deref ; inline M: linux (directory-entries) ( path -- seq ) diff --git a/basis/io/directories/unix/unix.factor b/basis/io/directories/unix/unix.factor index 6197e3a9e8..d777da7455 100644 --- a/basis/io/directories/unix/unix.factor +++ b/basis/io/directories/unix/unix.factor @@ -56,7 +56,7 @@ M: unix copy-file ( from to -- ) : next-dirent ( DIR* dirent* -- dirent* ? ) f void* [ - readdir_r [ dup strerror libc-error ] unless-zero + readdir_r [ (throw-errno) ] unless-zero ] 2keep void* deref ; inline : >directory-entry ( dirent* -- directory-entry ) diff --git a/basis/io/sockets/unix/unix.factor b/basis/io/sockets/unix/unix.factor index 33f8e76c28..83ab45feae 100644 --- a/basis/io/sockets/unix/unix.factor +++ b/basis/io/sockets/unix/unix.factor @@ -56,7 +56,7 @@ DEFER: wait-to-connect errno { { EAGAIN [ wait-for-output ] } { EINTR [ wait-to-connect ] } - [ throw-errno ] + [ (throw-errno) ] } case ] if ; @@ -67,7 +67,7 @@ M: object establish-connection errno { { EINTR [ establish-connection ] } { EINPROGRESS [ drop wait-for-output ] } - [ throw-errno ] + [ (throw-errno) ] } case ] if ; @@ -114,7 +114,7 @@ M: object (accept) [ (accept) ] 2bi ] } - [ throw-errno ] + [ (throw-errno) ] } case ] if ; @@ -157,7 +157,7 @@ M: unix (receive-unsafe) datagram +output+ wait-for-port packet sockaddr len socket datagram do-send ] } - [ throw-errno ] + [ (throw-errno) ] } case ] when ; inline recursive diff --git a/basis/libc/libc.factor b/basis/libc/libc.factor index 18adc2a249..f21b64bec6 100644 --- a/basis/libc/libc.factor +++ b/basis/libc/libc.factor @@ -45,7 +45,9 @@ M: object strerror strerror_unsafe ; ERROR: libc-error errno message ; -: throw-errno ( -- * ) errno dup strerror libc-error ; +: (throw-errno) ( errno -- * ) dup strerror libc-error ; + +: throw-errno ( -- * ) errno (throw-errno) ; : io-error ( n -- ) 0 < [ throw-errno ] when ;