bug-gnulib
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]