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"