diff options
Diffstat (limited to 'gl/printf-args.c')
| -rw-r--r-- | gl/printf-args.c | 125 |
1 files changed, 124 insertions, 1 deletions
diff --git a/gl/printf-args.c b/gl/printf-args.c index 5e14f654..eb0d2cdc 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 |
| 33 | STATIC | 36 | STATIC |
| 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: |
