2 Integer types. These types should be be used in all
3 contexts in which the length of an integer stored on
4 removable media must be known regardless of the
5 architecture of the platform.
9 int8_t, int16_t, int32_t, int64_t
10 uint8_t, uint16_t, uint32_t, uint64_t
13 Also, we define types such as file address lengths.
19 Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
21 This program is free software; you can redistribute it and/or
22 modify it under the terms of the GNU General Public License as
23 published by the Free Software Foundation; either version 2 of
24 the License, or (at your option) any later version.
26 This program is distributed in the hope that it will be useful,
27 but WITHOUT ANY WARRANTY; without even the implied warranty of
28 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29 General Public License for more details.
31 You should have received a copy of the GNU General Public
32 License along with this program; if not, write to the Free
33 Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
39 #ifndef __bc_types_INCLUDED
40 #define __bc_types_INCLUDED
42 /* ****FIXME***** implement 64 bit file addresses ! */
49 /* If sys/types.h does not supply intXX_t, supply them ourselves */
53 typedef unsigned int u_int;
57 # if (SIZEOF_CHAR == 1)
60 # error "8 bit int type not found."
62 # if (SIZEOF_SHORT_INT == 2)
63 typedef short int int16_t;
65 # error "16 bit int type not found."
67 # if (SIZEOF_INT == 4)
70 # error "32 bit int type not found."
74 /* If sys/types.h does not supply u_intXX_t, supply them ourselves */
75 #ifndef HAVE_U_INTXX_T
77 typedef uint8_t u_int8_t;
78 typedef uint16_t u_int16_t;
79 typedef uint32_t u_int32_t;
80 # define HAVE_U_INTXX_T 1
82 # if (SIZEOF_CHAR == 1)
83 typedef unsigned char u_int8_t;
85 # error "8 bit int type not found. Required!"
87 # if (SIZEOF_SHORT_INT == 2)
88 typedef unsigned short int u_int16_t;
90 # error "16 bit int type not found. Required!"
92 # if (SIZEOF_INT == 4)
93 typedef unsigned int u_int32_t;
95 # error "32 bit int type not found. Required!"
102 # if (SIZEOF_LONG_LONG_INT == 8)
103 typedef long long int int64_t;
104 # define HAVE_INT64_T 1
106 # if (SIZEOF_LONG_INT == 8)
107 typedef long int int64_t;
108 # define HAVE_INT64_T 1
113 #ifndef HAVE_INTMAX_T
115 typedef int64_t intmax_t;
117 # error "64 bit type not found. Required!"
121 #ifndef HAVE_U_INT64_T
122 # if (SIZEOF_LONG_LONG_INT == 8)
123 typedef unsigned long long int u_int64_t;
124 # define HAVE_U_INT64_T 1
126 # if (SIZEOF_LONG_INT == 8)
127 typedef unsigned long int u_int64_t;
128 # define HAVE_U_INT64_T 1
130 # error "64 bit type not found. Required!"
135 #ifndef HAVE_U_INTMAX_T
136 # ifdef HAVE_U_INT64_T
137 typedef u_int64_t u_intmax_t;
139 # error "64 bit type not found. Required!"
144 /* Limits for the above types. */
155 #define INT8_MIN (-127-1)
156 #define INT8_MAX (127)
157 #define UINT8_MAX (255u)
158 #define INT16_MIN (-32767-1)
159 #define INT16_MAX (32767)
160 #define UINT16_MAX (65535u)
161 #define INT32_MIN (-2147483647-1)
162 #define INT32_MAX (2147483647)
163 #define UINT32_MAX (4294967295u)
165 typedef double float64_t;
166 typedef float float32_t;
168 #endif /* __bc_types_INCLUDED */
170 /* Define the uint versions actually used in Bacula */
171 #define uint8_t u_int8_t
172 #define uint16_t u_int16_t
173 #define uint32_t u_int32_t
174 #define uint64_t u_int64_t
175 #define uintmax_t u_intmax_t
177 /* Bacula time -- Unix time with microseconds */
178 #define btime_t uint64_t
179 /* Unix time (time_t) widened to 64 bits */
180 #define utime_t int64_t
183 #define socklen_t int