restructured client and server code into a single library libhclex.

also migrated socket related functions into the library
This commit is contained in:
2018-04-10 13:57:17 +00:00
parent dfee95436f
commit 64acfe3aec
15 changed files with 386 additions and 382 deletions

View File

@ -1068,85 +1068,3 @@ hcl_uint128_t hcl_hton128 (hcl_uint128_t x)
#endif
/* --------------------------------------------------------------- */
#if defined(_WIN32)
# include <winsock2.h>
# include <ws2tcpip.h> /* sockaddr_in6 */
# include <windows.h>
#elif defined(__OS2__)
# if defined(TCPV40HDRS)
# define BSD_SELECT
# endif
# include <types.h>
# include <sys/socket.h>
# include <netinet/in.h>
#else
# include <netinet/in.h>
#endif
union sockaddr_t
{
struct sockaddr sa;
#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN > 0)
struct sockaddr_in in4;
#endif
#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0)
struct sockaddr_in6 in6;
#endif
};
typedef union sockaddr_t sockaddr_t;
#undef ooch_t
#undef oocs_t
#undef str_to_ipv4
#undef str_to_ipv6
#undef str_to_sockaddr
#define ooch_t hcl_bch_t
#define oocs_t hcl_bcs_t
#define str_to_ipv4 bchars_to_ipv4
#define str_to_ipv6 bchars_to_ipv6
#define str_to_sockaddr hcl_bcharstosckaddr
#include "sa-utl.h"
#undef ooch_t
#undef oocs_t
#undef str_to_ipv4
#undef str_to_ipv6
#undef str_to_sockaddr
#define ooch_t hcl_uch_t
#define oocs_t hcl_ucs_t
#define str_to_ipv4 uchars_to_ipv4
#define str_to_ipv6 uchars_to_ipv6
#define str_to_sockaddr hcl_ucharstosckaddr
#include "sa-utl.h"
int hcl_get_sckaddr_info (const hcl_sckaddr_t* sckaddr, hcl_scklen_t* scklen)
{
sockaddr_t* sa = (sockaddr_t*)sckaddr;
if (scklen)
{
switch (sa->sa.sa_family)
{
#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN > 0)
case AF_INET:
*scklen = HCL_SIZEOF(sa->in4);
break;
#endif
#if (HCL_SIZEOF_STRUCT_SOCKADDR_IN6 > 0)
case AF_INET6:
*scklen = HCL_SIZEOF(sa->in6);
break;
#endif
default:
*scklen = 0; /* unknown */
break;
}
}
return sa->sa.sa_family;
}