From abe959a3c56798dbc6616bf3940c29f15bb91b92 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Mon, 29 Aug 2016 18:31:15 +0200
Subject: [PATCH] Fix pointer sign warnings in sexp_vformat.

---
 ChangeLog     |  5 +++++
 sexp-format.c | 33 ++++++++++++++++++++-------------
 2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 51fd73a2..b3150110 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-08-29  Niels Möller  <nisse@lysator.liu.se>
+
+	* sexp-format.c (strlen_u8): New helper function.
+	(sexp_vformat): Use uint8_t * for strings instead of char *.
+
 2016-08-16  Niels Möller  <nisse@lysator.liu.se>
 
 	* examples/io.c (hash_file): Use uint8_t for buffer.
diff --git a/sexp-format.c b/sexp-format.c
index ad129038..9b35d804 100644
--- a/sexp-format.c
+++ b/sexp-format.c
@@ -90,6 +90,12 @@ format_string(struct nettle_buffer *buffer,
   return prefix_length + length;
 }
 
+static inline size_t
+strlen_u8 (const uint8_t *s)
+{
+  return strlen((const char*) s);
+}
+
 size_t
 sexp_vformat(struct nettle_buffer *buffer, const char *format, va_list args)
 {
@@ -103,7 +109,8 @@ sexp_vformat(struct nettle_buffer *buffer, const char *format, va_list args)
 	{
 	  const char *start = format - 1;
 	  size_t length = 1 + strcspn(format, "()% \t");
-	  size_t output_length = format_string(buffer, length, start);
+	  size_t output_length
+	    = format_string(buffer, length, (const uint8_t *) start);
 	  if (!output_length)
 	    return 0;
 	  
@@ -161,19 +168,19 @@ sexp_vformat(struct nettle_buffer *buffer, const char *format, va_list args)
 	      
 	    case 's':
 	      {
-		const char *s;
+		const uint8_t *s;
 		size_t length;
 		size_t output_length;
 		
 		if (nul_flag)
 		  {
-		    s = va_arg(args, const char *);
-		    length = strlen(s);
+		    s = va_arg(args, const uint8_t *);
+		    length = strlen_u8(s);
 		  }
 		else
 		  {
 		    length = va_arg(args, size_t);
-		    s = va_arg(args, const char *);
+		    s = va_arg(args, const uint8_t *);
 		  }
 		
 		output_length = format_string(buffer, length, s);
@@ -185,22 +192,22 @@ sexp_vformat(struct nettle_buffer *buffer, const char *format, va_list args)
 	      }
 	    case 't':
 	      {
-		const char *s;
+		const uint8_t *s;
 		size_t length;
 		size_t output_length;
 		
 		if (nul_flag)
 		  {
-		    s = va_arg(args, const char *);
+		    s = va_arg(args, const uint8_t *);
 		    if (!s)
 		      break;
 		    
-		    length = strlen(s);
+		    length = strlen_u8(s);
 		  }
 		else
 		  {
 		    length = va_arg(args, size_t);
-		    s = va_arg(args, const char *);
+		    s = va_arg(args, const uint8_t *);
 		    if (!s)
 		      break;
 		  }
@@ -225,18 +232,18 @@ sexp_vformat(struct nettle_buffer *buffer, const char *format, va_list args)
 	      
 	    case 'l':
 	      {
-		const char *s;
+		const uint8_t *s;
 		size_t length;
 		
 		if (nul_flag)
 		  {
-		    s = va_arg(args, const char *);
-		    length = strlen(s);
+		    s = va_arg(args, const uint8_t *);
+		    length = strlen_u8(s);
 		  }
 		else
 		  {
 		    length = va_arg(args, size_t);
-		    s = va_arg(args, const char *);
+		    s = va_arg(args, const uint8_t *);
 		  }
 
 		if (buffer && !nettle_buffer_write(buffer, length, s))
-- 
GitLab