types.h revision 266692
1/*
2 * Copyright (c) 2000-2001 Proofpoint, 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: types.h,v 1.14 2013-11-22 20:51:32 ca Exp $
10 */
11
12/*
13**  This header file defines standard integral types.
14**  - It includes <sys/types.h>, and fixes portability problems that
15**    exist on older Unix platforms.
16**  - It defines LONGLONG_T and ULONGLONG_T, which are portable locutions
17**    for 'long long' and 'unsigned long long'.
18*/
19
20#ifndef SM_TYPES_H
21# define SM_TYPES_H
22
23# include <sm/config.h>
24
25/*
26**  On BSD 4.2 systems, <sys/types.h> was not idempotent.
27**  This problem is circumvented by replacing all occurrences
28**  of <sys/types.h> with <sm/types.h>, which is idempotent.
29*/
30
31# include <sys/types.h>
32
33/*
34**  On some old Unix platforms, some of the standard types are missing.
35**  We fix that here.
36*/
37
38# if !SM_CONF_UID_GID
39#  define uid_t		int
40#  define gid_t		int
41# endif /* !SM_CONF_UID_GID */
42
43# if !SM_CONF_SSIZE_T
44#  define ssize_t	int
45# endif /* !SM_CONF_SSIZE_T */
46
47/*
48**  Define LONGLONG_T and ULONGLONG_T, which are portable locutions
49**  for 'long long' and 'unsigned long long' from the C 1999 standard.
50*/
51
52# if SM_CONF_LONGLONG
53   typedef long long		LONGLONG_T;
54   typedef unsigned long long	ULONGLONG_T;
55# else /* SM_CONF_LONGLONG */
56#  if SM_CONF_QUAD_T
57     typedef quad_t		LONGLONG_T;
58     typedef u_quad_t		ULONGLONG_T;
59#  else /* SM_CONF_QUAD_T */
60     typedef long		LONGLONG_T;
61     typedef unsigned long	ULONGLONG_T;
62#  endif /* SM_CONF_QUAD_T */
63# endif /* SM_CONF_LONGLONG */
64
65#endif /* ! SM_TYPES_H */
66