Commit 721571cc by Ben Straub

Merge pull request #1050 from edubart/development

Fix compilation for mingw32 and cygwin
parents 8a853788 345eef23
......@@ -274,11 +274,11 @@ static int verify_server_cert(gitno_ssl *ssl, const char *host)
}
/* Try to parse the host as an IP address to see if it is */
if (inet_pton(AF_INET, host, &addr4)) {
if (p_inet_pton(AF_INET, host, &addr4)) {
type = GEN_IPADD;
addr = &addr4;
} else {
if(inet_pton(AF_INET6, host, &addr6)) {
if(p_inet_pton(AF_INET6, host, &addr6)) {
type = GEN_IPADD;
addr = &addr6;
}
......
......@@ -205,3 +205,5 @@ int p_write(git_file fd, const void *buf, size_t cnt)
}
return 0;
}
......@@ -21,5 +21,6 @@
#define p_snprintf(b, c, f, ...) snprintf(b, c, f, __VA_ARGS__)
#define p_mkstemp(p) mkstemp(p)
#define p_setenv(n,v,o) setenv(n,v,o)
#define p_inet_pton(a, b, c) inet_pton(a, b, c)
#endif
......@@ -48,5 +48,6 @@ extern int p_getcwd(char *buffer_out, size_t size);
extern int p_rename(const char *from, const char *to);
extern int p_recv(GIT_SOCKET socket, void *buffer, size_t length, int flags);
extern int p_send(GIT_SOCKET socket, const void *buffer, size_t length, int flags);
extern int p_inet_pton(int af, const char* src, void* dst);
#endif
......@@ -11,7 +11,7 @@
#include <errno.h>
#include <io.h>
#include <fcntl.h>
#include <ws2tcpip.h>
int p_unlink(const char *path)
{
......@@ -504,3 +504,45 @@ int p_gettimeofday(struct timeval *tv, struct timezone *tz)
return 0;
}
int p_inet_pton(int af, const char* src, void* dst)
{
union {
struct sockaddr_in6 sin6;
struct sockaddr_in sin;
} sa;
size_t srcsize;
switch(af)
{
case AF_INET:
sa.sin.sin_family = AF_INET;
srcsize = sizeof (sa.sin);
break;
case AF_INET6:
sa.sin6.sin6_family = AF_INET6;
srcsize = sizeof (sa.sin6);
break;
default:
errno = WSAEPFNOSUPPORT;
return -1;
}
if (WSAStringToAddress(src, af, NULL, (struct sockaddr *) &sa, &srcsize) != 0)
{
errno = WSAGetLastError();
return -1;
}
switch(af)
{
case AF_INET:
memcpy(dst, &sa.sin.sin_addr, sizeof(sa.sin.sin_addr));
break;
case AF_INET6:
memcpy(dst, &sa.sin6.sin6_addr, sizeof(sa.sin6.sin6_addr));
break;
}
return 1;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment