From 2aea2c723359d9459fd01e7b428f47656c9ce1e9 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 27 Apr 2015 01:23:29 -0700 Subject: [PATCH] tests: pacify GCC 5.1's stricter printf checking * tests/test-dirname.c (main): * tests/test-getaddrinfo.c (simple): * tests/test-getlogin.c (main): * tests/test-getndelim2.c (main): * tests/test-inttostr.c (CK): * tests/test-md5.c (main): * tests/test-read-file.c (main): * tests/test-sha1.c (main): Fix mismatches between printf format and value signedness. * tests/test-inttostr.c (FMT, CAST_VAL, V_min, V_max): Remove, as CAST_VAL always returned a value of type uintmax_t. --- ChangeLog | 13 +++++++++++++ tests/test-dirname.c | 4 ++-- tests/test-getaddrinfo.c | 10 +++++----- tests/test-getlogin.c | 6 +++--- tests/test-getndelim2.c | 2 +- tests/test-inttostr.c | 16 ++++++++++------ tests/test-md5.c | 8 ++++---- tests/test-read-file.c | 6 ++++-- tests/test-sha1.c | 4 ++-- 9 files changed, 44 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index 350553a3c2..fcc638311e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,18 @@ 2015-04-27 Paul Eggert + tests: pacify GCC 5.1's stricter printf checking + * tests/test-dirname.c (main): + * tests/test-getaddrinfo.c (simple): + * tests/test-getlogin.c (main): + * tests/test-getndelim2.c (main): + * tests/test-inttostr.c (CK): + * tests/test-md5.c (main): + * tests/test-read-file.c (main): + * tests/test-sha1.c (main): + Fix mismatches between printf format and value signedness. + * tests/test-inttostr.c (FMT, CAST_VAL, V_min, V_max): + Remove, as CAST_VAL always returned a value of type uintmax_t. + fts: port to GCC 5.1 with --enable-gcc-warnings Without this fix, GCC 5.1 (correctly) warns about a subscript error on the fts_name component of FTSENT. It's actually a diff --git a/tests/test-dirname.c b/tests/test-dirname.c index b7f268219f..49a94ea951 100644 --- a/tests/test-dirname.c +++ b/tests/test-dirname.c @@ -150,7 +150,7 @@ main (void) { ok = false; printf ("dir_name '%s': got '%s' len %d," - " expected '%s' len %ld\n", + " expected '%s' len %lu\n", t->name, dir, dirlen, t->dir, (unsigned long) strlen (t->dir)); } @@ -167,7 +167,7 @@ main (void) { ok = false; printf ("base_name '%s': got '%s' len %d," - " expected '%s' len %ld\n", + " expected '%s' len %lu\n", t->name, base, baselen, t->base, (unsigned long) strlen (t->base)); } diff --git a/tests/test-getaddrinfo.c b/tests/test-getaddrinfo.c index 1bb89eeda0..0cfb1f1a1c 100644 --- a/tests/test-getaddrinfo.c +++ b/tests/test-getaddrinfo.c @@ -116,11 +116,11 @@ simple (char const *host, char const *service) { void *ai_addr = ai->ai_addr; struct sockaddr_in *sock_addr = ai_addr; - dbgprintf ("\tflags %x\n", ai->ai_flags); - dbgprintf ("\tfamily %x\n", ai->ai_family); - dbgprintf ("\tsocktype %x\n", ai->ai_socktype); - dbgprintf ("\tprotocol %x\n", ai->ai_protocol); - dbgprintf ("\taddrlen %ld: ", (unsigned long) ai->ai_addrlen); + dbgprintf ("\tflags %x\n", ai->ai_flags + 0u); + dbgprintf ("\tfamily %x\n", ai->ai_family + 0u); + dbgprintf ("\tsocktype %x\n", ai->ai_socktype + 0u); + dbgprintf ("\tprotocol %x\n", ai->ai_protocol + 0u); + dbgprintf ("\taddrlen %lu: ", (unsigned long) ai->ai_addrlen); dbgprintf ("\tFound %s\n", inet_ntop (ai->ai_family, &sock_addr->sin_addr, diff --git a/tests/test-getlogin.c b/tests/test-getlogin.c index 5da18e5f9c..3f1aeb08b8 100644 --- a/tests/test-getlogin.c +++ b/tests/test-getlogin.c @@ -84,9 +84,9 @@ main (void) pwd = getpwuid (stat_buf.st_uid); if (! pwd) { - fprintf (stderr, "Skipping test: no name found for uid %d\n", - stat_buf.st_uid); - return 77; + long int uid = stat_buf.st_uid; + fprintf (stderr, "Skipping test: no name found for uid %ld\n", uid); + return 77; } ASSERT (strcmp (pwd->pw_name, buf) == 0); diff --git a/tests/test-getndelim2.c b/tests/test-getndelim2.c index 2fd7519179..3ffbff9b0f 100644 --- a/tests/test-getndelim2.c +++ b/tests/test-getndelim2.c @@ -103,7 +103,7 @@ main (void) { int i; for (i = 0; i < 16; i++) - fprintf (f, "%500x%c", i, i % 2 ? '\n' : '\r'); + fprintf (f, "%500x%c", i + 0u, i % 2 ? '\n' : '\r'); } rewind (f); { diff --git a/tests/test-inttostr.c b/tests/test-inttostr.c index 981b224ac0..cb71b2b81e 100644 --- a/tests/test-inttostr.c +++ b/tests/test-inttostr.c @@ -28,10 +28,6 @@ #include "macros.h" #define STREQ(a, b) (strcmp (a, b) == 0) -#define FMT(T) (TYPE_SIGNED (T) ? "%jd" : "%ju") -#define CAST_VAL(T,V) (TYPE_SIGNED (T) ? (intmax_t) (V) : (uintmax_t) (V)) -#define V_min(T) (CAST_VAL (T, TYPE_MINIMUM (T))) -#define V_max(T) (CAST_VAL (T, TYPE_MAXIMUM (T))) #define IS_TIGHT(T) (_GL_SIGNED_TYPE_OR_EXPR (T) == TYPE_SIGNED (T)) #define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) @@ -49,11 +45,19 @@ char const *p; \ ASSERT (buf); \ *buf = '\0'; \ - ASSERT (snprintf (ref, sizeof ref, FMT (T), V_min (T)) < sizeof ref); \ + ASSERT \ + ((TYPE_SIGNED (T) \ + ? snprintf (ref, sizeof ref, "%jd", (intmax_t) TYPE_MINIMUM (T)) \ + : snprintf (ref, sizeof ref, "%ju", (uintmax_t) TYPE_MINIMUM (T))) \ + < sizeof ref); \ ASSERT (STREQ ((p = Fn (TYPE_MINIMUM (T), buf)), ref)); \ /* Ensure that INT_BUFSIZE_BOUND is tight for signed types. */ \ ASSERT (! TYPE_SIGNED (T) || (p == buf && *p == '-')); \ - ASSERT (snprintf (ref, sizeof ref, FMT (T), V_max (T)) < sizeof ref); \ + ASSERT \ + ((TYPE_SIGNED (T) \ + ? snprintf (ref, sizeof ref, "%jd", (intmax_t) TYPE_MAXIMUM (T)) \ + : snprintf (ref, sizeof ref, "%ju", (uintmax_t) TYPE_MAXIMUM (T))) \ + < sizeof ref); \ ASSERT (STREQ ((p = Fn (TYPE_MAXIMUM (T), buf)), ref)); \ /* For unsigned types, the bound is not always tight. */ \ ASSERT (! IS_TIGHT (T) || TYPE_SIGNED (T) \ diff --git a/tests/test-md5.c b/tests/test-md5.c index 880621bdc0..68278b1b9c 100644 --- a/tests/test-md5.c +++ b/tests/test-md5.c @@ -42,10 +42,10 @@ main (void) size_t i; printf ("expected:\n"); for (i = 0; i < MD5_DIGEST_SIZE; i++) - printf ("%02x ", out1[i] & 0xFF); + printf ("%02x ", out1[i] & 0xFFu); printf ("\ncomputed:\n"); for (i = 0; i < MD5_DIGEST_SIZE; i++) - printf ("%02x ", buf[i] & 0xFF); + printf ("%02x ", buf[i] & 0xFFu); printf ("\n"); return 1; } @@ -55,10 +55,10 @@ main (void) size_t i; printf ("expected:\n"); for (i = 0; i < MD5_DIGEST_SIZE; i++) - printf ("%02x ", out2[i] & 0xFF); + printf ("%02x ", out2[i] & 0xFFu); printf ("\ncomputed:\n"); for (i = 0; i < MD5_DIGEST_SIZE; i++) - printf ("%02x ", buf[i] & 0xFF); + printf ("%02x ", buf[i] & 0xFFu); printf ("\n"); return 1; } diff --git a/tests/test-read-file.c b/tests/test-read-file.c index cfa52371ab..f8b160f58c 100644 --- a/tests/test-read-file.c +++ b/tests/test-read-file.c @@ -57,7 +57,8 @@ main (void) /* FILE1 is a regular file or a symlink to a regular file. */ if (len != statbuf.st_size) { - fprintf (stderr, "Read %ld from %s...\n", (unsigned long) len, FILE1); + fprintf (stderr, "Read %lu from %s...\n", + (unsigned long) len, FILE1); err = 1; } } @@ -98,7 +99,8 @@ main (void) is not a regular file. */ if (len != 0) { - fprintf (stderr, "Read %ld from %s...\n", (unsigned long) len, FILE2); + fprintf (stderr, "Read %lu from %s...\n", + (unsigned long) len, FILE2); err = 1; } free (out); diff --git a/tests/test-sha1.c b/tests/test-sha1.c index ef4e576af3..6f2b608eb0 100644 --- a/tests/test-sha1.c +++ b/tests/test-sha1.c @@ -36,10 +36,10 @@ main (void) size_t i; printf ("expected:\n"); for (i = 0; i < SHA1_DIGEST_SIZE; i++) - printf ("%02x ", out1[i] & 0xFF); + printf ("%02x ", out1[i] & 0xFFu); printf ("\ncomputed:\n"); for (i = 0; i < SHA1_DIGEST_SIZE; i++) - printf ("%02x ", buf[i] & 0xFF); + printf ("%02x ", buf[i] & 0xFFu); printf ("\n"); return 1; } -- 2.39.5