1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
/*
* Copyright (C) 1996-2025 The Squid Software Foundation and contributors
*
* Squid software is distributed under GPLv2+ license and includes
* contributions from numerous individuals and organizations.
* Please see the COPYING and CONTRIBUTORS files for details.
*/
#ifndef SQUID_COMPAT_TYPES_H
#define SQUID_COMPAT_TYPES_H
/*
* Here are defined several known-width types, obtained via autoconf
* from system locations or various attempts. This is just a convenience
* header to include which takes care of proper preprocessor stuff
*
* This file is only intended to be included via compat/compat.h, do
* not include directly.
*/
/* This should be in synch with what we have in acinclude.m4 */
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#if HAVE_LINUX_TYPES_H
#include <linux/types.h>
#endif
#if HAVE_STDLIB_H
#include <stdlib.h>
#endif
#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#if HAVE_INTTYPES_H
#include <inttypes.h>
#endif
#if HAVE_SYS_BITYPES_H
#include <sys/bitypes.h>
#endif
#if HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif
#if HAVE_NETINET_IN_SYSTM_H
/* Several OS require types declared by in_systm.h without including it themselves. */
#include <netinet/in_systm.h>
#endif
/******************************************************/
/* Typedefs for missing entries on a system */
/******************************************************/
/*
* Ensure that standard type limits are defined for use
*/
#if __cplusplus
#include <cstdint>
#elif HAVE_STDINT_H
#include <stdint.h>
#endif
/* explicit bit sizes */
#if !defined(UINT32_MIN)
#define UINT32_MIN 0x00000000L
#endif
#if !defined(UINT32_MAX)
#define UINT32_MAX 0xFFFFFFFFL
#endif
#if !defined(INT_MAX)
#define INT_MAX 0x7FFFFFFFL // hack but a safe bet (32-bit signed integer)
#endif
#if !defined(INT64_MIN)
/* Native 64 bit system without strtoll() */
#if defined(LONG_MIN) && (SIZEOF_LONG == 8)
#define INT64_MIN LONG_MIN
#else
/* 32 bit system */
#define INT64_MIN (-9223372036854775807LL-1LL)
#endif
#endif
#if !defined(INT64_MAX)
/* Native 64 bit system without strtoll() */
#if defined(LONG_MAX) && (SIZEOF_LONG == 8)
#define INT64_MAX LONG_MAX
#else
/* 32 bit system */
#define INT64_MAX 9223372036854775807LL
#endif
#endif
/*
* ISO C99 Standard printf() macros for 64 bit integers
* On some 64 bit platform, HP Tru64 is one, for printf must be used
* "%lx" instead of "%llx"
*/
#ifndef PRId64
#if _SQUID_WINDOWS_
#define PRId64 "I64d"
#elif SIZEOF_INT64_T > SIZEOF_LONG
#define PRId64 "lld"
#else
#define PRId64 "ld"
#endif
#endif
#ifndef PRIu64
#if _SQUID_WINDOWS_
#define PRIu64 "I64u"
#elif SIZEOF_INT64_T > SIZEOF_LONG
#define PRIu64 "llu"
#else
#define PRIu64 "lu"
#endif
#endif
#ifndef PRIX64
#if _SQUID_WINDOWS_
#define PRIX64 "I64X"
#elif SIZEOF_INT64_T > SIZEOF_LONG
#define PRIX64 "llX"
#else
#define PRIX64 "lX"
#endif
#endif
#ifndef HAVE_MODE_T
typedef unsigned short mode_t;
#endif
#ifndef HAVE_FD_MASK
typedef unsigned long fd_mask;
#endif
#ifndef HAVE_SOCKLEN_T
typedef int socklen_t;
#endif
#ifndef HAVE_MTYP_T
typedef long mtyp_t;
#endif
#ifndef NULL
#define NULL 0
#endif
#endif /* SQUID_COMPAT_TYPES_H */
|