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) 59 #include <freetds/windows.h> 60 #define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL) 61 #define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL) 62 #define CLOSESOCKET(a) closesocket((a)) 63 #define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c)) 65 int tds_socket_init(
void);
66 #define INITSOCKET() tds_socket_init() 67 void tds_socket_done(
void);
68 #define DONESOCKET() tds_socket_done() 69 #define NETDB_REENTRANT 1 71 #define TDSSOCK_EINTR WSAEINTR 72 #define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK 73 #define TDSSOCK_ETIMEDOUT WSAETIMEDOUT 74 #define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK) 75 #define TDSSOCK_ECONNRESET WSAECONNRESET 76 #define sock_errno WSAGetLastError() 77 #define set_sock_errno(err) WSASetLastError(err) 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) 112 #define close(f) _close(f) 114 #define open(fn,...) _open(fn,__VA_ARGS__) 116 #define dup2(o,n) _dup2(o,n) 117 #define stricmp(s1,s2) _stricmp(s1,s2) 118 #define strnicmp(s1,s2,n) _strnicmp(s1,s2,n) 124 #define sock_errno errno 127 #ifndef set_sock_errno 128 #define set_sock_errno(err) do { errno = (err); } while(0) 131 #ifndef sock_strerror 132 #define sock_strerror(n) strerror(n) 133 #define sock_strerror_free(s) do {} while(0) 136 #ifndef TDSSOCK_EINTR 137 #define TDSSOCK_EINTR EINTR 140 #ifndef TDSSOCK_EINPROGRESS 141 #define TDSSOCK_EINPROGRESS EINPROGRESS 144 #ifndef TDSSOCK_ETIMEDOUT 145 #define TDSSOCK_ETIMEDOUT ETIMEDOUT 148 #ifndef TDSSOCK_WOULDBLOCK 149 # if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK 150 # define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK) 152 # define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN) 156 #ifndef TDSSOCK_ECONNRESET 157 #define TDSSOCK_ECONNRESET ECONNRESET 161 #define INITSOCKET() 0 165 #define DONESOCKET() do { } while(0) 170 # define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL) 172 # define READSOCKET(s,b,l) read((s), (b), (l)) 178 # define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL) 180 # define WRITESOCKET(s,b,l) write((s), (b), (l)) 185 #define CLOSESOCKET(s) close((s)) 189 #define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l)) 193 # define SOCKLEN_T socklen_t 196 #if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32) 197 typedef int TDS_SYS_SOCKET;
198 #define INVALID_SOCKET -1 199 #define TDS_IS_SOCKET_INVALID(s) ((s) < 0) 201 typedef SOCKET TDS_SYS_SOCKET;
202 #define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET) 205 #define tds_accept accept 206 #define tds_getpeername getpeername 207 #define tds_getsockopt getsockopt 208 #define tds_getsockname getsockname 209 #define tds_recvfrom recvfrom 211 #if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4 212 # if HAVE__XPG_ACCEPT 214 # define tds_accept _xpg_accept 217 # define tds_accept __accept 219 # if HAVE__XPG_GETPEERNAME 220 # undef tds_getpeername 221 # define tds_getpeername _xpg_getpeername 222 # elif HAVE___GETPEERNAME 223 # undef tds_getpeername 224 # define tds_getpeername __getpeername 226 # if HAVE__XPG_GETSOCKOPT 227 # undef tds_getsockopt 228 # define tds_getsockopt _xpg_getsockopt 229 # elif HAVE___GETSOCKOPT 230 # undef tds_getsockopt 231 # define tds_getsockopt __getsockopt 233 # if HAVE__XPG_GETSOCKNAME 234 # undef tds_getsockname 235 # define tds_getsockname _xpg_getsockname 236 # elif HAVE___GETSOCKNAME 237 # undef tds_getsockname 238 # define tds_getsockname __getsockname 240 # if HAVE__XPG_RECVFROM 242 # define tds_recvfrom _xpg_recvfrom 243 # elif HAVE___RECVFROM 245 # define tds_recvfrom __recvfrom 249 #ifndef TDS_SDIR_SEPARATOR 250 #define TDS_SDIR_SEPARATOR "/" 253 #ifdef HAVE_INTTYPES_H 254 #include <inttypes.h> 258 #define PRId64 TDS_I64_PREFIX "d" 261 #define PRIu64 TDS_I64_PREFIX "u" 264 #define PRIx64 TDS_I64_PREFIX "x"