aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-01-29 09:01:50 +0000
committerUlrich Drepper <drepper@redhat.com>1999-01-29 09:01:50 +0000
commitb7398be5f8ce235f78cf92b21c39f00c150ffe68 (patch)
treea73514b50603e2de3e567f47677e9fc514cc1c43
parent8163845fdab02ba1943b608b635873cee50df676 (diff)
downloadglibc-b7398be5f8ce235f78cf92b21c39f00c150ffe68.tar
glibc-b7398be5f8ce235f78cf92b21c39f00c150ffe68.tar.gz
glibc-b7398be5f8ce235f78cf92b21c39f00c150ffe68.tar.bz2
glibc-b7398be5f8ce235f78cf92b21c39f00c150ffe68.zip
Update.
1999-01-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * sysdeps/wordsize-32/stdint.h (INT8_C, INT16_C, INT32_C, INT64_C, UINT8_C, UINT16_C, UINT32_C, UINT64_C): Remove casts, they must be integer constants. Use ## directly instead of __CONCAT so that the suffix string is not expanded as a macro. * sysdeps/wordsize-64/stdint.h (INT8_C, INT16_C, INT32_C, INT64_C, UINT8_C, UINT16_C, UINT32_C, UINT64_C): Likewise. (INT64_MIN, INT64_MAX, UINT64_MAX, INT_LEAST64_MIN, INT_LEAST64_MAX, UINT_LEAST64_MAX, INT_FAST16_MIN, INT_FAST32_MIN, INT_FAST64_MIN, INT_FAST16_MAX, INT_FAST32_MAX, INT_FAST64_MAX, UINT_FAST16_MAX, UINT_FAST32_MAX, UINT_FAST64_MAX, INTMAX_MIN, INTMAX_MAX, UINTMAX_MAX): Define as long constants, not long long. 1999-01-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de> * locale/mb_cur_max.c (__ctype_get_mb_cur_max): Correct return type to size_t. * locale/broken_cur_max.c (__ctype_get_mb_cur_max): Likewise. * stdlib/stdlib.h (__ctype_get_mb_cur_max): Likewise. 1999-01-27 Philip Blundell <pb@nexus.co.uk> * sysdeps/unix/sysv/linux/arm/vfork.S: Deleted.
-rw-r--r--ChangeLog25
-rw-r--r--FAQ16
-rw-r--r--FAQ.in14
-rw-r--r--locale/broken_cur_max.c16
-rw-r--r--locale/mb_cur_max.c4
-rw-r--r--stdlib/stdlib.h4
-rw-r--r--sysdeps/unix/sysv/linux/arm/vfork.S46
-rw-r--r--sysdeps/wordsize-32/stdint.h40
-rw-r--r--sysdeps/wordsize-64/stdint.h72
9 files changed, 123 insertions, 114 deletions
diff --git a/ChangeLog b/ChangeLog
index 266fa6c559..2f1a26755a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+1999-01-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * sysdeps/wordsize-32/stdint.h (INT8_C, INT16_C, INT32_C, INT64_C,
+ UINT8_C, UINT16_C, UINT32_C, UINT64_C): Remove casts, they must be
+ integer constants. Use ## directly instead of __CONCAT so that
+ the suffix string is not expanded as a macro.
+ * sysdeps/wordsize-64/stdint.h (INT8_C, INT16_C, INT32_C, INT64_C,
+ UINT8_C, UINT16_C, UINT32_C, UINT64_C): Likewise.
+ (INT64_MIN, INT64_MAX, UINT64_MAX, INT_LEAST64_MIN,
+ INT_LEAST64_MAX, UINT_LEAST64_MAX, INT_FAST16_MIN, INT_FAST32_MIN,
+ INT_FAST64_MIN, INT_FAST16_MAX, INT_FAST32_MAX, INT_FAST64_MAX,
+ UINT_FAST16_MAX, UINT_FAST32_MAX, UINT_FAST64_MAX, INTMAX_MIN,
+ INTMAX_MAX, UINTMAX_MAX): Define as long constants, not long long.
+
+1999-01-28 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
+
+ * locale/mb_cur_max.c (__ctype_get_mb_cur_max): Correct return
+ type to size_t.
+ * locale/broken_cur_max.c (__ctype_get_mb_cur_max): Likewise.
+ * stdlib/stdlib.h (__ctype_get_mb_cur_max): Likewise.
+
+1999-01-27 Philip Blundell <pb@nexus.co.uk>
+
+ * sysdeps/unix/sysv/linux/arm/vfork.S: Deleted.
+
1999-01-28 David S. Miller <davem@redhat.com>
* sysdeps/sparc/sparc32/__longjmp.S: Rewrite without bogus sanity
diff --git a/FAQ b/FAQ
index bbc2b1b81c..d2048cd67f 100644
--- a/FAQ
+++ b/FAQ
@@ -99,6 +99,7 @@ please let me know.
/etc/group as I have with libc5 ?
2.27. What needs to be recompiled when upgrading from glibc 2.0 to glibc
2.1?
+2.28. Why is extracting files via tar so slow?
3. Source and binary incompatibilities, and what to do about them
@@ -1043,6 +1044,21 @@ possible to do development with old static libraries on a glibc 2.1
system. This add-on is still in development. You can get it from <URL>
but please keep in mind that it is experimental.
+
+2.28. Why is extracting files via tar so slow?
+
+{AJ} Extracting of tar archives might be quite slow since tar has to look up
+userid and groupids and doesn't cache negative results. If you have nis or
+nisplus in your /etc/nsswitch.conf for the passwd and/or group database,
+each file extractions needs a network connection. There are two possible
+solutions:
+
+- do you really need NIS/NIS+ (some Linux distributions add by default
+ nis/nisplus even if it's not needed)? If not, just remove the entries.
+
+- if you need NIS/NIS+, use the Name Service Cache Daemon nscd that comes
+ with glibc 2.1.
+
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
diff --git a/FAQ.in b/FAQ.in
index 6112aa02bb..32678a2f0a 100644
--- a/FAQ.in
+++ b/FAQ.in
@@ -860,6 +860,20 @@ possible to do development with old static libraries on a glibc 2.1
system. This add-on is still in development. You can get it from <URL>
but please keep in mind that it is experimental.
+?? Why is extracting files via tar so slow?
+
+{AJ} Extracting of tar archives might be quite slow since tar has to look up
+userid and groupids and doesn't cache negative results. If you have nis or
+nisplus in your /etc/nsswitch.conf for the passwd and/or group database,
+each file extractions needs a network connection. There are two possible
+solutions:
+
+- do you really need NIS/NIS+ (some Linux distributions add by default
+ nis/nisplus even if it's not needed)? If not, just remove the entries.
+
+- if you need NIS/NIS+, use the Name Service Cache Daemon nscd that comes
+ with glibc 2.1.
+
? Source and binary incompatibilities, and what to do about them
?? I expect GNU libc to be 100% source code compatible with
diff --git a/locale/broken_cur_max.c b/locale/broken_cur_max.c
index 0374f84a57..68aec7fd93 100644
--- a/locale/broken_cur_max.c
+++ b/locale/broken_cur_max.c
@@ -1,6 +1,6 @@
/* Return number of characters in multibyte representation for current
character set.
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -25,26 +25,26 @@
#include "localeinfo.h"
-/* This is a gross hack to get borken programs running.
+/* This is a gross hack to get broken programs running.
ISO C provides no mean to find out how many bytes the wide
character representation really uses. But it defines MB_CUR_LEN to
return the information for the multi-byte character representation.
Many programmers don't know the difference between the two and
- thing this means the same. But assuming all characters have a size
+ think this means the same. But assuming all characters have a size
of MB_CUR_LEN after they have been processed by `mbrtowc' is wrong.
- Instead the maximal number of character used for the conversion is
- MB_CURLEN.
+ Instead the maximum number of characters used for the conversion is
+ MB_CUR_LEN.
It is known that some Motif applications have this problem. To
cure this one has to make sure the glibc uses the function in this
file instead of the one in locale/mb_cur_max.c. This can either be
done by linking with this file or by using the LD_PRELOAD feature
of the dynamic linker. */
-int
+size_t
__ctype_get_mb_cur_max (void)
{
- int correct_value = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX);
+ size_t correct_value = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX);
- return ((int []) { 1, 1, 1, 2, 2, 3, 4 })[correct_value];
+ return ((size_t []) { 1, 1, 1, 2, 2, 3, 4 })[correct_value];
}
diff --git a/locale/mb_cur_max.c b/locale/mb_cur_max.c
index cfb93ffba8..5de9114c23 100644
--- a/locale/mb_cur_max.c
+++ b/locale/mb_cur_max.c
@@ -1,6 +1,6 @@
/* Return number of characters in multibyte representation for current
character set.
- Copyright (C) 1996 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -25,7 +25,7 @@
#include "localeinfo.h"
-int
+size_t
weak_function
__ctype_get_mb_cur_max (void)
{
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 355c649652..3b9539e329 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,94,95,96,97,98 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -73,7 +73,7 @@ __extension__ typedef struct
/* Maximum length of a multibyte character in the current locale. */
#define MB_CUR_MAX (__ctype_get_mb_cur_max ())
-extern int __ctype_get_mb_cur_max __P ((void));
+extern size_t __ctype_get_mb_cur_max __P ((void));
/* Convert a string to a floating-point number. */
diff --git a/sysdeps/unix/sysv/linux/arm/vfork.S b/sysdeps/unix/sysv/linux/arm/vfork.S
deleted file mode 100644
index 4c2f1a2982..0000000000
--- a/sysdeps/unix/sysv/linux/arm/vfork.S
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Philip Blundell <philb@gnu.org>
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public License as
- published by the Free Software Foundation; either version 2 of the
- License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public
- License along with the GNU C Library; see the file COPYING.LIB. If not,
- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
-
-#include <sysdep.h>
-#define _ERRNO_H 1
-#include <bits/errno.h>
-#define _SIGNAL_H
-#include <bits/signum.h>
-
-#define CLONE_VM 0x00000100 /* Set if VM shared between processes. */
-#define CLONE_VFORK 0x00004000 /* Set if the parent wants the child to
- wake it up on mm_release. */
-
-/* Clone the calling process, but without copying the whole address space.
- The calling process is suspended until the new process exits or is
- replaced by a call to `execve'. Return -1 for errors, 0 to the new process,
- and the process ID of the new process to the old process. */
-
-ENTRY (__vfork)
- mov a1, $SIGCLD
- orr a1, a1, $(CLONE_VM | CLONE_VFORK)
- mov a2, $0
- swi SYS_ify(clone)
- cmn a1, $4096
- bhs PLTJMP(C_SYMBOL_NAME(__syscall_error))
- RETINSTR(mov, pc, lr)
-
-PSEUDO_END (__vfork)
-
-weak_alias (__vfork, vfork)
diff --git a/sysdeps/wordsize-32/stdint.h b/sysdeps/wordsize-32/stdint.h
index ef3de98620..a96e79e709 100644
--- a/sysdeps/wordsize-32/stdint.h
+++ b/sysdeps/wordsize-32/stdint.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -17,7 +17,7 @@
Boston, MA 02111-1307, USA. */
/*
- * ISO C 9X: 7.4 Integer types <stdint.h>
+ * ISO C 9X: 7.18 Integer types <stdint.h>
*/
#ifndef _STDINT_H
@@ -96,8 +96,8 @@ __extension__ typedef long long int intmax_t;
__extension__ typedef unsigned long long int uintmax_t;
-/* The ISO C 9X standard specifies that these macros must only be
- defined if explicitly requested. */
+/* The ISO C 9X standard specifies that in C++ implementations these
+ macros should only be defined if explicitly requested. */
#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
/* Limits of integral types. */
@@ -117,7 +117,7 @@ __extension__ typedef unsigned long long int uintmax_t;
# define UINT8_MAX (255U)
# define UINT16_MAX (65535U)
# define UINT32_MAX (4294967295U)
-# define UINT64_MAX (18446744073709551615uLL)
+# define UINT64_MAX (18446744073709551615ULL)
/* Minimum of signed integral types having a minimum size. */
@@ -135,7 +135,7 @@ __extension__ typedef unsigned long long int uintmax_t;
# define UINT_LEAST8_MAX (255U)
# define UINT_LEAST16_MAX (65535U)
# define UINT_LEAST32_MAX (4294967295U)
-# define UINT_LEAST64_MAX (18446744073709551615uLL)
+# define UINT_LEAST64_MAX (18446744073709551615ULL)
/* Minimum of fast signed integral types having a minimum size. */
@@ -153,7 +153,7 @@ __extension__ typedef unsigned long long int uintmax_t;
# define UINT_FAST8_MAX (255U)
# define UINT_FAST16_MAX (4294967295U)
# define UINT_FAST32_MAX (4294967295U)
-# define UINT_FAST64_MAX (18446744073709551615uLL)
+# define UINT_FAST64_MAX (18446744073709551615ULL)
/* Values to test for integral types holding `void *' pointer. */
@@ -168,7 +168,7 @@ __extension__ typedef unsigned long long int uintmax_t;
# define INTMAX_MAX (9223372036854775807LL)
/* Maximum for largest unsigned integral type. */
-# define UINTMAX_MAX (18446744073709551615uLL)
+# define UINTMAX_MAX (18446744073709551615ULL)
/* Limits of other integer types. */
@@ -198,25 +198,25 @@ __extension__ typedef unsigned long long int uintmax_t;
#endif /* C++ && limit macros */
-/* The ISO C 9X standard specifies that these macros must only be
- defined if explicitly requested. */
+/* The ISO C 9X standard specifies that in C++ implementations these
+ should only be defined if explicitly requested. */
#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
/* Signed. */
-# define INT8_C(c) ((int8_t) c)
-# define INT16_C(c) ((int16_t) c)
-# define INT32_C(c) ((int32_t) c)
-# define INT64_C(c) ((int64_t) __CONCAT (c,ll))
+# define INT8_C(c) c
+# define INT16_C(c) c
+# define INT32_C(c) c
+# define INT64_C(c) c ## LL
/* Unsigned. */
-# define UINT8_C(c) ((uint8_t) __CONCAT (c,u))
-# define UINT16_C(c) ((uint16_t) __CONCAT (c,u))
-# define UINT32_C(c) ((uint32_t) __CONCAT (c,u))
-# define UINT64_C(c) ((uint64_t) __CONCAT (c,ull))
+# define UINT8_C(c) c ## U
+# define UINT16_C(c) c ## U
+# define UINT32_C(c) c ## U
+# define UINT64_C(c) c ## ULL
/* Maximal type. */
-# define INTMAX_C(c) ((intmax_t) __CONCAT (c,ll))
-# define UINTMAX_C(c) ((uintmax_t) __CONCAT (c,ull))
+# define INTMAX_C(c) c ## LL
+# define UINTMAX_C(c) c ## ULL
#endif /* C++ && constant macros */
diff --git a/sysdeps/wordsize-64/stdint.h b/sysdeps/wordsize-64/stdint.h
index 743fb434bf..2f7cd49154 100644
--- a/sysdeps/wordsize-64/stdint.h
+++ b/sysdeps/wordsize-64/stdint.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -17,7 +17,7 @@
Boston, MA 02111-1307, USA. */
/*
- * ISO C 9X: 7.4 Integer types <stdint.h>
+ * ISO C 9X: 7.18 Integer types <stdint.h>
*/
#ifndef _STDINT_H
@@ -90,8 +90,8 @@ typedef long int intmax_t;
typedef unsigned long int uintmax_t;
-/* The ISO C 9X standard specifies that these macros must only be
- defined if explicitly requested. */
+/* The ISO C 9X standard specifies that in C++ implementations these
+ macros should only be defined if explicitly requested. */
#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
/* Limits of integral types. */
@@ -100,69 +100,69 @@ typedef unsigned long int uintmax_t;
# define INT8_MIN (-128)
# define INT16_MIN (-32767-1)
# define INT32_MIN (-2147483647-1)
-# define INT64_MIN (-9223372036854775807LL-1)
+# define INT64_MIN (-9223372036854775807L-1)
/* Maximum of signed integral types. */
# define INT8_MAX (127)
# define INT16_MAX (32767)
# define INT32_MAX (2147483647)
-# define INT64_MAX (9223372036854775807LL)
+# define INT64_MAX (9223372036854775807L)
/* Maximum of unsigned integral types. */
# define UINT8_MAX (255U)
# define UINT16_MAX (65535U)
# define UINT32_MAX (4294967295U)
-# define UINT64_MAX (18446744073709551615uLL)
+# define UINT64_MAX (18446744073709551615UL)
/* Minimum of signed integral types having a minimum size. */
# define INT_LEAST8_MIN (-128)
# define INT_LEAST16_MIN (-32767-1)
# define INT_LEAST32_MIN (-2147483647-1)
-# define INT_LEAST64_MIN (-9223372036854775807LL-1)
+# define INT_LEAST64_MIN (-9223372036854775807L-1)
/* Maximum of signed integral types having a minimum size. */
# define INT_LEAST8_MAX (127)
# define INT_LEAST16_MAX (32767)
# define INT_LEAST32_MAX (2147483647)
-# define INT_LEAST64_MAX (9223372036854775807LL)
+# define INT_LEAST64_MAX (9223372036854775807L)
/* Maximum of unsigned integral types having a minimum size. */
# define UINT_LEAST8_MAX (255U)
# define UINT_LEAST16_MAX (65535U)
# define UINT_LEAST32_MAX (4294967295U)
-# define UINT_LEAST64_MAX (18446744073709551615uLL)
+# define UINT_LEAST64_MAX (18446744073709551615UL)
/* Minimum of fast signed integral types having a minimum size. */
# define INT_FAST8_MIN (-128)
-# define INT_FAST16_MIN (-9223372036854775807LL-1)
-# define INT_FAST32_MIN (-9223372036854775807LL-1)
-# define INT_FAST64_MIN (-9223372036854775807LL-1)
+# define INT_FAST16_MIN (-9223372036854775807L-1)
+# define INT_FAST32_MIN (-9223372036854775807L-1)
+# define INT_FAST64_MIN (-9223372036854775807L-1)
/* Maximum of fast signed integral types having a minimum size. */
# define INT_FAST8_MAX (127)
-# define INT_FAST16_MAX (9223372036854775807LL)
-# define INT_FAST32_MAX (9223372036854775807LL)
-# define INT_FAST64_MAX (9223372036854775807LL)
+# define INT_FAST16_MAX (9223372036854775807L)
+# define INT_FAST32_MAX (9223372036854775807L)
+# define INT_FAST64_MAX (9223372036854775807L)
/* Maximum of fast unsigned integral types having a minimum size. */
# define UINT_FAST8_MAX (255U)
-# define UINT_FAST16_MAX (18446744073709551615uLL)
-# define UINT_FAST32_MAX (18446744073709551615uLL)
-# define UINT_FAST64_MAX (18446744073709551615uLL)
+# define UINT_FAST16_MAX (18446744073709551615UL)
+# define UINT_FAST32_MAX (18446744073709551615UL)
+# define UINT_FAST64_MAX (18446744073709551615UL)
/* Values to test for integral types holding `void *' pointer. */
# define INTPTR_MIN (-9223372036854775807L-1)
# define INTPTR_MAX (9223372036854775807L
-# define UINTPTR_MAX (18446744073709551615uL)
+# define UINTPTR_MAX (18446744073709551615UL)
/* Minimum for largest signed integral type. */
-# define INTMAX_MIN (-9223372036854775807LL-1)
+# define INTMAX_MIN (-9223372036854775807L-1)
/* Maximum for largest signed integral type. */
-# define INTMAX_MAX (9223372036854775807LL)
+# define INTMAX_MAX (9223372036854775807L)
/* Maximum for largest unsigned integral type. */
-# define UINTMAX_MAX (18446744073709551615uLL)
+# define UINTMAX_MAX (18446744073709551615UL)
/* Limits of other integer types. */
@@ -176,7 +176,7 @@ typedef unsigned long int uintmax_t;
# define SIG_ATOMIC_MAX (2147483647)
/* Limit of `size_t' type. */
-# define SIZE_MAX (18446744073709551615uL)
+# define SIZE_MAX (18446744073709551615UL)
/* Limits of `wchar_t'. */
# ifndef WCHAR_MIN
@@ -192,25 +192,25 @@ typedef unsigned long int uintmax_t;
#endif /* C++ && limit macros */
-/* The ISO C 9X standard specifies that these macros must only be
- defined if explicitly requested. */
+/* The ISO C 9X standard specifies that in C++ implementations these
+ should only be defined if explicitly requested. */
#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
/* Signed. */
-# define INT8_C(c) ((int8_t) c)
-# define INT16_C(c) ((int16_t) c)
-# define INT32_C(c) ((int32_t) c)
-# define INT64_C(c) ((int64_t) __CONCAT (c,l))
+# define INT8_C(c) c
+# define INT16_C(c) c
+# define INT32_C(c) c
+# define INT64_C(c) c ## L
/* Unsigned. */
-# define UINT8_C(c) ((uint8_t) __CONCAT (c,u))
-# define UINT16_C(c) ((uint16_t) __CONCAT (c,u))
-# define UINT32_C(c) ((uint32_t) __CONCAT (c,u))
-# define UINT64_C(c) ((uint64_t) __CONCAT (c,ul))
+# define UINT8_C(c) c ## U
+# define UINT16_C(c) c ## U
+# define UINT32_C(c) c ## U
+# define UINT64_C(c) c ## UL
/* Maximal type. */
-# define INTMAX_C(c) ((intmax_t) __CONCAT (c,l))
-# define UINTMAX_C(c) ((uintmax_t) __CONCAT (c,ul))
+# define INTMAX_C(c) c ## L
+# define UINTMAX_C(c) c ## UL
#endif /* C++ && constant macros */