diff options
author | Florian Weimer <fweimer@redhat.com> | 2024-08-22 16:14:17 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2024-08-26 16:46:45 +0200 |
commit | 34e52acd55d69964d14fb3188c5538442b8b32be (patch) | |
tree | a022183c41f1e8181a6fa0c56d2db7276867fb3a /support | |
parent | 79f44e1a47e87907fb8e97bbd098e01c4adc26a5 (diff) | |
download | glibc-34e52acd55d69964d14fb3188c5538442b8b32be.zip glibc-34e52acd55d69964d14fb3188c5538442b8b32be.tar.gz glibc-34e52acd55d69964d14fb3188c5538442b8b32be.tar.bz2 |
support: Report errno constants in TEST_COMPARE failures
If the expression is errno, decode it as an errno constant
using strerrorname_np.
Reviewed-by: Arjun Shankar <arjun@redhat.com>
Diffstat (limited to 'support')
-rw-r--r-- | support/support_test_compare_failure.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/support/support_test_compare_failure.c b/support/support_test_compare_failure.c index ae73d20..dba79e4 100644 --- a/support/support_test_compare_failure.c +++ b/support/support_test_compare_failure.c @@ -17,7 +17,9 @@ <https://www.gnu.org/licenses/>. */ #include <errno.h> +#include <limits.h> #include <stdio.h> +#include <string.h> #include <support/check.h> static void @@ -31,7 +33,14 @@ report (const char *which, const char *expr, long long value, int positive, printf ("%lld", value); unsigned long long mask = (~0ULL) >> (8 * (sizeof (unsigned long long) - size)); - printf (" (0x%llx); from: %s\n", (unsigned long long) value & mask, expr); + const char *errno_constant = NULL; + if (strcmp (expr, "errno") == 0 + && positive && (unsigned long long int) value <= INT_MAX) + errno_constant = strerrorname_np (value); + printf (" (0x%llx", (unsigned long long) value & mask); + if (errno_constant != NULL) + printf (", %s", errno_constant); + printf ("); from: %s\n", expr); } void |