1 (* Copyright (C
) 2002-2006, 2008 Henry Cejtin
, Matthew Fluet
, Suresh
2 * Jagannathan
, and Stephen Weeks
.
4 * MLton is released under a BSD
-style license
.
5 * See the file MLton
-LICENSE for details
.
8 structure UnixSock
: UNIX_SOCK
=
10 structure Prim
= PrimitiveFFI
.Socket
.UnixSock
13 type 'sock_type sock
= (unix
, 'sock_type
) Socket
.sock
14 type 'mode stream_sock
= 'mode Socket
.stream sock
15 type dgram_sock
= Socket
.dgram sock
16 type sock_addr
= unix Socket
.sock_addr
17 val unixAF
= Net
.AddrFamily
.fromRep PrimitiveFFI
.Socket
.AF
.UNIX
21 val (sa
, salen
, finish
) = Socket
.newSockAddr ()
22 val _
= Prim
.toAddr (NullString
.nullTerm s
,
23 C_Size
.fromInt (String.size s
),
31 val sa
= Socket
.unpackSockAddr sa
32 val len
= Prim
.pathLen sa
33 val a
= CharArray
.array (C_Size
.toInt len
, #
"\000")
34 val _
= Prim
.fromAddr (sa
, CharArray
.toPoly a
, len
)
36 CharArraySlice
.vector (CharArraySlice
.slice (a
, 0, SOME (C_Size
.toInt len
)))
41 fun socket () = GenericSock
.socket (unixAF
, Socket
.SOCK
.stream
)
42 fun socketPair () = GenericSock
.socketPair (unixAF
, Socket
.SOCK
.stream
)
46 fun socket () = GenericSock
.socket (unixAF
, Socket
.SOCK
.dgram
)
47 fun socketPair () = GenericSock
.socketPair (unixAF
, Socket
.SOCK
.dgram
)