Home | History | Annotate | Download | only in sm
      1 /*
      2  * Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers.
      3  *	All rights reserved.
      4  *
      5  * By using this file, you agree to the terms and conditions set
      6  * forth in the LICENSE file which can be found at the top level of
      7  * the sendmail distribution.
      8  *
      9  *	$Id: gen.h,v 1.23 2003/11/04 18:51:54 ca Exp $
     10  */
     11 
     12 #pragma ident	"%Z%%M%	%I%	%E% SMI"
     13 
     14 /*
     15 **  libsm general definitions
     16 **  See libsm/gen.html for documentation.
     17 */
     18 
     19 #ifndef SM_GEN_H
     20 # define SM_GEN_H
     21 
     22 # include <sm/config.h>
     23 # include <sm/cdefs.h>
     24 # include <sm/types.h>
     25 
     26 /*
     27 **  Define SM_RCSID and SM_IDSTR,
     28 **  macros used to embed RCS and SCCS identification strings in object files.
     29 */
     30 
     31 # ifdef lint
     32 #  define SM_RCSID(str)
     33 #  define SM_IDSTR(id,str)
     34 # else /* lint */
     35 #  define SM_RCSID(str) SM_UNUSED(static const char RcsId[]) = str;
     36 #  define SM_IDSTR(id,str) SM_UNUSED(static const char id[]) = str;
     37 # endif /* lint */
     38 
     39 /*
     40 **  Define NULL and offsetof (from the C89 standard)
     41 */
     42 
     43 # if SM_CONF_STDDEF_H
     44 #  include <stddef.h>
     45 # else /* SM_CONF_STDDEF_H */
     46 #  ifndef NULL
     47 #   define NULL	0
     48 #  endif /* ! NULL */
     49 #  define offsetof(type, member)	((size_t)(&((type *)0)->member))
     50 # endif /* SM_CONF_STDDEF_H */
     51 
     52 /*
     53 **  Define bool, true, false (from the C99 standard)
     54 */
     55 
     56 # if SM_CONF_STDBOOL_H
     57 #  include <stdbool.h>
     58 # else /* SM_CONF_STDBOOL_H */
     59 #  ifndef __cplusplus
     60     typedef int bool;
     61 #   define false	0
     62 #   define true		1
     63 #   define __bool_true_false_are_defined	1
     64 #  endif /* ! __cplusplus */
     65 # endif /* SM_CONF_STDBOOL_H */
     66 
     67 /*
     68 **  Define SM_MAX and SM_MIN
     69 */
     70 
     71 # define SM_MAX(a, b)	((a) > (b) ? (a) : (b))
     72 # define SM_MIN(a, b)	((a) < (b) ? (a) : (b))
     73 
     74 /* Define SM_SUCCESS and SM_FAILURE */
     75 # define SM_SUCCESS	0
     76 # define SM_FAILURE	(-1)
     77 
     78 /* XXX This needs to be fixed when we start to use threads: */
     79 typedef int SM_ATOMIC_INT_T;
     80 typedef unsigned int SM_ATOMIC_UINT_T;
     81 
     82 #endif /* SM_GEN_H */
     83