mirror of
https://github.com/switchbrew/switch-tools.git
synced 2025-06-21 21:42:39 +02:00
nxlink: fix Windows build
This commit is contained in:
parent
1b660e22c3
commit
c2977a7167
@ -31,7 +31,7 @@ NET_LIBS=""
|
|||||||
case "$host" in
|
case "$host" in
|
||||||
*-*-mingw*)
|
*-*-mingw*)
|
||||||
NET_LIBS="-lws2_32"
|
NET_LIBS="-lws2_32"
|
||||||
CFLAGS="$CFLAGS -D__USE_MINGW_ANSI_STDIO"
|
CFLAGS="$CFLAGS -D__USE_MINGW_ANSI_STDIO -D_WIN32_WINNT=0x0600"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
25
src/nxlink.c
25
src/nxlink.c
@ -24,11 +24,12 @@ typedef uint32_t in_addr_t;
|
|||||||
#define SHUT_RD SD_RECEIVE
|
#define SHUT_RD SD_RECEIVE
|
||||||
#define SHUT_WR SD_SEND
|
#define SHUT_WR SD_SEND
|
||||||
#define SHUT_RDWR SD_BOTH
|
#define SHUT_RDWR SD_BOTH
|
||||||
#ifndef EWOULDBLOCK
|
#ifdef EWOULDBLOCK
|
||||||
|
#undef EWOULDBLOCK
|
||||||
|
#endif
|
||||||
#define EWOULDBLOCK WSAEWOULDBLOCK
|
#define EWOULDBLOCK WSAEWOULDBLOCK
|
||||||
#define poll WSAPoll
|
#define poll WSAPoll
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -54,6 +55,7 @@ static void shutdownSocket(int socket, int flags) {
|
|||||||
static int setSocketNonblocking(int sock) {
|
static int setSocketNonblocking(int sock) {
|
||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#ifndef __WIN32__
|
||||||
int flags = fcntl(sock, F_GETFL);
|
int flags = fcntl(sock, F_GETFL);
|
||||||
|
|
||||||
if (flags == -1) return -1;
|
if (flags == -1) return -1;
|
||||||
@ -61,6 +63,13 @@ static int setSocketNonblocking(int sock) {
|
|||||||
int rc = fcntl(sock, F_SETFL, flags | O_NONBLOCK);
|
int rc = fcntl(sock, F_SETFL, flags | O_NONBLOCK);
|
||||||
|
|
||||||
if (rc != 0) return -1;
|
if (rc != 0) return -1;
|
||||||
|
#else
|
||||||
|
u_long iMode = 1; // non-blocking
|
||||||
|
|
||||||
|
int rc = ioctlsocket(sock, FIONBIO, &iMode);
|
||||||
|
|
||||||
|
if (rc != NO_ERROR) return -1;
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -92,7 +101,11 @@ static int socketError(const char *msg) {
|
|||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
int pollSocket(int fd, int events, int timeout) {
|
int pollSocket(int fd, int events, int timeout) {
|
||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
|
#ifndef __WIN32__
|
||||||
struct pollfd pfd;
|
struct pollfd pfd;
|
||||||
|
#else
|
||||||
|
WSAPOLLFD pfd;
|
||||||
|
#endif
|
||||||
|
|
||||||
pfd.fd = fd;
|
pfd.fd = fd;
|
||||||
pfd.events = events;
|
pfd.events = events;
|
||||||
@ -463,6 +476,12 @@ static int addExtraArgs(int len, char *buf, char *extra_args) {
|
|||||||
|
|
||||||
#define NRO_ARGS 1000
|
#define NRO_ARGS 1000
|
||||||
|
|
||||||
|
#ifdef __WIN32__
|
||||||
|
static void win32_socket_cleanup(void) {
|
||||||
|
WSACleanup();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
//---------------------------------------------------------------------------------
|
//---------------------------------------------------------------------------------
|
||||||
@ -595,7 +614,7 @@ int main(int argc, char **argv) {
|
|||||||
printf ("WSAStartup failed\n");
|
printf ("WSAStartup failed\n");
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
atexit(&WSACleanup);
|
atexit(&win32_socket_cleanup);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct in_addr nxaddr;
|
struct in_addr nxaddr;
|
||||||
|
Loading…
Reference in New Issue
Block a user