read_udp_packets: bail out loop on bad sockets
[platform/upstream/c-ares.git] / ares_nowarn.c
1
2 /* Copyright (C) 2010-2012 by Daniel Stenberg
3  *
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.
15  */
16
17
18 #include "ares_setup.h"
19
20 #ifdef HAVE_ASSERT_H
21 #  include <assert.h>
22 #endif
23
24 #if defined(__INTEL_COMPILER) && defined(__unix__)
25
26 #ifdef HAVE_SYS_SOCKET_H
27 #  include <sys/socket.h>
28 #endif
29 #ifdef HAVE_NETINET_IN_H
30 #  include <netinet/in.h>
31 #endif
32 #ifdef HAVE_ARPA_INET_H
33 #  include <arpa/inet.h>
34 #endif
35
36 #endif /* __INTEL_COMPILER && __unix__ */
37
38 #define BUILDING_ARES_NOWARN_C 1
39
40 #include "ares_nowarn.h"
41
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
51 #else
52 #  error "SIZEOF_SHORT not defined"
53 #endif
54
55 #if (SIZEOF_INT == 2)
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
67 #else
68 #  error "SIZEOF_INT not defined"
69 #endif
70
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
83 #else
84 #  error "CARES_SIZEOF_LONG not defined"
85 #endif
86
87 /*
88 ** unsigned size_t to signed long
89 */
90
91 long aresx_uztosl(size_t uznum)
92 {
93 #ifdef __INTEL_COMPILER
94 #  pragma warning(push)
95 #  pragma warning(disable:810) /* conversion may lose significant bits */
96 #endif
97
98   return (long)(uznum & (size_t) CARES_MASK_SLONG);
99
100 #ifdef __INTEL_COMPILER
101 #  pragma warning(pop)
102 #endif
103 }
104
105 /*
106 ** unsigned size_t to signed int
107 */
108
109 int aresx_uztosi(size_t uznum)
110 {
111 #ifdef __INTEL_COMPILER
112 #  pragma warning(push)
113 #  pragma warning(disable:810) /* conversion may lose significant bits */
114 #endif
115
116   return (int)(uznum & (size_t) CARES_MASK_SINT);
117
118 #ifdef __INTEL_COMPILER
119 #  pragma warning(pop)
120 #endif
121 }
122
123 /*
124 ** unsigned size_t to signed short
125 */
126
127 short aresx_uztoss(size_t uznum)
128 {
129 #ifdef __INTEL_COMPILER
130 #  pragma warning(push)
131 #  pragma warning(disable:810) /* conversion may lose significant bits */
132 #endif
133
134   return (short)(uznum & (size_t) CARES_MASK_SSHORT);
135
136 #ifdef __INTEL_COMPILER
137 #  pragma warning(pop)
138 #endif
139 }
140
141 /*
142 ** signed int to signed short
143 */
144
145 short aresx_sitoss(int sinum)
146 {
147 #ifdef __INTEL_COMPILER
148 #  pragma warning(push)
149 #  pragma warning(disable:810) /* conversion may lose significant bits */
150 #endif
151
152   DEBUGASSERT(sinum >= 0);
153   return (short)(sinum & (int) CARES_MASK_SSHORT);
154
155 #ifdef __INTEL_COMPILER
156 #  pragma warning(pop)
157 #endif
158 }
159
160 /*
161 ** signed long to signed int
162 */
163
164 int aresx_sltosi(long slnum)
165 {
166 #ifdef __INTEL_COMPILER
167 #  pragma warning(push)
168 #  pragma warning(disable:810) /* conversion may lose significant bits */
169 #endif
170
171   DEBUGASSERT(slnum >= 0);
172   return (int)(slnum & (long) CARES_MASK_SINT);
173
174 #ifdef __INTEL_COMPILER
175 #  pragma warning(pop)
176 #endif
177 }
178
179 /*
180 ** signed ssize_t to signed int
181 */
182
183 int aresx_sztosi(ssize_t sznum)
184 {
185 #ifdef __INTEL_COMPILER
186 #  pragma warning(push)
187 #  pragma warning(disable:810) /* conversion may lose significant bits */
188 #endif
189
190   DEBUGASSERT(sznum >= 0);
191   return (int)(sznum & (ssize_t) CARES_MASK_SINT);
192
193 #ifdef __INTEL_COMPILER
194 #  pragma warning(pop)
195 #endif
196 }
197
198 /*
199 ** signed ssize_t to unsigned int
200 */
201
202 unsigned int aresx_sztoui(ssize_t sznum)
203 {
204 #ifdef __INTEL_COMPILER
205 #  pragma warning(push)
206 #  pragma warning(disable:810) /* conversion may lose significant bits */
207 #endif
208
209   DEBUGASSERT(sznum >= 0);
210   return (unsigned int)(sznum & (ssize_t) CARES_MASK_UINT);
211
212 #ifdef __INTEL_COMPILER
213 #  pragma warning(pop)
214 #endif
215 }
216
217 /*
218 ** signed int to unsigned short
219 */
220
221 unsigned short aresx_sitous(int sinum)
222 {
223 #ifdef __INTEL_COMPILER
224 #  pragma warning(push)
225 #  pragma warning(disable:810) /* conversion may lose significant bits */
226 #endif
227
228   DEBUGASSERT(sinum >= 0);
229   return (unsigned short)(sinum & (int) CARES_MASK_USHORT);
230
231 #ifdef __INTEL_COMPILER
232 #  pragma warning(pop)
233 #endif
234 }
235
236 #if defined(__INTEL_COMPILER) && defined(__unix__)
237
238 int aresx_FD_ISSET(int fd, fd_set *fdset)
239 {
240   #pragma warning(push)
241   #pragma warning(disable:1469) /* clobber ignored */
242   return FD_ISSET(fd, fdset);
243   #pragma warning(pop)
244 }
245
246 void aresx_FD_SET(int fd, fd_set *fdset)
247 {
248   #pragma warning(push)
249   #pragma warning(disable:1469) /* clobber ignored */
250   FD_SET(fd, fdset);
251   #pragma warning(pop)
252 }
253
254 void aresx_FD_ZERO(fd_set *fdset)
255 {
256   #pragma warning(push)
257   #pragma warning(disable:593) /* variable was set but never used */
258   FD_ZERO(fdset);
259   #pragma warning(pop)
260 }
261
262 unsigned short aresx_htons(unsigned short usnum)
263 {
264 #if (__INTEL_COMPILER == 910) && defined(__i386__)
265   return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
266 #else
267   #pragma warning(push)
268   #pragma warning(disable:810) /* conversion may lose significant bits */
269   return htons(usnum);
270   #pragma warning(pop)
271 #endif
272 }
273
274 unsigned short aresx_ntohs(unsigned short usnum)
275 {
276 #if (__INTEL_COMPILER == 910) && defined(__i386__)
277   return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
278 #else
279   #pragma warning(push)
280   #pragma warning(disable:810) /* conversion may lose significant bits */
281   return ntohs(usnum);
282   #pragma warning(pop)
283 #endif
284 }
285
286 #endif /* __INTEL_COMPILER && __unix__ */