Annotation of embedaddon/curl/lib/warnless.c, revision 1.1
1.1 ! misho 1: /***************************************************************************
! 2: * _ _ ____ _
! 3: * Project ___| | | | _ \| |
! 4: * / __| | | | |_) | |
! 5: * | (__| |_| | _ <| |___
! 6: * \___|\___/|_| \_\_____|
! 7: *
! 8: * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, 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.haxx.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: ***************************************************************************/
! 22:
! 23: #include "curl_setup.h"
! 24:
! 25: #if defined(__INTEL_COMPILER) && defined(__unix__)
! 26:
! 27: #ifdef HAVE_NETINET_IN_H
! 28: # include <netinet/in.h>
! 29: #endif
! 30: #ifdef HAVE_ARPA_INET_H
! 31: # include <arpa/inet.h>
! 32: #endif
! 33:
! 34: #endif /* __INTEL_COMPILER && __unix__ */
! 35:
! 36: #define BUILDING_WARNLESS_C 1
! 37:
! 38: #include "warnless.h"
! 39:
! 40: #define CURL_MASK_SCHAR 0x7F
! 41: #define CURL_MASK_UCHAR 0xFF
! 42:
! 43: #if (SIZEOF_SHORT == 2)
! 44: # define CURL_MASK_SSHORT 0x7FFF
! 45: # define CURL_MASK_USHORT 0xFFFF
! 46: #elif (SIZEOF_SHORT == 4)
! 47: # define CURL_MASK_SSHORT 0x7FFFFFFF
! 48: # define CURL_MASK_USHORT 0xFFFFFFFF
! 49: #elif (SIZEOF_SHORT == 8)
! 50: # define CURL_MASK_SSHORT 0x7FFFFFFFFFFFFFFF
! 51: # define CURL_MASK_USHORT 0xFFFFFFFFFFFFFFFF
! 52: #else
! 53: # error "SIZEOF_SHORT not defined"
! 54: #endif
! 55:
! 56: #if (SIZEOF_INT == 2)
! 57: # define CURL_MASK_SINT 0x7FFF
! 58: # define CURL_MASK_UINT 0xFFFF
! 59: #elif (SIZEOF_INT == 4)
! 60: # define CURL_MASK_SINT 0x7FFFFFFF
! 61: # define CURL_MASK_UINT 0xFFFFFFFF
! 62: #elif (SIZEOF_INT == 8)
! 63: # define CURL_MASK_SINT 0x7FFFFFFFFFFFFFFF
! 64: # define CURL_MASK_UINT 0xFFFFFFFFFFFFFFFF
! 65: #elif (SIZEOF_INT == 16)
! 66: # define CURL_MASK_SINT 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
! 67: # define CURL_MASK_UINT 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
! 68: #else
! 69: # error "SIZEOF_INT not defined"
! 70: #endif
! 71:
! 72: #if (SIZEOF_LONG == 2)
! 73: # define CURL_MASK_SLONG 0x7FFFL
! 74: # define CURL_MASK_ULONG 0xFFFFUL
! 75: #elif (SIZEOF_LONG == 4)
! 76: # define CURL_MASK_SLONG 0x7FFFFFFFL
! 77: # define CURL_MASK_ULONG 0xFFFFFFFFUL
! 78: #elif (SIZEOF_LONG == 8)
! 79: # define CURL_MASK_SLONG 0x7FFFFFFFFFFFFFFFL
! 80: # define CURL_MASK_ULONG 0xFFFFFFFFFFFFFFFFUL
! 81: #elif (SIZEOF_LONG == 16)
! 82: # define CURL_MASK_SLONG 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFL
! 83: # define CURL_MASK_ULONG 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFUL
! 84: #else
! 85: # error "SIZEOF_LONG not defined"
! 86: #endif
! 87:
! 88: #if (SIZEOF_CURL_OFF_T == 2)
! 89: # define CURL_MASK_SCOFFT CURL_OFF_T_C(0x7FFF)
! 90: # define CURL_MASK_UCOFFT CURL_OFF_TU_C(0xFFFF)
! 91: #elif (SIZEOF_CURL_OFF_T == 4)
! 92: # define CURL_MASK_SCOFFT CURL_OFF_T_C(0x7FFFFFFF)
! 93: # define CURL_MASK_UCOFFT CURL_OFF_TU_C(0xFFFFFFFF)
! 94: #elif (SIZEOF_CURL_OFF_T == 8)
! 95: # define CURL_MASK_SCOFFT CURL_OFF_T_C(0x7FFFFFFFFFFFFFFF)
! 96: # define CURL_MASK_UCOFFT CURL_OFF_TU_C(0xFFFFFFFFFFFFFFFF)
! 97: #elif (SIZEOF_CURL_OFF_T == 16)
! 98: # define CURL_MASK_SCOFFT CURL_OFF_T_C(0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
! 99: # define CURL_MASK_UCOFFT CURL_OFF_TU_C(0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
! 100: #else
! 101: # error "SIZEOF_CURL_OFF_T not defined"
! 102: #endif
! 103:
! 104: #if (SIZEOF_SIZE_T == SIZEOF_SHORT)
! 105: # define CURL_MASK_SSIZE_T CURL_MASK_SSHORT
! 106: # define CURL_MASK_USIZE_T CURL_MASK_USHORT
! 107: #elif (SIZEOF_SIZE_T == SIZEOF_INT)
! 108: # define CURL_MASK_SSIZE_T CURL_MASK_SINT
! 109: # define CURL_MASK_USIZE_T CURL_MASK_UINT
! 110: #elif (SIZEOF_SIZE_T == SIZEOF_LONG)
! 111: # define CURL_MASK_SSIZE_T CURL_MASK_SLONG
! 112: # define CURL_MASK_USIZE_T CURL_MASK_ULONG
! 113: #elif (SIZEOF_SIZE_T == SIZEOF_CURL_OFF_T)
! 114: # define CURL_MASK_SSIZE_T CURL_MASK_SCOFFT
! 115: # define CURL_MASK_USIZE_T CURL_MASK_UCOFFT
! 116: #else
! 117: # error "SIZEOF_SIZE_T not defined"
! 118: #endif
! 119:
! 120: /*
! 121: ** unsigned long to unsigned short
! 122: */
! 123:
! 124: unsigned short curlx_ultous(unsigned long ulnum)
! 125: {
! 126: #ifdef __INTEL_COMPILER
! 127: # pragma warning(push)
! 128: # pragma warning(disable:810) /* conversion may lose significant bits */
! 129: #endif
! 130:
! 131: DEBUGASSERT(ulnum <= (unsigned long) CURL_MASK_USHORT);
! 132: return (unsigned short)(ulnum & (unsigned long) CURL_MASK_USHORT);
! 133:
! 134: #ifdef __INTEL_COMPILER
! 135: # pragma warning(pop)
! 136: #endif
! 137: }
! 138:
! 139: /*
! 140: ** unsigned long to unsigned char
! 141: */
! 142:
! 143: unsigned char curlx_ultouc(unsigned long ulnum)
! 144: {
! 145: #ifdef __INTEL_COMPILER
! 146: # pragma warning(push)
! 147: # pragma warning(disable:810) /* conversion may lose significant bits */
! 148: #endif
! 149:
! 150: DEBUGASSERT(ulnum <= (unsigned long) CURL_MASK_UCHAR);
! 151: return (unsigned char)(ulnum & (unsigned long) CURL_MASK_UCHAR);
! 152:
! 153: #ifdef __INTEL_COMPILER
! 154: # pragma warning(pop)
! 155: #endif
! 156: }
! 157:
! 158: /*
! 159: ** unsigned long to signed int
! 160: */
! 161:
! 162: int curlx_ultosi(unsigned long ulnum)
! 163: {
! 164: #ifdef __INTEL_COMPILER
! 165: # pragma warning(push)
! 166: # pragma warning(disable:810) /* conversion may lose significant bits */
! 167: #endif
! 168:
! 169: DEBUGASSERT(ulnum <= (unsigned long) CURL_MASK_SINT);
! 170: return (int)(ulnum & (unsigned long) CURL_MASK_SINT);
! 171:
! 172: #ifdef __INTEL_COMPILER
! 173: # pragma warning(pop)
! 174: #endif
! 175: }
! 176:
! 177: /*
! 178: ** unsigned size_t to signed curl_off_t
! 179: */
! 180:
! 181: curl_off_t curlx_uztoso(size_t uznum)
! 182: {
! 183: #ifdef __INTEL_COMPILER
! 184: # pragma warning(push)
! 185: # pragma warning(disable:810) /* conversion may lose significant bits */
! 186: #elif defined(_MSC_VER)
! 187: # pragma warning(push)
! 188: # pragma warning(disable:4310) /* cast truncates constant value */
! 189: #endif
! 190:
! 191: DEBUGASSERT(uznum <= (size_t) CURL_MASK_SCOFFT);
! 192: return (curl_off_t)(uznum & (size_t) CURL_MASK_SCOFFT);
! 193:
! 194: #if defined(__INTEL_COMPILER) || defined(_MSC_VER)
! 195: # pragma warning(pop)
! 196: #endif
! 197: }
! 198:
! 199: /*
! 200: ** unsigned size_t to signed int
! 201: */
! 202:
! 203: int curlx_uztosi(size_t uznum)
! 204: {
! 205: #ifdef __INTEL_COMPILER
! 206: # pragma warning(push)
! 207: # pragma warning(disable:810) /* conversion may lose significant bits */
! 208: #endif
! 209:
! 210: DEBUGASSERT(uznum <= (size_t) CURL_MASK_SINT);
! 211: return (int)(uznum & (size_t) CURL_MASK_SINT);
! 212:
! 213: #ifdef __INTEL_COMPILER
! 214: # pragma warning(pop)
! 215: #endif
! 216: }
! 217:
! 218: /*
! 219: ** unsigned size_t to unsigned long
! 220: */
! 221:
! 222: unsigned long curlx_uztoul(size_t uznum)
! 223: {
! 224: #ifdef __INTEL_COMPILER
! 225: # pragma warning(push)
! 226: # pragma warning(disable:810) /* conversion may lose significant bits */
! 227: #endif
! 228:
! 229: #if (SIZEOF_LONG < SIZEOF_SIZE_T)
! 230: DEBUGASSERT(uznum <= (size_t) CURL_MASK_ULONG);
! 231: #endif
! 232: return (unsigned long)(uznum & (size_t) CURL_MASK_ULONG);
! 233:
! 234: #ifdef __INTEL_COMPILER
! 235: # pragma warning(pop)
! 236: #endif
! 237: }
! 238:
! 239: /*
! 240: ** unsigned size_t to unsigned int
! 241: */
! 242:
! 243: unsigned int curlx_uztoui(size_t uznum)
! 244: {
! 245: #ifdef __INTEL_COMPILER
! 246: # pragma warning(push)
! 247: # pragma warning(disable:810) /* conversion may lose significant bits */
! 248: #endif
! 249:
! 250: #if (SIZEOF_INT < SIZEOF_SIZE_T)
! 251: DEBUGASSERT(uznum <= (size_t) CURL_MASK_UINT);
! 252: #endif
! 253: return (unsigned int)(uznum & (size_t) CURL_MASK_UINT);
! 254:
! 255: #ifdef __INTEL_COMPILER
! 256: # pragma warning(pop)
! 257: #endif
! 258: }
! 259:
! 260: /*
! 261: ** signed long to signed int
! 262: */
! 263:
! 264: int curlx_sltosi(long slnum)
! 265: {
! 266: #ifdef __INTEL_COMPILER
! 267: # pragma warning(push)
! 268: # pragma warning(disable:810) /* conversion may lose significant bits */
! 269: #endif
! 270:
! 271: DEBUGASSERT(slnum >= 0);
! 272: #if (SIZEOF_INT < SIZEOF_LONG)
! 273: DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_SINT);
! 274: #endif
! 275: return (int)(slnum & (long) CURL_MASK_SINT);
! 276:
! 277: #ifdef __INTEL_COMPILER
! 278: # pragma warning(pop)
! 279: #endif
! 280: }
! 281:
! 282: /*
! 283: ** signed long to unsigned int
! 284: */
! 285:
! 286: unsigned int curlx_sltoui(long slnum)
! 287: {
! 288: #ifdef __INTEL_COMPILER
! 289: # pragma warning(push)
! 290: # pragma warning(disable:810) /* conversion may lose significant bits */
! 291: #endif
! 292:
! 293: DEBUGASSERT(slnum >= 0);
! 294: #if (SIZEOF_INT < SIZEOF_LONG)
! 295: DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_UINT);
! 296: #endif
! 297: return (unsigned int)(slnum & (long) CURL_MASK_UINT);
! 298:
! 299: #ifdef __INTEL_COMPILER
! 300: # pragma warning(pop)
! 301: #endif
! 302: }
! 303:
! 304: /*
! 305: ** signed long to unsigned short
! 306: */
! 307:
! 308: unsigned short curlx_sltous(long slnum)
! 309: {
! 310: #ifdef __INTEL_COMPILER
! 311: # pragma warning(push)
! 312: # pragma warning(disable:810) /* conversion may lose significant bits */
! 313: #endif
! 314:
! 315: DEBUGASSERT(slnum >= 0);
! 316: DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_USHORT);
! 317: return (unsigned short)(slnum & (long) CURL_MASK_USHORT);
! 318:
! 319: #ifdef __INTEL_COMPILER
! 320: # pragma warning(pop)
! 321: #endif
! 322: }
! 323:
! 324: /*
! 325: ** unsigned size_t to signed ssize_t
! 326: */
! 327:
! 328: ssize_t curlx_uztosz(size_t uznum)
! 329: {
! 330: #ifdef __INTEL_COMPILER
! 331: # pragma warning(push)
! 332: # pragma warning(disable:810) /* conversion may lose significant bits */
! 333: #endif
! 334:
! 335: DEBUGASSERT(uznum <= (size_t) CURL_MASK_SSIZE_T);
! 336: return (ssize_t)(uznum & (size_t) CURL_MASK_SSIZE_T);
! 337:
! 338: #ifdef __INTEL_COMPILER
! 339: # pragma warning(pop)
! 340: #endif
! 341: }
! 342:
! 343: /*
! 344: ** signed curl_off_t to unsigned size_t
! 345: */
! 346:
! 347: size_t curlx_sotouz(curl_off_t sonum)
! 348: {
! 349: #ifdef __INTEL_COMPILER
! 350: # pragma warning(push)
! 351: # pragma warning(disable:810) /* conversion may lose significant bits */
! 352: #endif
! 353:
! 354: DEBUGASSERT(sonum >= 0);
! 355: return (size_t)(sonum & (curl_off_t) CURL_MASK_USIZE_T);
! 356:
! 357: #ifdef __INTEL_COMPILER
! 358: # pragma warning(pop)
! 359: #endif
! 360: }
! 361:
! 362: /*
! 363: ** signed ssize_t to signed int
! 364: */
! 365:
! 366: int curlx_sztosi(ssize_t sznum)
! 367: {
! 368: #ifdef __INTEL_COMPILER
! 369: # pragma warning(push)
! 370: # pragma warning(disable:810) /* conversion may lose significant bits */
! 371: #endif
! 372:
! 373: DEBUGASSERT(sznum >= 0);
! 374: #if (SIZEOF_INT < SIZEOF_SIZE_T)
! 375: DEBUGASSERT((size_t) sznum <= (size_t) CURL_MASK_SINT);
! 376: #endif
! 377: return (int)(sznum & (ssize_t) CURL_MASK_SINT);
! 378:
! 379: #ifdef __INTEL_COMPILER
! 380: # pragma warning(pop)
! 381: #endif
! 382: }
! 383:
! 384: /*
! 385: ** unsigned int to unsigned short
! 386: */
! 387:
! 388: unsigned short curlx_uitous(unsigned int uinum)
! 389: {
! 390: #ifdef __INTEL_COMPILER
! 391: # pragma warning(push)
! 392: # pragma warning(disable:810) /* conversion may lose significant bits */
! 393: #endif
! 394:
! 395: DEBUGASSERT(uinum <= (unsigned int) CURL_MASK_USHORT);
! 396: return (unsigned short) (uinum & (unsigned int) CURL_MASK_USHORT);
! 397:
! 398: #ifdef __INTEL_COMPILER
! 399: # pragma warning(pop)
! 400: #endif
! 401: }
! 402:
! 403: /*
! 404: ** signed int to unsigned size_t
! 405: */
! 406:
! 407: size_t curlx_sitouz(int sinum)
! 408: {
! 409: #ifdef __INTEL_COMPILER
! 410: # pragma warning(push)
! 411: # pragma warning(disable:810) /* conversion may lose significant bits */
! 412: #endif
! 413:
! 414: DEBUGASSERT(sinum >= 0);
! 415: return (size_t) sinum;
! 416:
! 417: #ifdef __INTEL_COMPILER
! 418: # pragma warning(pop)
! 419: #endif
! 420: }
! 421:
! 422: #ifdef USE_WINSOCK
! 423:
! 424: /*
! 425: ** curl_socket_t to signed int
! 426: */
! 427:
! 428: int curlx_sktosi(curl_socket_t s)
! 429: {
! 430: return (int)((ssize_t) s);
! 431: }
! 432:
! 433: /*
! 434: ** signed int to curl_socket_t
! 435: */
! 436:
! 437: curl_socket_t curlx_sitosk(int i)
! 438: {
! 439: return (curl_socket_t)((ssize_t) i);
! 440: }
! 441:
! 442: #endif /* USE_WINSOCK */
! 443:
! 444: #if defined(WIN32) || defined(_WIN32)
! 445:
! 446: ssize_t curlx_read(int fd, void *buf, size_t count)
! 447: {
! 448: return (ssize_t)read(fd, buf, curlx_uztoui(count));
! 449: }
! 450:
! 451: ssize_t curlx_write(int fd, const void *buf, size_t count)
! 452: {
! 453: return (ssize_t)write(fd, buf, curlx_uztoui(count));
! 454: }
! 455:
! 456: #endif /* WIN32 || _WIN32 */
! 457:
! 458: #if defined(__INTEL_COMPILER) && defined(__unix__)
! 459:
! 460: int curlx_FD_ISSET(int fd, fd_set *fdset)
! 461: {
! 462: #pragma warning(push)
! 463: #pragma warning(disable:1469) /* clobber ignored */
! 464: return FD_ISSET(fd, fdset);
! 465: #pragma warning(pop)
! 466: }
! 467:
! 468: void curlx_FD_SET(int fd, fd_set *fdset)
! 469: {
! 470: #pragma warning(push)
! 471: #pragma warning(disable:1469) /* clobber ignored */
! 472: FD_SET(fd, fdset);
! 473: #pragma warning(pop)
! 474: }
! 475:
! 476: void curlx_FD_ZERO(fd_set *fdset)
! 477: {
! 478: #pragma warning(push)
! 479: #pragma warning(disable:593) /* variable was set but never used */
! 480: FD_ZERO(fdset);
! 481: #pragma warning(pop)
! 482: }
! 483:
! 484: unsigned short curlx_htons(unsigned short usnum)
! 485: {
! 486: #if (__INTEL_COMPILER == 910) && defined(__i386__)
! 487: return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
! 488: #else
! 489: #pragma warning(push)
! 490: #pragma warning(disable:810) /* conversion may lose significant bits */
! 491: return htons(usnum);
! 492: #pragma warning(pop)
! 493: #endif
! 494: }
! 495:
! 496: unsigned short curlx_ntohs(unsigned short usnum)
! 497: {
! 498: #if (__INTEL_COMPILER == 910) && defined(__i386__)
! 499: return (unsigned short)(((usnum << 8) & 0xFF00) | ((usnum >> 8) & 0x00FF));
! 500: #else
! 501: #pragma warning(push)
! 502: #pragma warning(disable:810) /* conversion may lose significant bits */
! 503: return ntohs(usnum);
! 504: #pragma warning(pop)
! 505: #endif
! 506: }
! 507:
! 508: #endif /* __INTEL_COMPILER && __unix__ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>