FreeTDS API
Loading...
Searching...
No Matches
include
freetds
sysdep_private.h
1
/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
2
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
3
* Copyright (C) 2010 Frediano Ziglio
4
*
5
* This library is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU Library General Public
7
* License as published by the Free Software Foundation; either
8
* version 2 of the License, or (at your option) any later version.
9
*
10
* This library is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* Library General Public License for more details.
14
*
15
* You should have received a copy of the GNU Library General Public
16
* License along with this library; if not, write to the
17
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18
* Boston, MA 02111-1307, USA.
19
*/
20
21
#ifndef _tdsguard_gbdINUKdHN7rAOavGyKkWw_
22
#define _tdsguard_gbdINUKdHN7rAOavGyKkWw_
23
24
#define TDS_ADDITIONAL_SPACE 16
25
26
#ifdef MSG_NOSIGNAL
27
# define TDS_NOSIGNAL MSG_NOSIGNAL
28
#else
29
# define TDS_NOSIGNAL 0L
30
#endif
31
32
#ifdef __cplusplus
33
#define TDS_EXTERN_C extern "C"
34
#else
35
#define TDS_EXTERN_C
36
#endif
37
38
#ifdef __INCvxWorksh
39
#include <ioLib.h>
/* for FIONBIO */
40
#endif
/* __INCvxWorksh */
41
42
#if defined(DOS32X)
43
#define READSOCKET(a,b,c) recv((a), (b), (c), TDS_NOSIGNAL)
44
#define WRITESOCKET(a,b,c) send((a), (b), (c), TDS_NOSIGNAL)
45
#define CLOSESOCKET(a) closesocket((a))
46
#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (char*)(c))
47
#define SOCKLEN_T int
48
#define select select_s
49
typedef
int
pid_t;
50
#define strcasecmp stricmp
51
#define strncasecmp strnicmp
52
/* TODO this has nothing to do with ip ... */
53
#define getpid() _gethostid()
54
#endif
/* defined(DOS32X) */
55
56
#ifdef _WIN32
57
#include <freetds/windows.h>
58
#define READSOCKET(a,b,c) recv((a), (char *) (b), (c), TDS_NOSIGNAL)
59
#define WRITESOCKET(a,b,c) send((a), (const char *) (b), (c), TDS_NOSIGNAL)
60
#define CLOSESOCKET(a) closesocket((a))
61
#define IOCTLSOCKET(a,b,c) ioctlsocket((a), (b), (c))
62
#define SOCKLEN_T int
63
static
inline
int
64
tds_socket_init(
void
)
65
{
66
WSADATA wsadata;
67
68
return
WSAStartup(MAKEWORD(2, 2), &wsadata);
69
}
70
71
static
inline
void
72
tds_socket_done(
void
)
73
{
74
WSACleanup();
75
}
76
#define NETDB_REENTRANT 1
/* BSD-style netdb interface is reentrant */
77
78
#define TDSSOCK_EINTR WSAEINTR
79
#define TDSSOCK_EINPROGRESS WSAEWOULDBLOCK
80
#define TDSSOCK_ETIMEDOUT WSAETIMEDOUT
81
#define TDSSOCK_WOULDBLOCK(e) ((e)==WSAEWOULDBLOCK)
82
#define TDSSOCK_ECONNRESET WSAECONNRESET
83
#define sock_errno WSAGetLastError()
84
#define set_sock_errno(err) WSASetLastError(err)
85
#define sock_strerror(n) tds_prwsaerror(n)
86
#define sock_strerror_free(s) tds_prwsaerror_free(s)
87
#ifndef __MINGW32__
88
typedef
DWORD pid_t;
89
#endif
90
#undef strcasecmp
91
#define strcasecmp stricmp
92
#undef strncasecmp
93
#define strncasecmp strnicmp
94
#if defined(HAVE__SNPRINTF) && !defined(HAVE_SNPRINTF)
95
#define snprintf _snprintf
96
#endif
97
98
/* use macros to use new style names */
99
#if defined(__MSVCRT__) || defined(_MSC_VER)
100
/* Use API as always present and not causing problems */
101
#undef getpid
102
#define getpid() GetCurrentProcessId()
103
#define strdup(s) _strdup(s)
104
#define unlink(f) _unlink(f)
105
#define putenv(s) _putenv(s)
106
#undef fileno
107
#define fileno(f) _fileno(f)
108
#undef close
109
#define close(f) _close(f)
110
#undef open
111
#define open(fn,...) _open(fn,__VA_ARGS__)
112
#undef dup2
113
#define dup2(o,n) _dup2(o,n)
114
#define stricmp(s1,s2) _stricmp(s1,s2)
115
#define strnicmp(s1,s2,n) _strnicmp(s1,s2,n)
116
#endif
117
118
#endif
/* defined(_WIN32) */
119
120
#ifndef sock_errno
121
#define sock_errno errno
122
#endif
123
124
#ifndef set_sock_errno
125
#define set_sock_errno(err) do { errno = (err); } while(0)
126
#endif
127
128
#ifndef sock_strerror
129
#define sock_strerror(n) strerror(n)
130
#define sock_strerror_free(s) do {} while(0)
131
#endif
132
133
#ifndef TDSSOCK_EINTR
134
#define TDSSOCK_EINTR EINTR
135
#endif
136
137
#ifndef TDSSOCK_EINPROGRESS
138
#define TDSSOCK_EINPROGRESS EINPROGRESS
139
#endif
140
141
#ifndef TDSSOCK_ETIMEDOUT
142
#define TDSSOCK_ETIMEDOUT ETIMEDOUT
143
#endif
144
145
#ifndef TDSSOCK_WOULDBLOCK
146
# if defined(EWOULDBLOCK) && EAGAIN != EWOULDBLOCK
147
# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN||(e)==EWOULDBLOCK)
148
# else
149
# define TDSSOCK_WOULDBLOCK(e) ((e)==EAGAIN)
150
# endif
151
#endif
152
153
#ifndef TDSSOCK_ECONNRESET
154
#define TDSSOCK_ECONNRESET ECONNRESET
155
#endif
156
157
#ifndef _WIN32
158
static
inline
int
159
tds_socket_init(
void
)
160
{
161
return
0;
162
}
163
164
static
inline
void
165
tds_socket_done(
void
)
166
{
167
}
168
#endif
169
170
#ifndef READSOCKET
171
# ifdef MSG_NOSIGNAL
172
# define READSOCKET(s,b,l) recv((s), (b), (l), MSG_NOSIGNAL)
173
# else
174
# define READSOCKET(s,b,l) read((s), (b), (l))
175
# endif
176
#endif
/* !READSOCKET */
177
178
#ifndef WRITESOCKET
179
# ifdef MSG_NOSIGNAL
180
# define WRITESOCKET(s,b,l) send((s), (b), (l), MSG_NOSIGNAL)
181
# else
182
# define WRITESOCKET(s,b,l) write((s), (b), (l))
183
# endif
184
#endif
/* !WRITESOCKET */
185
186
#ifndef CLOSESOCKET
187
#define CLOSESOCKET(s) close((s))
188
#endif
/* !CLOSESOCKET */
189
190
#ifndef IOCTLSOCKET
191
#define IOCTLSOCKET(s,b,l) ioctl((s), (b), (l))
192
#endif
/* !IOCTLSOCKET */
193
194
#ifndef SOCKLEN_T
195
# define SOCKLEN_T socklen_t
196
#endif
197
198
#ifndef _WIN32
199
typedef
int
TDS_SYS_SOCKET;
200
#define INVALID_SOCKET -1
201
#define TDS_IS_SOCKET_INVALID(s) ((s) < 0)
202
#else
203
typedef
SOCKET TDS_SYS_SOCKET;
204
#define TDS_IS_SOCKET_INVALID(s) ((s) == INVALID_SOCKET)
205
#endif
206
207
#define tds_accept accept
208
#define tds_getpeername getpeername
209
#define tds_getsockopt getsockopt
210
#define tds_getsockname getsockname
211
#define tds_recvfrom recvfrom
212
213
#if defined(__hpux__) && SIZEOF_VOID_P == 8 && SIZEOF_INT == 4
214
# if HAVE__XPG_ACCEPT
215
# undef tds_accept
216
# define tds_accept _xpg_accept
217
# elif HAVE___ACCEPT
218
# undef tds_accept
219
# define tds_accept __accept
220
# endif
221
# if HAVE__XPG_GETPEERNAME
222
# undef tds_getpeername
223
# define tds_getpeername _xpg_getpeername
224
# elif HAVE___GETPEERNAME
225
# undef tds_getpeername
226
# define tds_getpeername __getpeername
227
# endif
228
# if HAVE__XPG_GETSOCKOPT
229
# undef tds_getsockopt
230
# define tds_getsockopt _xpg_getsockopt
231
# elif HAVE___GETSOCKOPT
232
# undef tds_getsockopt
233
# define tds_getsockopt __getsockopt
234
# endif
235
# if HAVE__XPG_GETSOCKNAME
236
# undef tds_getsockname
237
# define tds_getsockname _xpg_getsockname
238
# elif HAVE___GETSOCKNAME
239
# undef tds_getsockname
240
# define tds_getsockname __getsockname
241
# endif
242
# if HAVE__XPG_RECVFROM
243
# undef tds_recvfrom
244
# define tds_recvfrom _xpg_recvfrom
245
# elif HAVE___RECVFROM
246
# undef tds_recvfrom
247
# define tds_recvfrom __recvfrom
248
# endif
249
#endif
250
251
#ifdef HAVE_STDINT_H
252
#include <stdint.h>
253
#endif
254
255
#ifdef HAVE_INTTYPES_H
256
#include <inttypes.h>
257
#endif
258
259
#ifndef PRId64
260
#define PRId64 TDS_I64_PREFIX "d"
261
#endif
262
#ifndef PRIu64
263
#define PRIu64 TDS_I64_PREFIX "u"
264
#endif
265
#ifndef PRIx64
266
#define PRIx64 TDS_I64_PREFIX "x"
267
#endif
268
269
#ifndef UINT64_C
270
# if SIZEOF_INT >= 8
271
# define UINT64_C(c) c ## U
272
# define INT64_C(c) c
273
# elif SIZEOF_LONG >= 8
274
# define UINT64_C(c) c ## UL
275
# define INT64_C(c) c ## L
276
# elif SIZEOF_LONG_LONG >= 8
277
# define UINT64_C(c) c ## ULL
278
# define INT64_C(c) c ## LL
279
# elif SIZEOF___INT64 >= 8
280
# define UINT64_C(c) c ## ui64
281
# define INT64_C(c) c ## i64
282
# else
283
# error Unable to understand how to define 64 bit constants
284
# endif
285
#endif
286
287
#include <freetds/sysdep_types.h>
288
289
#endif
/* _tdsguard_gbdINUKdHN7rAOavGyKkWw_ */
Generated by
1.9.8