Put a human readable string representation of address into buf

Property definitions

libevent $ ConnectionFactory :: addrin_to_address
	# 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