ae2f_docs
Block.def.cc
1#ifndef ae2f_Sys_WSock_auto_h
2#define ae2f_Sys_WSock_auto_h
3
4#include <ae2f/Sys/WSock.h>
5#include <ae2f/Macro.h>
6
7#if ae2f_Sys_WIN(!)0
8
9typedef u_long ae2f_SysWSockUBlock_t;
10
11/** Turns a socket into unblock mode */
12ae2f_MAC() ae2f_SysWSockUBlock(ae2f_SysWSockNBlock_t ref_mem, const ae2f_SysWSock_t prm_sock, int res)
13{
14 (ref_mem) = 1;
15 if (ioctlsocket((prm_sock), FIONBIO, &(ref_mem)) != 0) {
16 (res) = -1;
17 }
18 (res) = 0;
19}
20
21#else
22
23#include <fcntl.h>
24#include <unistd.h>
25
26typedef int ae2f_SysWSockUBlock_t;
27
28/** Turns a socket into unblock mode */
29ae2f_MAC() ae2f_SysWSockUBlock(ae2f_SysWSockUBlock_t ref_mem, const ae2f_SysWSock_t prm_sock, int res)
30{
31 (ref_mem) = fcntl(prm_sock, F_GETFL, 0);
32
33 if ((ref_mem) == -1) {
34 (res) = -1;
35 } else {
36 /* Add non-blocking flag */
37 (ref_mem) |= O_NONBLOCK;
38 if (fcntl((prm_sock), F_SETFL, (ref_mem)) == -1) {
39 (res) = -1;
40 } else
41 (res) = 0;
42 }
43}
44
45#endif
46
47#endif
#define ae2f_Sys_WIN
Definition Sys.h:17
#define ae2f_MAC(...)
Definition mac.h:28