aboutsummaryrefslogtreecommitdiff
path: root/stdio-common/tst-scanf-format-integer.h
diff options
context:
space:
mode:
Diffstat (limited to 'stdio-common/tst-scanf-format-integer.h')
-rw-r--r--stdio-common/tst-scanf-format-integer.h55
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;
+}