[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/2] tests: pacify GCC 5.1's stricter printf checking
From: |
Paul Eggert |
Subject: |
[PATCH 2/2] tests: pacify GCC 5.1's stricter printf checking |
Date: |
Mon, 27 Apr 2015 01:25:01 -0700 |
* 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 350553a..fcc6383 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
2015-04-27 Paul Eggert <address@hidden>
+ 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 b7f2682..49a94ea 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 1bb89ee..0cfb1f1 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 5da18e5..3f1aeb0 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 2fd7519..3ffbff9 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 981b224..cb71b2b 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 880621b..68278b1 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 cfa5237..f8b160f 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 ef4e576..6f2b608 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.1.0