aboutsummaryrefslogtreecommitdiff
path: root/contrib/sendmail/include/sm/types.h
blob: a14d57164a4b72103bd9502be469345b2a9f51fe (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/*
 * Copyright (c) 2000-2001 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: types.h,v 1.1.1.1 2002/02/17 21:56:43 gshapiro Exp $
 */

/*
**  This header file defines standard integral types.
**  - It includes <sys/types.h>, and fixes portability problems that
**    exist on older Unix platforms.
**  - It defines LONGLONG_T and ULONGLONG_T, which are portable locutions
**    for 'long long' and 'unsigned long long'.
*/

#ifndef SM_TYPES_H
# define SM_TYPES_H

# include <sm/config.h>

/*
**  On BSD 4.2 systems, <sys/types.h> was not idempotent.
**  This problem is circumvented by replacing all occurrences
**  of <sys/types.h> with <sm/types.h>, which is idempotent.
*/

# include <sys/types.h>

/*
**  On some old Unix platforms, some of the standard types are missing.
**  We fix that here.
*/

# if !SM_CONF_UID_GID
#  define uid_t		int
#  define gid_t		int
# endif /* !SM_CONF_UID_GID */

# if !SM_CONF_SSIZE_T
#  define ssize_t	int
# endif /* !SM_CONF_SSIZE_T */

/*
**  Define LONGLONG_T and ULONGLONG_T, which are portable locutions
**  for 'long long' and 'unsigned long long' from the C 1999 standard.
*/

# if SM_CONF_LONGLONG
   typedef long long		LONGLONG_T;
   typedef unsigned long long	ULONGLONG_T;
# else /* SM_CONF_LONGLONG */
#  if SM_CONF_QUAD_T
     typedef quad_t		LONGLONG_T;
     typedef u_quad_t		ULONGLONG_T;
#  else /* SM_CONF_QUAD_T */
     typedef long		LONGLONG_T;
     typedef unsigned long	ULONGLONG_T;
#  endif /* SM_CONF_QUAD_T */
# endif /* SM_CONF_LONGLONG */

#endif /* ! SM_TYPES_H */