• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /* Copyright (C) 2010-2013 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 #ifdef HAVE_LIMITS_H
25 #include <limits.h>
26 #endif
27 
28 #if defined(__INTEL_COMPILER) && defined(__unix__)
29 
30 #ifdef HAVE_NETINET_IN_H
31 #  include <netinet/in.h>
32 #endif
33 #ifdef HAVE_ARPA_INET_H
34 #  include <arpa/inet.h>
35 #endif
36 
37 #endif /* __INTEL_COMPILER && __unix__ */
38 
39 #define BUILDING_ARES_NOWARN_C 1
40 
41 #include "ares_nowarn.h"
42 
43 #ifndef HAVE_LIMITS_H
44 /* systems without <limits.h> we guess have 16 bit shorts, 32bit ints and
45    32bit longs */
46 #  define CARES_MASK_SSHORT  0x7FFF
47 #  define CARES_MASK_USHORT  0xFFFF
48 #  define CARES_MASK_SINT    0x7FFFFFFF
49 #  define CARES_MASK_UINT    0xFFFFFFFF
50 #  define CARES_MASK_SLONG   0x7FFFFFFFL
51 #  define CARES_MASK_ULONG   0xFFFFFFFFUL
52 #else
53 #  define CARES_MASK_SSHORT  SHRT_MAX
54 #  define CARES_MASK_USHORT  USHRT_MAX
55 #  define CARES_MASK_SINT    INT_MAX
56 #  define CARES_MASK_UINT    UINT_MAX
57 #  define CARES_MASK_SLONG   LONG_MAX
58 #  define CARES_MASK_ULONG   ULONG_MAX
59 #endif
60 
61 /*
62 ** unsigned size_t to signed long
63 */
64 
aresx_uztosl(size_t uznum)65 long aresx_uztosl(size_t uznum)
66 {
67 #ifdef __INTEL_COMPILER
68 #  pragma warning(push)
69 #  pragma warning(disable:810) /* conversion may lose significant bits */
70 #endif
71 
72   return (long)(uznum & (size_t) CARES_MASK_SLONG);
73 
74 #ifdef __INTEL_COMPILER
75 #  pragma warning(pop)
76 #endif
77 }
78 
79 /*
80 ** unsigned size_t to signed int
81 */
82 
aresx_uztosi(size_t uznum)83 int aresx_uztosi(size_t uznum)
84 {
85 #ifdef __INTEL_COMPILER
86 #  pragma warning(push)
87 #  pragma warning(disable:810) /* conversion may lose significant bits */
88 #endif
89 
90   return (int)(uznum & (size_t) CARES_MASK_SINT);
91 
92 #ifdef __INTEL_COMPILER
93 #  pragma warning(pop)
94 #endif
95 }
96 
97 /*
98 ** unsigned size_t to signed short
99 */
100 
aresx_uztoss(size_t uznum)101 short aresx_uztoss(size_t uznum)
102 {
103 #ifdef __INTEL_COMPILER
104 #  pragma warning(push)
105 #  pragma warning(disable:810) /* conversion may lose significant bits */
106 #endif
107 
108   return (short)(uznum & (size_t) CARES_MASK_SSHORT);
109 
110 #ifdef __INTEL_COMPILER
111 #  pragma warning(pop)
112 #endif
113 }
114 
115 /*
116 ** signed int to signed short
117 */
118 
aresx_sitoss(int sinum)119 short aresx_sitoss(int sinum)
120 {
121 #ifdef __INTEL_COMPILER
122 #  pragma warning(push)
123 #  pragma warning(disable:810) /* conversion may lose significant bits */
124 #endif
125 
126   DEBUGASSERT(sinum >= 0);
127   return (short)(sinum & (int) CARES_MASK_SSHORT);
128 
129 #ifdef __INTEL_COMPILER
130 #  pragma warning(pop)
131 #endif
132 }
133 
134 /*
135 ** signed long to signed int
136 */
137 
aresx_sltosi(long slnum)138 int aresx_sltosi(long slnum)
139 {
140 #ifdef __INTEL_COMPILER
141 #  pragma warning(push)
142 #  pragma warning(disable:810) /* conversion may lose significant bits */
143 #endif
144 
145   DEBUGASSERT(slnum >= 0);
146   return (int)(slnum & (long) CARES_MASK_SINT);
147 
148 #ifdef __INTEL_COMPILER
149 #  pragma warning(pop)
150 #endif
151 }
152 
153 /*
154 ** signed ares_ssize_t to signed int
155 */
156 
aresx_sztosi(ares_ssize_t sznum)157 int aresx_sztosi(ares_ssize_t sznum)
158 {
159 #ifdef __INTEL_COMPILER
160 #  pragma warning(push)
161 #  pragma warning(disable:810) /* conversion may lose significant bits */
162 #endif
163 
164   DEBUGASSERT(sznum >= 0);
165   return (int)(sznum & (ares_ssize_t) CARES_MASK_SINT);
166 
167 #ifdef __INTEL_COMPILER
168 #  pragma warning(pop)
169 #endif
170 }
171 
172 /*
173 ** signed ares_ssize_t to unsigned int
174 */
175 
aresx_sztoui(ares_ssize_t sznum)176 unsigned int aresx_sztoui(ares_ssize_t sznum)
177 {
178 #ifdef __INTEL_COMPILER
179 #  pragma warning(push)
180 #  pragma warning(disable:810) /* conversion may lose significant bits */
181 #endif
182 
183   DEBUGASSERT(sznum >= 0);
184   return (unsigned int)(sznum & (ares_ssize_t) CARES_MASK_UINT);
185 
186 #ifdef __INTEL_COMPILER
187 #  pragma warning(pop)
188 #endif
189 }
190 
191 /*
192 ** signed int to unsigned short
193 */
194 
aresx_sitous(int sinum)195 unsigned short aresx_sitous(int sinum)
196 {
197 #ifdef __INTEL_COMPILER
198 #  pragma warning(push)
199 #  pragma warning(disable:810) /* conversion may lose significant bits */
200 #endif
201 
202   DEBUGASSERT(sinum >= 0);
203   return (unsigned short)(sinum & (int) CARES_MASK_USHORT);
204 
205 #ifdef __INTEL_COMPILER
206 #  pragma warning(pop)
207 #endif
208 }
209 
210 #if defined(__INTEL_COMPILER) && defined(__unix__)
211 
aresx_FD_ISSET(int fd,fd_set * fdset)212 int aresx_FD_ISSET(int fd, fd_set *fdset)
213 {
214   #pragma warning(push)
215   #pragma warning(disable:1469) /* clobber ignored */
216   return FD_ISSET(fd, fdset);
217   #pragma warning(pop)
218 }
219 
aresx_FD_SET(int fd,fd_set * fdset)220 void aresx_FD_SET(int fd, fd_set *fdset)
221 {
222   #pragma warning(push)
223   #pragma warning(disable:1469) /* clobber ignored */
224   FD_SET(fd, fdset);
225   #pragma warning(pop)
226 }
227 
aresx_FD_ZERO(fd_set * fdset)228 void aresx_FD_ZERO(fd_set *fdset)
229 {
230   #pragma warning(push)
231   #pragma warning(disable:593) /* variable was set but never used */
232   FD_ZERO(fdset);
233   #pragma warning(pop)
234 }
235 
aresx_htons(unsigned short usnum)236 unsigned short aresx_htons(unsigned short usnum)
237 {
238 #if (__INTEL_COMPILER == 910) && defined(__i386__)
239   return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
240 #else
241   #pragma warning(push)
242   #pragma warning(disable:810) /* conversion may lose significant bits */
243   return htons(usnum);
244   #pragma warning(pop)
245 #endif
246 }
247 
aresx_ntohs(unsigned short usnum)248 unsigned short aresx_ntohs(unsigned short usnum)
249 {
250 #if (__INTEL_COMPILER == 910) && defined(__i386__)
251   return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
252 #else
253   #pragma warning(push)
254   #pragma warning(disable:810) /* conversion may lose significant bits */
255   return ntohs(usnum);
256   #pragma warning(pop)
257 #endif
258 }
259 
260 #endif /* __INTEL_COMPILER && __unix__ */
261