2 Copyright (C) 2013 by Ronnie Sahlberg <ronniesahlberg@gmail.com>
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as published by
6 the Free Software Foundation; either version 2.1 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public License
15 along with this program; if not, see <http://www.gnu.org/licenses/>.
23 #include <sys/types.h>
25 #include "aros_compat.h"
29 /* unix device major/minor numbers dont make much sense on amiga */
39 struct Library
* SocketBase
= NULL
;
41 void aros_init_socket(void)
43 if (!(SocketBase
= OpenLibrary("bsdsocket.library", 4))) {
44 printf("No TCP/IP stack available.\n");
49 int aros_poll(struct pollfd
*fds
, unsigned int nfds
, int timo
)
51 struct timeval timeout
, *toptr
;
52 fd_set ifds
, ofds
, efds
, *ip
, *op
;
56 // Set up the file-descriptor sets in ifds, ofds and efds.
60 for (i
= 0, op
= ip
= 0; i
< nfds
; ++i
)
63 if(fds
[i
].events
& (POLLIN
|POLLPRI
))
66 FD_SET(fds
[i
].fd
, ip
);
68 if(fds
[i
].events
& POLLOUT
)
71 FD_SET(fds
[i
].fd
, op
);
73 FD_SET(fds
[i
].fd
, &efds
);
76 // Set up the timeval structure for the timeout parameter
84 timeout
.tv_sec
= timo
/ 1000;
85 timeout
.tv_usec
= (timo
- timeout
.tv_sec
* 1000) * 1000;
88 rc
= WaitSelect(0, ip
, op
, &efds
, toptr
, NULL
);
95 for (i
= 0; i
< nfds
; ++i
)
98 if(fds
[i
].events
& (POLLIN
|POLLPRI
) && FD_ISSET(fd
, &ifds
))
99 fds
[i
].revents
|= POLLIN
;
100 if(fds
[i
].events
& POLLOUT
&& FD_ISSET(fd
, &ofds
))
101 fds
[i
].revents
|= POLLOUT
;
102 if(FD_ISSET(fd
, &efds
)) // Some error was detected ... should be some way to know.
103 fds
[i
].revents
|= POLLHUP
;