2 /* Copyright (C) 2010-2012 by Daniel Stenberg
4 * Permission to use, copy, modify, and distribute this
5 * software and its documentation for any purpose and without
6 * fee is hereby granted, provided that the above copyright
7 * notice appear in all copies and that both that copyright
8 * notice and this permission notice appear in supporting
9 * documentation, and that the name of M.I.T. not be used in
10 * advertising or publicity pertaining to distribution of the
11 * software without specific, written prior permission.
12 * M.I.T. makes no representations about the suitability of
13 * this software for any purpose. It is provided "as is"
14 * without express or implied warranty.
18 #include "ares_setup.h"
24 #if defined(__INTEL_COMPILER) && defined(__unix__)
26 #ifdef HAVE_SYS_SOCKET_H
27 # include <sys/socket.h>
29 #ifdef HAVE_NETINET_IN_H
30 # include <netinet/in.h>
32 #ifdef HAVE_ARPA_INET_H
33 # include <arpa/inet.h>
36 #endif /* __INTEL_COMPILER && __unix__ */
38 #define BUILDING_ARES_NOWARN_C 1
40 #include "ares_nowarn.h"
42 #if (SIZEOF_SHORT == 2)
43 # define CARES_MASK_SSHORT 0x7FFF
44 # define CARES_MASK_USHORT 0xFFFF
45 #elif (SIZEOF_SHORT == 4)
46 # define CARES_MASK_SSHORT 0x7FFFFFFF
47 # define CARES_MASK_USHORT 0xFFFFFFFF
48 #elif (SIZEOF_SHORT == 8)
49 # define CARES_MASK_SSHORT 0x7FFFFFFFFFFFFFFF
50 # define CARES_MASK_USHORT 0xFFFFFFFFFFFFFFFF
52 # error "SIZEOF_SHORT not defined"
56 # define CARES_MASK_SINT 0x7FFF
57 # define CARES_MASK_UINT 0xFFFF
58 #elif (SIZEOF_INT == 4)
59 # define CARES_MASK_SINT 0x7FFFFFFF
60 # define CARES_MASK_UINT 0xFFFFFFFF
61 #elif (SIZEOF_INT == 8)
62 # define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFF
63 # define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFF
64 #elif (SIZEOF_INT == 16)
65 # define CARES_MASK_SINT 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
66 # define CARES_MASK_UINT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
68 # error "SIZEOF_INT not defined"
71 #if (CARES_SIZEOF_LONG == 2)
72 # define CARES_MASK_SLONG 0x7FFFL
73 # define CARES_MASK_ULONG 0xFFFFUL
74 #elif (CARES_SIZEOF_LONG == 4)
75 # define CARES_MASK_SLONG 0x7FFFFFFFL
76 # define CARES_MASK_ULONG 0xFFFFFFFFUL
77 #elif (CARES_SIZEOF_LONG == 8)
78 # define CARES_MASK_SLONG 0x7FFFFFFFFFFFFFFFL
79 # define CARES_MASK_ULONG 0xFFFFFFFFFFFFFFFFUL
80 #elif (CARES_SIZEOF_LONG == 16)
81 # define CARES_MASK_SLONG 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFL
82 # define CARES_MASK_ULONG 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFUL
84 # error "CARES_SIZEOF_LONG not defined"
88 ** unsigned size_t to signed long
91 long aresx_uztosl(size_t uznum)
93 #ifdef __INTEL_COMPILER
94 # pragma warning(push)
95 # pragma warning(disable:810) /* conversion may lose significant bits */
98 return (long)(uznum & (size_t) CARES_MASK_SLONG);
100 #ifdef __INTEL_COMPILER
101 # pragma warning(pop)
106 ** unsigned size_t to signed int
109 int aresx_uztosi(size_t uznum)
111 #ifdef __INTEL_COMPILER
112 # pragma warning(push)
113 # pragma warning(disable:810) /* conversion may lose significant bits */
116 return (int)(uznum & (size_t) CARES_MASK_SINT);
118 #ifdef __INTEL_COMPILER
119 # pragma warning(pop)
124 ** unsigned size_t to signed short
127 short aresx_uztoss(size_t uznum)
129 #ifdef __INTEL_COMPILER
130 # pragma warning(push)
131 # pragma warning(disable:810) /* conversion may lose significant bits */
134 return (short)(uznum & (size_t) CARES_MASK_SSHORT);
136 #ifdef __INTEL_COMPILER
137 # pragma warning(pop)
142 ** signed int to signed short
145 short aresx_sitoss(int sinum)
147 #ifdef __INTEL_COMPILER
148 # pragma warning(push)
149 # pragma warning(disable:810) /* conversion may lose significant bits */
152 DEBUGASSERT(sinum >= 0);
153 return (short)(sinum & (int) CARES_MASK_SSHORT);
155 #ifdef __INTEL_COMPILER
156 # pragma warning(pop)
161 ** signed long to signed int
164 int aresx_sltosi(long slnum)
166 #ifdef __INTEL_COMPILER
167 # pragma warning(push)
168 # pragma warning(disable:810) /* conversion may lose significant bits */
171 DEBUGASSERT(slnum >= 0);
172 return (int)(slnum & (long) CARES_MASK_SINT);
174 #ifdef __INTEL_COMPILER
175 # pragma warning(pop)
180 ** signed ssize_t to signed int
183 int aresx_sztosi(ssize_t sznum)
185 #ifdef __INTEL_COMPILER
186 # pragma warning(push)
187 # pragma warning(disable:810) /* conversion may lose significant bits */
190 DEBUGASSERT(sznum >= 0);
191 return (int)(sznum & (ssize_t) CARES_MASK_SINT);
193 #ifdef __INTEL_COMPILER
194 # pragma warning(pop)
199 ** signed ssize_t to unsigned int
202 unsigned int aresx_sztoui(ssize_t sznum)
204 #ifdef __INTEL_COMPILER
205 # pragma warning(push)
206 # pragma warning(disable:810) /* conversion may lose significant bits */
209 DEBUGASSERT(sznum >= 0);
210 return (unsigned int)(sznum & (ssize_t) CARES_MASK_UINT);
212 #ifdef __INTEL_COMPILER
213 # pragma warning(pop)
218 ** signed int to unsigned short
221 unsigned short aresx_sitous(int sinum)
223 #ifdef __INTEL_COMPILER
224 # pragma warning(push)
225 # pragma warning(disable:810) /* conversion may lose significant bits */
228 DEBUGASSERT(sinum >= 0);
229 return (unsigned short)(sinum & (int) CARES_MASK_USHORT);
231 #ifdef __INTEL_COMPILER
232 # pragma warning(pop)
236 #if defined(__INTEL_COMPILER) && defined(__unix__)
238 int aresx_FD_ISSET(int fd, fd_set *fdset)
240 #pragma warning(push)
241 #pragma warning(disable:1469) /* clobber ignored */
242 return FD_ISSET(fd, fdset);
246 void aresx_FD_SET(int fd, fd_set *fdset)
248 #pragma warning(push)
249 #pragma warning(disable:1469) /* clobber ignored */
254 void aresx_FD_ZERO(fd_set *fdset)
256 #pragma warning(push)
257 #pragma warning(disable:593) /* variable was set but never used */
262 unsigned short aresx_htons(unsigned short usnum)
264 #if (__INTEL_COMPILER == 910) && defined(__i386__)
265 return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
267 #pragma warning(push)
268 #pragma warning(disable:810) /* conversion may lose significant bits */
274 unsigned short aresx_ntohs(unsigned short usnum)
276 #if (__INTEL_COMPILER == 910) && defined(__i386__)
277 return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
279 #pragma warning(push)
280 #pragma warning(disable:810) /* conversion may lose significant bits */
286 #endif /* __INTEL_COMPILER && __unix__ */