mirror of
https://github.com/git/git.git
synced 2026-03-13 10:23:30 +01:00
Merge commit 'mingw/master' into work/merge-mingw-master
This commit is contained in:
@@ -631,8 +631,22 @@ void env_unsetenv(char **env, const char *name)
|
||||
env[dst] = NULL;
|
||||
}
|
||||
|
||||
/* this is the first function to call into WS_32; initialize it */
|
||||
#undef gethostbyname
|
||||
struct hostent *mingw_gethostbyname(const char *host)
|
||||
{
|
||||
WSADATA wsa;
|
||||
|
||||
if (WSAStartup(MAKEWORD(2,2), &wsa))
|
||||
die("unable to initialize winsock subsystem, error %d",
|
||||
WSAGetLastError());
|
||||
atexit((void(*)(void)) WSACleanup);
|
||||
return gethostbyname(host);
|
||||
}
|
||||
|
||||
int mingw_socket(int domain, int type, int protocol)
|
||||
{
|
||||
int sockfd;
|
||||
SOCKET s = WSASocket(domain, type, protocol, NULL, 0, 0);
|
||||
if (s == INVALID_SOCKET) {
|
||||
/*
|
||||
@@ -647,7 +661,20 @@ int mingw_socket(int domain, int type, int protocol)
|
||||
errno = WSAGetLastError();
|
||||
return -1;
|
||||
}
|
||||
return s;
|
||||
/* convert into a file descriptor */
|
||||
if ((sockfd = _open_osfhandle(s, O_RDWR|O_BINARY)) < 0) {
|
||||
closesocket(s);
|
||||
return error("unable to make a socket file descriptor: %s",
|
||||
strerror(errno));
|
||||
}
|
||||
return sockfd;
|
||||
}
|
||||
|
||||
#undef connect
|
||||
int mingw_connect(int sockfd, struct sockaddr *sa, size_t sz)
|
||||
{
|
||||
SOCKET s = (SOCKET)_get_osfhandle(sockfd);
|
||||
return connect(s, sa, sz);
|
||||
}
|
||||
|
||||
#undef rename
|
||||
|
||||
16
connect.c
16
connect.c
@@ -345,23 +345,7 @@ static int git_tcp_connect_sock(char *host, int flags)
|
||||
|
||||
static void git_tcp_connect(int fd[2], char *host, int flags)
|
||||
{
|
||||
#ifndef __MINGW32__
|
||||
int sockfd = git_tcp_connect_sock(host, flags);
|
||||
#else
|
||||
int sockfd;
|
||||
WSADATA wsa;
|
||||
|
||||
if (WSAStartup(MAKEWORD(2,2), &wsa))
|
||||
die("unable to initialize winsock subsystem, error %d",
|
||||
WSAGetLastError());
|
||||
atexit((void(*)(void)) WSACleanup);
|
||||
|
||||
sockfd = git_tcp_connect_sock(host, flags);
|
||||
/* convert into a file descriptor */
|
||||
if ((sockfd = _open_osfhandle(sockfd, O_RDWR|O_BINARY)) < 0)
|
||||
die("unable to make a socket file descriptor: %s",
|
||||
strerror(errno));
|
||||
#endif
|
||||
|
||||
fd[0] = sockfd;
|
||||
fd[1] = dup(sockfd);
|
||||
|
||||
@@ -523,9 +523,15 @@ struct tm *localtime_r(const time_t *timep, struct tm *result);
|
||||
char *mingw_getcwd(char *pointer, int len);
|
||||
#define getcwd mingw_getcwd
|
||||
|
||||
struct hostent *mingw_gethostbyname(const char *host);
|
||||
#define gethostbyname mingw_gethostbyname
|
||||
|
||||
int mingw_socket(int domain, int type, int protocol);
|
||||
#define socket mingw_socket
|
||||
|
||||
int mingw_connect(int sockfd, struct sockaddr *sa, size_t sz);
|
||||
#define connect mingw_connect
|
||||
|
||||
int mingw_rename(const char*, const char*);
|
||||
#define rename mingw_rename
|
||||
|
||||
|
||||
5
git.c
5
git.c
@@ -399,8 +399,9 @@ int main(int argc, const char **argv)
|
||||
* if we don't have anything better.
|
||||
*/
|
||||
#ifdef __MINGW32__
|
||||
if (!slash)
|
||||
slash = strrchr(cmd, '\\');
|
||||
char *bslash = strrchr(cmd, '\\');
|
||||
if (!slash || (bslash && bslash > slash))
|
||||
slash = bslash;
|
||||
#endif
|
||||
if (slash) {
|
||||
*slash++ = 0;
|
||||
|
||||
Reference in New Issue
Block a user