summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Nikias Bassen2010-05-26 20:30:02 +0200
committerGravatar Nikias Bassen2010-05-26 20:30:02 +0200
commit0833499c76f78da21fc33874a485946189a33dad (patch)
tree3406bc2729986945020748d176d492c6c4a4628a
parent6cb505257ff848aa7ead80b60b575effc3a915fa (diff)
downloadusbmuxd-0833499c76f78da21fc33874a485946189a33dad.tar.gz
usbmuxd-0833499c76f78da21fc33874a485946189a33dad.tar.bz2
libusbmuxd: use winsock API for win32
-rw-r--r--libusbmuxd/CMakeLists.txt3
-rw-r--r--libusbmuxd/libusbmuxd.c6
-rw-r--r--libusbmuxd/sock_stuff.c26
-rw-r--r--tools/CMakeLists.txt6
-rw-r--r--tools/iproxy.c12
5 files changed, 49 insertions, 4 deletions
diff --git a/libusbmuxd/CMakeLists.txt b/libusbmuxd/CMakeLists.txt
index 236cca3..0d7d897 100644
--- a/libusbmuxd/CMakeLists.txt
+++ b/libusbmuxd/CMakeLists.txt
@@ -7,6 +7,9 @@ find_library (PTHREAD pthread)
if (HAVE_PLIST)
message("-- libusbmuxd will be built with protocol version 1 support")
endif()
+if(WIN32)
+ set(OPT_LIBS ${OPT_LIBS} ws2_32)
+endif()
target_link_libraries (libusbmuxd ${CMAKE_THREAD_LIBS_INIT} ${OPT_LIBS})
# 'lib' is a UNIXism, the proper CMake target is usbmuxd
diff --git a/libusbmuxd/libusbmuxd.c b/libusbmuxd/libusbmuxd.c
index f465deb..80ffdd7 100644
--- a/libusbmuxd/libusbmuxd.c
+++ b/libusbmuxd/libusbmuxd.c
@@ -26,8 +26,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include <errno.h>
#include <stdio.h>
#include <string.h>
+#ifdef WIN32
+#include <windows.h>
+#include <winsock2.h>
+#define sleep(x) Sleep(x*1000)
+#else
#include <sys/socket.h>
#include <arpa/inet.h>
+#endif
#include <unistd.h>
#include <signal.h>
#include <pthread.h>
diff --git a/libusbmuxd/sock_stuff.c b/libusbmuxd/sock_stuff.c
index 33ac3e6..0592f6b 100644
--- a/libusbmuxd/sock_stuff.c
+++ b/libusbmuxd/sock_stuff.c
@@ -29,11 +29,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#include <errno.h>
#include <sys/time.h>
#include <sys/stat.h>
+#ifdef WIN32
+#include <windows.h>
+#include <winsock2.h>
+static int wsa_init = 0;
+#else
#include <sys/socket.h>
#include <sys/un.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
+#endif
#include "sock_stuff.h"
#define RECV_TIMEOUT 20000
@@ -143,6 +149,16 @@ int create_socket(uint16_t port)
{
int sfd = -1;
int yes = 1;
+#ifdef WIN32
+ WSADATA wsa_data;
+ if (!wsa_init) {
+ if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) {
+ fprintf(stderr, "WSAStartup failed!\n");
+ ExitProcess(-1);
+ }
+ wsa_init = 1;
+ }
+#endif
struct sockaddr_in saddr;
if (0 > (sfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP))) {
@@ -182,6 +198,16 @@ int connect_socket(const char *addr, uint16_t port)
int yes = 1;
struct hostent *hp;
struct sockaddr_in saddr;
+#ifdef WIN32
+ WSADATA wsa_data;
+ if (!wsa_init) {
+ if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) {
+ fprintf(stderr, "WSAStartup failed!\n");
+ ExitProcess(-1);
+ }
+ wsa_init = 1;
+ }
+#endif
if (!addr) {
errno = EINVAL;
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index 08ea714..64d0d0e 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -2,6 +2,10 @@ include_directories (${CMAKE_SOURCE_DIR}/libusbmuxd)
link_directories (${CMAKE_BINARY_DIR}/libusbmuxd)
add_executable(iproxy iproxy.c)
-target_link_libraries(iproxy libusbmuxd pthread)
+if(WIN32)
+ target_link_libraries(iproxy libusbmuxd pthread ws2_32)
+else()
+ target_link_libraries(iproxy libusbmuxd pthread)
+endif()
install(TARGETS iproxy RUNTIME DESTINATION bin)
diff --git a/tools/iproxy.c b/tools/iproxy.c
index 707724a..1855c67 100644
--- a/tools/iproxy.c
+++ b/tools/iproxy.c
@@ -30,11 +30,17 @@ TODO: improve code...
#include <string.h>
#include <fcntl.h>
#include <stddef.h>
-#include <sys/socket.h>
-#include <sys/un.h>
#include <unistd.h>
#include <errno.h>
+#ifdef WIN32
+#include <windows.h>
+#include <winsock2.h>
+typedef unsigned int socklen_t;
+#else
+#include <sys/socket.h>
+#include <sys/un.h>
#include <arpa/inet.h>
+#endif
#include <pthread.h>
#include "sock_stuff.h"
#include "usbmuxd.h"
@@ -98,7 +104,7 @@ void *run_ctos_loop(void *arg)
int recv_len;
int sent;
char buffer[131072];
- pthread_t stoc = 0;
+ pthread_t stoc;
printf("%s: fd = %d\n", __func__, cdata->fd);