00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _tds_sysdep_private_h_
00022 #define _tds_sysdep_private_h_
00023
00024
00025
00026 #undef TDS_RCSID
00027 #if defined(__GNUC__) && __GNUC__ >= 3
00028 #define TDS_RCSID(name, id) \
00029 static const char rcsid_##name[] __attribute__ ((unused)) = id
00030 #else
00031 #define TDS_RCSID(name, id) \
00032 static const char rcsid_##name[] = id; \
00033 static const void *const no_unused_##name##_warn[] = { rcsid_##name, no_unused_##name##_warn }
00034 #endif
00035
00036 #define TDS_ADDITIONAL_SPACE 0
00037
00038 #ifdef MSG_NOSIGNAL
00039 # define TDS_NOSIGNAL MSG_NOSIGNAL
00040 #else
00041 # define TDS_NOSIGNAL 0L
00042 #endif
00043
00044 #ifdef __cplusplus
00045 extern "C"
00046 {
00047 #if 0
00048 }
00049 #endif
00050 #endif
00051
00052 #ifdef __INCvxWorksh
00053 #include <ioLib.h>
00054 #endif
00055
00056 #if defined(DOS32X)
00057 #define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)
00058 #define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)
00059 #define CLOSESOCKET(a) closesocket((a))
00060 #define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))
00061 #define SOCKLEN_T int
00062 #define select select_s
00063 typedef int pid_t;
00064 #define strcasecmp stricmp
00065 #define strncasecmp strnicmp
00066 #define vsnprintf _vsnprintf
00067
00068 #define getpid() _gethostid()
00069 #endif
00070
00071 #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
00072 #include <winsock2.h>
00073 #include <windows.h>
00074 #define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)
00075 #define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)
00076 #define CLOSESOCKET(a) closesocket((a))
00077 #define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))
00078 #define SOCKLEN_T int
00079 int tds_socket_init(void);
00080 #define INITSOCKET() tds_socket_init()
00081 void tds_socket_done(void);
00082 #define DONESOCKET() tds_socket_done()
00083 #define NETDB_REENTRANT 1
00084
00085 #define TDSSOCK_EINTR WSAEINTR
00086 #define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK
00087 #define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)
00088 #define sock_errno WSAGetLastError()
00089 #define sock_strerror(n) tds_prwsaerror(n)
00090 #ifndef __MINGW32__
00091 typedef DWORD pid_t;
00092 #endif
00093 #define strcasecmp stricmp
00094 #define strncasecmp strnicmp
00095 #define atoll _atoi64
00096 #define vsnprintf _vsnprintf
00097 #define snprintf _snprintf
00098
00099 #ifndef WIN32
00100 #define WIN32 1
00101 #endif
00102
00103 #if defined(_WIN64) && !defined(WIN64)
00104 #define WIN64 1
00105 #endif
00106
00107 #define TDS_SDIR_SEPARATOR "\\"
00108
00109
00110 #if defined(__MSVCRT__) || defined(_MSC_VER)
00111 #define getpid() _getpid()
00112 #define strdup(s) _strdup(s)
00113 #undef fileno
00114 #define fileno(f) _fileno(f)
00115 #define stricmp(s1,s2) _stricmp(s1,s2)
00116 #define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)
00117 #endif
00118
00119 #endif
00120
00121 #ifndef sock_errno
00122 #define sock_errno errno
00123 #endif
00124
00125 #ifndef sock_strerror
00126 #define sock_strerror(n) strerror(n)
00127 #endif
00128
00129 #ifndef TDSSOCK_EINTR
00130 #define TDSSOCK_EINTR EINTR
00131 #endif
00132
00133 #ifndef TDSSOCK_EINPROGRESS
00134 #define TDSSOCK_EINPROGRESS EINPROGRESS
00135 #endif
00136
00137 #ifndef TDSSOCK_WOULDBLOCK
00138 # if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK
00139 # define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)
00140 # else
00141 # define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)
00142 # endif
00143 #endif
00144
00145 #ifndef INITSOCKET
00146 #define INITSOCKET() 0
00147 #endif
00148
00149 #ifndef DONESOCKET
00150 #define DONESOCKET() do { } while(0)
00151 #endif
00152
00153 #ifndef READSOCKET
00154 # ifdef MSG_NOSIGNAL
00155 # define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)
00156 # else
00157 # define READSOCKET(s,b,l) read((s), (b), (l))
00158 # endif
00159 #endif
00160
00161 #ifndef WRITESOCKET
00162 # ifdef MSG_NOSIGNAL
00163 # define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)
00164 # else
00165 # define WRITESOCKET(s,b,l) write((s), (b), (l))
00166 # endif
00167 #endif
00168
00169 #ifndef CLOSESOCKET
00170 #define CLOSESOCKET(s) close((s))
00171 #endif
00172
00173 #ifndef IOCTLSOCKET
00174 #define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))
00175 #endif
00176
00177 #ifndef SOCKLEN_T
00178 # define SOCKLEN_T socklen_t
00179 #endif
00180
00181 #if !defined(__WIN32__) && !defined(_WIN32) && !defined(WIN32)
00182 typedef int TDS_SYS_SOCKET;
00183 #define INVALID_SOCKET -1
00184 #define TDS_IS_SOCKET_INVALID(s) ((s) < 0)
00185 #else
00186 typedef SOCKET TDS_SYS_SOCKET;
00187 #define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)
00188 #endif
00189
00190 #define tds_accept accept
00191 #define tds_getpeername getpeername
00192 #define tds_getsockopt getsockopt
00193 #define tds_getsockname getsockname
00194 #define tds_recvfrom recvfrom
00195
00196 #if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
00197 # if HAVE__XPG_ACCEPT
00198 # undef tds_accept
00199 # define tds_accept _xpg_accept
00200 # elif HAVE___ACCEPT
00201 # undef tds_accept
00202 # define tds_accept __accept
00203 # endif
00204 # if HAVE__XPG_GETPEERNAME
00205 # undef tds_getpeername
00206 # define tds_getpeername _xpg_getpeername
00207 # elif HAVE___GETPEERNAME
00208 # undef tds_getpeername
00209 # define tds_getpeername __getpeername
00210 # endif
00211 # if HAVE__XPG_GETSOCKOPT
00212 # undef tds_getsockopt
00213 # define tds_getsockopt _xpg_getsockopt
00214 # elif HAVE___GETSOCKOPT
00215 # undef tds_getsockopt
00216 # define tds_getsockopt __getsockopt
00217 # endif
00218 # if HAVE__XPG_GETSOCKNAME
00219 # undef tds_getsockname
00220 # define tds_getsockname _xpg_getsockname
00221 # elif HAVE___GETSOCKNAME
00222 # undef tds_getsockname
00223 # define tds_getsockname __getsockname
00224 # endif
00225 # if HAVE__XPG_RECVFROM
00226 # undef tds_recvfrom
00227 # define tds_recvfrom _xpg_recvfrom
00228 # elif HAVE___RECVFROM
00229 # undef tds_recvfrom
00230 # define tds_recvfrom __recvfrom
00231 # endif
00232 #endif
00233
00234 #ifndef TDS_SDIR_SEPARATOR
00235 #define TDS_SDIR_SEPARATOR "/"
00236 #endif
00237
00238 #ifdef HAVE_INTTYPES_H
00239 #include <inttypes.h>
00240 #endif
00241
00242 #ifndef PRId64
00243 #define PRId64 TDS_I64_FORMAT
00244 #endif
00245
00246 #ifdef __cplusplus
00247 #if 0
00248 {
00249 #endif
00250 }
00251 #endif
00252
00253 #endif