# Put a human readable string representation of `address` into `buf`
private fun addrin_to_address(address: Pointer, buf: CString, buf_len: Int): CString `{
struct sockaddr *addrin = (struct sockaddr*)address;
if (addrin->sa_family == AF_INET) {
struct in_addr *src = &((struct sockaddr_in*)addrin)->sin_addr;
return (char *)inet_ntop(addrin->sa_family, src, buf, buf_len);
}
else if (addrin->sa_family == AF_INET6) {
struct in6_addr *src = &((struct sockaddr_in6*)addrin)->sin6_addr;
return (char *)inet_ntop(addrin->sa_family, src, buf, buf_len);
}
else if (addrin->sa_family == AF_UNIX) {
struct sockaddr_un *src = (struct sockaddr_un*)addrin;
char *path = src->sun_path;
if (path == NULL) return "Unnamed UNIX domain socket";
if (path[0] == '\0') return "Abstract UNIX domain socket";
return path;
}
return NULL;
`}
lib/libevent/libevent.nit:552,2--573,3