1 | /* $Id: wsock2.cpp,v 1.2 2001-07-07 14:29:40 achimha Exp $ */
|
---|
2 |
|
---|
3 | /*
|
---|
4 | *
|
---|
5 | * Project Odin Software License can be found in LICENSE.TXT
|
---|
6 | *
|
---|
7 | * Winsock 2.0 functions for OS/2
|
---|
8 | *
|
---|
9 | * Copyright (C) 2001 Achim Hasenmueller <achimha@innotek.de>
|
---|
10 | *
|
---|
11 | * Some parts based on Wine code: (dlls\winsock\socket.c)
|
---|
12 | * (C) 1993,1994,1996,1997 John Brezak, Erik Bos, Alex Korobka.
|
---|
13 | *
|
---|
14 | */
|
---|
15 |
|
---|
16 | #include <odin.h>
|
---|
17 | #include <debugtools.h>
|
---|
18 | #include "wsock32.h"
|
---|
19 |
|
---|
20 |
|
---|
21 | /***********************************************************************
|
---|
22 | * WSAEventSelect (WS2_32.39)
|
---|
23 | */
|
---|
24 | int WINAPI WSAEventSelect(SOCKET s, WSAEVENT hEvent, LONG lEvent)
|
---|
25 | {
|
---|
26 | TRACE("WS2_32: WSAEventSelect socket 0x%x, hEvent 0x%x, event 0x%x", s, hEvent, (unsigned)lEvent);
|
---|
27 |
|
---|
28 | // forward call to worker function in HEVENT notification mode
|
---|
29 | return WSAAsyncSelectWorker(s, WSA_SELECT_HEVENT, (int)hEvent, 0, lEvent);
|
---|
30 | }
|
---|
31 |
|
---|
32 | /***********************************************************************
|
---|
33 | * WSAEnumNetworkEvents
|
---|
34 | */
|
---|
35 | int WINAPI WSAEnumNetworkEvents(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lpEvent)
|
---|
36 | {
|
---|
37 | // called too often in some apps, makes log file grow too fast
|
---|
38 | // dprintf(("WSAEnumNetworkEvents 0x%x 0x%x 0x%x NOT CORRECTLY IMPLEMENTED", s, hEvent, lpEvent));
|
---|
39 |
|
---|
40 | if(!fWSAInitialized)
|
---|
41 | {
|
---|
42 | dprintf(("WSA sockets not initialized"));
|
---|
43 | WSASetLastError(WSANOTINITIALISED);
|
---|
44 | return SOCKET_ERROR;
|
---|
45 | }
|
---|
46 | else
|
---|
47 | if(WSAIsBlocking())
|
---|
48 | {
|
---|
49 | dprintf(("blocking call in progress"));
|
---|
50 | WSASetLastError(WSAEINPROGRESS); // blocking call in progress
|
---|
51 | return SOCKET_ERROR;
|
---|
52 | }
|
---|
53 | else
|
---|
54 | if (!lpEvent)
|
---|
55 | {
|
---|
56 | dprintf(("network event buffer NULL"));
|
---|
57 | WSASetLastError(WSAEINVAL);
|
---|
58 | return SOCKET_ERROR;
|
---|
59 | }
|
---|
60 | // TODO: check if lpEvent is in user address space! (Win32 does)
|
---|
61 |
|
---|
62 | // forward call to worker routine
|
---|
63 | return WSAEnumNetworkEventsWorker(s, hEvent, lpEvent);
|
---|
64 | }
|
---|