1/** 2 * \file common.h 3 * 4 * Common definitions for LDNS 5 */ 6 7/** 8 * a Net::DNS like library for C 9 * 10 * (c) NLnet Labs, 2004-2006 11 * 12 * See the file LICENSE for the license 13 */ 14 15#ifndef LDNS_COMMON_H 16#define LDNS_COMMON_H 17 18/* 19 * The build configuration that is used in the distributed headers, 20 * as detected and determined by the auto configure script. 21 */ 22#define LDNS_BUILD_CONFIG_HAVE_SSL @ldns_build_config_have_ssl@ 23#define LDNS_BUILD_CONFIG_HAVE_INTTYPES_H @ldns_build_config_have_inttypes_h@ 24#define LDNS_BUILD_CONFIG_HAVE_ATTR_FORMAT @ldns_build_config_have_attr_format@ 25#define LDNS_BUILD_CONFIG_HAVE_ATTR_UNUSED @ldns_build_config_have_attr_unused@ 26#define LDNS_BUILD_CONFIG_HAVE_SOCKLEN_T @ldns_build_config_have_socklen_t@ 27#define LDNS_BUILD_CONFIG_USE_DANE @ldns_build_config_use_dane@ 28#define LDNS_BUILD_CONFIG_HAVE_B32_PTON @ldns_build_config_have_b32_pton@ 29#define LDNS_BUILD_CONFIG_HAVE_B32_NTOP @ldns_build_config_have_b32_ntop@ 30 31/* 32 * HAVE_STDBOOL_H is not available when distributed as a library, but no build 33 * configuration variables may be used (like those above) because the header 34 * is sometimes only available when using special compiler flags to enable the 35 * c99 environment. Because we cannot force the usage of this flag, we have to 36 * provide a default type. Below what is suggested by the autoconf manual. 37 */ 38/*@ignore@*/ 39/* splint barfs on this construct */ 40#ifndef __bool_true_false_are_defined 41# ifdef HAVE_STDBOOL_H 42# include <stdbool.h> 43# else 44# ifndef HAVE__BOOL 45# ifdef __cplusplus 46typedef bool _Bool; 47# else 48# define _Bool signed char 49# endif 50# endif 51# define bool _Bool 52# define false 0 53# define true 1 54# define __bool_true_false_are_defined 1 55# endif 56#endif 57/*@end@*/ 58 59#if LDNS_BUILD_CONFIG_HAVE_ATTR_FORMAT 60#define ATTR_FORMAT(archetype, string_index, first_to_check) \ 61 __attribute__ ((format (archetype, string_index, first_to_check))) 62#else /* !LDNS_BUILD_CONFIG_HAVE_ATTR_FORMAT */ 63#define ATTR_FORMAT(archetype, string_index, first_to_check) /* empty */ 64#endif /* !LDNS_BUILD_CONFIG_HAVE_ATTR_FORMAT */ 65 66#if defined(__cplusplus) 67#define ATTR_UNUSED(x) 68#elif LDNS_BUILD_CONFIG_HAVE_ATTR_UNUSED 69#define ATTR_UNUSED(x) x __attribute__((unused)) 70#else /* !LDNS_BUILD_CONFIG_HAVE_ATTR_UNUSED */ 71#define ATTR_UNUSED(x) x 72#endif /* !LDNS_BUILD_CONFIG_HAVE_ATTR_UNUSED */ 73 74#if !LDNS_BUILD_CONFIG_HAVE_SOCKLEN_T 75typedef int socklen_t; 76#endif 77 78#endif /* LDNS_COMMON_H */ 79