~ubuntu-branches/ubuntu/oneiric/gnupg2/oneiric-updates

« back to all changes in this revision

Viewing changes to gl/stdint_.h

  • Committer: Bazaar Package Importer
  • Author(s): Thomas Viehmann
  • Date: 2008-10-04 10:25:53 UTC
  • mfrom: (5.1.15 intrepid)
  • Revision ID: james.westby@ubuntu.com-20081004102553-fv62pp8dsitxli47
Tags: 2.0.9-3.1
* Non-maintainer upload.
* agent/gpg-agent.c: Deinit the threading library before exec'ing
  the command to run in --daemon mode. And because that still doesn't
  restore the sigprocmask, do that manually. Closes: #499569

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (C) 2001-2002, 2004-2006 Free Software Foundation, Inc.
 
2
   Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
 
3
   This file is part of gnulib.
 
4
 
 
5
   This program is free software; you can redistribute it and/or modify
 
6
   it under the terms of the GNU General Public License as published by
 
7
   the Free Software Foundation; either version 3, or (at your option)
 
8
   any later version.
 
9
 
 
10
   This program is distributed in the hope that it will be useful,
 
11
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
   GNU General Public License for more details.
 
14
 
 
15
   You should have received a copy of the GNU General Public License
 
16
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
 
17
 
 
18
#ifndef _GL_STDINT_H
 
19
#define _GL_STDINT_H
 
20
 
 
21
/*
 
22
 * ISO C 99 <stdint.h> for platforms that lack it.
 
23
 * <http://www.opengroup.org/susv3xbd/stdint.h.html>
 
24
 */
 
25
 
 
26
/* Get those types that are already defined in other system include
 
27
   files, so that we can "#define int8_t signed char" below without
 
28
   worrying about a later system include file containing a "typedef
 
29
   signed char int8_t;" that will get messed up by our macro.  Our
 
30
   macros should all be consistent with the system versions, except
 
31
   for the "fast" types and macros, which we recommend against using
 
32
   in public interfaces due to compiler differences.  */
 
33
 
 
34
#if @HAVE_STDINT_H@
 
35
# if defined __sgi && ! defined __c99
 
36
   /* Bypass IRIX's <stdint.h> if in C89 mode, since it merely annoys users
 
37
      with "This header file is to be used only for c99 mode compilations"
 
38
      diagnostics.  */
 
39
#  define __STDINT_H__
 
40
# endif
 
41
  /* Other systems may have an incomplete or buggy <stdint.h>.
 
42
     Include it before <inttypes.h>, since any "#include <stdint.h>"
 
43
     in <inttypes.h> would reinclude us, skipping our contents because
 
44
     _GL_STDINT_H is defined.  */
 
45
# include @ABSOLUTE_STDINT_H@
 
46
#endif
 
47
 
 
48
/* <sys/types.h> defines some of the stdint.h types as well, on glibc,
 
49
   IRIX 6.5, and OpenBSD 3.8 (via <machine/types.h>).
 
50
   MacOS X 10.4.6 <sys/types.h> includes <stdint.h> (which is us), but
 
51
   relies on the system <stdint.h> definitions, so include
 
52
   <sys/types.h> after @ABSOLUTE_STDINT_H@.  */
 
53
#if @HAVE_SYS_TYPES_H@
 
54
# include <sys/types.h>
 
55
#endif
 
56
 
 
57
/* Get LONG_MIN, LONG_MAX, ULONG_MAX.  */
 
58
#include <limits.h>
 
59
 
 
60
#if @HAVE_INTTYPES_H@
 
61
  /* In OpenBSD 3.8, <inttypes.h> includes <machine/types.h>, which defines
 
62
     int{8,16,32,64}_t, uint{8,16,32,64}_t and __BIT_TYPES_DEFINED__.
 
63
     <inttypes.h> also defines intptr_t and uintptr_t.  */
 
64
# define _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
 
65
# include <inttypes.h>
 
66
# undef _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
 
67
#elif @HAVE_SYS_INTTYPES_H@
 
68
  /* Solaris 7 <sys/inttypes.h> has the types except the *_fast*_t types, and
 
69
     the macros except for *_FAST*_*, INTPTR_MIN, PTRDIFF_MIN, PTRDIFF_MAX.  */
 
70
# include <sys/inttypes.h>
 
71
#endif
 
72
 
 
73
#if @HAVE_SYS_BITYPES_H@ && ! defined __BIT_TYPES_DEFINED__
 
74
  /* Linux libc4 >= 4.6.7 and libc5 have a <sys/bitypes.h> that defines
 
75
     int{8,16,32,64}_t and __BIT_TYPES_DEFINED__.  In libc5 >= 5.2.2 it is
 
76
     included by <sys/types.h>.  */
 
77
# include <sys/bitypes.h>
 
78
#endif
 
79
 
 
80
#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
 
81
 
 
82
/* Get WCHAR_MIN, WCHAR_MAX.  */
 
83
# if @HAVE_WCHAR_H@ && ! (defined WCHAR_MIN && defined WCHAR_MAX)
 
84
   /* BSD/OS 4.1 has a bug: <stdio.h> and <time.h> must be included before
 
85
      <wchar.h>.  */
 
86
#  include <stdio.h>
 
87
#  include <time.h>
 
88
#  include <wchar.h>
 
89
# endif
 
90
 
 
91
#endif
 
92
 
 
93
/* Minimum and maximum values for a integer type under the usual assumption.
 
94
   Return an unspecified value if BITS == 0, adding a check to pacify
 
95
   picky compilers.  */
 
96
 
 
97
#define _STDINT_MIN(signed, bits, zero) \
 
98
  ((signed) ? (- ((zero) + 1) << ((bits) ? (bits) - 1 : 0)) : (zero))
 
99
 
 
100
#define _STDINT_MAX(signed, bits, zero) \
 
101
  ((signed) \
 
102
   ? ~ _STDINT_MIN (signed, bits, zero) \
 
103
   : ((((zero) + 1) << ((bits) ? (bits) - 1 : 0)) - 1) * 2 + 1)
 
104
 
 
105
/* 7.18.1.1. Exact-width integer types */
 
106
 
 
107
/* Here we assume a standard architecture where the hardware integer
 
108
   types have 8, 16, 32, optionally 64 bits.  */
 
109
 
 
110
#undef int8_t
 
111
#undef uint8_t
 
112
#define int8_t signed char
 
113
#define uint8_t unsigned char
 
114
 
 
115
#undef int16_t
 
116
#undef uint16_t
 
117
#define int16_t short int
 
118
#define uint16_t unsigned short int
 
119
 
 
120
#undef int32_t
 
121
#undef uint32_t
 
122
#define int32_t int
 
123
#define uint32_t unsigned int
 
124
 
 
125
#undef int64_t
 
126
#if LONG_MAX >> 31 >> 31 == 1
 
127
# define int64_t long int
 
128
#elif defined _MSC_VER
 
129
# define int64_t __int64
 
130
#elif @HAVE_LONG_LONG_INT@
 
131
# define int64_t long long int
 
132
#endif
 
133
 
 
134
#undef uint64_t
 
135
#if ULONG_MAX >> 31 >> 31 >> 1 == 1
 
136
# define uint64_t unsigned long int
 
137
#elif defined _MSC_VER
 
138
# define uint64_t unsigned __int64
 
139
#elif @HAVE_UNSIGNED_LONG_LONG_INT@
 
140
# define uint64_t unsigned long long int
 
141
#endif
 
142
 
 
143
/* Avoid collision with Solaris 2.5.1 <pthread.h> etc.  */
 
144
#define _UINT8_T
 
145
#define _UINT32_T
 
146
#define _UINT64_T
 
147
 
 
148
 
 
149
/* 7.18.1.2. Minimum-width integer types */
 
150
 
 
151
/* Here we assume a standard architecture where the hardware integer
 
152
   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
 
153
   are the same as the corresponding N_t types.  */
 
154
 
 
155
#undef int_least8_t
 
156
#undef uint_least8_t
 
157
#undef int_least16_t
 
158
#undef uint_least16_t
 
159
#undef int_least32_t
 
160
#undef uint_least32_t
 
161
#undef int_least64_t
 
162
#undef uint_least64_t
 
163
#define int_least8_t int8_t
 
164
#define uint_least8_t uint8_t
 
165
#define int_least16_t int16_t
 
166
#define uint_least16_t uint16_t
 
167
#define int_least32_t int32_t
 
168
#define uint_least32_t uint32_t
 
169
#ifdef int64_t
 
170
# define int_least64_t int64_t
 
171
#endif
 
172
#ifdef uint64_t
 
173
# define uint_least64_t uint64_t
 
174
#endif
 
175
 
 
176
/* 7.18.1.3. Fastest minimum-width integer types */
 
177
 
 
178
/* Note: Other <stdint.h> substitutes may define these types differently.
 
179
   It is not recommended to use these types in public header files. */
 
180
 
 
181
/* Here we assume a standard architecture where the hardware integer
 
182
   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
 
183
   are taken from the same list of types.  Assume that 'long int'
 
184
   is fast enough for all narrower integers.  */
 
185
 
 
186
#undef int_fast8_t
 
187
#undef uint_fast8_t
 
188
#undef int_fast16_t
 
189
#undef uint_fast16_t
 
190
#undef int_fast32_t
 
191
#undef uint_fast32_t
 
192
#undef int_fast64_t
 
193
#undef uint_fast64_t
 
194
#define int_fast8_t long int
 
195
#define uint_fast8_t unsigned int_fast8_t
 
196
#define int_fast16_t long int
 
197
#define uint_fast16_t unsigned int_fast16_t
 
198
#define int_fast32_t long int
 
199
#define uint_fast32_t unsigned int_fast32_t
 
200
#ifdef int64_t
 
201
# define int_fast64_t int64_t
 
202
#endif
 
203
#ifdef uint64_t
 
204
# define uint_fast64_t uint64_t
 
205
#endif
 
206
 
 
207
/* 7.18.1.4. Integer types capable of holding object pointers */
 
208
 
 
209
#undef intptr_t
 
210
#undef uintptr_t
 
211
#define intptr_t long int
 
212
#define uintptr_t unsigned long int
 
213
 
 
214
/* 7.18.1.5. Greatest-width integer types */
 
215
 
 
216
/* Note: These types are compiler dependent. It may be unwise to use them in
 
217
   public header files. */
 
218
 
 
219
#undef intmax_t
 
220
#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
 
221
# define intmax_t long long int
 
222
#elif defined int64_t
 
223
# define intmax_t int64_t
 
224
#else
 
225
# define intmax_t long int
 
226
#endif
 
227
 
 
228
#undef uintmax_t
 
229
#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
 
230
# define uintmax_t unsigned long long int
 
231
#elif defined int64_t
 
232
# define uintmax_t uint64_t
 
233
#else
 
234
# define uintmax_t unsigned long int
 
235
#endif
 
236
 
 
237
/* 7.18.2. Limits of specified-width integer types */
 
238
 
 
239
#if ! defined __cplusplus || defined __STDC_LIMIT_MACROS
 
240
 
 
241
/* 7.18.2.1. Limits of exact-width integer types */
 
242
 
 
243
/* Here we assume a standard architecture where the hardware integer
 
244
   types have 8, 16, 32, optionally 64 bits.  */
 
245
 
 
246
#undef INT8_MIN
 
247
#undef INT8_MAX
 
248
#undef UINT8_MAX
 
249
#define INT8_MIN  (~ INT8_MAX)
 
250
#define INT8_MAX  127
 
251
#define UINT8_MAX  255
 
252
 
 
253
#undef INT16_MIN
 
254
#undef INT16_MAX
 
255
#undef UINT16_MAX
 
256
#define INT16_MIN  (~ INT16_MAX)
 
257
#define INT16_MAX  32767
 
258
#define UINT16_MAX  65535
 
259
 
 
260
#undef INT32_MIN
 
261
#undef INT32_MAX
 
262
#undef UINT32_MAX
 
263
#define INT32_MIN  (~ INT32_MAX)
 
264
#define INT32_MAX  2147483647
 
265
#define UINT32_MAX  4294967295U
 
266
 
 
267
#undef INT64_MIN
 
268
#undef INT64_MAX
 
269
#ifdef int64_t
 
270
# define INT64_MIN  (~ INT64_MAX)
 
271
# define INT64_MAX  INTMAX_C (9223372036854775807)
 
272
#endif
 
273
 
 
274
#undef UINT64_MAX
 
275
#ifdef uint64_t
 
276
# define UINT64_MAX  UINTMAX_C (18446744073709551615)
 
277
#endif
 
278
 
 
279
/* 7.18.2.2. Limits of minimum-width integer types */
 
280
 
 
281
/* Here we assume a standard architecture where the hardware integer
 
282
   types have 8, 16, 32, optionally 64 bits. Therefore the leastN_t types
 
283
   are the same as the corresponding N_t types.  */
 
284
 
 
285
#undef INT_LEAST8_MIN
 
286
#undef INT_LEAST8_MAX
 
287
#undef UINT_LEAST8_MAX
 
288
#define INT_LEAST8_MIN  INT8_MIN
 
289
#define INT_LEAST8_MAX  INT8_MAX
 
290
#define UINT_LEAST8_MAX  UINT8_MAX
 
291
 
 
292
#undef INT_LEAST16_MIN
 
293
#undef INT_LEAST16_MAX
 
294
#undef UINT_LEAST16_MAX
 
295
#define INT_LEAST16_MIN  INT16_MIN
 
296
#define INT_LEAST16_MAX  INT16_MAX
 
297
#define UINT_LEAST16_MAX  UINT16_MAX
 
298
 
 
299
#undef INT_LEAST32_MIN
 
300
#undef INT_LEAST32_MAX
 
301
#undef UINT_LEAST32_MAX
 
302
#define INT_LEAST32_MIN  INT32_MIN
 
303
#define INT_LEAST32_MAX  INT32_MAX
 
304
#define UINT_LEAST32_MAX  UINT32_MAX
 
305
 
 
306
#undef INT_LEAST64_MIN
 
307
#undef INT_LEAST64_MAX
 
308
#ifdef int64_t
 
309
# define INT_LEAST64_MIN  INT64_MIN
 
310
# define INT_LEAST64_MAX  INT64_MAX
 
311
#endif
 
312
 
 
313
#undef UINT_LEAST64_MAX
 
314
#ifdef uint64_t
 
315
# define UINT_LEAST64_MAX  UINT64_MAX
 
316
#endif
 
317
 
 
318
/* 7.18.2.3. Limits of fastest minimum-width integer types */
 
319
 
 
320
/* Here we assume a standard architecture where the hardware integer
 
321
   types have 8, 16, 32, optionally 64 bits. Therefore the fastN_t types
 
322
   are taken from the same list of types.  */
 
323
 
 
324
#undef INT_FAST8_MIN
 
325
#undef INT_FAST8_MAX
 
326
#undef UINT_FAST8_MAX
 
327
#define INT_FAST8_MIN  LONG_MIN
 
328
#define INT_FAST8_MAX  LONG_MAX
 
329
#define UINT_FAST8_MAX  ULONG_MAX
 
330
 
 
331
#undef INT_FAST16_MIN
 
332
#undef INT_FAST16_MAX
 
333
#undef UINT_FAST16_MAX
 
334
#define INT_FAST16_MIN  LONG_MIN
 
335
#define INT_FAST16_MAX  LONG_MAX
 
336
#define UINT_FAST16_MAX  ULONG_MAX
 
337
 
 
338
#undef INT_FAST32_MIN
 
339
#undef INT_FAST32_MAX
 
340
#undef UINT_FAST32_MAX
 
341
#define INT_FAST32_MIN  LONG_MIN
 
342
#define INT_FAST32_MAX  LONG_MAX
 
343
#define UINT_FAST32_MAX  ULONG_MAX
 
344
 
 
345
#undef INT_FAST64_MIN
 
346
#undef INT_FAST64_MAX
 
347
#ifdef int64_t
 
348
# define INT_FAST64_MIN  INT64_MIN
 
349
# define INT_FAST64_MAX  INT64_MAX
 
350
#endif
 
351
 
 
352
#undef UINT_FAST64_MAX
 
353
#ifdef uint64_t
 
354
# define UINT_FAST64_MAX  UINT64_MAX
 
355
#endif
 
356
 
 
357
/* 7.18.2.4. Limits of integer types capable of holding object pointers */
 
358
 
 
359
#undef INTPTR_MIN
 
360
#undef INTPTR_MAX
 
361
#undef UINTPTR_MAX
 
362
#define INTPTR_MIN  LONG_MIN
 
363
#define INTPTR_MAX  LONG_MAX
 
364
#define UINTPTR_MAX  ULONG_MAX
 
365
 
 
366
/* 7.18.2.5. Limits of greatest-width integer types */
 
367
 
 
368
#undef INTMAX_MIN
 
369
#undef INTMAX_MAX
 
370
#define INTMAX_MIN  (~ INTMAX_MAX)
 
371
#ifdef INT64_MAX
 
372
# define INTMAX_MAX  INT64_MAX
 
373
#else
 
374
# define INTMAX_MAX  INT32_MAX
 
375
#endif
 
376
 
 
377
#undef UINTMAX_MAX
 
378
#ifdef UINT64_MAX
 
379
# define UINTMAX_MAX  UINT64_MAX
 
380
#else
 
381
# define UINTMAX_MAX  UINT32_MAX
 
382
#endif
 
383
 
 
384
/* 7.18.3. Limits of other integer types */
 
385
 
 
386
/* ptrdiff_t limits */
 
387
#undef PTRDIFF_MIN
 
388
#undef PTRDIFF_MAX
 
389
#define PTRDIFF_MIN  \
 
390
   _STDINT_MIN (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
 
391
#define PTRDIFF_MAX  \
 
392
   _STDINT_MAX (1, @BITSIZEOF_PTRDIFF_T@, 0@PTRDIFF_T_SUFFIX@)
 
393
 
 
394
/* sig_atomic_t limits */
 
395
#undef SIG_ATOMIC_MIN
 
396
#undef SIG_ATOMIC_MAX
 
397
#define SIG_ATOMIC_MIN  \
 
398
   _STDINT_MIN (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
 
399
                0@SIG_ATOMIC_T_SUFFIX@)
 
400
#define SIG_ATOMIC_MAX  \
 
401
   _STDINT_MAX (@HAVE_SIGNED_SIG_ATOMIC_T@, @BITSIZEOF_SIG_ATOMIC_T@, \
 
402
                0@SIG_ATOMIC_T_SUFFIX@)
 
403
 
 
404
 
 
405
/* size_t limit */
 
406
#undef SIZE_MAX
 
407
#define SIZE_MAX  _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
 
408
 
 
409
/* wchar_t limits */
 
410
#undef WCHAR_MIN
 
411
#undef WCHAR_MAX
 
412
#define WCHAR_MIN  \
 
413
   _STDINT_MIN (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
 
414
#define WCHAR_MAX  \
 
415
   _STDINT_MAX (@HAVE_SIGNED_WCHAR_T@, @BITSIZEOF_WCHAR_T@, 0@WCHAR_T_SUFFIX@)
 
416
 
 
417
/* wint_t limits */
 
418
#undef WINT_MIN
 
419
#undef WINT_MAX
 
420
#define WINT_MIN  \
 
421
   _STDINT_MIN (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
 
422
#define WINT_MAX  \
 
423
   _STDINT_MAX (@HAVE_SIGNED_WINT_T@, @BITSIZEOF_WINT_T@, 0@WINT_T_SUFFIX@)
 
424
 
 
425
#endif /* !defined __cplusplus || defined __STDC_LIMIT_MACROS */
 
426
 
 
427
/* 7.18.4. Macros for integer constants */
 
428
 
 
429
#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
 
430
 
 
431
/* 7.18.4.1. Macros for minimum-width integer constants */
 
432
/* According to ISO C 99 Technical Corrigendum 1 */
 
433
 
 
434
/* Here we assume a standard architecture where the hardware integer
 
435
   types have 8, 16, 32, optionally 64 bits, and int is 32 bits.  */
 
436
 
 
437
#undef INT8_C
 
438
#undef UINT8_C
 
439
#define INT8_C(x) x
 
440
#define UINT8_C(x) x
 
441
 
 
442
#undef INT16_C
 
443
#undef UINT16_C
 
444
#define INT16_C(x) x
 
445
#define UINT16_C(x) x
 
446
 
 
447
#undef INT32_C
 
448
#undef UINT32_C
 
449
#define INT32_C(x) x
 
450
#define UINT32_C(x) x ## U
 
451
 
 
452
#undef INT64_C
 
453
#undef UINT64_C
 
454
#if LONG_MAX >> 31 >> 31 == 1
 
455
# define INT64_C(x) x##L
 
456
#elif defined _MSC_VER
 
457
# define INT64_C(x) x##i64
 
458
#elif @HAVE_LONG_LONG_INT@
 
459
# define INT64_C(x) x##LL
 
460
#endif
 
461
#if ULONG_MAX >> 31 >> 31 >> 1 == 1
 
462
# define UINT64_C(x) x##UL
 
463
#elif defined _MSC_VER
 
464
# define UINT64_C(x) x##ui64
 
465
#elif @HAVE_UNSIGNED_LONG_LONG_INT@
 
466
# define UINT64_C(x) x##ULL
 
467
#endif
 
468
 
 
469
/* 7.18.4.2. Macros for greatest-width integer constants */
 
470
 
 
471
#undef INTMAX_C
 
472
#if @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
 
473
# define INTMAX_C(x)   x##LL
 
474
#elif defined int64_t
 
475
# define INTMAX_C(x)   INT64_C(x)
 
476
#else
 
477
# define INTMAX_C(x)   x##L
 
478
#endif
 
479
 
 
480
#undef UINTMAX_C
 
481
#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
 
482
# define UINTMAX_C(x)  x##ULL
 
483
#elif defined uint64_t
 
484
# define UINTMAX_C(x)  UINT64_C(x)
 
485
#else
 
486
# define UINTMAX_C(x)  x##UL
 
487
#endif
 
488
 
 
489
#endif /* !defined __cplusplus || defined __STDC_CONSTANT_MACROS */
 
490
 
 
491
#endif /* _GL_STDINT_H */