File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / curl / lib / warnless.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Jun 3 10:01:15 2020 UTC (5 years ago) by misho
Branches: curl, MAIN
CVS tags: v7_70_0p4, HEAD
curl

    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>