diff options
Diffstat (limited to 'stdio-common/tst-scanf-format-integer.h')
-rw-r--r-- | stdio-common/tst-scanf-format-integer.h | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/stdio-common/tst-scanf-format-integer.h b/stdio-common/tst-scanf-format-integer.h index 28f91a4..3d5a12a 100644 --- a/stdio-common/tst-scanf-format-integer.h +++ b/stdio-common/tst-scanf-format-integer.h @@ -16,36 +16,45 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +#include <stdbool.h> #include <string.h> /* Reference data is a signed decimal integer constant to compare against arithmetically. */ +/* Tweak our environment according to any TYPE_T_UNSIGNED_P setting + supplied by the individual test case. */ +#ifdef TYPE_T_UNSIGNED_P +# define UNSIGNED unsigned +#else +# define UNSIGNED +#endif + #define pointer_to_value(val) (&(val)) #define initialize_value(val) \ memset (&val, 0xa5, sizeof (val)) -#define verify_input(f, val, count, errp) \ -({ \ - __label__ out; \ - bool match = true; \ - int err; \ - \ - UNSIGNED long long v = read_integer (&err); \ - if (err < 0) \ - goto out; \ - match = val == v; \ - \ -out: \ - if (err || !match) \ - { \ - printf ("error: %s:%d: input: %016llx\n", \ - __FILE__, __LINE__, (long long) val); \ - printf ("error: %s:%d: value: %016llx\n", \ - __FILE__, __LINE__, v); \ - } \ - \ - *errp = err; \ - match; \ -}) +static bool +verify_input (char f, type_t val, long long count, int *errp) +{ + bool match = true; + int err; + + UNSIGNED long long v = read_integer (&err); + if (err < 0) + goto out; + match = val == v; + +out: + if (err || !match) + { + printf ("error: %s:%d: input: %016llx\n", + __FILE__, __LINE__, (long long) val); + printf ("error: %s:%d: value: %016llx\n", + __FILE__, __LINE__, v); + } + + *errp = err; + return match; +} |