Merge branch 'master' of git://factorcode.org/git/factor
commit
a6921edd29
|
|
@ -5,7 +5,8 @@ USING: generic kernel io.backend namespaces continuations sequences
|
||||||
arrays io.encodings io.ports io.streams.duplex io.encodings.ascii
|
arrays io.encodings io.ports io.streams.duplex io.encodings.ascii
|
||||||
alien.strings io.binary accessors destructors classes byte-arrays
|
alien.strings io.binary accessors destructors classes byte-arrays
|
||||||
parser alien.c-types math.parser splitting grouping math assocs
|
parser alien.c-types math.parser splitting grouping math assocs
|
||||||
summary system vocabs.loader combinators present fry vocabs.parser ;
|
summary system vocabs.loader combinators present fry vocabs.parser
|
||||||
|
classes.struct ;
|
||||||
IN: io.sockets
|
IN: io.sockets
|
||||||
|
|
||||||
<< {
|
<< {
|
||||||
|
|
@ -75,21 +76,20 @@ M: inet4 address-size drop 4 ;
|
||||||
|
|
||||||
M: inet4 protocol-family drop PF_INET ;
|
M: inet4 protocol-family drop PF_INET ;
|
||||||
|
|
||||||
M: inet4 sockaddr-size drop "sockaddr-in" heap-size ;
|
M: inet4 sockaddr-size drop sockaddr-in heap-size ;
|
||||||
|
|
||||||
M: inet4 empty-sockaddr drop "sockaddr-in" <c-object> ;
|
M: inet4 empty-sockaddr drop sockaddr-in <struct> ;
|
||||||
|
|
||||||
M: inet4 make-sockaddr ( inet -- sockaddr )
|
M: inet4 make-sockaddr ( inet -- sockaddr )
|
||||||
"sockaddr-in" <c-object>
|
sockaddr-in <struct>
|
||||||
AF_INET over set-sockaddr-in-family
|
AF_INET >>family
|
||||||
over port>> htons over set-sockaddr-in-port
|
swap [ port>> htons >>port ]
|
||||||
over host>>
|
[ host>> "0.0.0.0" or ]
|
||||||
"0.0.0.0" or
|
[ inet-pton *uint >>addr ] tri ;
|
||||||
rot inet-pton *uint over set-sockaddr-in-addr ;
|
|
||||||
|
|
||||||
M: inet4 parse-sockaddr
|
M: inet4 parse-sockaddr ( sockaddr-in addrspec -- newaddrspec )
|
||||||
[ dup sockaddr-in-addr <uint> ] dip inet-ntop
|
[ [ addr>> <uint> ] dip inet-ntop ]
|
||||||
swap sockaddr-in-port ntohs <inet4> ;
|
[ drop port>> ntohs ] 2bi <inet4> ;
|
||||||
|
|
||||||
TUPLE: inet6 < abstract-inet ;
|
TUPLE: inet6 < abstract-inet ;
|
||||||
|
|
||||||
|
|
@ -131,20 +131,20 @@ M: inet6 address-size drop 16 ;
|
||||||
|
|
||||||
M: inet6 protocol-family drop PF_INET6 ;
|
M: inet6 protocol-family drop PF_INET6 ;
|
||||||
|
|
||||||
M: inet6 sockaddr-size drop "sockaddr-in6" heap-size ;
|
M: inet6 sockaddr-size drop sockaddr-in6 heap-size ;
|
||||||
|
|
||||||
M: inet6 empty-sockaddr drop "sockaddr-in6" <c-object> ;
|
M: inet6 empty-sockaddr drop sockaddr-in6 <struct> ;
|
||||||
|
|
||||||
M: inet6 make-sockaddr ( inet -- sockaddr )
|
M: inet6 make-sockaddr ( inet -- sockaddr )
|
||||||
"sockaddr-in6" <c-object>
|
sockaddr-in6 <struct>
|
||||||
AF_INET6 over set-sockaddr-in6-family
|
AF_INET6 >>family
|
||||||
over port>> htons over set-sockaddr-in6-port
|
swap [ port>> htons >>port ]
|
||||||
over host>> "::" or
|
[ host>> "::" or ]
|
||||||
rot inet-pton over set-sockaddr-in6-addr ;
|
[ inet-pton >>addr ] tri ;
|
||||||
|
|
||||||
M: inet6 parse-sockaddr
|
M: inet6 parse-sockaddr
|
||||||
[ dup sockaddr-in6-addr ] dip inet-ntop
|
[ [ addr>> ] dip inet-ntop ]
|
||||||
swap sockaddr-in6-port ntohs <inet6> ;
|
[ drop port>> ntohs ] 2bi <inet6> ;
|
||||||
|
|
||||||
: addrspec-of-family ( af -- addrspec )
|
: addrspec-of-family ( af -- addrspec )
|
||||||
{
|
{
|
||||||
|
|
@ -154,6 +154,14 @@ M: inet6 parse-sockaddr
|
||||||
[ drop f ]
|
[ drop f ]
|
||||||
} case ;
|
} case ;
|
||||||
|
|
||||||
|
: sockaddr-of-family ( af -- addrspec )
|
||||||
|
{
|
||||||
|
{ AF_INET [ sockaddr-in ] }
|
||||||
|
{ AF_INET6 [ sockaddr-in6 ] }
|
||||||
|
{ AF_UNIX [ sockaddr-un ] }
|
||||||
|
[ drop f ]
|
||||||
|
} case ;
|
||||||
|
|
||||||
M: f parse-sockaddr nip ;
|
M: f parse-sockaddr nip ;
|
||||||
|
|
||||||
GENERIC: (get-local-address) ( handle remote -- sockaddr )
|
GENERIC: (get-local-address) ( handle remote -- sockaddr )
|
||||||
|
|
@ -262,11 +270,12 @@ HOOK: (send) io-backend ( packet addrspec datagram -- )
|
||||||
check-datagram-send (send) ;
|
check-datagram-send (send) ;
|
||||||
|
|
||||||
: addrinfo>addrspec ( addrinfo -- addrspec )
|
: addrinfo>addrspec ( addrinfo -- addrspec )
|
||||||
[ addrinfo-addr ] [ addrinfo-family addrspec-of-family ] bi
|
[ [ addr>> ] [ family>> sockaddr-of-family ] bi memory>struct ]
|
||||||
|
[ family>> addrspec-of-family ] bi
|
||||||
parse-sockaddr ;
|
parse-sockaddr ;
|
||||||
|
|
||||||
: parse-addrinfo-list ( addrinfo -- seq )
|
: parse-addrinfo-list ( addrinfo -- seq )
|
||||||
[ addrinfo-next ] follow
|
[ next>> dup [ addrinfo memory>struct ] when ] follow
|
||||||
[ addrinfo>addrspec ] map
|
[ addrinfo>addrspec ] map
|
||||||
sift ;
|
sift ;
|
||||||
|
|
||||||
|
|
@ -282,9 +291,9 @@ C: <inet> inet
|
||||||
{ T{ inet6 f "::" f } T{ inet4 f "0.0.0.0" f } } [ clone ] map ;
|
{ T{ inet6 f "::" f } T{ inet4 f "0.0.0.0" f } } [ clone ] map ;
|
||||||
|
|
||||||
: prepare-addrinfo ( -- addrinfo )
|
: prepare-addrinfo ( -- addrinfo )
|
||||||
"addrinfo" <c-object>
|
addrinfo <struct>
|
||||||
PF_UNSPEC over set-addrinfo-family
|
PF_UNSPEC >>family
|
||||||
IPPROTO_TCP over set-addrinfo-protocol ;
|
IPPROTO_TCP >>protocol ;
|
||||||
|
|
||||||
: fill-in-ports ( addrspecs port -- addrspecs )
|
: fill-in-ports ( addrspecs port -- addrspecs )
|
||||||
'[ _ >>port ] map ;
|
'[ _ >>port ] map ;
|
||||||
|
|
@ -292,7 +301,7 @@ C: <inet> inet
|
||||||
M: inet resolve-host
|
M: inet resolve-host
|
||||||
[ port>> ] [ host>> ] bi [
|
[ port>> ] [ host>> ] bi [
|
||||||
f prepare-addrinfo f <void*>
|
f prepare-addrinfo f <void*>
|
||||||
[ getaddrinfo addrinfo-error ] keep *void*
|
[ getaddrinfo addrinfo-error ] keep *void* addrinfo memory>struct
|
||||||
[ parse-addrinfo-list ] keep freeaddrinfo
|
[ parse-addrinfo-list ] keep freeaddrinfo
|
||||||
] [ resolve-passive-host ] if*
|
] [ resolve-passive-host ] if*
|
||||||
swap fill-in-ports ;
|
swap fill-in-ports ;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ USING: alien alien.c-types alien.strings generic kernel math threads
|
||||||
sequences byte-arrays io.binary io.backend.unix io.streams.duplex
|
sequences byte-arrays io.binary io.backend.unix io.streams.duplex
|
||||||
io.backend io.pathnames io.files.private io.encodings.utf8 math.parser
|
io.backend io.pathnames io.files.private io.encodings.utf8 math.parser
|
||||||
continuations libc combinators system accessors destructors unix
|
continuations libc combinators system accessors destructors unix
|
||||||
locals init ;
|
locals init classes.struct ;
|
||||||
|
|
||||||
EXCLUDE: namespaces => bind ;
|
EXCLUDE: namespaces => bind ;
|
||||||
EXCLUDE: io => read write ;
|
EXCLUDE: io => read write ;
|
||||||
|
|
@ -139,17 +139,17 @@ M: unix (send) ( packet addrspec datagram -- )
|
||||||
! Unix domain sockets
|
! Unix domain sockets
|
||||||
M: local protocol-family drop PF_UNIX ;
|
M: local protocol-family drop PF_UNIX ;
|
||||||
|
|
||||||
M: local sockaddr-size drop "sockaddr-un" heap-size ;
|
M: local sockaddr-size drop sockaddr-un heap-size ;
|
||||||
|
|
||||||
M: local empty-sockaddr drop "sockaddr-un" <c-object> ;
|
M: local empty-sockaddr drop sockaddr-un <struct> ;
|
||||||
|
|
||||||
M: local make-sockaddr
|
M: local make-sockaddr
|
||||||
path>> (normalize-path)
|
path>> (normalize-path)
|
||||||
dup length 1 + max-un-path > [ "Path too long" throw ] when
|
dup length 1 + max-un-path > [ "Path too long" throw ] when
|
||||||
"sockaddr-un" <c-object>
|
sockaddr-un <struct>
|
||||||
AF_UNIX over set-sockaddr-un-family
|
AF_UNIX >>family
|
||||||
[ [ utf8 string>alien ] dip set-sockaddr-un-path ] keep ;
|
swap utf8 string>alien >>path ;
|
||||||
|
|
||||||
M: local parse-sockaddr
|
M: local parse-sockaddr
|
||||||
drop
|
drop
|
||||||
sockaddr-un-path utf8 alien>string <local> ;
|
path>> utf8 alien>string <local> ;
|
||||||
|
|
|
||||||
|
|
@ -27,25 +27,25 @@ CONSTANT: F_SETFD 2
|
||||||
CONSTANT: F_SETFL 4
|
CONSTANT: F_SETFL 4
|
||||||
CONSTANT: FD_CLOEXEC 1
|
CONSTANT: FD_CLOEXEC 1
|
||||||
|
|
||||||
C-STRUCT: sockaddr-in
|
STRUCT: sockaddr-in
|
||||||
{ "uchar" "len" }
|
{ len uchar }
|
||||||
{ "uchar" "family" }
|
{ family uchar }
|
||||||
{ "ushort" "port" }
|
{ port ushort }
|
||||||
{ "in_addr_t" "addr" }
|
{ addr in_addr_t }
|
||||||
{ "longlong" "unused" } ;
|
{ unused longlong } ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-in6
|
STRUCT: sockaddr-in6
|
||||||
{ "uchar" "len" }
|
{ len uchar }
|
||||||
{ "uchar" "family" }
|
{ family uchar }
|
||||||
{ "ushort" "port" }
|
{ port ushort }
|
||||||
{ "uint" "flowinfo" }
|
{ flowinfo uint }
|
||||||
{ { "uchar" 16 } "addr" }
|
{ addr uchar[16] }
|
||||||
{ "uint" "scopeid" } ;
|
{ scopeid uint } ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-un
|
STRUCT: sockaddr-un
|
||||||
{ "uchar" "len" }
|
{ len uchar }
|
||||||
{ "uchar" "family" }
|
{ family uchar }
|
||||||
{ { "char" 104 } "path" } ;
|
{ path char[104] } ;
|
||||||
|
|
||||||
STRUCT: passwd
|
STRUCT: passwd
|
||||||
{ pw_name char* }
|
{ pw_name char* }
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,15 @@ IN: unix
|
||||||
|
|
||||||
CONSTANT: FD_SETSIZE 1024
|
CONSTANT: FD_SETSIZE 1024
|
||||||
|
|
||||||
C-STRUCT: addrinfo
|
STRUCT: addrinfo
|
||||||
{ "int" "flags" }
|
{ flags int }
|
||||||
{ "int" "family" }
|
{ family int }
|
||||||
{ "int" "socktype" }
|
{ socktype int }
|
||||||
{ "int" "protocol" }
|
{ protocol int }
|
||||||
{ "socklen_t" "addrlen" }
|
{ addrlen socklen_t }
|
||||||
{ "char*" "canonname" }
|
{ canonname char* }
|
||||||
{ "void*" "addr" }
|
{ addr void* }
|
||||||
{ "addrinfo*" "next" } ;
|
{ next addrinfo* } ;
|
||||||
|
|
||||||
STRUCT: dirent
|
STRUCT: dirent
|
||||||
{ d_fileno u_int32_t }
|
{ d_fileno u_int32_t }
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,15 @@ IN: unix
|
||||||
|
|
||||||
CONSTANT: FD_SETSIZE 1024
|
CONSTANT: FD_SETSIZE 1024
|
||||||
|
|
||||||
C-STRUCT: addrinfo
|
STRUCT: addrinfo
|
||||||
{ "int" "flags" }
|
{ flags int }
|
||||||
{ "int" "family" }
|
{ family int }
|
||||||
{ "int" "socktype" }
|
{ socktype int }
|
||||||
{ "int" "protocol" }
|
{ protocol int }
|
||||||
{ "socklen_t" "addrlen" }
|
{ addrlen socklen_t }
|
||||||
{ "char*" "canonname" }
|
{ canonname char* }
|
||||||
{ "void*" "addr" }
|
{ addr void* }
|
||||||
{ "addrinfo*" "next" } ;
|
{ next addrinfo* } ;
|
||||||
|
|
||||||
CONSTANT: _UTX_USERSIZE 256
|
CONSTANT: _UTX_USERSIZE 256
|
||||||
CONSTANT: _UTX_LINESIZE 32
|
CONSTANT: _UTX_LINESIZE 32
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,15 @@ IN: unix
|
||||||
|
|
||||||
CONSTANT: FD_SETSIZE 256
|
CONSTANT: FD_SETSIZE 256
|
||||||
|
|
||||||
C-STRUCT: addrinfo
|
STRUCT: addrinfo
|
||||||
{ "int" "flags" }
|
{ flags int }
|
||||||
{ "int" "family" }
|
{ family int }
|
||||||
{ "int" "socktype" }
|
{ socktype int }
|
||||||
{ "int" "protocol" }
|
{ protocol int }
|
||||||
{ "socklen_t" "addrlen" }
|
{ addrlen socklen_t }
|
||||||
{ "char*" "canonname" }
|
{ canonname char* }
|
||||||
{ "void*" "addr" }
|
{ addr void* }
|
||||||
{ "addrinfo*" "next" } ;
|
{ next addrinfo* } ;
|
||||||
|
|
||||||
STRUCT: dirent
|
STRUCT: dirent
|
||||||
{ d_fileno __uint32_t }
|
{ d_fileno __uint32_t }
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,18 @@
|
||||||
! Copyright (C) 2008 Doug Coleman.
|
! Copyright (C) 2008 Doug Coleman.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: alien.syntax unix.time ;
|
USING: alien.syntax unix.time classes.struct ;
|
||||||
IN: unix
|
IN: unix
|
||||||
|
|
||||||
C-STRUCT: sockaddr_storage
|
STRUCT: sockaddr_storage
|
||||||
{ "__uint8_t" "ss_len" }
|
{ ss_len __uint8_t }
|
||||||
{ "sa_family_t" "ss_family" }
|
{ ss_family sa_family_t }
|
||||||
{ { "char" _SS_PAD1SIZE } "__ss_pad1" }
|
{ __ss_pad1 { "char" _SS_PAD1SIZE } }
|
||||||
{ "__int64_t" "__ss_align" }
|
{ __ss_align __int64_t }
|
||||||
{ { "char" _SS_PAD2SIZE } "__ss_pad2" } ;
|
{ __ss_pad2 { "char" _SS_PAD2SIZE } } ;
|
||||||
|
|
||||||
C-STRUCT: exit_struct
|
STRUCT: exit_struct
|
||||||
{ "uint16_t" "e_termination" }
|
{ e_termination uint16_t }
|
||||||
{ "uint16_t" "e_exit" } ;
|
{ e_exit uint16_t } ;
|
||||||
|
|
||||||
C-STRUCT: utmpx
|
C-STRUCT: utmpx
|
||||||
{ { "char" _UTX_USERSIZE } "ut_user" }
|
{ { "char" _UTX_USERSIZE } "ut_user" }
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,15 @@ IN: unix
|
||||||
|
|
||||||
CONSTANT: FD_SETSIZE 1024
|
CONSTANT: FD_SETSIZE 1024
|
||||||
|
|
||||||
C-STRUCT: addrinfo
|
STRUCT: addrinfo
|
||||||
{ "int" "flags" }
|
{ flags int }
|
||||||
{ "int" "family" }
|
{ family int }
|
||||||
{ "int" "socktype" }
|
{ socktype int }
|
||||||
{ "int" "protocol" }
|
{ protocol int }
|
||||||
{ "socklen_t" "addrlen" }
|
{ addrlen socklen_t }
|
||||||
{ "void*" "addr" }
|
{ addr void* }
|
||||||
{ "char*" "canonname" }
|
{ canonname char* }
|
||||||
{ "addrinfo*" "next" } ;
|
{ next addrinfo* } ;
|
||||||
|
|
||||||
STRUCT: dirent
|
STRUCT: dirent
|
||||||
{ d_fileno __uint32_t }
|
{ d_fileno __uint32_t }
|
||||||
|
|
|
||||||
|
|
@ -33,34 +33,34 @@ CONSTANT: FD_CLOEXEC 1
|
||||||
|
|
||||||
CONSTANT: F_SETFL 4
|
CONSTANT: F_SETFL 4
|
||||||
|
|
||||||
C-STRUCT: addrinfo
|
STRUCT: addrinfo
|
||||||
{ "int" "flags" }
|
{ flags int }
|
||||||
{ "int" "family" }
|
{ family int }
|
||||||
{ "int" "socktype" }
|
{ socktype int }
|
||||||
{ "int" "protocol" }
|
{ protocol int }
|
||||||
{ "socklen_t" "addrlen" }
|
{ addrlen socklen_t }
|
||||||
{ "void*" "addr" }
|
{ addr void* }
|
||||||
{ "char*" "canonname" }
|
{ canonname char* }
|
||||||
{ "addrinfo*" "next" } ;
|
{ next addrinfo* } ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-in
|
STRUCT: sockaddr-in
|
||||||
{ "ushort" "family" }
|
{ family ushort }
|
||||||
{ "ushort" "port" }
|
{ port ushort }
|
||||||
{ "in_addr_t" "addr" }
|
{ addr in_addr_t }
|
||||||
{ "longlong" "unused" } ;
|
{ unused longlong } ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-in6
|
STRUCT: sockaddr-in6
|
||||||
{ "ushort" "family" }
|
{ family ushort }
|
||||||
{ "ushort" "port" }
|
{ port ushort }
|
||||||
{ "uint" "flowinfo" }
|
{ flowinfo uint }
|
||||||
{ { "uchar" 16 } "addr" }
|
{ addr uchar[16] }
|
||||||
{ "uint" "scopeid" } ;
|
{ scopeid uint } ;
|
||||||
|
|
||||||
CONSTANT: max-un-path 108
|
CONSTANT: max-un-path 108
|
||||||
|
|
||||||
C-STRUCT: sockaddr-un
|
STRUCT: sockaddr-un
|
||||||
{ "ushort" "family" }
|
{ family ushort }
|
||||||
{ { "char" max-un-path } "path" } ;
|
{ path { "char" max-un-path } } ;
|
||||||
|
|
||||||
CONSTANT: SOCK_STREAM 1
|
CONSTANT: SOCK_STREAM 1
|
||||||
CONSTANT: SOCK_DGRAM 2
|
CONSTANT: SOCK_DGRAM 2
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2006 Patrick Mauritz.
|
! Copyright (C) 2006 Patrick Mauritz.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
IN: unix
|
|
||||||
USING: alien.syntax system kernel layouts ;
|
USING: alien.syntax system kernel layouts ;
|
||||||
|
IN: unix
|
||||||
|
|
||||||
! Solaris.
|
! Solaris.
|
||||||
|
|
||||||
|
|
@ -26,37 +26,37 @@ CONSTANT: SO_RCVTIMEO HEX: 1006
|
||||||
CONSTANT: F_SETFL 4 ! set file status flags
|
CONSTANT: F_SETFL 4 ! set file status flags
|
||||||
CONSTANT: O_NONBLOCK HEX: 80 ! no delay
|
CONSTANT: O_NONBLOCK HEX: 80 ! no delay
|
||||||
|
|
||||||
C-STRUCT: addrinfo
|
STRUCT: addrinfo
|
||||||
{ "int" "flags" }
|
{ flags int }
|
||||||
{ "int" "family" }
|
{ family int }
|
||||||
{ "int" "socktype" }
|
{ socktype int }
|
||||||
{ "int" "protocol" }
|
{ protocol int }
|
||||||
! #ifdef __sparcv9
|
! #ifdef __sparcv9
|
||||||
! int _ai_pad;
|
! int _ai_pad;
|
||||||
! #endif
|
! #endif
|
||||||
{ "int" "addrlen" }
|
{ addrlen int }
|
||||||
{ "char*" "canonname" }
|
{ canonname char* }
|
||||||
{ "void*" "addr" }
|
{ addr void* }
|
||||||
{ "void*" "next" } ;
|
{ next void* } ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-in
|
STRUCT: sockaddr-in
|
||||||
{ "ushort" "family" }
|
{ family ushort }
|
||||||
{ "ushort" "port" }
|
{ port ushort }
|
||||||
{ "in_addr_t" "addr" }
|
{ addr in_addr_t }
|
||||||
{ "longlong" "unused" } ;
|
{ unused longlong } ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-in6
|
STRUCT: sockaddr-in6
|
||||||
{ "ushort" "family" }
|
{ family ushort }
|
||||||
{ "ushort" "port" }
|
{ port ushort }
|
||||||
{ "uint" "flowinfo" }
|
{ flowinfo uint }
|
||||||
{ { "uchar" 16 } "addr" }
|
{ addr uchar[16] }
|
||||||
{ "uint" "scopeid" } ;
|
{ scopeid uint } ;
|
||||||
|
|
||||||
: max-un-path 108 ;
|
: max-un-path 108 ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-un
|
STRUCT: sockaddr-un
|
||||||
{ "ushort" "family" }
|
{ family ushort }
|
||||||
{ { "char" max-un-path } "path" } ;
|
{ path { "char" max-un-path } } ;
|
||||||
|
|
||||||
CONSTANT: EINTR 4
|
CONSTANT: EINTR 4
|
||||||
CONSTANT: EAGAIN 11
|
CONSTANT: EAGAIN 11
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ CONSTANT: SO_BROADCAST HEX: 20
|
||||||
CONSTANT: SO_USELOOPBACK HEX: 40
|
CONSTANT: SO_USELOOPBACK HEX: 40
|
||||||
CONSTANT: SO_LINGER HEX: 80
|
CONSTANT: SO_LINGER HEX: 80
|
||||||
CONSTANT: SO_OOBINLINE HEX: 100
|
CONSTANT: SO_OOBINLINE HEX: 100
|
||||||
: SO_DONTLINGER ( -- n ) SO_LINGER bitnot ; inline
|
CONSTANT: SO_DONTLINGER $[ SO_LINGER bitnot ]
|
||||||
|
|
||||||
CONSTANT: SO_SNDBUF HEX: 1001
|
CONSTANT: SO_SNDBUF HEX: 1001
|
||||||
CONSTANT: SO_RCVBUF HEX: 1002
|
CONSTANT: SO_RCVBUF HEX: 1002
|
||||||
|
|
@ -75,7 +75,7 @@ CONSTANT: PF_INET6 23
|
||||||
CONSTANT: AI_PASSIVE 1
|
CONSTANT: AI_PASSIVE 1
|
||||||
CONSTANT: AI_CANONNAME 2
|
CONSTANT: AI_CANONNAME 2
|
||||||
CONSTANT: AI_NUMERICHOST 4
|
CONSTANT: AI_NUMERICHOST 4
|
||||||
: AI_MASK ( -- n ) { AI_PASSIVE AI_CANONNAME AI_NUMERICHOST } flags ;
|
CONSTANT: AI_MASK $[ { AI_PASSIVE AI_CANONNAME AI_NUMERICHOST } flags ]
|
||||||
|
|
||||||
CONSTANT: NI_NUMERICHOST 1
|
CONSTANT: NI_NUMERICHOST 1
|
||||||
CONSTANT: NI_NUMERICSERV 2
|
CONSTANT: NI_NUMERICSERV 2
|
||||||
|
|
@ -96,7 +96,7 @@ ALIAS: WSA_IO_PENDING ERROR_IO_PENDING
|
||||||
|
|
||||||
CONSTANT: INADDR_ANY 0
|
CONSTANT: INADDR_ANY 0
|
||||||
|
|
||||||
: INVALID_SOCKET ( -- alien ) -1 <alien> ; inline
|
CONSTANT: INVALID_SOCKET $[ -1 <alien> ]
|
||||||
CONSTANT: SOCKET_ERROR -1
|
CONSTANT: SOCKET_ERROR -1
|
||||||
|
|
||||||
CONSTANT: SD_RECV 0
|
CONSTANT: SD_RECV 0
|
||||||
|
|
@ -109,18 +109,18 @@ CONSTANT: SOL_SOCKET HEX: ffff
|
||||||
! C-STRUCT: in_addr
|
! C-STRUCT: in_addr
|
||||||
! { "in_addr_t" "s_addr" } ;
|
! { "in_addr_t" "s_addr" } ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-in
|
STRUCT: sockaddr-in
|
||||||
{ "short" "family" }
|
{ family short }
|
||||||
{ "ushort" "port" }
|
{ port ushort }
|
||||||
{ "uint" "addr" }
|
{ addr uint }
|
||||||
{ { "char" 8 } "pad" } ;
|
{ pad char[8] } ;
|
||||||
|
|
||||||
C-STRUCT: sockaddr-in6
|
STRUCT: sockaddr-in6
|
||||||
{ "uchar" "family" }
|
{ family uchar }
|
||||||
{ "ushort" "port" }
|
{ port ushort }
|
||||||
{ "uint" "flowinfo" }
|
{ flowinfo uint }
|
||||||
{ { "uchar" 16 } "addr" }
|
{ addr uchar[16] }
|
||||||
{ "uint" "scopeid" } ;
|
{ scopeid uint } ;
|
||||||
|
|
||||||
STRUCT: hostent
|
STRUCT: hostent
|
||||||
{ name char* }
|
{ name char* }
|
||||||
|
|
@ -129,15 +129,15 @@ STRUCT: hostent
|
||||||
{ length short }
|
{ length short }
|
||||||
{ addr-list void* } ;
|
{ addr-list void* } ;
|
||||||
|
|
||||||
C-STRUCT: addrinfo
|
STRUCT: addrinfo
|
||||||
{ "int" "flags" }
|
{ flags int }
|
||||||
{ "int" "family" }
|
{ family int }
|
||||||
{ "int" "socktype" }
|
{ socktype int }
|
||||||
{ "int" "protocol" }
|
{ protocol int }
|
||||||
{ "size_t" "addrlen" }
|
{ addrlen size_t }
|
||||||
{ "char*" "canonname" }
|
{ canonname char* }
|
||||||
{ "sockaddr*" "addr" }
|
{ addr sockaddr* }
|
||||||
{ "addrinfo*" "next" } ;
|
{ next addrinfo* } ;
|
||||||
|
|
||||||
C-STRUCT: timeval
|
C-STRUCT: timeval
|
||||||
{ "long" "sec" }
|
{ "long" "sec" }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue