VirtualBox

source: vbox/trunk/src/libs/curl-7.87.0/lib/warnless.c@ 98929

Last change on this file since 98929 was 98326, checked in by vboxsync, 2 years ago

curl-7.87.0: Applied and adjusted our curl changes to 7.83.1. bugref:10356

  • Property svn:eol-style set to native
File size: 9.3 KB
Line 
1/***************************************************************************
2 * _ _ ____ _
3 * Project ___| | | | _ \| |
4 * / __| | | | |_) | |
5 * | (__| |_| | _ <| |___
6 * \___|\___/|_| \_\_____|
7 *
8 * Copyright (C) 1998 - 2022, Daniel Stenberg, <[email protected]>, et al.
9 *
10 * This software is licensed as described in the file COPYING, which
11 * you should have received as part of this distribution. The terms
12 * are also available at https://curl.se/docs/copyright.html.
13 *
14 * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 * copies of the Software, and permit persons to whom the Software is
16 * furnished to do so, under the terms of the COPYING file.
17 *
18 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 * KIND, either express or implied.
20 *
21 * SPDX-License-Identifier: curl
22 *
23 ***************************************************************************/
24
25#include "curl_setup.h"
26
27#if defined(__INTEL_COMPILER) && defined(__unix__)
28
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_WARNLESS_C 1
39
40#include "warnless.h"
41
42#include <limits.h>
43
44#define CURL_MASK_UCHAR ((unsigned char)~0)
45#define CURL_MASK_SCHAR (CURL_MASK_UCHAR >> 1)
46
47#define CURL_MASK_USHORT ((unsigned short)~0)
48#define CURL_MASK_SSHORT (CURL_MASK_USHORT >> 1)
49
50#define CURL_MASK_UINT ((unsigned int)~0)
51#define CURL_MASK_SINT (CURL_MASK_UINT >> 1)
52
53#define CURL_MASK_ULONG ((unsigned long)~0)
54#define CURL_MASK_SLONG (CURL_MASK_ULONG >> 1)
55
56#define CURL_MASK_UCOFFT ((unsigned CURL_TYPEOF_CURL_OFF_T)~0)
57#define CURL_MASK_SCOFFT (CURL_MASK_UCOFFT >> 1)
58
59#define CURL_MASK_USIZE_T ((size_t)~0)
60#define CURL_MASK_SSIZE_T (CURL_MASK_USIZE_T >> 1)
61
62/*
63** unsigned long to unsigned short
64*/
65
66unsigned short curlx_ultous(unsigned long ulnum)
67{
68#ifdef __INTEL_COMPILER
69# pragma warning(push)
70# pragma warning(disable:810) /* conversion may lose significant bits */
71#endif
72
73 DEBUGASSERT(ulnum <= (unsigned long) CURL_MASK_USHORT);
74 return (unsigned short)(ulnum & (unsigned long) CURL_MASK_USHORT);
75
76#ifdef __INTEL_COMPILER
77# pragma warning(pop)
78#endif
79}
80
81/*
82** unsigned long to unsigned char
83*/
84
85unsigned char curlx_ultouc(unsigned long ulnum)
86{
87#ifdef __INTEL_COMPILER
88# pragma warning(push)
89# pragma warning(disable:810) /* conversion may lose significant bits */
90#endif
91
92 DEBUGASSERT(ulnum <= (unsigned long) CURL_MASK_UCHAR);
93 return (unsigned char)(ulnum & (unsigned long) CURL_MASK_UCHAR);
94
95#ifdef __INTEL_COMPILER
96# pragma warning(pop)
97#endif
98}
99
100/*
101** unsigned size_t to signed curl_off_t
102*/
103
104curl_off_t curlx_uztoso(size_t uznum)
105{
106#ifdef __INTEL_COMPILER
107# pragma warning(push)
108# pragma warning(disable:810) /* conversion may lose significant bits */
109#elif defined(_MSC_VER)
110# pragma warning(push)
111# pragma warning(disable:4310) /* cast truncates constant value */
112#endif
113
114 DEBUGASSERT(uznum <= (size_t) CURL_MASK_SCOFFT);
115 return (curl_off_t)(uznum & (size_t) CURL_MASK_SCOFFT);
116
117#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
118# pragma warning(pop)
119#endif
120}
121
122/*
123** unsigned size_t to signed int
124*/
125
126int curlx_uztosi(size_t uznum)
127{
128#ifdef __INTEL_COMPILER
129# pragma warning(push)
130# pragma warning(disable:810) /* conversion may lose significant bits */
131#endif
132
133 DEBUGASSERT(uznum <= (size_t) CURL_MASK_SINT);
134 return (int)(uznum & (size_t) CURL_MASK_SINT);
135
136#ifdef __INTEL_COMPILER
137# pragma warning(pop)
138#endif
139}
140
141/*
142** unsigned size_t to unsigned long
143*/
144
145unsigned long curlx_uztoul(size_t uznum)
146{
147#ifdef __INTEL_COMPILER
148# pragma warning(push)
149# pragma warning(disable:810) /* conversion may lose significant bits */
150#endif
151
152#if ULONG_MAX < SIZE_T_MAX
153 DEBUGASSERT(uznum <= (size_t) CURL_MASK_ULONG);
154#endif
155 return (unsigned long)(uznum & (size_t) CURL_MASK_ULONG);
156
157#ifdef __INTEL_COMPILER
158# pragma warning(pop)
159#endif
160}
161
162/*
163** unsigned size_t to unsigned int
164*/
165
166unsigned int curlx_uztoui(size_t uznum)
167{
168#ifdef __INTEL_COMPILER
169# pragma warning(push)
170# pragma warning(disable:810) /* conversion may lose significant bits */
171#endif
172
173#if UINT_MAX < SIZE_T_MAX
174 DEBUGASSERT(uznum <= (size_t) CURL_MASK_UINT);
175#endif
176 return (unsigned int)(uznum & (size_t) CURL_MASK_UINT);
177
178#ifdef __INTEL_COMPILER
179# pragma warning(pop)
180#endif
181}
182
183/*
184** signed long to signed int
185*/
186
187int curlx_sltosi(long slnum)
188{
189#ifdef __INTEL_COMPILER
190# pragma warning(push)
191# pragma warning(disable:810) /* conversion may lose significant bits */
192#endif
193
194 DEBUGASSERT(slnum >= 0);
195#if INT_MAX < LONG_MAX
196 DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_SINT);
197#endif
198 return (int)(slnum & (long) CURL_MASK_SINT);
199
200#ifdef __INTEL_COMPILER
201# pragma warning(pop)
202#endif
203}
204
205/*
206** signed long to unsigned int
207*/
208
209unsigned int curlx_sltoui(long slnum)
210{
211#ifdef __INTEL_COMPILER
212# pragma warning(push)
213# pragma warning(disable:810) /* conversion may lose significant bits */
214#endif
215
216 DEBUGASSERT(slnum >= 0);
217#if UINT_MAX < LONG_MAX
218 DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_UINT);
219#endif
220 return (unsigned int)(slnum & (long) CURL_MASK_UINT);
221
222#ifdef __INTEL_COMPILER
223# pragma warning(pop)
224#endif
225}
226
227/*
228** signed long to unsigned short
229*/
230
231unsigned short curlx_sltous(long slnum)
232{
233#ifdef __INTEL_COMPILER
234# pragma warning(push)
235# pragma warning(disable:810) /* conversion may lose significant bits */
236#endif
237
238 DEBUGASSERT(slnum >= 0);
239 DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_USHORT);
240 return (unsigned short)(slnum & (long) CURL_MASK_USHORT);
241
242#ifdef __INTEL_COMPILER
243# pragma warning(pop)
244#endif
245}
246
247/*
248** unsigned size_t to signed ssize_t
249*/
250
251ssize_t curlx_uztosz(size_t uznum)
252{
253#ifdef __INTEL_COMPILER
254# pragma warning(push)
255# pragma warning(disable:810) /* conversion may lose significant bits */
256#endif
257
258 DEBUGASSERT(uznum <= (size_t) CURL_MASK_SSIZE_T);
259 return (ssize_t)(uznum & (size_t) CURL_MASK_SSIZE_T);
260
261#ifdef __INTEL_COMPILER
262# pragma warning(pop)
263#endif
264}
265
266/*
267** signed curl_off_t to unsigned size_t
268*/
269
270size_t curlx_sotouz(curl_off_t sonum)
271{
272#ifdef __INTEL_COMPILER
273# pragma warning(push)
274# pragma warning(disable:810) /* conversion may lose significant bits */
275#endif
276
277 DEBUGASSERT(sonum >= 0);
278 return (size_t)(sonum & (curl_off_t) CURL_MASK_USIZE_T);
279
280#ifdef __INTEL_COMPILER
281# pragma warning(pop)
282#endif
283}
284
285/*
286** signed ssize_t to signed int
287*/
288
289int curlx_sztosi(ssize_t sznum)
290{
291#ifdef __INTEL_COMPILER
292# pragma warning(push)
293# pragma warning(disable:810) /* conversion may lose significant bits */
294#endif
295
296 DEBUGASSERT(sznum >= 0);
297#if INT_MAX < SSIZE_T_MAX
298 DEBUGASSERT((size_t) sznum <= (size_t) CURL_MASK_SINT);
299#endif
300 return (int)(sznum & (ssize_t) CURL_MASK_SINT);
301
302#ifdef __INTEL_COMPILER
303# pragma warning(pop)
304#endif
305}
306
307/*
308** unsigned int to unsigned short
309*/
310
311unsigned short curlx_uitous(unsigned int uinum)
312{
313#ifdef __INTEL_COMPILER
314# pragma warning(push)
315# pragma warning(disable:810) /* conversion may lose significant bits */
316#endif
317
318 DEBUGASSERT(uinum <= (unsigned int) CURL_MASK_USHORT);
319 return (unsigned short) (uinum & (unsigned int) CURL_MASK_USHORT);
320
321#ifdef __INTEL_COMPILER
322# pragma warning(pop)
323#endif
324}
325
326/*
327** signed int to unsigned size_t
328*/
329
330size_t curlx_sitouz(int sinum)
331{
332#ifdef __INTEL_COMPILER
333# pragma warning(push)
334# pragma warning(disable:810) /* conversion may lose significant bits */
335#endif
336
337 DEBUGASSERT(sinum >= 0);
338 return (size_t) sinum;
339
340#ifdef __INTEL_COMPILER
341# pragma warning(pop)
342#endif
343}
344
345#ifdef USE_WINSOCK
346
347/*
348** curl_socket_t to signed int
349*/
350
351int curlx_sktosi(curl_socket_t s)
352{
353 return (int)((ssize_t) s);
354}
355
356/*
357** signed int to curl_socket_t
358*/
359
360curl_socket_t curlx_sitosk(int i)
361{
362 return (curl_socket_t)((ssize_t) i);
363}
364
365#endif /* USE_WINSOCK */
366
367#if defined(WIN32)
368
369ssize_t curlx_read(int fd, void *buf, size_t count)
370{
371 return (ssize_t)read(fd, buf, curlx_uztoui(count));
372}
373
374ssize_t curlx_write(int fd, const void *buf, size_t count)
375{
376 return (ssize_t)write(fd, buf, curlx_uztoui(count));
377}
378
379#endif /* WIN32 */
380
381#if defined(__INTEL_COMPILER) && defined(__unix__)
382
383int curlx_FD_ISSET(int fd, fd_set *fdset)
384{
385 #pragma warning(push)
386 #pragma warning(disable:1469) /* clobber ignored */
387 return FD_ISSET(fd, fdset);
388 #pragma warning(pop)
389}
390
391void curlx_FD_SET(int fd, fd_set *fdset)
392{
393 #pragma warning(push)
394 #pragma warning(disable:1469) /* clobber ignored */
395 FD_SET(fd, fdset);
396 #pragma warning(pop)
397}
398
399void curlx_FD_ZERO(fd_set *fdset)
400{
401 #pragma warning(push)
402 #pragma warning(disable:593) /* variable was set but never used */
403 FD_ZERO(fdset);
404 #pragma warning(pop)
405}
406
407unsigned short curlx_htons(unsigned short usnum)
408{
409#if (__INTEL_COMPILER == 910) && defined(__i386__)
410 return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
411#else
412 #pragma warning(push)
413 #pragma warning(disable:810) /* conversion may lose significant bits */
414 return htons(usnum);
415 #pragma warning(pop)
416#endif
417}
418
419unsigned short curlx_ntohs(unsigned short usnum)
420{
421#if (__INTEL_COMPILER == 910) && defined(__i386__)
422 return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
423#else
424 #pragma warning(push)
425 #pragma warning(disable:810) /* conversion may lose significant bits */
426 return ntohs(usnum);
427 #pragma warning(pop)
428#endif
429}
430
431#endif /* __INTEL_COMPILER && __unix__ */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette