From 7148adf34dae30345c2e4d9d437838a45ba6f6e8 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Tim=20R=C3=BChsen?= <tim.ruehsen@gmx.de>
Date: Wed, 1 Feb 2017 11:06:39 +0100
Subject: [PATCH] Fix -Wformat warnings

---
Upstream-Status: Backport
Signed-off-by: Khem Raj <raj.khem@gmail.com>

 examples/example.c     |  6 +++---
 examples/example3.c    |  4 ++--
 examples/example4.c    |  4 ++--
 examples/example5.c    |  2 +-
 src/idn.c              |  2 +-
 tests/tst_idna.c       | 25 +++++++++++++------------
 tests/tst_idna2.c      |  8 ++++----
 tests/tst_idna3.c      |  8 ++++----
 tests/tst_nfkc.c       |  8 ++++----
 tests/tst_pr29.c       | 12 ++++++------
 tests/tst_punycode.c   | 13 +++++++------
 tests/tst_strerror.c   | 20 ++++++++++----------
 tests/tst_stringprep.c | 12 ++++++------
 tests/tst_tld.c        | 20 ++++++++++----------
 tests/utils.c          |  6 +++---
 15 files changed, 76 insertions(+), 74 deletions(-)

diff --git a/examples/example.c b/examples/example.c
index 6e91783..24f64e0 100644
--- a/examples/example.c
+++ b/examples/example.c
@@ -55,7 +55,7 @@ main (void)
 
   printf ("Before locale2utf8 (length %ld): ", (long int) strlen (buf));
   for (i = 0; i < strlen (buf); i++)
-    printf ("%02x ", buf[i] & 0xFF);
+    printf ("%02x ", (unsigned) buf[i] & 0xFF);
   printf ("\n");
 
   p = stringprep_locale_to_utf8 (buf);
@@ -69,7 +69,7 @@ main (void)
 
   printf ("Before stringprep (length %ld): ", (long int) strlen (buf));
   for (i = 0; i < strlen (buf); i++)
-    printf ("%02x ", buf[i] & 0xFF);
+    printf ("%02x ", (unsigned) buf[i] & 0xFF);
   printf ("\n");
 
   rc = stringprep (buf, BUFSIZ, 0, stringprep_nameprep);
@@ -79,7 +79,7 @@ main (void)
     {
       printf ("After stringprep (length %ld): ", (long int) strlen (buf));
       for (i = 0; i < strlen (buf); i++)
-	printf ("%02x ", buf[i] & 0xFF);
+	printf ("%02x ", (unsigned) buf[i] & 0xFF);
       printf ("\n");
     }
 
diff --git a/examples/example3.c b/examples/example3.c
index fc11c1c..ffb9042 100644
--- a/examples/example3.c
+++ b/examples/example3.c
@@ -56,7 +56,7 @@ main (void)
 
   printf ("Read string (length %ld): ", (long int) strlen (buf));
   for (i = 0; i < strlen (buf); i++)
-    printf ("%02x ", buf[i] & 0xFF);
+    printf ("%02x ", (unsigned) buf[i] & 0xFF);
   printf ("\n");
 
   rc = idna_to_ascii_lz (buf, &p, 0);
@@ -68,7 +68,7 @@ main (void)
 
   printf ("ACE label (length %ld): '%s'\n", (long int) strlen (p), p);
   for (i = 0; i < strlen (p); i++)
-    printf ("%02x ", p[i] & 0xFF);
+    printf ("%02x ", (unsigned) p[i] & 0xFF);
   printf ("\n");
 
   free (p);
diff --git a/examples/example4.c b/examples/example4.c
index 1b319c9..a3315a1 100644
--- a/examples/example4.c
+++ b/examples/example4.c
@@ -56,7 +56,7 @@ main (void)
 
   printf ("Read string (length %ld): ", (long int) strlen (buf));
   for (i = 0; i < strlen (buf); i++)
-    printf ("%02x ", buf[i] & 0xFF);
+    printf ("%02x ", (unsigned) buf[i] & 0xFF);
   printf ("\n");
 
   rc = idna_to_unicode_lzlz (buf, &p, 0);
@@ -68,7 +68,7 @@ main (void)
 
   printf ("ACE label (length %ld): '%s'\n", (long int) strlen (p), p);
   for (i = 0; i < strlen (p); i++)
-    printf ("%02x ", p[i] & 0xFF);
+    printf ("%02x ", (unsigned) p[i] & 0xFF);
   printf ("\n");
 
   free (p);
diff --git a/examples/example5.c b/examples/example5.c
index df55798..29d40b9 100644
--- a/examples/example5.c
+++ b/examples/example5.c
@@ -68,7 +68,7 @@ main (void)
 
   printf ("Read string (length %ld): ", (long int) strlen (buf));
   for (i = 0; i < strlen (buf); i++)
-    printf ("%02x ", buf[i] & 0xFF);
+    printf ("%02x ", (unsigned) buf[i] & 0xFF);
   printf ("\n");
 
   p = stringprep_locale_to_utf8 (buf);
diff --git a/src/idn.c b/src/idn.c
index be1c7d1..13eb3c9 100644
--- a/src/idn.c
+++ b/src/idn.c
@@ -419,7 +419,7 @@ main (int argc, char *argv[])
 	      size_t i;
 	      for (i = 0; p[i]; i++)
 		fprintf (stderr, "output[%lu] = U+%04x\n",
-			 (unsigned long) i, p[i]);
+			 (unsigned long) i, (unsigned) p[i]);
 	    }
 
 	  fprintf (stdout, "%s\n", p);
diff --git a/tests/tst_idna.c b/tests/tst_idna.c
index 415764e..4ac046f 100644
--- a/tests/tst_idna.c
+++ b/tests/tst_idna.c
@@ -220,13 +220,14 @@ doit (void)
   char label[100];
   uint32_t *ucs4label = NULL;
   uint32_t tmp[100];
-  size_t len, len2, i;
+  size_t len, len2;
   int rc;
+  unsigned i;
 
   for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++)
     {
       if (debug)
-	printf ("IDNA entry %ld: %s\n", i, idna[i].name);
+	printf ("IDNA entry %u: %s\n", i, idna[i].name);
 
       if (debug)
 	{
@@ -237,7 +238,7 @@ doit (void)
       rc = idna_to_ascii_4i (idna[i].in, idna[i].inlen, label, idna[i].flags);
       if (rc != idna[i].toasciirc)
 	{
-	  fail ("IDNA entry %ld failed: %d\n", i, rc);
+	  fail ("IDNA entry %u failed: %d\n", i, rc);
 	  if (debug)
 	    printf ("FATAL\n");
 	  continue;
@@ -256,7 +257,7 @@ doit (void)
 	  if (strlen (idna[i].out) != strlen (label) ||
 	      strcasecmp (idna[i].out, label) != 0)
 	    {
-	      fail ("IDNA entry %ld failed\n", i);
+	      fail ("IDNA entry %u failed\n", i);
 	      if (debug)
 		printf ("ERROR\n");
 	    }
@@ -273,8 +274,8 @@ doit (void)
 
       if (debug)
 	{
-	  printf ("in: %s (%ld==%ld)\n", idna[i].out, strlen (idna[i].out),
-		  len);
+	  printf ("in: %s (%d==%d)\n", idna[i].out, (int) strlen (idna[i].out),
+		  (int) len);
 	  ucs4print (ucs4label, len);
 	}
 
@@ -282,20 +283,20 @@ doit (void)
       rc = idna_to_unicode_44i (ucs4label, len, tmp, &len2, idna[i].flags);
       if (debug)
 	{
-	  printf ("expected out (%ld):\n",
+	  printf ("expected out (%lu):\n",
 		  rc == IDNA_SUCCESS ? idna[i].inlen : len);
 	  if (rc == IDNA_SUCCESS)
 	    ucs4print (idna[i].in, idna[i].inlen);
 	  else
 	    ucs4print (ucs4label, len);
 
-	  printf ("computed out (%ld):\n", len2);
+	  printf ("computed out (%d):\n", (int) len2);
 	  ucs4print (tmp, len2);
 	}
 
       if (rc != idna[i].tounicoderc)
 	{
-	  fail ("IDNA entry %ld failed: %d\n", i, rc);
+	  fail ("IDNA entry %u failed: %d\n", i, rc);
 	  if (debug)
 	    printf ("FATAL\n");
 	  continue;
@@ -309,11 +310,11 @@ doit (void)
 	  if (debug)
 	    {
 	      if (rc == IDNA_SUCCESS)
-		printf ("len=%ld len2=%ld\n", len2, idna[i].inlen);
+		printf ("len=%d len2=%d\n", (int) len2, (int) idna[i].inlen);
 	      else
-		printf ("len=%ld len2=%ld\n", len, len2);
+		printf ("len=%d len2=%d\n", (int) len, (int) len2);
 	    }
-	  fail ("IDNA entry %ld failed\n", i);
+	  fail ("IDNA entry %u failed\n", i);
 	  if (debug)
 	    printf ("ERROR\n");
 	}
diff --git a/tests/tst_idna2.c b/tests/tst_idna2.c
index 65b3a4d..38932ca 100644
--- a/tests/tst_idna2.c
+++ b/tests/tst_idna2.c
@@ -461,14 +461,14 @@ static const struct idna idna[] = {
 void
 doit (void)
 {
-  size_t i;
+  unsigned i;
   char *out;
   int rc;
 
   for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++)
     {
       if (debug)
-	printf ("IDNA2 entry %ld\n", i);
+	printf ("IDNA2 entry %u\n", i);
 
       if (debug)
 	{
@@ -487,7 +487,7 @@ doit (void)
 			     IDNA_USE_STD3_ASCII_RULES);
       if (rc != IDNA_SUCCESS && strlen (idna[i].out) > 0)
 	{
-	  fail ("IDNA2 entry %ld failed: %d\n", i, rc);
+	  fail ("IDNA2 entry %u failed: %d\n", i, rc);
 	  continue;
 	}
 
@@ -504,7 +504,7 @@ doit (void)
 	  if (strlen (idna[i].out) != strlen (out) ||
 	      strcasecmp (idna[i].out, out) != 0)
 	    {
-	      fail ("IDNA2 entry %ld failed\n", i);
+	      fail ("IDNA2 entry %u failed\n", i);
 	      if (debug)
 		printf ("ERROR\n");
 	    }
diff --git a/tests/tst_idna3.c b/tests/tst_idna3.c
index a189378..f65628c 100644
--- a/tests/tst_idna3.c
+++ b/tests/tst_idna3.c
@@ -59,13 +59,13 @@ doit (void)
 {
   int rc;
   char *out = NULL;
-  size_t i;
+  unsigned i;
 
   for (i = 0; i < sizeof (idna) / sizeof (idna[0]); i++)
     {
       rc = idna_to_unicode_8z8z (idna[i].in, &out, 0);
       if (rc != IDNA_SUCCESS)
-	fail ("IDNA3[%ld] failed %d\n", i, rc);
+	fail ("IDNA3[%u] failed %d\n", i, rc);
 
       if (debug && rc == IDNA_SUCCESS)
 	{
@@ -75,9 +75,9 @@ doit (void)
 	}
 
       if (strcmp (out, idna[i].out) != 0)
-	fail ("IDNA3[%ld] failed\n", i);
+	fail ("IDNA3[%u] failed\n", i);
       else if (debug)
-	printf ("IDNA3[%ld] success\n", i);
+	printf ("IDNA3[%u] success\n", i);
 
       if (out)
 	idn_free (out);
diff --git a/tests/tst_nfkc.c b/tests/tst_nfkc.c
index d150fec..f5af9c6 100644
--- a/tests/tst_nfkc.c
+++ b/tests/tst_nfkc.c
@@ -68,18 +68,18 @@ void
 doit (void)
 {
   char *out;
-  size_t i;
+  unsigned i;
 
   for (i = 0; i < sizeof (nfkc) / sizeof (nfkc[0]); i++)
     {
       if (debug)
-	printf ("NFKC entry %ld\n", i);
+	printf ("NFKC entry %u\n", i);
 
       out = stringprep_utf8_nfkc_normalize (nfkc[i].in,
 					    (ssize_t) strlen (nfkc[i].in));
       if (out == NULL)
 	{
-	  fail ("NFKC entry %ld failed fatally\n", i);
+	  fail ("NFKC entry %u failed fatally\n", i);
 	  continue;
 	}
 
@@ -114,7 +114,7 @@ doit (void)
       if (strlen (nfkc[i].out) != strlen (out) ||
 	  memcmp (nfkc[i].out, out, strlen (out)) != 0)
 	{
-	  fail ("NFKC entry %ld failed\n", i);
+	  fail ("NFKC entry %u failed\n", i);
 	  if (debug)
 	    printf ("ERROR\n");
 	}
diff --git a/tests/tst_pr29.c b/tests/tst_pr29.c
index 3dc5466..11d0ede 100644
--- a/tests/tst_pr29.c
+++ b/tests/tst_pr29.c
@@ -91,7 +91,7 @@ static const struct tv tv[] = {
 void
 doit (void)
 {
-  size_t i;
+  unsigned i;
   int rc;
 
   for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++)
@@ -100,7 +100,7 @@ doit (void)
 	{
 	  uint32_t *p, *q;
 
-	  printf ("PR29 entry %ld: %s\n", i, tv[i].name);
+	  printf ("PR29 entry %u: %s\n", i, tv[i].name);
 
 	  printf ("in:\n");
 	  ucs4print (tv[i].in, tv[i].inlen);
@@ -120,7 +120,7 @@ doit (void)
       rc = pr29_4 (tv[i].in, tv[i].inlen);
       if (rc != tv[i].rc)
 	{
-	  fail ("PR29 entry %ld failed (expected %d): %d\n", i, tv[i].rc, rc);
+	  fail ("PR29 entry %u failed (expected %d): %d\n", i, tv[i].rc, rc);
 	  if (debug)
 	    printf ("FATAL\n");
 	  continue;
@@ -129,7 +129,7 @@ doit (void)
       rc = pr29_4z (tv[i].in);
       if (rc != tv[i].rc)
 	{
-	  fail ("PR29 entry %ld failed (expected %d): %d\n", i, tv[i].rc, rc);
+	  fail ("PR29 entry %u failed (expected %d): %d\n", i, tv[i].rc, rc);
 	  if (debug)
 	    printf ("FATAL\n");
 	  continue;
@@ -142,7 +142,7 @@ doit (void)
 	p = stringprep_ucs4_to_utf8 (tv[i].in, (ssize_t) tv[i].inlen,
 				     &items_read, &items_written);
 	if (p == NULL)
-	  fail ("FAIL: stringprep_ucs4_to_utf8(tv[%ld]) == NULL\n", i);
+	  fail ("FAIL: stringprep_ucs4_to_utf8(tv[%u]) == NULL\n", i);
 	if (debug)
 	  hexprint (p, strlen (p));
 
@@ -150,7 +150,7 @@ doit (void)
 	free (p);
 	if (rc != tv[i].rc)
 	  {
-	    fail ("PR29 entry %ld failed (expected %d): %d\n",
+	    fail ("PR29 entry %u failed (expected %d): %d\n",
 		  i, tv[i].rc, rc);
 	    if (debug)
 	      printf ("FATAL\n");
diff --git a/tests/tst_punycode.c b/tests/tst_punycode.c
index 493b8a2..997744a 100644
--- a/tests/tst_punycode.c
+++ b/tests/tst_punycode.c
@@ -173,7 +173,8 @@ doit (void)
   char *p;
   uint32_t *q;
   int rc;
-  size_t i, outlen;
+  size_t outlen;
+  unsigned i;
 
   p = malloc (sizeof (*p) * BUFSIZ);
   if (p == NULL)
@@ -186,7 +187,7 @@ doit (void)
   for (i = 0; i < sizeof (punycode) / sizeof (punycode[0]); i++)
     {
       if (debug)
-	printf ("PUNYCODE entry %ld: %s\n", i, punycode[i].name);
+	printf ("PUNYCODE entry %u: %s\n", i, punycode[i].name);
 
       if (debug)
 	{
@@ -199,7 +200,7 @@ doit (void)
 			    NULL, &outlen, p);
       if (rc != punycode[i].rc)
 	{
-	  fail ("punycode_encode() entry %ld failed: %d\n", i, rc);
+	  fail ("punycode_encode() entry %u failed: %d\n", i, rc);
 	  if (debug)
 	    printf ("FATAL\n");
 	  continue;
@@ -221,7 +222,7 @@ doit (void)
 	  if (strlen (punycode[i].out) != strlen (p) ||
 	      memcmp (punycode[i].out, p, strlen (p)) != 0)
 	    {
-	      fail ("punycode() entry %ld failed\n", i);
+	      fail ("punycode() entry %u failed\n", i);
 	      if (debug)
 		printf ("ERROR\n");
 	    }
@@ -241,7 +242,7 @@ doit (void)
 			    &outlen, q, NULL);
       if (rc != punycode[i].rc)
 	{
-	  fail ("punycode() entry %ld failed: %d\n", i, rc);
+	  fail ("punycode() entry %u failed: %d\n", i, rc);
 	  if (debug)
 	    printf ("FATAL\n");
 	  continue;
@@ -262,7 +263,7 @@ doit (void)
 	  if (punycode[i].inlen != outlen ||
 	      memcmp (punycode[i].in, q, outlen) != 0)
 	    {
-	      fail ("punycode_decode() entry %ld failed\n", i);
+	      fail ("punycode_decode() entry %u failed\n", i);
 	      if (debug)
 		printf ("ERROR\n");
 	    }
diff --git a/tests/tst_strerror.c b/tests/tst_strerror.c
index 71fff59..730f5e4 100644
--- a/tests/tst_strerror.c
+++ b/tests/tst_strerror.c
@@ -110,7 +110,7 @@ doit (void)
   /* Iterate through all error codes. */
 
   {
-    size_t i;
+    unsigned i;
     const char *last_p = NULL;
 
     for (i = 0;; i++)
@@ -126,13 +126,13 @@ doit (void)
 	    break;
 	  }
 	if (debug)
-	  printf ("idna %ld: %s\n", i, p);
+	  printf ("idna %u: %s\n", i, p);
 	last_p = p;
       }
   }
 
   {
-    size_t i;
+    unsigned i;
     const char *last_p = NULL;
 
     for (i = 0;; i++)
@@ -141,13 +141,13 @@ doit (void)
 	if (p == last_p)
 	  break;
 	if (debug)
-	  printf ("pr29 %ld: %s\n", i, p);
+	  printf ("pr29 %u: %s\n", i, p);
 	last_p = p;
       }
   }
 
   {
-    size_t i;
+    unsigned i;
     const char *last_p = NULL;
 
     for (i = 0;; i++)
@@ -156,13 +156,13 @@ doit (void)
 	if (p == last_p)
 	  break;
 	if (debug)
-	  printf ("punycode %ld: %s\n", i, p);
+	  printf ("punycode %u: %s\n", i, p);
 	last_p = p;
       }
   }
 
   {
-    size_t i;
+    unsigned i;
     const char *last_p = NULL;
 
     for (i = 0;; i++)
@@ -183,13 +183,13 @@ doit (void)
 	    break;
 	  }
 	if (debug)
-	  printf ("stringprep %ld: %s\n", i, p);
+	  printf ("stringprep %u: %s\n", i, p);
 	last_p = p;
       }
   }
 
   {
-    size_t i;
+    unsigned i;
     const char *last_p = NULL;
 
     for (i = 0;; i++)
@@ -198,7 +198,7 @@ doit (void)
 	if (p == last_p)
 	  break;
 	if (debug)
-	  printf ("tld %ld: %s\n", i, p);
+	  printf ("tld %u: %s\n", i, p);
 	last_p = p;
       }
   }
diff --git a/tests/tst_stringprep.c b/tests/tst_stringprep.c
index 149ce6f..7c9ab06 100644
--- a/tests/tst_stringprep.c
+++ b/tests/tst_stringprep.c
@@ -205,7 +205,7 @@ doit (void)
 {
   char *p;
   int rc;
-  size_t i;
+  unsigned i;
 
   if (!stringprep_check_version (STRINGPREP_VERSION))
     fail ("stringprep_check_version failed (header %s runtime %s)\n",
@@ -224,7 +224,7 @@ doit (void)
   for (i = 0; i < sizeof (strprep) / sizeof (strprep[0]); i++)
     {
       if (debug)
-	printf ("STRINGPREP entry %ld\n", i);
+	printf ("STRINGPREP entry %u\n", i);
 
       if (debug)
 	{
@@ -247,12 +247,12 @@ doit (void)
 	  continue;
 	else if (l == NULL)
 	  {
-	    fail ("bad UTF-8 in entry %ld\n", i);
+	    fail ("bad UTF-8 in entry %u\n", i);
 	    continue;
 	  }
 	else if (strcmp (strprep[i].in, x) != 0)
 	  {
-	    fail ("bad UTF-8 in entry %ld\n", i);
+	    fail ("bad UTF-8 in entry %u\n", i);
 	    if (debug)
 	      {
 		puts ("expected:");
@@ -274,7 +274,7 @@ doit (void)
 			       "Nameprep", strprep[i].flags);
       if (rc != strprep[i].rc)
 	{
-	  fail ("stringprep() entry %ld failed: %d\n", i, rc);
+	  fail ("stringprep() entry %u failed: %d\n", i, rc);
 	  if (debug)
 	    printf ("FATAL\n");
 	  if (rc == STRINGPREP_OK)
@@ -302,7 +302,7 @@ doit (void)
 	  if (strlen (strprep[i].out) != strlen (p) ||
 	      memcmp (strprep[i].out, p, strlen (p)) != 0)
 	    {
-	      fail ("stringprep() entry %ld failed\n", i);
+	      fail ("stringprep() entry %ld failed\n", (long) i);
 	      if (debug)
 		printf ("ERROR\n");
 	    }
diff --git a/tests/tst_tld.c b/tests/tst_tld.c
index 2f8e12e..d038c79 100644
--- a/tests/tst_tld.c
+++ b/tests/tst_tld.c
@@ -80,7 +80,7 @@ const Tld_table * my_tld_tables[] =
 void
 doit (void)
 {
-  size_t i;
+  unsigned i;
   const Tld_table *tldtable;
   char *out;
   size_t errpos;
@@ -206,7 +206,7 @@ doit (void)
   for (i = 0; i < sizeof (tld) / sizeof (tld[0]); i++)
     {
       if (debug)
-	printf ("TLD entry %ld: %s\n", i, tld[i].name);
+	printf ("TLD entry %u: %s\n", i, tld[i].name);
 
       if (debug)
 	{
@@ -217,7 +217,7 @@ doit (void)
       tldtable = tld_default_table (tld[i].tld, NULL);
       if (tldtable == NULL)
 	{
-	  fail ("TLD entry %ld tld_get_table (%s)\n", i, tld[i].tld);
+	  fail ("TLD entry %u tld_get_table (%s)\n", i, tld[i].tld);
 	  if (debug)
 	    printf ("FATAL\n");
 	  continue;
@@ -226,7 +226,7 @@ doit (void)
       rc = tld_check_4t (tld[i].in, tld[i].inlen, &errpos, tldtable);
       if (rc != tld[i].rc)
 	{
-	  fail ("TLD entry %ld failed: %d\n", i, rc);
+	  fail ("TLD entry %u failed: %d\n", i, rc);
 	  if (debug)
 	    printf ("FATAL\n");
 	  continue;
@@ -237,7 +237,7 @@ doit (void)
 
       if (rc != tld[i].rc)
 	{
-	  fail ("TLD entry %ld failed\n", i);
+	  fail ("TLD entry %u failed\n", i);
 	  if (debug)
 	    printf ("ERROR\n");
 	}
@@ -245,12 +245,12 @@ doit (void)
 	{
 	  if (debug)
 	    printf ("returned errpos %ld expected errpos %ld\n",
-		    errpos, tld[i].errpos);
+		    (long) errpos, (long) tld[i].errpos);
 
 	  if (tld[i].errpos != errpos)
 	    {
-	      fail ("TLD entry %ld failed because errpos %ld != %ld\n", i,
-		    tld[i].errpos, errpos);
+	      fail ("TLD entry %u failed because errpos %ld != %ld\n", i,
+		    (long) tld[i].errpos, (long) errpos);
 	      if (debug)
 		printf ("ERROR\n");
 	    }
@@ -262,12 +262,12 @@ doit (void)
 	rc = tld_check_8z (tld[i].example, &errpos, NULL);
 	if (rc != tld[i].rc)
 	  {
-	    fail ("TLD entry %ld failed\n", i);
+	    fail ("TLD entry %u failed\n", i);
 	    if (debug)
 	      printf ("ERROR\n");
 	  }
 	if (debug)
-	  printf ("TLD entry %ld tld_check_8z (%s)\n", i, tld[i].example);
+	  printf ("TLD entry %u tld_check_8z (%s)\n", i, tld[i].example);
       }
     }
 }
diff --git a/tests/utils.c b/tests/utils.c
index 717ee01..5577dc3 100644
--- a/tests/utils.c
+++ b/tests/utils.c
@@ -49,7 +49,7 @@ escapeprint (const char *str, size_t len)
 {
   size_t i;
 
-  printf (" (length %ld bytes):\n\t", len);
+  printf (" (length %ld bytes):\n\t", (long) len);
   for (i = 0; i < len; i++)
     {
       if (((str[i] & 0xFF) >= 'A' && (str[i] & 0xFF) <= 'Z') ||
@@ -58,7 +58,7 @@ escapeprint (const char *str, size_t len)
 	  || (str[i] & 0xFF) == ' ' || (str[i] & 0xFF) == '.')
 	printf ("%c", (str[i] & 0xFF));
       else
-	printf ("\\x%02X", (str[i] & 0xFF));
+	printf ("\\x%02X", (unsigned) (str[i] & 0xFF));
       if ((i + 1) % 16 == 0 && (i + 1) < len)
 	printf ("'\n\t'");
     }
@@ -73,7 +73,7 @@ hexprint (const char *str, size_t len)
   printf ("\t;; ");
   for (i = 0; i < len; i++)
     {
-      printf ("%02x ", (str[i] & 0xFF));
+      printf ("%02x ", (unsigned) (str[i] & 0xFF));
       if ((i + 1) % 8 == 0)
 	printf (" ");
       if ((i + 1) % 16 == 0 && i + 1 < len)
-- 
1.9.1

