Currently Windows builds use a separate header file in the win32
subdirectory. This patch pulls the important bits out of that header
file into the main "libssh2_priv.h" header file. The extras here are
to check for and use the windows headers, and the implementation of
iovec/writev.
Of course they are defended by #ifdef WIN32 ... #endif so that this
still works on Linux.
Rich.
--
Richard Jones, Emerging Technologies, Red Hat http://et.redhat.com/~rjones
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://et.redhat.com/~rjones/virt-top
diff -urN libssh2-0.18.orig/configure.in libssh2-0.18.mingw/configure.in
--- libssh2-0.18.orig/configure.in 2007-07-31 10:55:29.000000000 +0100
+++ libssh2-0.18.mingw/configure.in 2008-11-10 14:12:07.000000000 +0000
@@ -249,6 +250,7 @@
AC_CHECK_HEADERS([errno.h fcntl.h stdio.h stdlib.h unistd.h sys/uio.h])
AC_CHECK_HEADERS([sys/select.h sys/socket.h sys/ioctl.h sys/time.h])
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h])
+AC_CHECK_HEADERS([windows.h ws2tcpip.h winsock2.h])
AC_CHECK_FUNCS(poll gettimeofday select)
AC_FUNC_ALLOCA
diff -urN libssh2-0.18.orig/src/libssh2_priv.h
libssh2-0.18.mingw/src/libssh2_priv.h
--- libssh2-0.18.orig/src/libssh2_priv.h 2007-08-10 23:30:30.000000000
+0100
+++ libssh2-0.18.mingw/src/libssh2_priv.h 2008-11-10 13:57:49.000000000
+0000
@@ -41,6 +41,14 @@
#define LIBSSH2_LIBRARY
#include "libssh2_config.h"
+#ifdef HAVE_WINDOWS_H
+#include <windows.h>
+#endif
+
+#ifdef HAVE_WS2TCPIP_H
+#include <ws2tcpip.h>
+#endif
+
/* The following CPP block should really only be in session.c and
packet.c. However, AIX have #define's for 'events' and 'revents'
and we are using those names in libssh2.h, so we need to include
@@ -70,6 +78,28 @@
#include "libssh2_publickey.h"
#include "libssh2_sftp.h"
+/* Provide iovec / writev on WIN32 platform. */
+#ifdef WIN32
+
+/* same as WSABUF */
+struct iovec {
+ u_long iov_len;
+ char *iov_base;
+};
+
+#define inline __inline
+
+static inline int writev(int sock, struct iovec *iov, int nvecs)
+{
+ DWORD ret;
+ if (WSASend(sock, (LPWSABUF)iov, nvecs, &ret, 0, NULL, NULL) == 0) {
+ return ret;
+ }
+ return -1;
+}
+
+#endif /* WIN32 */
+
/* Needed for struct iovec on some platforms */
#ifdef HAVE_SYS_UIO_H
#include <sys/uio.h>
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
libssh2-devel mailing list
libssh2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libssh2-devel