summaryrefslogtreecommitdiffstats
path: root/gl/printf-args.c
diff options
context:
space:
mode:
Diffstat (limited to 'gl/printf-args.c')
-rw-r--r--gl/printf-args.c125
1 files changed, 124 insertions, 1 deletions
diff --git a/gl/printf-args.c b/gl/printf-args.c
index 5e14f65..eb0d2cd 100644
--- a/gl/printf-args.c
+++ b/gl/printf-args.c
@@ -1,5 +1,5 @@
1/* Decomposed printf argument list. 1/* Decomposed printf argument list.
2 Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2023 Free Software 2 Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2024 Free Software
3 Foundation, Inc. 3 Foundation, Inc.
4 4
5 This file is free software: you can redistribute it and/or modify 5 This file is free software: you can redistribute it and/or modify
@@ -29,6 +29,9 @@
29# include "printf-args.h" 29# include "printf-args.h"
30#endif 30#endif
31 31
32/* Get INT_WIDTH. */
33#include <limits.h>
34
32#ifdef STATIC 35#ifdef STATIC
33STATIC 36STATIC
34#endif 37#endif
@@ -71,6 +74,102 @@ PRINTF_FETCHARGS (va_list args, arguments *a)
71 case TYPE_ULONGLONGINT: 74 case TYPE_ULONGLONGINT:
72 ap->a.a_ulonglongint = va_arg (args, unsigned long long int); 75 ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
73 break; 76 break;
77 case TYPE_INT8_T:
78 #if INT8_WIDTH < INT_WIDTH
79 ap->a.a_int8_t = va_arg (args, /* int8_t */ int);
80 #else
81 ap->a.a_int8_t = va_arg (args, int8_t);
82 #endif
83 break;
84 case TYPE_UINT8_T:
85 #if UINT8_WIDTH < INT_WIDTH
86 ap->a.a_uint8_t = va_arg (args, /* uint8_t */ int);
87 #else
88 ap->a.a_uint8_t = va_arg (args, uint8_t);
89 #endif
90 break;
91 case TYPE_INT16_T:
92 #if INT16_WIDTH < INT_WIDTH
93 ap->a.a_int16_t = va_arg (args, /* int16_t */ int);
94 #else
95 ap->a.a_int16_t = va_arg (args, int16_t);
96 #endif
97 break;
98 case TYPE_UINT16_T:
99 #if UINT16_WIDTH < INT_WIDTH
100 ap->a.a_uint16_t = va_arg (args, /* uint16_t */ int);
101 #else
102 ap->a.a_uint16_t = va_arg (args, uint16_t);
103 #endif
104 break;
105 case TYPE_INT32_T:
106 #if INT32_WIDTH < INT_WIDTH
107 ap->a.a_int32_t = va_arg (args, /* int32_t */ int);
108 #else
109 ap->a.a_int32_t = va_arg (args, int32_t);
110 #endif
111 break;
112 case TYPE_UINT32_T:
113 #if UINT32_WIDTH < INT_WIDTH
114 ap->a.a_uint32_t = va_arg (args, /* uint32_t */ int);
115 #else
116 ap->a.a_uint32_t = va_arg (args, uint32_t);
117 #endif
118 break;
119 case TYPE_INT64_T:
120 ap->a.a_int64_t = va_arg (args, int64_t);
121 break;
122 case TYPE_UINT64_T:
123 ap->a.a_uint64_t = va_arg (args, uint64_t);
124 break;
125 case TYPE_INT_FAST8_T:
126 #if INT_FAST8_WIDTH < INT_WIDTH
127 ap->a.a_int_fast8_t = va_arg (args, /* int_fast8_t */ int);
128 #else
129 ap->a.a_int_fast8_t = va_arg (args, int_fast8_t);
130 #endif
131 break;
132 case TYPE_UINT_FAST8_T:
133 #if UINT_FAST8_WIDTH < INT_WIDTH
134 ap->a.a_uint_fast8_t = va_arg (args, /* uint_fast8_t */ int);
135 #else
136 ap->a.a_uint_fast8_t = va_arg (args, uint_fast8_t);
137 #endif
138 break;
139 case TYPE_INT_FAST16_T:
140 #if INT_FAST16_WIDTH < INT_WIDTH
141 ap->a.a_int_fast16_t = va_arg (args, /* int_fast16_t */ int);
142 #else
143 ap->a.a_int_fast16_t = va_arg (args, int_fast16_t);
144 #endif
145 break;
146 case TYPE_UINT_FAST16_T:
147 #if UINT_FAST16_WIDTH < INT_WIDTH
148 ap->a.a_uint_fast16_t = va_arg (args, /* uint_fast16_t */ int);
149 #else
150 ap->a.a_uint_fast16_t = va_arg (args, uint_fast16_t);
151 #endif
152 break;
153 case TYPE_INT_FAST32_T:
154 #if INT_FAST32_WIDTH < INT_WIDTH
155 ap->a.a_int_fast32_t = va_arg (args, /* int_fast32_t */ int);
156 #else
157 ap->a.a_int_fast32_t = va_arg (args, int_fast32_t);
158 #endif
159 break;
160 case TYPE_UINT_FAST32_T:
161 #if UINT_FAST32_WIDTH < INT_WIDTH
162 ap->a.a_uint_fast32_t = va_arg (args, /* uint_fast32_t */ int);
163 #else
164 ap->a.a_uint_fast32_t = va_arg (args, uint_fast32_t);
165 #endif
166 break;
167 case TYPE_INT_FAST64_T:
168 ap->a.a_int_fast64_t = va_arg (args, int_fast64_t);
169 break;
170 case TYPE_UINT_FAST64_T:
171 ap->a.a_uint_fast64_t = va_arg (args, uint_fast64_t);
172 break;
74 case TYPE_DOUBLE: 173 case TYPE_DOUBLE:
75 ap->a.a_double = va_arg (args, double); 174 ap->a.a_double = va_arg (args, double);
76 break; 175 break;
@@ -136,6 +235,30 @@ PRINTF_FETCHARGS (va_list args, arguments *a)
136 case TYPE_COUNT_LONGLONGINT_POINTER: 235 case TYPE_COUNT_LONGLONGINT_POINTER:
137 ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); 236 ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
138 break; 237 break;
238 case TYPE_COUNT_INT8_T_POINTER:
239 ap->a.a_count_int8_t_pointer = va_arg (args, int8_t *);
240 break;
241 case TYPE_COUNT_INT16_T_POINTER:
242 ap->a.a_count_int16_t_pointer = va_arg (args, int16_t *);
243 break;
244 case TYPE_COUNT_INT32_T_POINTER:
245 ap->a.a_count_int32_t_pointer = va_arg (args, int32_t *);
246 break;
247 case TYPE_COUNT_INT64_T_POINTER:
248 ap->a.a_count_int64_t_pointer = va_arg (args, int64_t *);
249 break;
250 case TYPE_COUNT_INT_FAST8_T_POINTER:
251 ap->a.a_count_int_fast8_t_pointer = va_arg (args, int_fast8_t *);
252 break;
253 case TYPE_COUNT_INT_FAST16_T_POINTER:
254 ap->a.a_count_int_fast16_t_pointer = va_arg (args, int_fast16_t *);
255 break;
256 case TYPE_COUNT_INT_FAST32_T_POINTER:
257 ap->a.a_count_int_fast32_t_pointer = va_arg (args, int_fast32_t *);
258 break;
259 case TYPE_COUNT_INT_FAST64_T_POINTER:
260 ap->a.a_count_int_fast64_t_pointer = va_arg (args, int_fast64_t *);
261 break;
139#if ENABLE_UNISTDIO 262#if ENABLE_UNISTDIO
140 /* The unistdio extensions. */ 263 /* The unistdio extensions. */
141 case TYPE_U8_STRING: 264 case TYPE_U8_STRING: