1 /* Copyright (C) 1993,97,2002 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19 /* Windows lacks htonl, htons, ntohl, ntohs. It defines them in
20 * header files, but doesn't have them in any library. However
21 * because it defined them we can end up with conflicting
22 * definitions, which is why here we are careful to avoid
23 * including any Windows header file.
29 #include <sys/param.h>
41 #if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN)
42 #if BYTE_ORDER == BIG_ENDIAN
44 #elif BYTE_ORDER == LITTLE_ENDIAN
47 # error "What kind of system is this?"
50 #error "BYTE_ORDER/BIG_ENDIAN/LITTLE_ENDIAN are not defined"
54 uint32_t ntohl (uint32_t x) { return htonl (x); }
56 #endif /* !HAVE_NTOHL */
67 #if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && defined(LITTLE_ENDIAN)
68 #if BYTE_ORDER == BIG_ENDIAN
70 #elif BYTE_ORDER == LITTLE_ENDIAN
73 # error "What kind of system is this?"
76 #error "BYTE_ORDER/BIG_ENDIAN/LITTLE_ENDIAN are not defined"
80 uint16_t ntohs (uint16_t x) { return htons (x); }
82 #endif /* !HAVE_NTOHS */