Warn when fseek or ftell are used.
[gnulib.git] / lib / inttypes_.h
1 /* Copyright (C) 2006-2007 Free Software Foundation, Inc.
2    Written by Paul Eggert, Bruno Haible, Derek Price.
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 Lesser General Public License as published by
7    the Free Software Foundation; either version 2.1, 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 Lesser General Public License
16    along with this program; if not, write to the Free Software Foundation,
17    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
18
19 /* Include the original <inttypes.h> if it exists, and if this file
20    has not been included yet or if this file includes gnulib stdint.h
21    which in turn includes this file.  */
22 #if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
23 # if @HAVE_INTTYPES_H@
24 #  if defined __DECC && __DECC_VER >= 60000000
25 #   include_next <inttypes.h>
26 #  else
27 #   include @ABSOLUTE_INTTYPES_H@
28 #  endif
29 # endif
30 #endif
31
32 #if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
33 #define INTTYPES_H
34
35 /*
36  * ISO C 99 <inttypes.h> for platforms that lack it.
37  * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
38  */
39
40 /* Include <stdint.h> or the gnulib replacement.  */
41 #include <stdint.h>
42 /* Get CHAR_BIT.  */
43 #include <limits.h>
44
45 #if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX)
46 # error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
47 #endif
48
49 /* The definition of GL_LINK_WARNING is copied here.  */
50
51 /* 7.8.1 Macros for format specifiers */
52
53 #if ! defined __cplusplus || defined __STDC_FORMAT_MACROS
54
55 # if defined _TNS_R_TARGET
56    /* Tandem NonStop R series and compatible platforms released before
57       July 2005 support %Ld but not %lld.  */
58 #  define _LONG_LONG_FORMAT_PREFIX "L"
59 # else
60 #  define _LONG_LONG_FORMAT_PREFIX "ll"
61 # endif
62
63 # if !defined PRId8 || @PRI_MACROS_BROKEN@
64 #  undef PRId8
65 #  ifdef INT8_MAX
66 #   define PRId8 "d"
67 #  endif
68 # endif
69 # if !defined PRIi8 || @PRI_MACROS_BROKEN@
70 #  undef PRIi8
71 #  ifdef INT8_MAX
72 #   define PRIi8 "i"
73 #  endif
74 # endif
75 # if !defined PRIo8 || @PRI_MACROS_BROKEN@
76 #  undef PRIo8
77 #  ifdef UINT8_MAX
78 #   define PRIo8 "o"
79 #  endif
80 # endif
81 # if !defined PRIu8 || @PRI_MACROS_BROKEN@
82 #  undef PRIu8
83 #  ifdef UINT8_MAX
84 #   define PRIu8 "u"
85 #  endif
86 # endif
87 # if !defined PRIx8 || @PRI_MACROS_BROKEN@
88 #  undef PRIx8
89 #  ifdef UINT8_MAX
90 #   define PRIx8 "x"
91 #  endif
92 # endif
93 # if !defined PRIX8 || @PRI_MACROS_BROKEN@
94 #  undef PRIX8
95 #  ifdef UINT8_MAX
96 #   define PRIX8 "X"
97 #  endif
98 # endif
99 # if !defined PRId16 || @PRI_MACROS_BROKEN@
100 #  undef PRId16
101 #  ifdef INT16_MAX
102 #   define PRId16 "d"
103 #  endif
104 # endif
105 # if !defined PRIi16 || @PRI_MACROS_BROKEN@
106 #  undef PRIi16
107 #  ifdef INT16_MAX
108 #   define PRIi16 "i"
109 #  endif
110 # endif
111 # if !defined PRIo16 || @PRI_MACROS_BROKEN@
112 #  undef PRIo16
113 #  ifdef UINT16_MAX
114 #   define PRIo16 "o"
115 #  endif
116 # endif
117 # if !defined PRIu16 || @PRI_MACROS_BROKEN@
118 #  undef PRIu16
119 #  ifdef UINT16_MAX
120 #   define PRIu16 "u"
121 #  endif
122 # endif
123 # if !defined PRIx16 || @PRI_MACROS_BROKEN@
124 #  undef PRIx16
125 #  ifdef UINT16_MAX
126 #   define PRIx16 "x"
127 #  endif
128 # endif
129 # if !defined PRIX16 || @PRI_MACROS_BROKEN@
130 #  undef PRIX16
131 #  ifdef UINT16_MAX
132 #   define PRIX16 "X"
133 #  endif
134 # endif
135 # if !defined PRId32 || @PRI_MACROS_BROKEN@
136 #  undef PRId32
137 #  ifdef INT32_MAX
138 #   define PRId32 "d"
139 #  endif
140 # endif
141 # if !defined PRIi32 || @PRI_MACROS_BROKEN@
142 #  undef PRIi32
143 #  ifdef INT32_MAX
144 #   define PRIi32 "i"
145 #  endif
146 # endif
147 # if !defined PRIo32 || @PRI_MACROS_BROKEN@
148 #  undef PRIo32
149 #  ifdef UINT32_MAX
150 #   define PRIo32 "o"
151 #  endif
152 # endif
153 # if !defined PRIu32 || @PRI_MACROS_BROKEN@
154 #  undef PRIu32
155 #  ifdef UINT32_MAX
156 #   define PRIu32 "u"
157 #  endif
158 # endif
159 # if !defined PRIx32 || @PRI_MACROS_BROKEN@
160 #  undef PRIx32
161 #  ifdef UINT32_MAX
162 #   define PRIx32 "x"
163 #  endif
164 # endif
165 # if !defined PRIX32 || @PRI_MACROS_BROKEN@
166 #  undef PRIX32
167 #  ifdef UINT32_MAX
168 #   define PRIX32 "X"
169 #  endif
170 # endif
171 # ifdef INT64_MAX
172 #  if INT64_MAX == LONG_MAX
173 #   define _PRI64_PREFIX "l"
174 #  elif defined _MSC_VER || defined __MINGW32__
175 #   define _PRI64_PREFIX "I64"
176 #  elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
177 #   define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
178 #  endif
179 #  if !defined PRId64 || @PRI_MACROS_BROKEN@
180 #   undef PRId64
181 #   define PRId64 _PRI64_PREFIX "d"
182 #  endif
183 #  if !defined PRIi64 || @PRI_MACROS_BROKEN@
184 #   undef PRIi64
185 #   define PRIi64 _PRI64_PREFIX "i"
186 #  endif
187 # endif
188 # ifdef UINT64_MAX
189 #  if UINT64_MAX == ULONG_MAX
190 #   define _PRIu64_PREFIX "l"
191 #  elif defined _MSC_VER || defined __MINGW32__
192 #   define _PRIu64_PREFIX "I64"
193 #  elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
194 #   define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
195 #  endif
196 #  if !defined PRIo64 || @PRI_MACROS_BROKEN@
197 #   undef PRIo64
198 #   define PRIo64 _PRIu64_PREFIX "o"
199 #  endif
200 #  if !defined PRIu64 || @PRI_MACROS_BROKEN@
201 #   undef PRIu64
202 #   define PRIu64 _PRIu64_PREFIX "u"
203 #  endif
204 #  if !defined PRIx64 || @PRI_MACROS_BROKEN@
205 #   undef PRIx64
206 #   define PRIx64 _PRIu64_PREFIX "x"
207 #  endif
208 #  if !defined PRIX64 || @PRI_MACROS_BROKEN@
209 #   undef PRIX64
210 #   define PRIX64 _PRIu64_PREFIX "X"
211 #  endif
212 # endif
213
214 # if !defined PRIdLEAST8 || @PRI_MACROS_BROKEN@
215 #  undef PRIdLEAST8
216 #  define PRIdLEAST8 "d"
217 # endif
218 # if !defined PRIiLEAST8 || @PRI_MACROS_BROKEN@
219 #  undef PRIiLEAST8
220 #  define PRIiLEAST8 "i"
221 # endif
222 # if !defined PRIoLEAST8 || @PRI_MACROS_BROKEN@
223 #  undef PRIoLEAST8
224 #  define PRIoLEAST8 "o"
225 # endif
226 # if !defined PRIuLEAST8 || @PRI_MACROS_BROKEN@
227 #  undef PRIuLEAST8
228 #  define PRIuLEAST8 "u"
229 # endif
230 # if !defined PRIxLEAST8 || @PRI_MACROS_BROKEN@
231 #  undef PRIxLEAST8
232 #  define PRIxLEAST8 "x"
233 # endif
234 # if !defined PRIXLEAST8 || @PRI_MACROS_BROKEN@
235 #  undef PRIXLEAST8
236 #  define PRIXLEAST8 "X"
237 # endif
238 # if !defined PRIdLEAST16 || @PRI_MACROS_BROKEN@
239 #  undef PRIdLEAST16
240 #  define PRIdLEAST16 "d"
241 # endif
242 # if !defined PRIiLEAST16 || @PRI_MACROS_BROKEN@
243 #  undef PRIiLEAST16
244 #  define PRIiLEAST16 "i"
245 # endif
246 # if !defined PRIoLEAST16 || @PRI_MACROS_BROKEN@
247 #  undef PRIoLEAST16
248 #  define PRIoLEAST16 "o"
249 # endif
250 # if !defined PRIuLEAST16 || @PRI_MACROS_BROKEN@
251 #  undef PRIuLEAST16
252 #  define PRIuLEAST16 "u"
253 # endif
254 # if !defined PRIxLEAST16 || @PRI_MACROS_BROKEN@
255 #  undef PRIxLEAST16
256 #  define PRIxLEAST16 "x"
257 # endif
258 # if !defined PRIXLEAST16 || @PRI_MACROS_BROKEN@
259 #  undef PRIXLEAST16
260 #  define PRIXLEAST16 "X"
261 # endif
262 # if !defined PRIdLEAST32 || @PRI_MACROS_BROKEN@
263 #  undef PRIdLEAST32
264 #  define PRIdLEAST32 "d"
265 # endif
266 # if !defined PRIiLEAST32 || @PRI_MACROS_BROKEN@
267 #  undef PRIiLEAST32
268 #  define PRIiLEAST32 "i"
269 # endif
270 # if !defined PRIoLEAST32 || @PRI_MACROS_BROKEN@
271 #  undef PRIoLEAST32
272 #  define PRIoLEAST32 "o"
273 # endif
274 # if !defined PRIuLEAST32 || @PRI_MACROS_BROKEN@
275 #  undef PRIuLEAST32
276 #  define PRIuLEAST32 "u"
277 # endif
278 # if !defined PRIxLEAST32 || @PRI_MACROS_BROKEN@
279 #  undef PRIxLEAST32
280 #  define PRIxLEAST32 "x"
281 # endif
282 # if !defined PRIXLEAST32 || @PRI_MACROS_BROKEN@
283 #  undef PRIXLEAST32
284 #  define PRIXLEAST32 "X"
285 # endif
286 # ifdef INT64_MAX
287 #  if !defined PRIdLEAST64 || @PRI_MACROS_BROKEN@
288 #   undef PRIdLEAST64
289 #   define PRIdLEAST64 PRId64
290 #  endif
291 #  if !defined PRIiLEAST64 || @PRI_MACROS_BROKEN@
292 #   undef PRIiLEAST64
293 #   define PRIiLEAST64 PRIi64
294 #  endif
295 # endif
296 # ifdef UINT64_MAX
297 #  if !defined PRIoLEAST64 || @PRI_MACROS_BROKEN@
298 #   undef PRIoLEAST64
299 #   define PRIoLEAST64 PRIo64
300 #  endif
301 #  if !defined PRIuLEAST64 || @PRI_MACROS_BROKEN@
302 #   undef PRIuLEAST64
303 #   define PRIuLEAST64 PRIu64
304 #  endif
305 #  if !defined PRIxLEAST64 || @PRI_MACROS_BROKEN@
306 #   undef PRIxLEAST64
307 #   define PRIxLEAST64 PRIx64
308 #  endif
309 #  if !defined PRIXLEAST64 || @PRI_MACROS_BROKEN@
310 #   undef PRIXLEAST64
311 #   define PRIXLEAST64 PRIX64
312 #  endif
313 # endif
314
315 # if !defined PRIdFAST8 || @PRI_MACROS_BROKEN@
316 #  undef PRIdFAST8
317 #  if INT_FAST8_MAX > INT32_MAX
318 #   define PRIdFAST8 PRId64
319 #  else
320 #   define PRIdFAST8 "d"
321 #  endif
322 # endif
323 # if !defined PRIiFAST8 || @PRI_MACROS_BROKEN@
324 #  undef PRIiFAST8
325 #  if INT_FAST8_MAX > INT32_MAX
326 #   define PRIiFAST8 PRIi64
327 #  else
328 #   define PRIiFAST8 "i"
329 #  endif
330 # endif
331 # if !defined PRIoFAST8 || @PRI_MACROS_BROKEN@
332 #  undef PRIoFAST8
333 #  if UINT_FAST8_MAX > UINT32_MAX
334 #   define PRIoFAST8 PRIo64
335 #  else
336 #   define PRIoFAST8 "o"
337 #  endif
338 # endif
339 # if !defined PRIuFAST8 || @PRI_MACROS_BROKEN@
340 #  undef PRIuFAST8
341 #  if UINT_FAST8_MAX > UINT32_MAX
342 #   define PRIuFAST8 PRIu64
343 #  else
344 #   define PRIuFAST8 "u"
345 #  endif
346 # endif
347 # if !defined PRIxFAST8 || @PRI_MACROS_BROKEN@
348 #  undef PRIxFAST8
349 #  if UINT_FAST8_MAX > UINT32_MAX
350 #   define PRIxFAST8 PRIx64
351 #  else
352 #   define PRIxFAST8 "x"
353 #  endif
354 # endif
355 # if !defined PRIXFAST8 || @PRI_MACROS_BROKEN@
356 #  undef PRIXFAST8
357 #  if UINT_FAST8_MAX > UINT32_MAX
358 #   define PRIXFAST8 PRIX64
359 #  else
360 #   define PRIXFAST8 "X"
361 #  endif
362 # endif
363 # if !defined PRIdFAST16 || @PRI_MACROS_BROKEN@
364 #  undef PRIdFAST16
365 #  if INT_FAST16_MAX > INT32_MAX
366 #   define PRIdFAST16 PRId64
367 #  else
368 #   define PRIdFAST16 "d"
369 #  endif
370 # endif
371 # if !defined PRIiFAST16 || @PRI_MACROS_BROKEN@
372 #  undef PRIiFAST16
373 #  if INT_FAST16_MAX > INT32_MAX
374 #   define PRIiFAST16 PRIi64
375 #  else
376 #   define PRIiFAST16 "i"
377 #  endif
378 # endif
379 # if !defined PRIoFAST16 || @PRI_MACROS_BROKEN@
380 #  undef PRIoFAST16
381 #  if UINT_FAST16_MAX > UINT32_MAX
382 #   define PRIoFAST16 PRIo64
383 #  else
384 #   define PRIoFAST16 "o"
385 #  endif
386 # endif
387 # if !defined PRIuFAST16 || @PRI_MACROS_BROKEN@
388 #  undef PRIuFAST16
389 #  if UINT_FAST16_MAX > UINT32_MAX
390 #   define PRIuFAST16 PRIu64
391 #  else
392 #   define PRIuFAST16 "u"
393 #  endif
394 # endif
395 # if !defined PRIxFAST16 || @PRI_MACROS_BROKEN@
396 #  undef PRIxFAST16
397 #  if UINT_FAST16_MAX > UINT32_MAX
398 #   define PRIxFAST16 PRIx64
399 #  else
400 #   define PRIxFAST16 "x"
401 #  endif
402 # endif
403 # if !defined PRIXFAST16 || @PRI_MACROS_BROKEN@
404 #  undef PRIXFAST16
405 #  if UINT_FAST16_MAX > UINT32_MAX
406 #   define PRIXFAST16 PRIX64
407 #  else
408 #   define PRIXFAST16 "X"
409 #  endif
410 # endif
411 # if !defined PRIdFAST32 || @PRI_MACROS_BROKEN@
412 #  undef PRIdFAST32
413 #  if INT_FAST32_MAX > INT32_MAX
414 #   define PRIdFAST32 PRId64
415 #  else
416 #   define PRIdFAST32 "d"
417 #  endif
418 # endif
419 # if !defined PRIiFAST32 || @PRI_MACROS_BROKEN@
420 #  undef PRIiFAST32
421 #  if INT_FAST32_MAX > INT32_MAX
422 #   define PRIiFAST32 PRIi64
423 #  else
424 #   define PRIiFAST32 "i"
425 #  endif
426 # endif
427 # if !defined PRIoFAST32 || @PRI_MACROS_BROKEN@
428 #  undef PRIoFAST32
429 #  if UINT_FAST32_MAX > UINT32_MAX
430 #   define PRIoFAST32 PRIo64
431 #  else
432 #   define PRIoFAST32 "o"
433 #  endif
434 # endif
435 # if !defined PRIuFAST32 || @PRI_MACROS_BROKEN@
436 #  undef PRIuFAST32
437 #  if UINT_FAST32_MAX > UINT32_MAX
438 #   define PRIuFAST32 PRIu64
439 #  else
440 #   define PRIuFAST32 "u"
441 #  endif
442 # endif
443 # if !defined PRIxFAST32 || @PRI_MACROS_BROKEN@
444 #  undef PRIxFAST32
445 #  if UINT_FAST32_MAX > UINT32_MAX
446 #   define PRIxFAST32 PRIx64
447 #  else
448 #   define PRIxFAST32 "x"
449 #  endif
450 # endif
451 # if !defined PRIXFAST32 || @PRI_MACROS_BROKEN@
452 #  undef PRIXFAST32
453 #  if UINT_FAST32_MAX > UINT32_MAX
454 #   define PRIXFAST32 PRIX64
455 #  else
456 #   define PRIXFAST32 "X"
457 #  endif
458 # endif
459 # ifdef INT64_MAX
460 #  if !defined PRIdFAST64 || @PRI_MACROS_BROKEN@
461 #   undef PRIdFAST64
462 #   define PRIdFAST64 PRId64
463 #  endif
464 #  if !defined PRIiFAST64 || @PRI_MACROS_BROKEN@
465 #   undef PRIiFAST64
466 #   define PRIiFAST64 PRIi64
467 #  endif
468 # endif
469 # ifdef UINT64_MAX
470 #  if !defined PRIoFAST64 || @PRI_MACROS_BROKEN@
471 #   undef PRIoFAST64
472 #   define PRIoFAST64 PRIo64
473 #  endif
474 #  if !defined PRIuFAST64 || @PRI_MACROS_BROKEN@
475 #   undef PRIuFAST64
476 #   define PRIuFAST64 PRIu64
477 #  endif
478 #  if !defined PRIxFAST64 || @PRI_MACROS_BROKEN@
479 #   undef PRIxFAST64
480 #   define PRIxFAST64 PRIx64
481 #  endif
482 #  if !defined PRIXFAST64 || @PRI_MACROS_BROKEN@
483 #   undef PRIXFAST64
484 #   define PRIXFAST64 PRIX64
485 #  endif
486 # endif
487
488 # if !defined PRIdMAX || @PRI_MACROS_BROKEN@
489 #  undef PRIdMAX
490 #  if INTMAX_MAX > INT32_MAX
491 #   define PRIdMAX PRId64
492 #  else
493 #   define PRIdMAX "ld"
494 #  endif
495 # endif
496 # if !defined PRIiMAX || @PRI_MACROS_BROKEN@
497 #  undef PRIiMAX
498 #  if INTMAX_MAX > INT32_MAX
499 #   define PRIiMAX PRIi64
500 #  else
501 #   define PRIiMAX "li"
502 #  endif
503 # endif
504 # if !defined PRIoMAX || @PRI_MACROS_BROKEN@
505 #  undef PRIoMAX
506 #  if UINTMAX_MAX > UINT32_MAX
507 #   define PRIoMAX PRIo64
508 #  else
509 #   define PRIoMAX "lo"
510 #  endif
511 # endif
512 # if !defined PRIuMAX || @PRI_MACROS_BROKEN@
513 #  undef PRIuMAX
514 #  if UINTMAX_MAX > UINT32_MAX
515 #   define PRIuMAX PRIu64
516 #  else
517 #   define PRIuMAX "lu"
518 #  endif
519 # endif
520 # if !defined PRIxMAX || @PRI_MACROS_BROKEN@
521 #  undef PRIxMAX
522 #  if UINTMAX_MAX > UINT32_MAX
523 #   define PRIxMAX PRIx64
524 #  else
525 #   define PRIxMAX "lx"
526 #  endif
527 # endif
528 # if !defined PRIXMAX || @PRI_MACROS_BROKEN@
529 #  undef PRIXMAX
530 #  if UINTMAX_MAX > UINT32_MAX
531 #   define PRIXMAX PRIX64
532 #  else
533 #   define PRIXMAX "lX"
534 #  endif
535 # endif
536
537 # if !defined PRIdPTR || @PRI_MACROS_BROKEN@
538 #  undef PRIdPTR
539 #  ifdef INTPTR_MAX
540 #   define PRIdPTR @PRIPTR_PREFIX@ "d"
541 #  endif
542 # endif
543 # if !defined PRIiPTR || @PRI_MACROS_BROKEN@
544 #  undef PRIiPTR
545 #  ifdef INTPTR_MAX
546 #   define PRIiPTR @PRIPTR_PREFIX@ "i"
547 #  endif
548 # endif
549 # if !defined PRIoPTR || @PRI_MACROS_BROKEN@
550 #  undef PRIoPTR
551 #  ifdef UINTPTR_MAX
552 #   define PRIoPTR @PRIPTR_PREFIX@ "o"
553 #  endif
554 # endif
555 # if !defined PRIuPTR || @PRI_MACROS_BROKEN@
556 #  undef PRIuPTR
557 #  ifdef UINTPTR_MAX
558 #   define PRIuPTR @PRIPTR_PREFIX@ "u"
559 #  endif
560 # endif
561 # if !defined PRIxPTR || @PRI_MACROS_BROKEN@
562 #  undef PRIxPTR
563 #  ifdef UINTPTR_MAX
564 #   define PRIxPTR @PRIPTR_PREFIX@ "x"
565 #  endif
566 # endif
567 # if !defined PRIXPTR || @PRI_MACROS_BROKEN@
568 #  undef PRIXPTR
569 #  ifdef UINTPTR_MAX
570 #   define PRIXPTR @PRIPTR_PREFIX@ "X"
571 #  endif
572 # endif
573
574 # if !defined SCNd8 || @PRI_MACROS_BROKEN@
575 #  undef SCNd8
576 #  ifdef INT8_MAX
577 #   define SCNd8 "hhd"
578 #  endif
579 # endif
580 # if !defined SCNi8 || @PRI_MACROS_BROKEN@
581 #  undef SCNi8
582 #  ifdef INT8_MAX
583 #   define SCNi8 "hhi"
584 #  endif
585 # endif
586 # if !defined SCNo8 || @PRI_MACROS_BROKEN@
587 #  undef SCNo8
588 #  ifdef UINT8_MAX
589 #   define SCNo8 "hho"
590 #  endif
591 # endif
592 # if !defined SCNu8 || @PRI_MACROS_BROKEN@
593 #  undef SCNu8
594 #  ifdef UINT8_MAX
595 #   define SCNu8 "hhu"
596 #  endif
597 # endif
598 # if !defined SCNx8 || @PRI_MACROS_BROKEN@
599 #  undef SCNx8
600 #  ifdef UINT8_MAX
601 #   define SCNx8 "hhx"
602 #  endif
603 # endif
604 # if !defined SCNd16 || @PRI_MACROS_BROKEN@
605 #  undef SCNd16
606 #  ifdef INT16_MAX
607 #   define SCNd16 "hd"
608 #  endif
609 # endif
610 # if !defined SCNi16 || @PRI_MACROS_BROKEN@
611 #  undef SCNi16
612 #  ifdef INT16_MAX
613 #   define SCNi16 "hi"
614 #  endif
615 # endif
616 # if !defined SCNo16 || @PRI_MACROS_BROKEN@
617 #  undef SCNo16
618 #  ifdef UINT16_MAX
619 #   define SCNo16 "ho"
620 #  endif
621 # endif
622 # if !defined SCNu16 || @PRI_MACROS_BROKEN@
623 #  undef SCNu16
624 #  ifdef UINT16_MAX
625 #   define SCNu16 "hu"
626 #  endif
627 # endif
628 # if !defined SCNx16 || @PRI_MACROS_BROKEN@
629 #  undef SCNx16
630 #  ifdef UINT16_MAX
631 #   define SCNx16 "hx"
632 #  endif
633 # endif
634 # if !defined SCNd32 || @PRI_MACROS_BROKEN@
635 #  undef SCNd32
636 #  ifdef INT32_MAX
637 #   define SCNd32 "d"
638 #  endif
639 # endif
640 # if !defined SCNi32 || @PRI_MACROS_BROKEN@
641 #  undef SCNi32
642 #  ifdef INT32_MAX
643 #   define SCNi32 "i"
644 #  endif
645 # endif
646 # if !defined SCNo32 || @PRI_MACROS_BROKEN@
647 #  undef SCNo32
648 #  ifdef UINT32_MAX
649 #   define SCNo32 "o"
650 #  endif
651 # endif
652 # if !defined SCNu32 || @PRI_MACROS_BROKEN@
653 #  undef SCNu32
654 #  ifdef UINT32_MAX
655 #   define SCNu32 "u"
656 #  endif
657 # endif
658 # if !defined SCNx32 || @PRI_MACROS_BROKEN@
659 #  undef SCNx32
660 #  ifdef UINT32_MAX
661 #   define SCNx32 "x"
662 #  endif
663 # endif
664 # ifdef INT64_MAX
665 #  if INT64_MAX == LONG_MAX
666 #   define _SCN64_PREFIX "l"
667 #  elif defined _MSC_VER || defined __MINGW32__
668 #   define _SCN64_PREFIX "I64"
669 #  elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
670 #   define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
671 #  endif
672 #  if !defined SCNd64 || @PRI_MACROS_BROKEN@
673 #   undef SCNd64
674 #   define SCNd64 _SCN64_PREFIX "d"
675 #  endif
676 #  if !defined SCNi64 || @PRI_MACROS_BROKEN@
677 #   undef SCNi64
678 #   define SCNi64 _SCN64_PREFIX "i"
679 #  endif
680 # endif
681 # ifdef UINT64_MAX
682 #  if UINT64_MAX == ULONG_MAX
683 #   define _SCNu64_PREFIX "l"
684 #  elif defined _MSC_VER || defined __MINGW32__
685 #   define _SCNu64_PREFIX "I64"
686 #  elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
687 #   define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
688 #  endif
689 #  if !defined SCNo64 || @PRI_MACROS_BROKEN@
690 #   undef SCNo64
691 #   define SCNo64 _SCNu64_PREFIX "o"
692 #  endif
693 #  if !defined SCNu64 || @PRI_MACROS_BROKEN@
694 #   undef SCNu64
695 #   define SCNu64 _SCNu64_PREFIX "u"
696 #  endif
697 #  if !defined SCNx64 || @PRI_MACROS_BROKEN@
698 #   undef SCNx64
699 #   define SCNx64 _SCNu64_PREFIX "x"
700 #  endif
701 # endif
702
703 # if !defined SCNdLEAST8 || @PRI_MACROS_BROKEN@
704 #  undef SCNdLEAST8
705 #  define SCNdLEAST8 "hhd"
706 # endif
707 # if !defined SCNiLEAST8 || @PRI_MACROS_BROKEN@
708 #  undef SCNiLEAST8
709 #  define SCNiLEAST8 "hhi"
710 # endif
711 # if !defined SCNoLEAST8 || @PRI_MACROS_BROKEN@
712 #  undef SCNoLEAST8
713 #  define SCNoLEAST8 "hho"
714 # endif
715 # if !defined SCNuLEAST8 || @PRI_MACROS_BROKEN@
716 #  undef SCNuLEAST8
717 #  define SCNuLEAST8 "hhu"
718 # endif
719 # if !defined SCNxLEAST8 || @PRI_MACROS_BROKEN@
720 #  undef SCNxLEAST8
721 #  define SCNxLEAST8 "hhx"
722 # endif
723 # if !defined SCNdLEAST16 || @PRI_MACROS_BROKEN@
724 #  undef SCNdLEAST16
725 #  define SCNdLEAST16 "hd"
726 # endif
727 # if !defined SCNiLEAST16 || @PRI_MACROS_BROKEN@
728 #  undef SCNiLEAST16
729 #  define SCNiLEAST16 "hi"
730 # endif
731 # if !defined SCNoLEAST16 || @PRI_MACROS_BROKEN@
732 #  undef SCNoLEAST16
733 #  define SCNoLEAST16 "ho"
734 # endif
735 # if !defined SCNuLEAST16 || @PRI_MACROS_BROKEN@
736 #  undef SCNuLEAST16
737 #  define SCNuLEAST16 "hu"
738 # endif
739 # if !defined SCNxLEAST16 || @PRI_MACROS_BROKEN@
740 #  undef SCNxLEAST16
741 #  define SCNxLEAST16 "hx"
742 # endif
743 # if !defined SCNdLEAST32 || @PRI_MACROS_BROKEN@
744 #  undef SCNdLEAST32
745 #  define SCNdLEAST32 "d"
746 # endif
747 # if !defined SCNiLEAST32 || @PRI_MACROS_BROKEN@
748 #  undef SCNiLEAST32
749 #  define SCNiLEAST32 "i"
750 # endif
751 # if !defined SCNoLEAST32 || @PRI_MACROS_BROKEN@
752 #  undef SCNoLEAST32
753 #  define SCNoLEAST32 "o"
754 # endif
755 # if !defined SCNuLEAST32 || @PRI_MACROS_BROKEN@
756 #  undef SCNuLEAST32
757 #  define SCNuLEAST32 "u"
758 # endif
759 # if !defined SCNxLEAST32 || @PRI_MACROS_BROKEN@
760 #  undef SCNxLEAST32
761 #  define SCNxLEAST32 "x"
762 # endif
763 # ifdef INT64_MAX
764 #  if !defined SCNdLEAST64 || @PRI_MACROS_BROKEN@
765 #   undef SCNdLEAST64
766 #   define SCNdLEAST64 SCNd64
767 #  endif
768 #  if !defined SCNiLEAST64 || @PRI_MACROS_BROKEN@
769 #   undef SCNiLEAST64
770 #   define SCNiLEAST64 SCNi64
771 #  endif
772 # endif
773 # ifdef UINT64_MAX
774 #  if !defined SCNoLEAST64 || @PRI_MACROS_BROKEN@
775 #   undef SCNoLEAST64
776 #   define SCNoLEAST64 SCNo64
777 #  endif
778 #  if !defined SCNuLEAST64 || @PRI_MACROS_BROKEN@
779 #   undef SCNuLEAST64
780 #   define SCNuLEAST64 SCNu64
781 #  endif
782 #  if !defined SCNxLEAST64 || @PRI_MACROS_BROKEN@
783 #   undef SCNxLEAST64
784 #   define SCNxLEAST64 SCNx64
785 #  endif
786 # endif
787
788 # if !defined SCNdFAST8 || @PRI_MACROS_BROKEN@
789 #  undef SCNdFAST8
790 #  if INT_FAST8_MAX > INT32_MAX
791 #   define SCNdFAST8 SCNd64
792 #  elif INT_FAST8_MAX == 0x7fff
793 #   define SCNdFAST8 "hd"
794 #  elif INT_FAST8_MAX == 0x7f
795 #   define SCNdFAST8 "hhd"
796 #  else
797 #   define SCNdFAST8 "d"
798 #  endif
799 # endif
800 # if !defined SCNiFAST8 || @PRI_MACROS_BROKEN@
801 #  undef SCNiFAST8
802 #  if INT_FAST8_MAX > INT32_MAX
803 #   define SCNiFAST8 SCNi64
804 #  elif INT_FAST8_MAX == 0x7fff
805 #   define SCNiFAST8 "hi"
806 #  elif INT_FAST8_MAX == 0x7f
807 #   define SCNiFAST8 "hhi"
808 #  else
809 #   define SCNiFAST8 "i"
810 #  endif
811 # endif
812 # if !defined SCNoFAST8 || @PRI_MACROS_BROKEN@
813 #  undef SCNoFAST8
814 #  if UINT_FAST8_MAX > UINT32_MAX
815 #   define SCNoFAST8 SCNo64
816 #  elif UINT_FAST8_MAX == 0xffff
817 #   define SCNoFAST8 "ho"
818 #  elif UINT_FAST8_MAX == 0xff
819 #   define SCNoFAST8 "hho"
820 #  else
821 #   define SCNoFAST8 "o"
822 #  endif
823 # endif
824 # if !defined SCNuFAST8 || @PRI_MACROS_BROKEN@
825 #  undef SCNuFAST8
826 #  if UINT_FAST8_MAX > UINT32_MAX
827 #   define SCNuFAST8 SCNu64
828 #  elif UINT_FAST8_MAX == 0xffff
829 #   define SCNuFAST8 "hu"
830 #  elif UINT_FAST8_MAX == 0xff
831 #   define SCNuFAST8 "hhu"
832 #  else
833 #   define SCNuFAST8 "u"
834 #  endif
835 # endif
836 # if !defined SCNxFAST8 || @PRI_MACROS_BROKEN@
837 #  undef SCNxFAST8
838 #  if UINT_FAST8_MAX > UINT32_MAX
839 #   define SCNxFAST8 SCNx64
840 #  elif UINT_FAST8_MAX == 0xffff
841 #   define SCNxFAST8 "hx"
842 #  elif UINT_FAST8_MAX == 0xff
843 #   define SCNxFAST8 "hhx"
844 #  else
845 #   define SCNxFAST8 "x"
846 #  endif
847 # endif
848 # if !defined SCNdFAST16 || @PRI_MACROS_BROKEN@
849 #  undef SCNdFAST16
850 #  if INT_FAST16_MAX > INT32_MAX
851 #   define SCNdFAST16 SCNd64
852 #  elif INT_FAST16_MAX == 0x7fff
853 #   define SCNdFAST16 "hd"
854 #  else
855 #   define SCNdFAST16 "d"
856 #  endif
857 # endif
858 # if !defined SCNiFAST16 || @PRI_MACROS_BROKEN@
859 #  undef SCNiFAST16
860 #  if INT_FAST16_MAX > INT32_MAX
861 #   define SCNiFAST16 SCNi64
862 #  elif INT_FAST16_MAX == 0x7fff
863 #   define SCNiFAST16 "hi"
864 #  else
865 #   define SCNiFAST16 "i"
866 #  endif
867 # endif
868 # if !defined SCNoFAST16 || @PRI_MACROS_BROKEN@
869 #  undef SCNoFAST16
870 #  if UINT_FAST16_MAX > UINT32_MAX
871 #   define SCNoFAST16 SCNo64
872 #  elif UINT_FAST16_MAX == 0xffff
873 #   define SCNoFAST16 "ho"
874 #  else
875 #   define SCNoFAST16 "o"
876 #  endif
877 # endif
878 # if !defined SCNuFAST16 || @PRI_MACROS_BROKEN@
879 #  undef SCNuFAST16
880 #  if UINT_FAST16_MAX > UINT32_MAX
881 #   define SCNuFAST16 SCNu64
882 #  elif UINT_FAST16_MAX == 0xffff
883 #   define SCNuFAST16 "hu"
884 #  else
885 #   define SCNuFAST16 "u"
886 #  endif
887 # endif
888 # if !defined SCNxFAST16 || @PRI_MACROS_BROKEN@
889 #  undef SCNxFAST16
890 #  if UINT_FAST16_MAX > UINT32_MAX
891 #   define SCNxFAST16 SCNx64
892 #  elif UINT_FAST16_MAX == 0xffff
893 #   define SCNxFAST16 "hx"
894 #  else
895 #   define SCNxFAST16 "x"
896 #  endif
897 # endif
898 # if !defined SCNdFAST32 || @PRI_MACROS_BROKEN@
899 #  undef SCNdFAST32
900 #  if INT_FAST32_MAX > INT32_MAX
901 #   define SCNdFAST32 SCNd64
902 #  else
903 #   define SCNdFAST32 "d"
904 #  endif
905 # endif
906 # if !defined SCNiFAST32 || @PRI_MACROS_BROKEN@
907 #  undef SCNiFAST32
908 #  if INT_FAST32_MAX > INT32_MAX
909 #   define SCNiFAST32 SCNi64
910 #  else
911 #   define SCNiFAST32 "i"
912 #  endif
913 # endif
914 # if !defined SCNoFAST32 || @PRI_MACROS_BROKEN@
915 #  undef SCNoFAST32
916 #  if UINT_FAST32_MAX > UINT32_MAX
917 #   define SCNoFAST32 SCNo64
918 #  else
919 #   define SCNoFAST32 "o"
920 #  endif
921 # endif
922 # if !defined SCNuFAST32 || @PRI_MACROS_BROKEN@
923 #  undef SCNuFAST32
924 #  if UINT_FAST32_MAX > UINT32_MAX
925 #   define SCNuFAST32 SCNu64
926 #  else
927 #   define SCNuFAST32 "u"
928 #  endif
929 # endif
930 # if !defined SCNxFAST32 || @PRI_MACROS_BROKEN@
931 #  undef SCNxFAST32
932 #  if UINT_FAST32_MAX > UINT32_MAX
933 #   define SCNxFAST32 SCNx64
934 #  else
935 #   define SCNxFAST32 "x"
936 #  endif
937 # endif
938 # ifdef INT64_MAX
939 #  if !defined SCNdFAST64 || @PRI_MACROS_BROKEN@
940 #   undef SCNdFAST64
941 #   define SCNdFAST64 SCNd64
942 #  endif
943 #  if !defined SCNiFAST64 || @PRI_MACROS_BROKEN@
944 #   undef SCNiFAST64
945 #   define SCNiFAST64 SCNi64
946 #  endif
947 # endif
948 # ifdef UINT64_MAX
949 #  if !defined SCNoFAST64 || @PRI_MACROS_BROKEN@
950 #   undef SCNoFAST64
951 #   define SCNoFAST64 SCNo64
952 #  endif
953 #  if !defined SCNuFAST64 || @PRI_MACROS_BROKEN@
954 #   undef SCNuFAST64
955 #   define SCNuFAST64 SCNu64
956 #  endif
957 #  if !defined SCNxFAST64 || @PRI_MACROS_BROKEN@
958 #   undef SCNxFAST64
959 #   define SCNxFAST64 SCNx64
960 #  endif
961 # endif
962
963 # if !defined SCNdMAX || @PRI_MACROS_BROKEN@
964 #  undef SCNdMAX
965 #  if INTMAX_MAX > INT32_MAX
966 #   define SCNdMAX SCNd64
967 #  else
968 #   define SCNdMAX "ld"
969 #  endif
970 # endif
971 # if !defined SCNiMAX || @PRI_MACROS_BROKEN@
972 #  undef SCNiMAX
973 #  if INTMAX_MAX > INT32_MAX
974 #   define SCNiMAX SCNi64
975 #  else
976 #   define SCNiMAX "li"
977 #  endif
978 # endif
979 # if !defined SCNoMAX || @PRI_MACROS_BROKEN@
980 #  undef SCNoMAX
981 #  if UINTMAX_MAX > UINT32_MAX
982 #   define SCNoMAX SCNo64
983 #  else
984 #   define SCNoMAX "lo"
985 #  endif
986 # endif
987 # if !defined SCNuMAX || @PRI_MACROS_BROKEN@
988 #  undef SCNuMAX
989 #  if UINTMAX_MAX > UINT32_MAX
990 #   define SCNuMAX SCNu64
991 #  else
992 #   define SCNuMAX "lu"
993 #  endif
994 # endif
995 # if !defined SCNxMAX || @PRI_MACROS_BROKEN@
996 #  undef SCNxMAX
997 #  if UINTMAX_MAX > UINT32_MAX
998 #   define SCNxMAX SCNx64
999 #  else
1000 #   define SCNxMAX "lx"
1001 #  endif
1002 # endif
1003
1004 # if !defined SCNdPTR || @PRI_MACROS_BROKEN@
1005 #  undef SCNdPTR
1006 #  ifdef INTPTR_MAX
1007 #   define SCNdPTR @PRIPTR_PREFIX@ "d"
1008 #  endif
1009 # endif
1010 # if !defined SCNiPTR || @PRI_MACROS_BROKEN@
1011 #  undef SCNiPTR
1012 #  ifdef INTPTR_MAX
1013 #   define SCNiPTR @PRIPTR_PREFIX@ "i"
1014 #  endif
1015 # endif
1016 # if !defined SCNoPTR || @PRI_MACROS_BROKEN@
1017 #  undef SCNoPTR
1018 #  ifdef UINTPTR_MAX
1019 #   define SCNoPTR @PRIPTR_PREFIX@ "o"
1020 #  endif
1021 # endif
1022 # if !defined SCNuPTR || @PRI_MACROS_BROKEN@
1023 #  undef SCNuPTR
1024 #  ifdef UINTPTR_MAX
1025 #   define SCNuPTR @PRIPTR_PREFIX@ "u"
1026 #  endif
1027 # endif
1028 # if !defined SCNxPTR || @PRI_MACROS_BROKEN@
1029 #  undef SCNxPTR
1030 #  ifdef UINTPTR_MAX
1031 #   define SCNxPTR @PRIPTR_PREFIX@ "x"
1032 #  endif
1033 # endif
1034
1035 #endif
1036
1037 /* 7.8.2 Functions for greatest-width integer types */
1038
1039 #ifdef __cplusplus
1040 extern "C" {
1041 #endif
1042
1043 #if @GNULIB_IMAXABS@
1044 # if !@HAVE_DECL_IMAXABS@
1045 extern intmax_t imaxabs (intmax_t);
1046 # endif
1047 #elif defined GNULIB_POSIXCHECK
1048 # undef imaxabs
1049 # define imaxabs(a) \
1050     (GL_LINK_WARNING ("imaxabs is unportable - " \
1051                       "use gnulib module imaxabs for portability"), \
1052      imaxabs (a))
1053 #endif
1054
1055 #if @GNULIB_IMAXDIV@
1056 # if !@HAVE_DECL_IMAXDIV@
1057 typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
1058 extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
1059 # endif
1060 #elif defined GNULIB_POSIXCHECK
1061 # undef imaxdiv
1062 # define imaxdiv(a,b) \
1063     (GL_LINK_WARNING ("imaxdiv is unportable - " \
1064                       "use gnulib module imaxdiv for portability"), \
1065      imaxdiv (a, b))
1066 #endif
1067
1068 #if @GNULIB_STRTOIMAX@
1069 # if !@HAVE_DECL_STRTOIMAX@
1070 extern intmax_t strtoimax (const char *, char **, int);
1071 # endif
1072 #elif defined GNULIB_POSIXCHECK
1073 # undef strtoimax
1074 # define strtoimax(p,e,b) \
1075     (GL_LINK_WARNING ("strtoimax is unportable - " \
1076                       "use gnulib module strtoimax for portability"), \
1077      strtoimax (p, e, b))
1078 #endif
1079
1080 #if @GNULIB_STRTOUMAX@
1081 # if !@HAVE_DECL_STRTOUMAX@
1082 extern uintmax_t strtoumax (const char *, char **, int);
1083 # endif
1084 #elif defined GNULIB_POSIXCHECK
1085 # undef strtoumax
1086 # define strtoumax(p,e,b) \
1087     (GL_LINK_WARNING ("strtoumax is unportable - " \
1088                       "use gnulib module strtoumax for portability"), \
1089      strtoumax (p, e, b))
1090 #endif
1091
1092 /* Don't bother defining or declaring wcstoimax and wcstoumax, since
1093    wide-character functions like this are hardly ever useful.  */
1094
1095 #ifdef __cplusplus
1096 }
1097 #endif
1098
1099 #endif /* INTTYPES_H */