rename err_no to errno, clear_err_no to clear-errno, move them to libc, update usages
parent
01f6c5a7f6
commit
43a91efde9
|
@ -84,8 +84,8 @@ M: fd refill
|
||||||
fd>> over buffer>> [ buffer-end ] [ buffer-capacity ] bi read
|
fd>> over buffer>> [ buffer-end ] [ buffer-capacity ] bi read
|
||||||
{
|
{
|
||||||
{ [ dup 0 >= ] [ swap buffer>> n>buffer f ] }
|
{ [ dup 0 >= ] [ swap buffer>> n>buffer f ] }
|
||||||
{ [ err_no EINTR = ] [ 2drop +retry+ ] }
|
{ [ errno EINTR = ] [ 2drop +retry+ ] }
|
||||||
{ [ err_no EAGAIN = ] [ 2drop +input+ ] }
|
{ [ errno EAGAIN = ] [ 2drop +input+ ] }
|
||||||
[ (io-error) ]
|
[ (io-error) ]
|
||||||
} cond ;
|
} cond ;
|
||||||
|
|
||||||
|
@ -104,8 +104,8 @@ M: fd drain
|
||||||
over buffer>> buffer-consume
|
over buffer>> buffer-consume
|
||||||
buffer>> buffer-empty? f +output+ ?
|
buffer>> buffer-empty? f +output+ ?
|
||||||
] }
|
] }
|
||||||
{ [ err_no EINTR = ] [ 2drop +retry+ ] }
|
{ [ errno EINTR = ] [ 2drop +retry+ ] }
|
||||||
{ [ err_no EAGAIN = ] [ 2drop +output+ ] }
|
{ [ errno EAGAIN = ] [ 2drop +output+ ] }
|
||||||
[ (io-error) ]
|
[ (io-error) ]
|
||||||
} cond ;
|
} cond ;
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ M: stdin dispose*
|
||||||
stdin data>> handle-fd buffer buffer-end size read
|
stdin data>> handle-fd buffer buffer-end size read
|
||||||
dup 0 < [
|
dup 0 < [
|
||||||
drop
|
drop
|
||||||
err_no EINTR = [ buffer stdin size refill-stdin ] [ (io-error) ] if
|
errno EINTR = [ buffer stdin size refill-stdin ] [ (io-error) ] if
|
||||||
] [
|
] [
|
||||||
size = [ "Error reading stdin pipe" throw ] unless
|
size = [ "Error reading stdin pipe" throw ] unless
|
||||||
size buffer n>buffer
|
size buffer n>buffer
|
||||||
|
@ -177,7 +177,7 @@ TUPLE: mx-port < port mx ;
|
||||||
|
|
||||||
: multiplexer-error ( n -- n )
|
: multiplexer-error ( n -- n )
|
||||||
dup 0 < [
|
dup 0 < [
|
||||||
err_no [ EAGAIN = ] [ EINTR = ] bi or
|
errno [ EAGAIN = ] [ EINTR = ] bi or
|
||||||
[ drop 0 ] [ (io-error) ] if
|
[ drop 0 ] [ (io-error) ] if
|
||||||
] when ;
|
] when ;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ M: ssl-handle handle-fd file>> handle-fd ;
|
||||||
ERR_get_error dup zero? [
|
ERR_get_error dup zero? [
|
||||||
drop
|
drop
|
||||||
{
|
{
|
||||||
{ -1 [ err_no ECONNRESET = [ premature-close ] [ (io-error) ] if ] }
|
{ -1 [ errno ECONNRESET = [ premature-close ] [ (io-error) ] if ] }
|
||||||
{ 0 [ premature-close ] }
|
{ 0 [ premature-close ] }
|
||||||
} case
|
} case
|
||||||
] [ nip (ssl-error) ] if ;
|
] [ nip (ssl-error) ] if ;
|
||||||
|
|
|
@ -37,8 +37,8 @@ M: object (get-remote-address) ( handle local -- sockaddr )
|
||||||
dup handle>> handle-fd f 0 write
|
dup handle>> handle-fd f 0 write
|
||||||
{
|
{
|
||||||
{ [ 0 = ] [ drop ] }
|
{ [ 0 = ] [ drop ] }
|
||||||
{ [ err_no EAGAIN = ] [ dup +output+ wait-for-port wait-to-connect ] }
|
{ [ errno EAGAIN = ] [ dup +output+ wait-for-port wait-to-connect ] }
|
||||||
{ [ err_no EINTR = ] [ wait-to-connect ] }
|
{ [ errno EINTR = ] [ wait-to-connect ] }
|
||||||
[ (io-error) ]
|
[ (io-error) ]
|
||||||
} cond ;
|
} cond ;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ M: object establish-connection ( client-out remote -- )
|
||||||
[ drop ] [ [ handle>> handle-fd ] [ make-sockaddr/size ] bi* connect ] 2bi
|
[ drop ] [ [ handle>> handle-fd ] [ make-sockaddr/size ] bi* connect ] 2bi
|
||||||
{
|
{
|
||||||
{ [ 0 = ] [ drop ] }
|
{ [ 0 = ] [ drop ] }
|
||||||
{ [ err_no EINPROGRESS = ] [
|
{ [ errno EINPROGRESS = ] [
|
||||||
[ +output+ wait-for-port ] [ wait-to-connect ] bi
|
[ +output+ wait-for-port ] [ wait-to-connect ] bi
|
||||||
] }
|
] }
|
||||||
[ (io-error) ]
|
[ (io-error) ]
|
||||||
|
@ -78,8 +78,8 @@ M: object (accept) ( server addrspec -- fd sockaddr )
|
||||||
2dup do-accept
|
2dup do-accept
|
||||||
{
|
{
|
||||||
{ [ over 0 >= ] [ [ 2nip <fd> init-fd ] dip ] }
|
{ [ over 0 >= ] [ [ 2nip <fd> init-fd ] dip ] }
|
||||||
{ [ err_no EINTR = ] [ 2drop (accept) ] }
|
{ [ errno EINTR = ] [ 2drop (accept) ] }
|
||||||
{ [ err_no EAGAIN = ] [
|
{ [ errno EAGAIN = ] [
|
||||||
2drop
|
2drop
|
||||||
[ drop +input+ wait-for-port ]
|
[ drop +input+ wait-for-port ]
|
||||||
[ (accept) ]
|
[ (accept) ]
|
||||||
|
@ -121,10 +121,10 @@ M: unix (receive) ( datagram -- packet sockaddr )
|
||||||
:: do-send ( packet sockaddr len socket datagram -- )
|
:: do-send ( packet sockaddr len socket datagram -- )
|
||||||
socket handle-fd packet dup length 0 sockaddr len sendto
|
socket handle-fd packet dup length 0 sockaddr len sendto
|
||||||
0 < [
|
0 < [
|
||||||
err_no EINTR = [
|
errno EINTR = [
|
||||||
packet sockaddr len socket datagram do-send
|
packet sockaddr len socket datagram do-send
|
||||||
] [
|
] [
|
||||||
err_no EAGAIN = [
|
errno EAGAIN = [
|
||||||
datagram +output+ wait-for-port
|
datagram +output+ wait-for-port
|
||||||
packet sockaddr len socket datagram do-send
|
packet sockaddr len socket datagram do-send
|
||||||
] [
|
] [
|
||||||
|
|
|
@ -2,10 +2,18 @@
|
||||||
! Copyright (C) 2007, 2008 Slava Pestov
|
! Copyright (C) 2007, 2008 Slava Pestov
|
||||||
! Copyright (C) 2007, 2008 Doug Coleman
|
! Copyright (C) 2007, 2008 Doug Coleman
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: alien assocs continuations destructors kernel
|
USING: alien alien.syntax assocs continuations destructors
|
||||||
namespaces accessors sets summary ;
|
kernel namespaces accessors sets summary ;
|
||||||
IN: libc
|
IN: libc
|
||||||
|
|
||||||
|
LIBRARY: factor
|
||||||
|
|
||||||
|
: errno ( -- int )
|
||||||
|
"int" "factor" "err_no" { } alien-invoke ;
|
||||||
|
|
||||||
|
: clear-errno ( -- )
|
||||||
|
"void" "factor" "clear_err_no" { } alien-invoke ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: (malloc) ( size -- alien )
|
: (malloc) ( size -- alien )
|
||||||
|
|
|
@ -37,18 +37,13 @@ C-STRUCT: group
|
||||||
{ "int" "gr_gid" }
|
{ "int" "gr_gid" }
|
||||||
{ "char**" "gr_mem" } ;
|
{ "char**" "gr_mem" } ;
|
||||||
|
|
||||||
LIBRARY: factor
|
|
||||||
|
|
||||||
FUNCTION: void clear_err_no ( ) ;
|
|
||||||
FUNCTION: int err_no ( ) ;
|
|
||||||
|
|
||||||
LIBRARY: libc
|
LIBRARY: libc
|
||||||
|
|
||||||
FUNCTION: char* strerror ( int errno ) ;
|
FUNCTION: char* strerror ( int errno ) ;
|
||||||
|
|
||||||
ERROR: unix-error errno message ;
|
ERROR: unix-error errno message ;
|
||||||
|
|
||||||
: (io-error) ( -- * ) err_no dup strerror unix-error ;
|
: (io-error) ( -- * ) errno dup strerror unix-error ;
|
||||||
|
|
||||||
: io-error ( n -- ) 0 < [ (io-error) ] when ;
|
: io-error ( n -- ) 0 < [ (io-error) ] when ;
|
||||||
|
|
||||||
|
@ -61,7 +56,7 @@ MACRO:: unix-system-call ( quot -- )
|
||||||
n ndup quot call dup 0 < [
|
n ndup quot call dup 0 < [
|
||||||
drop
|
drop
|
||||||
n narray
|
n narray
|
||||||
err_no dup strerror
|
errno dup strerror
|
||||||
word unix-system-call-error
|
word unix-system-call-error
|
||||||
] [
|
] [
|
||||||
n nnip
|
n nnip
|
||||||
|
|
Loading…
Reference in New Issue