/*
* Copyright (c) 2001-2004 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
* $Id: cdefs.h,v 1.11 2005/06/16 00:09:34 ca Exp $
*/
#ifndef SM_CDEFS_H
#define SM_CDEFS_H 1
#include "sm/generic.h"
#if HAVE_SYS_CDEFS_H
# include <sys/cdefs.h>
#endif
/*
** Define the standard C language portability macros
** for platforms that lack <sys/cdefs.h>.
*/
#if !HAVE_SYS_CDEFS_H
# if defined(__STDC__) || defined(__cplusplus)
# define __CONCAT(x,y) x ## y
# define __STRING(x) #x
# else /* defined(__STDC__) || defined(__cplusplus) */
# define __CONCAT(x,y) x/**/y
# define __STRING(x) "x"
# define const
# define signed
# define volatile
# endif /* defined(__STDC__) || defined(__cplusplus) */
#endif /* !HAVE_SYS_CDEFS_H */
#ifndef __BEGIN_DECLS
# if defined(__cplusplus)
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS };
# else /* defined(__cplusplus) */
# define __BEGIN_DECLS
# define __END_DECLS
# endif /* defined(__cplusplus) */
#endif /* ! __BEGIN_DECLS */
/*
** Define SM_DEAD, a macro used to declare functions that do not return
** to their caller.
*/
# ifndef SM_DEAD
# if __GNUC__ >= 2
# if __GNUC__ == 2 && __GNUC_MINOR__ < 5
# define SM_DEAD(proto) volatile proto
# else
# define SM_DEAD(proto) proto __attribute__((__noreturn__))
# endif
# else /* __GNUC__ >= 2 */
# define SM_DEAD(proto) proto
# endif /* __GNUC__ >= 2 */
# endif /* SM_DEAD */
/*
** Define SM_UNUSED, a macro used to declare variables that may be unused.
*/
# ifndef SM_UNUSED
# if __GNUC__ >= 2
# if __GNUC__ == 2 && __GNUC_MINOR__ < 7
# define SM_UNUSED(decl) decl
# else
# define SM_UNUSED(decl) decl __attribute__((__unused__))
# endif
# else /* __GNUC__ >= 2 */
# define SM_UNUSED(decl) decl
# endif /* __GNUC__ >= 2 */
# endif /* SM_UNUSED */
/*
** Turn on format string argument checking.
*/
#ifndef SM_CONF_FORMAT_TEST
# if __GNUC__ == 2 && __GNUC_MINOR__ >= 7
# define SM_CONF_FORMAT_TEST 1
# else
# define SM_CONF_FORMAT_TEST 0
# endif
#endif /* SM_CONF_FORMAT_TEST */
#ifndef PRINTFLIKE
# if SM_CONF_FORMAT_TEST
# define PRINTFLIKE(x,y) __attribute__ ((__format__ (__printf__, x, y)))
# else
# define PRINTFLIKE(x,y)
# endif
#endif /* ! PRINTFLIKE */
#ifndef SCANFLIKE
# if SM_CONF_FORMAT_TEST
# define SCANFLIKE(x,y) __attribute__ ((__format__ (__scanf__, x, y)))
# else
# define SCANFLIKE(x,y)
# endif
#endif /* ! SCANFLIKE */
#endif /* ! SM_CDEFS_H */
syntax highlighted by Code2HTML, v. 0.9.1