* cygwin.din (inet_pton): Export.

(inet_ntop): Export.
	* net.cc (cygwin_inet_pton): Implement inet_pton for AF_INET for now.
	(cygwin_inet_ntop): Implement inet_ntop for AF_INET for now.
	* include/arpa/inet.h (inet_pton): Declare.
	(inet_ntop): Declare.
	* include/cygwin/version.h: Bump API minor number.
This commit is contained in:
Corinna Vinschen
2005-06-17 20:01:59 +00:00
parent 2778b3e2b6
commit b3ba5059da
5 changed files with 62 additions and 1 deletions

View File

@@ -2259,3 +2259,49 @@ cygwin_sendmsg (int fd, const struct msghdr *msg, int flags)
syscall_printf ("%d = sendmsg (%d, %p, %x)", res, fd, msg, flags);
return res;
}
/* See "UNIX Network Programming, Networing APIs: Sockets and XTI",
W. Richard Stevens, Prentice Hall PTR, 1998. */
extern "C" int
cygwin_inet_pton (int family, const char *strptr, void *addrptr)
{
if (family == AF_INET)
{
struct in_addr in_val;
if (cygwin_inet_aton (strptr, &in_val))
{
memcpy (addrptr, &in_val, sizeof (struct in_addr));
return 1;
}
return 0;
}
set_errno (EAFNOSUPPORT);
return -1;
}
/* See "UNIX Network Programming, Networing APIs: Sockets and XTI",
W. Richard Stevens, Prentice Hall PTR, 1998. */
extern "C" const char *
cygwin_inet_ntop (int family, const void *addrptr, char *strptr, size_t len)
{
const u_char *p = (const u_char *) addrptr;
if (__check_null_invalid_struct_errno (strptr, len))
return NULL;
if (family == AF_INET)
{
char temp[64]; /* Big enough for 4 ints ... */
__small_sprintf (temp, "%u.%u.%u.%u", p[0], p[1], p[2], p[3]);
if (strlen (temp) >= len)
{
set_errno (ENOSPC);
return NULL;
}
strcpy (strptr, temp);
return strptr;
}
set_errno (EAFNOSUPPORT);
return NULL;
}