Juan Lang : ws2_32: Implement ws_sockaddr_ws2u for AF_IRDA.
Alexandre Julliard
julliard at winehq.org
Thu Aug 13 10:41:38 CDT 2009
Module: wine
Branch: master
Commit: 2856794e66d22f8bb168325b86c5df9e7ce0e87a
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2856794e66d22f8bb168325b86c5df9e7ce0e87a
Author: Juan Lang <juan.lang at gmail.com>
Date: Wed Aug 12 09:14:41 2009 -0700
ws2_32: Implement ws_sockaddr_ws2u for AF_IRDA.
---
dlls/ws2_32/socket.c | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 5400ea4..39bc1c8 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -144,6 +144,7 @@
#include "ws2spi.h"
#include "wsipx.h"
#include "mstcpip.h"
+#include "af_irda.h"
#include "winnt.h"
#include "iphlpapi.h"
#include "wine/server.h"
@@ -951,6 +952,32 @@ static unsigned int ws_sockaddr_ws2u(const struct WS_sockaddr* wsaddr, int wsadd
memcpy(&uin->sin_addr,&win->sin_addr,4); /* 4 bytes = 32 address bits */
break;
}
+#ifdef HAVE_IRDA
+ case WS_AF_IRDA: {
+ struct sockaddr_irda *uin = (struct sockaddr_irda *)uaddr;
+ const SOCKADDR_IRDA *win = (const SOCKADDR_IRDA *)wsaddr;
+
+ if (wsaddrlen < sizeof(SOCKADDR_IRDA))
+ return 0;
+ uaddrlen = sizeof(struct sockaddr_irda);
+ memset( uaddr, 0, uaddrlen );
+ uin->sir_family = AF_IRDA;
+ if (!strncmp( win->irdaServiceName, "LSAP-SEL", strlen( "LSAP-SEL" ) ))
+ {
+ unsigned int lsap_sel;
+
+ sscanf( win->irdaServiceName, "LSAP-SEL%u", &lsap_sel );
+ uin->sir_lsap_sel = lsap_sel;
+ }
+ else
+ {
+ uin->sir_lsap_sel = LSAP_ANY;
+ memcpy( uin->sir_name, win->irdaServiceName, 25 );
+ }
+ memcpy( &uin->sir_addr, win->irdaDeviceID, sizeof(uin->sir_addr) );
+ break;
+ }
+#endif
case WS_AF_UNSPEC: {
/* Try to determine the needed space by the passed windows sockaddr space */
switch (wsaddrlen) {
@@ -963,6 +990,11 @@ static unsigned int ws_sockaddr_ws2u(const struct WS_sockaddr* wsaddr, int wsadd
uaddrlen = sizeof(struct sockaddr_ipx);
break;
#endif
+#ifdef HAVE_IRDA
+ case sizeof(SOCKADDR_IRDA):
+ uaddrlen = sizeof(struct sockaddr_irda);
+ break;
+#endif
case sizeof(struct WS_sockaddr_in6):
case sizeof(struct WS_sockaddr_in6_old):
uaddrlen = sizeof(struct sockaddr_in6);
More information about the wine-cvs
mailing list