You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.7 KiB
139 lines
4.7 KiB
/* |
|
** 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 <sys/cdefs.h> 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 */ |
|
|
|
|