summaryrefslogtreecommitdiff
path: root/shells/bash/patches/patch-builtins_printf.def
diff options
context:
space:
mode:
Diffstat (limited to 'shells/bash/patches/patch-builtins_printf.def')
-rw-r--r--shells/bash/patches/patch-builtins_printf.def56
1 files changed, 56 insertions, 0 deletions
diff --git a/shells/bash/patches/patch-builtins_printf.def b/shells/bash/patches/patch-builtins_printf.def
new file mode 100644
index 00000000000..0905d9245b8
--- /dev/null
+++ b/shells/bash/patches/patch-builtins_printf.def
@@ -0,0 +1,56 @@
+$NetBSD: patch-builtins_printf.def,v 1.1 2022/11/25 23:29:47 adam Exp $
+
+Fixes PRIdMAX and PRIuMAX on AIX < 5.1.
+
+--- builtins/printf.def.orig 2014-01-03 15:35:33.000000000 +0000
++++ builtins/printf.def
+@@ -95,6 +95,11 @@ $END
+ # undef PRIdMAX
+ #endif
+
++#if defined (_AIX) && !defined (_AIX51)
++ /* AIX defines do not work. Undefine them. */
++# undef PRIdMAX
++# undef PRIuMAX
++#endif
+ #if !defined (PRIdMAX)
+ # if HAVE_LONG_LONG
+ # define PRIdMAX "lld"
+@@ -102,6 +107,13 @@ $END
+ # define PRIdMAX "ld"
+ # endif
+ #endif
++#if !defined (PRIuMAX) && defined (_AIX)
++# if HAVE_LONG_LONG
++# define PRIuMAX "llu"
++# else
++# define PRIuMAX "lu"
++# endif
++#endif
+
+ #if !defined (errno)
+ extern int errno;
+@@ -594,7 +606,11 @@ printf_builtin (list)
+ p = pp = getintmax ();
+ if (p != pp)
+ {
++#if defined (_AIX) && !defined (_AIX51)
++ f = mklong (start, PRIdMAX, sizeof (intmax_t) - 2);
++#else
+ f = mklong (start, PRIdMAX, sizeof (PRIdMAX) - 2);
++#endif
+ PF (f, pp);
+ }
+ else
+@@ -621,7 +637,11 @@ printf_builtin (list)
+ p = pp = getuintmax ();
+ if (p != pp)
+ {
++#if defined (_AIX) && !defined (_AIX51)
++ f = mklong (start, PRIuMAX, sizeof (uintmax_t) - 2);
++#else
+ f = mklong (start, PRIdMAX, sizeof (PRIdMAX) - 2);
++#endif
+ PF (f, pp);
+ }
+ else