


## unix-domain-socket.pkg
# Compiled by:
# src/lib/std/src/standard-core.sublibstipulate
package sg = socket_guts; # socket_guts is from src/lib/std/src/socket/socket-guts.pkg package gs = plain_socket; # plain_socket is from src/lib/std/src/socket/plain-socket.pkg package ps = pre_socket; # pre_socket is from src/lib/std/src/socket/pre-socket.pkg package ci = mythryl_callable_c_library_interface; # mythryl_callable_c_library_interface is from src/lib/std/src/unsafe/mythryl-callable-c-library-interface.pkgherein
package unix_domain_socket
: (weak) Unix_Domain_Socket # Unix_Domain_Socket is from src/lib/std/src/socket/unix-domain-socket.api {
fun socket_fn fun_name
=
ci::find_c_function { lib_name => "socket", fun_name };
Unix = UNIX;
Socket(X) = ps::Socket( Unix, X );
Stream_Socket(X) = Socket( sg::Stream(X) );
Datagram_Socket = Socket( sg::Datagram );
Unix_Domain_Socket_Address = ps::Socket_Address( Unix );
unix_address_family
=
null_or::the (sg::af::from_string "UNIX");
# We should probably do some error checking
# on the length of the string. XXX BUGGO FIXME
#
stipulate
my string_to_unix_domain_socket_address': String -> ps::Internet_Address = socket_fn "toUnixAddr"; # toUnixAddr def in src/c/lib/socket/string-to-unix-domain-socket-address.c
my unix_domain_socket_address_to_string': ps::Internet_Address -> String = socket_fn "fromUnixAddr"; # fromUnixAddr def in src/c/lib/socket/unix-domain-socket-address-to-string.c
herein
fun string_to_unix_domain_socket_address socket_path
=
ps::ADDRESS (string_to_unix_domain_socket_address' socket_path);
fun unix_domain_socket_address_to_string (ps::ADDRESS socket_address)
=
unix_domain_socket_address_to_string' socket_address;
end;
package stream {
#
fun socket () = gs::socket (unix_address_family, sg::socket::stream);
fun socket' proto = gs::socket' (unix_address_family, sg::socket::stream, proto);
fun socket_pair () = gs::socket_pair (unix_address_family, sg::socket::stream);
fun socket_pair' proto = gs::socket_pair' (unix_address_family, sg::socket::stream, proto);
};
package datagram {
#
fun socket () = gs::socket (unix_address_family, sg::socket::datagram);
fun socket' proto = gs::socket' (unix_address_family, sg::socket::datagram, proto);
fun socket_pair () = gs::socket_pair (unix_address_family, sg::socket::datagram);
fun socket_pair' proto = gs::socket_pair' (unix_address_family, sg::socket::datagram, proto);
};
};
end;
## COPYRIGHT (c) 1995 AT&T Bell Laboratories.
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2012,
## released under Gnu Public Licence version 3.


