diff -r 37c544fc0159 -r 1074e5934dd9 honeyd/cdefs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/honeyd/cdefs.h Tue Aug 28 18:35:30 2012 +0200 @@ -0,0 +1,139 @@ +/* +** cdefs.h: ISO C interface +** Most of this file was developed by Sendmail, Incorporated, so: +** +** Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers. +** +** Permission to use, copy, modify, and distribute this software for +** any purpose with or without fee is hereby granted, provided that +** the above copyright notice and this permission notice appear in all +** copies. +** +** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +** IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF +** USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +** ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +** OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +** SUCH DAMAGE. +** +*/ + +/* +** BSD and Linux already have which defines a set of C +** language portability macros that are a defacto standard in the open +** source community. This file allows for building on platforms lacking +** these definitions. +*/ +#ifndef HOND_CDEFS_H +# define HOND_CDEFS_H + +# if defined(__cplusplus) +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS }; +# else /* defined(__cplusplus) */ +# define __BEGIN_DECLS +# define __END_DECLS +# endif /* defined(__cplusplus) */ +# if defined(__STDC__) || defined(__cplusplus) +# ifndef __P +# define __P(protos) protos +# endif /* __P */ +# define __CONCAT(x,y) x ## y +# define __STRING(x) #x +# else /* defined(__STDC__) || defined(__cplusplus) */ +# define __P(protos) () +# define __CONCAT(x,y) x/**/y +# define __STRING(x) "x" +# define const +# define signed +# define volatile +# endif /* defined(__STDC__) || defined(__cplusplus) */ + +/* +** Define HOND_DEAD, a macro used to declare functions that do not return +** to their caller. +*/ +# ifndef HOND_DEAD +# if __GNUC__ >= 2 +# if __GNUC__ == 2 && __GNUC_MINOR__ < 5 +# define HOND_DEAD(proto) volatile proto +# else /* __GNUC__ == 2 && __GNUC_MINOR__ < 5 */ +# define HOND_DEAD(proto) proto __attribute__((__noreturn__)) +# endif /* __GNUC__ == 2 && __GNUC_MINOR__ < 5 */ +# else /* __GNUC__ >= 2 */ +# define HOND_DEAD(proto) proto +# endif /* __GNUC__ >= 2 */ +# endif /* HOND_DEAD */ + +/* +** Define HOND_UNUSED, a macro used to declare variables that may be unused. +*/ +# ifndef HOND_UNUSED +# if __GNUC__ >= 2 +# if __GNUC__ == 2 && __GNUC_MINOR__ < 7 +# define HOND_UNUSED(decl) decl +# else /* __GNUC__ == 2 && __GNUC_MINOR__ < 7 */ +# define HOND_UNUSED(decl) decl __attribute__((__unused__)) +# endif /* __GNUC__ == 2 && __GNUC_MINOR__ < 7 */ +# else /* __GNUC__ >= 2 */ +# define HOND_UNUSED(decl) decl +# endif /* __GNUC__ >= 2 */ +# endif /* HOND_UNUSED */ + +/* +** The HOND_NONVOLATILE macro is used to declare variables that are not +** volatile, but which must be declared volatile when compiling with +** gcc -O -Wall in order to suppress bogus warning messages. +** +** Variables that actually are volatile should be declared volatile +** using the "volatile" keyword. If a variable actually is volatile, +** then HOND_NONVOLATILE should not be used. +** +** To compile source code with gcc and see all non-bogus warnings use: +** +** gcc -O -Wall -DHOND_OMIT_BOGUS_WARNINGS ... +** +** Do not use -DHOND_OMIT_BOGUS_WARNINGS when compiling production +** software, because there is a performance hit. +*/ +# ifdef HOND_OMIT_BOGUS_WARNINGS +# define HOND_NONVOLATILE volatile +# else /* HOND_OMIT_BOGUS_WARNINGS */ +# define HOND_NONVOLATILE +# endif /* HOND_OMIT_BOGUS_WARNINGS */ + +/* +** Turn on format string argument checking. +*/ +# ifndef HOND_CONF_FORMAT_TEST +# if __GNUC__ == 2 && __GNUC_MINOR__ >= 7 +# define HOND_CONF_FORMAT_TEST 1 +# else /* __GNUC__ == 2 && __GNUC_MINOR__ >= 7 */ +# define HOND_CONF_FORMAT_TEST 0 +# endif /* __GNUC__ == 2 && __GNUC_MINOR__ >= 7 */ +# endif /* HOND_CONF_FORMAT_TEST */ + +# ifndef PRINTFLIKE +# if HOND_CONF_FORMAT_TEST +# define PRINTFLIKE(x,y) __attribute__ ((__format__ (__printf__, x, y))) +# else /* HOND_CONF_FORMAT_TEST */ +# define PRINTFLIKE(x,y) +# endif /* HOND_CONF_FORMAT_TEST */ +# endif /* ! PRINTFLIKE */ + +# ifndef SCANFLIKE +# if HOND_CONF_FORMAT_TEST +# define SCANFLIKE(x,y) __attribute__ ((__format__ (__scanf__, x, y))) +# else /* HOND_CONF_FORMAT_TEST */ +# define SCANFLIKE(x,y) +# endif /* HOND_CONF_FORMAT_TEST */ +# endif /* ! SCANFLIKE */ + +#endif /* ! HOND_CDEFS_H */ +