21 #ifndef _tds_sysdep_private_h_
22 #define _tds_sysdep_private_h_
24 #define TDS_ADDITIONAL_SPACE 16
27 # define TDS_NOSIGNAL MSG_NOSIGNAL
29 # define TDS_NOSIGNAL 0L
45 #define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)
46 #define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)
47 #define CLOSESOCKET(a) closesocket((a))
48 #define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))
50 #define select select_s
52 #define strcasecmp stricmp
53 #define strncasecmp strnicmp
55 #define getpid() _gethostid()
58 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
62 #define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)
63 #define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)
64 #define CLOSESOCKET(a) closesocket((a))
65 #define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))
67 int tds_socket_init(
void);
68 #define INITSOCKET() tds_socket_init()
69 void tds_socket_done(
void);
70 #define DONESOCKET() tds_socket_done()
71 #define NETDB_REENTRANT 1
73 #define TDSSOCK_EINTR WSAEINTR
74 #define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK
75 #define TDSSOCK_ETIMEDOUT WSAETIMEDOUT
76 #define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)
77 #define sock_errno WSAGetLastError()
78 #define sock_strerror(n) tds_prwsaerror(n)
79 #define sock_strerror_free(s) tds_prwsaerror_free(s)
84 #define strcasecmp stricmp
86 #define strncasecmp strnicmp
87 #if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF)
88 #define snprintf _snprintf
95 #if defined(_WIN64) && !defined(WIN64)
99 #define TDS_SDIR_SEPARATOR "\\"
102 #if defined(__MSVCRT__) || defined(_MSC_VER)
105 #define getpid() GetCurrentProcessId()
106 #define strdup(s) _strdup(s)
107 #define unlink(f) _unlink(f)
108 #define putenv(s) _putenv(s)
110 #define fileno(f) _fileno(f)
111 #define stricmp(s1,s2) _stricmp(s1,s2)
112 #define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)
118 #define sock_errno errno
121 #ifndef sock_strerror
122 #define sock_strerror(n) strerror(n)
123 #define sock_strerror_free(s) do {} while(0)
126 #ifndef TDSSOCK_EINTR
127 #define TDSSOCK_EINTR EINTR
130 #ifndef TDSSOCK_EINPROGRESS
131 #define TDSSOCK_EINPROGRESS EINPROGRESS
134 #ifndef TDSSOCK_ETIMEDOUT
135 #define TDSSOCK_ETIMEDOUT ETIMEDOUT
138 #ifndef TDSSOCK_WOULDBLOCK
139 # if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK
140 # define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)
142 # define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)
147 #define INITSOCKET() 0
151 #define DONESOCKET() do { } while(0)
156 # define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)
158 # define READSOCKET(s,b,l) read((s), (b), (l))
164 # define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)
166 # define WRITESOCKET(s,b,l) write((s), (b), (l))
171 #define CLOSESOCKET(s) close((s))
175 #define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))
179 # define SOCKLEN_T socklen_t
182 #if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)
183 typedef int TDS_SYS_SOCKET;
184 #define INVALID_SOCKET -1
185 #define TDS_IS_SOCKET_INVALID(s) ((s) < 0)
187 typedef SOCKET TDS_SYS_SOCKET;
188 #define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)
191 #define tds_accept accept
192 #define tds_getpeername getpeername
193 #define tds_getsockopt getsockopt
194 #define tds_getsockname getsockname
195 #define tds_recvfrom recvfrom
197 #if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
198 # if HAVE__XPG_ACCEPT
200 # define tds_accept _xpg_accept
203 # define tds_accept __accept
205 # if HAVE__XPG_GETPEERNAME
206 # undef tds_getpeername
207 # define tds_getpeername _xpg_getpeername
208 # elif HAVE___GETPEERNAME
209 # undef tds_getpeername
210 # define tds_getpeername __getpeername
212 # if HAVE__XPG_GETSOCKOPT
213 # undef tds_getsockopt
214 # define tds_getsockopt _xpg_getsockopt
215 # elif HAVE___GETSOCKOPT
216 # undef tds_getsockopt
217 # define tds_getsockopt __getsockopt
219 # if HAVE__XPG_GETSOCKNAME
220 # undef tds_getsockname
221 # define tds_getsockname _xpg_getsockname
222 # elif HAVE___GETSOCKNAME
223 # undef tds_getsockname
224 # define tds_getsockname __getsockname
226 # if HAVE__XPG_RECVFROM
228 # define tds_recvfrom _xpg_recvfrom
229 # elif HAVE___RECVFROM
231 # define tds_recvfrom __recvfrom
235 #ifndef TDS_SDIR_SEPARATOR
236 #define TDS_SDIR_SEPARATOR "/"
239 #ifdef HAVE_INTTYPES_H
240 #include <inttypes.h>
244 #define PRId64 TDS_I64_PREFIX "d"
247 #define PRIu64 TDS_I64_PREFIX "u"
250 #define PRIx64 TDS_I64_PREFIX "x"