Blame SOURCES/0034-Try-to-deal-with-some-signof-char-signof-uint8_t-mad.patch

d5c737
From 70e86dc3e48345f1a961aef6173d5126edebf90a Mon Sep 17 00:00:00 2001
d5c737
From: Peter Jones <pjones@redhat.com>
d5c737
Date: Mon, 17 Jun 2019 14:47:24 -0400
d5c737
Subject: [PATCH 34/63] Try to deal with some signof(char) != signof(uint8_t)
d5c737
 madness.
d5c737
d5c737
The 3-sign "char" type in C is so so painful sometimes.  This attempts
d5c737
to use -funsigned-char to avoid type-casting between (uint8_t *) and
d5c737
(char *) quite so much.  I'm not sure it'll pay off.  The fact that
d5c737
"char" is something that's not ever actually the same type as "unsigned
d5c737
char" or "signed char" is still the absolute worst thing.
d5c737
d5c737
Why do we need signed char at all again?
d5c737
d5c737
Signed-off-by: Peter Jones <pjones@redhat.com>
d5c737
---
d5c737
 Make.defaults                  |  4 +++-
d5c737
 gcc.specs                      |  4 ++--
d5c737
 src/dp-acpi.c                  | 11 ++++++-----
d5c737
 src/dp-hw.c                    |  5 +++--
d5c737
 src/dp-media.c                 |  2 +-
d5c737
 src/dp-message.c               | 22 +++++++++++-----------
d5c737
 src/dp.c                       |  8 +++++---
d5c737
 src/dp.h                       | 18 ++++++++++--------
d5c737
 src/export.c                   | 12 ++++++------
d5c737
 src/include/efivar/efivar-dp.h | 10 ++++++----
d5c737
 src/include/efivar/efivar.h    |  4 ++--
d5c737
 src/ucs2.h                     |  6 +++---
d5c737
 12 files changed, 58 insertions(+), 48 deletions(-)
d5c737
d5c737
diff --git a/Make.defaults b/Make.defaults
d5c737
index 80fd99eba71..36e922f5ba7 100644
d5c737
--- a/Make.defaults
d5c737
+++ b/Make.defaults
d5c737
@@ -31,7 +31,9 @@ PKGS	=
d5c737
 
d5c737
 CPPFLAGS += -DLIBEFIVAR_VERSION=$(VERSION)
d5c737
 
d5c737
-clang_cflags = -D_GNU_SOURCE -std=gnu11 -Wno-address-of-packed-member
d5c737
+clang_cflags = -D_GNU_SOURCE -std=gnu11 -Wno-address-of-packed-member \
d5c737
+	       -funsigned-char -Wall -Wno-nonnull-compare \
d5c737
+	       -Werror -Wno-error=cpp
d5c737
 gcc_cflags = -specs=$(TOPDIR)/gcc.specs
d5c737
 cflags	= $(CFLAGS) -I${TOPDIR}/src/include/ \
d5c737
 	$(if $(findstring clang,$(CC)),$(clang_cflags),) \
d5c737
diff --git a/gcc.specs b/gcc.specs
d5c737
index d06a8e096fc..9d2b145ee6e 100644
d5c737
--- a/gcc.specs
d5c737
+++ b/gcc.specs
d5c737
@@ -2,13 +2,13 @@
d5c737
 + -D_GNU_SOURCE
d5c737
 
d5c737
 *efivar_cpp_options:
d5c737
- -Werror -Wall -std=gnu11 -Wextra
d5c737
+ -Wall -Wno-nonnull-compare -Werror -Wno-error=cpp -std=gnu11 -Wextra -funsigned-char
d5c737
 
d5c737
 *cpp_options:
d5c737
 + %(efivar_cpp_options)
d5c737
 
d5c737
 *cc1_options:
d5c737
-+ %(efivar_cpp_options) -Wmaybe-uninitialized -fno-merge-constants -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} -grecord-gcc-switches
d5c737
++ %(efivar_cpp_options) -Wmaybe-uninitialized -fno-merge-constants -funsigned-char -fvisibility=hidden %{!r:%{!fpie:%{!fPIE:%{!fpic:%{!fPIC:%{!fno-pic:-fPIE}}}}}} -grecord-gcc-switches
d5c737
 
d5c737
 *self_spec:
d5c737
 + %{!shared:%{!static:%{!r:-pie}}} %{static:-Wl,-no-fatal-warnings -Wl,-static -static -Wl,-z,relro,-z,now} -grecord-gcc-switches
d5c737
diff --git a/src/dp-acpi.c b/src/dp-acpi.c
d5c737
index 2525fdfd073..02ec70eec7a 100644
d5c737
--- a/src/dp-acpi.c
d5c737
+++ b/src/dp-acpi.c
d5c737
@@ -28,7 +28,7 @@
d5c737
 #include "efivar.h"
d5c737
 
d5c737
 static ssize_t
d5c737
-_format_acpi_adr(char *buf, size_t size,
d5c737
+_format_acpi_adr(unsigned char *buf, size_t size,
d5c737
 		 const char *dp_type UNUSED,
d5c737
 		 const_efidp dp)
d5c737
 {
d5c737
@@ -45,9 +45,10 @@ _format_acpi_adr(char *buf, size_t size,
d5c737
 	format_helper(_format_acpi_adr, buf, size, off, "AcpiAdr", dp)
d5c737
 
d5c737
 static ssize_t
d5c737
-_format_acpi_hid_ex(char *buf, size_t size, const char *dp_type UNUSED,
d5c737
-		    const_efidp dp,
d5c737
-		    const char *hidstr, const char *cidstr, const char *uidstr)
d5c737
+_format_acpi_hid_ex(unsigned char *buf, size_t size,
d5c737
+		    const char *dp_type UNUSED, const_efidp dp,
d5c737
+		    const char *hidstr, const char *cidstr,
d5c737
+		    const char *uidstr)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
 
d5c737
@@ -98,7 +99,7 @@ _format_acpi_hid_ex(char *buf, size_t size, const char *dp_type UNUSED,
d5c737
 		      hidstr, cidstr, uidstr)
d5c737
 
d5c737
 ssize_t
d5c737
-_format_acpi_dn(char *buf, size_t size, const_efidp dp)
d5c737
+_format_acpi_dn(unsigned char *buf, size_t size, const_efidp dp)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
 	const char *hidstr = NULL;
d5c737
diff --git a/src/dp-hw.c b/src/dp-hw.c
d5c737
index 1fe0f66e871..28998316d9d 100644
d5c737
--- a/src/dp-hw.c
d5c737
+++ b/src/dp-hw.c
d5c737
@@ -26,7 +26,8 @@
d5c737
 #include "efivar.h"
d5c737
 
d5c737
 ssize_t
d5c737
-format_edd10_guid(char *buf, size_t size, const char *dp_type, const_efidp dp)
d5c737
+format_edd10_guid(unsigned char *buf, size_t size,
d5c737
+		  const char *dp_type, const_efidp dp)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
 	efidp_edd10 const *edd_dp = (efidp_edd10 *)dp;
d5c737
@@ -36,7 +37,7 @@ format_edd10_guid(char *buf, size_t size, const char *dp_type, const_efidp dp)
d5c737
 }
d5c737
 
d5c737
 ssize_t
d5c737
-_format_hw_dn(char *buf, size_t size, const_efidp dp)
d5c737
+_format_hw_dn(unsigned char *buf, size_t size, const_efidp dp)
d5c737
 {
d5c737
 	efi_guid_t edd10_guid = EDD10_HARDWARE_VENDOR_PATH_GUID;
d5c737
 	ssize_t off = 0;
d5c737
diff --git a/src/dp-media.c b/src/dp-media.c
d5c737
index 4728c326100..7f5d1c678ce 100644
d5c737
--- a/src/dp-media.c
d5c737
+++ b/src/dp-media.c
d5c737
@@ -28,7 +28,7 @@
d5c737
 #include "efivar.h"
d5c737
 
d5c737
 ssize_t
d5c737
-_format_media_dn(char *buf, size_t size, const_efidp dp)
d5c737
+_format_media_dn(unsigned char *buf, size_t size, const_efidp dp)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
 	switch (dp->subtype) {
d5c737
diff --git a/src/dp-message.c b/src/dp-message.c
d5c737
index b88f17fb712..d00b2ad5d67 100644
d5c737
--- a/src/dp-message.c
d5c737
+++ b/src/dp-message.c
d5c737
@@ -28,7 +28,7 @@
d5c737
 #include "efivar.h"
d5c737
 
d5c737
 static ssize_t
d5c737
-format_ipv4_addr_helper(char *buf, size_t size, const char *dp_type,
d5c737
+format_ipv4_addr_helper(unsigned char *buf, size_t size, const char *dp_type,
d5c737
 			const uint8_t *ipaddr, int32_t port)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
@@ -40,7 +40,7 @@ format_ipv4_addr_helper(char *buf, size_t size, const char *dp_type,
d5c737
 }
d5c737
 
d5c737
 static ssize_t
d5c737
-format_ipv6_addr_helper(char *buf, size_t size, const char *dp_type,
d5c737
+format_ipv6_addr_helper(unsigned char *buf, size_t size, const char *dp_type,
d5c737
 			const uint8_t *ipaddr, int32_t port)
d5c737
 {
d5c737
 	uint16_t *ip = (uint16_t *)ipaddr;
d5c737
@@ -123,7 +123,7 @@ format_ipv6_addr_helper(char *buf, size_t size, const char *dp_type,
d5c737
 		      "IPv6", addr, port)
d5c737
 
d5c737
 static ssize_t
d5c737
-format_ip_addr_helper(char *buf, size_t size,
d5c737
+format_ip_addr_helper(unsigned char *buf, size_t size,
d5c737
 		      const char *dp_type UNUSED,
d5c737
 		      int is_ipv6, const efi_ip_addr_t *addr)
d5c737
 {
d5c737
@@ -142,7 +142,7 @@ format_ip_addr_helper(char *buf, size_t size,
d5c737
 		      dp_type, is_ipv6, addr)
d5c737
 
d5c737
 static ssize_t
d5c737
-format_uart(char *buf, size_t size,
d5c737
+format_uart(unsigned char *buf, size_t size,
d5c737
 	    const char *dp_type UNUSED,
d5c737
 	    const_efidp dp)
d5c737
 {
d5c737
@@ -162,7 +162,7 @@ format_uart(char *buf, size_t size,
d5c737
 }
d5c737
 
d5c737
 static ssize_t
d5c737
-format_sas(char *buf, size_t size,
d5c737
+format_sas(unsigned char *buf, size_t size,
d5c737
 	   const char *dp_type UNUSED,
d5c737
 	   const_efidp dp)
d5c737
 {
d5c737
@@ -232,7 +232,7 @@ format_sas(char *buf, size_t size,
d5c737
 	       dp->usb_class.device_protocol)
d5c737
 
d5c737
 static ssize_t
d5c737
-format_usb_class(char *buf, size_t size,
d5c737
+format_usb_class(unsigned char *buf, size_t size,
d5c737
 		 const char *dp_type UNUSED,
d5c737
 		 const_efidp dp)
d5c737
 {
d5c737
@@ -312,7 +312,7 @@ format_usb_class(char *buf, size_t size,
d5c737
 }
d5c737
 
d5c737
 ssize_t
d5c737
-_format_message_dn(char *buf, size_t size, const_efidp dp)
d5c737
+_format_message_dn(unsigned char *buf, size_t size, const_efidp dp)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
 	switch (dp->subtype) {
d5c737
@@ -393,7 +393,7 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
d5c737
 		struct {
d5c737
 			efi_guid_t guid;
d5c737
 			char label[40];
d5c737
-			ssize_t (*formatter)(char *buf, size_t size,
d5c737
+			ssize_t (*formatter)(unsigned char *buf, size_t size,
d5c737
 				const char *dp_type UNUSED,
d5c737
 				const_efidp dp);
d5c737
 		} subtypes[] = {
d5c737
@@ -417,7 +417,7 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
d5c737
 			  .label = "" }
d5c737
 		};
d5c737
 		char *label = NULL;
d5c737
-		ssize_t (*formatter)(char *buf, size_t size,
d5c737
+		ssize_t (*formatter)(unsigned char *buf, size_t size,
d5c737
 			const char *dp_type UNUSED,
d5c737
 			const_efidp dp) = NULL;
d5c737
 
d5c737
@@ -455,8 +455,8 @@ _format_message_dn(char *buf, size_t size, const_efidp dp)
d5c737
 			       }
d5c737
 	case EFIDP_MSG_IPv6: {
d5c737
 		efidp_ipv6_addr const *a = &dp->ipv6_addr;
d5c737
-		char *addr0 = NULL;
d5c737
-		char *addr1 = NULL;
d5c737
+		unsigned char *addr0 = NULL;
d5c737
+		unsigned char *addr1 = NULL;
d5c737
 		ssize_t tmpoff = 0;
d5c737
 		ssize_t sz;
d5c737
 
d5c737
diff --git a/src/dp.c b/src/dp.c
d5c737
index b6eea74878c..f6a4b2ddafa 100644
d5c737
--- a/src/dp.c
d5c737
+++ b/src/dp.c
d5c737
@@ -298,7 +298,8 @@ efidp_append_instance(const_efidp dp, const_efidp dpi, efidp *out)
d5c737
 }
d5c737
 
d5c737
 ssize_t PUBLIC
d5c737
-efidp_format_device_path(char *buf, size_t size, const_efidp dp, ssize_t limit)
d5c737
+efidp_format_device_path(unsigned char *buf, size_t size, const_efidp dp,
d5c737
+			 ssize_t limit)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
 	int first = 1;
d5c737
@@ -402,7 +403,8 @@ efidp_format_device_path(char *buf, size_t size, const_efidp dp, ssize_t limit)
d5c737
 }
d5c737
 
d5c737
 ssize_t PUBLIC
d5c737
-efidp_parse_device_node(char *path UNUSED, efidp out UNUSED, size_t size UNUSED)
d5c737
+efidp_parse_device_node(unsigned char *path UNUSED,
d5c737
+			efidp out UNUSED, size_t size UNUSED)
d5c737
 {
d5c737
 	efi_error("not implented");
d5c737
 	errno = -ENOSYS;
d5c737
@@ -410,7 +412,7 @@ efidp_parse_device_node(char *path UNUSED, efidp out UNUSED, size_t size UNUSED)
d5c737
 }
d5c737
 
d5c737
 ssize_t PUBLIC
d5c737
-efidp_parse_device_path(char *path UNUSED, efidp out UNUSED,
d5c737
+efidp_parse_device_path(unsigned char *path UNUSED, efidp out UNUSED,
d5c737
 			size_t size UNUSED)
d5c737
 {
d5c737
 	efi_error("not implented");
d5c737
diff --git a/src/dp.h b/src/dp.h
d5c737
index 33a29db0d5d..6609b0d827e 100644
d5c737
--- a/src/dp.h
d5c737
+++ b/src/dp.h
d5c737
@@ -88,8 +88,9 @@
d5c737
 	})
d5c737
 
d5c737
 static inline ssize_t UNUSED
d5c737
-format_hex_helper(char *buf, size_t size, const char *dp_type, char *separator,
d5c737
-		  int stride, const void * const addr, const size_t len)
d5c737
+format_hex_helper(unsigned char *buf, size_t size, const char *dp_type,
d5c737
+		  char *separator, int stride, const void * const addr,
d5c737
+		  const size_t len)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
 	for (size_t i = 0; i < len; i++) {
d5c737
@@ -110,7 +111,8 @@ format_hex_helper(char *buf, size_t size, const char *dp_type, char *separator,
d5c737
 		      addr, len)
d5c737
 
d5c737
 static inline ssize_t UNUSED
d5c737
-format_vendor_helper(char *buf, size_t size, char *label, const_efidp dp)
d5c737
+format_vendor_helper(unsigned char *buf, size_t size, char *label,
d5c737
+		     const_efidp dp)
d5c737
 {
d5c737
 	ssize_t off = 0;
d5c737
 	ssize_t bytes = efidp_node_size(dp)
d5c737
@@ -157,11 +159,11 @@ format_vendor_helper(char *buf, size_t size, char *label, const_efidp dp)
d5c737
 		off;							\
d5c737
 	})
d5c737
 
d5c737
-extern ssize_t _format_hw_dn(char *buf, size_t size, const_efidp dp);
d5c737
-extern ssize_t _format_acpi_dn(char *buf, size_t size, const_efidp dp);
d5c737
-extern ssize_t _format_message_dn(char *buf, size_t size, const_efidp dp);
d5c737
-extern ssize_t _format_media_dn(char *buf, size_t size, const_efidp dp);
d5c737
-extern ssize_t _format_bios_boot_dn(char *buf, size_t size, const_efidp dp);
d5c737
+extern ssize_t _format_hw_dn(unsigned char *buf, size_t size, const_efidp dp);
d5c737
+extern ssize_t _format_acpi_dn(unsigned char *buf, size_t size, const_efidp dp);
d5c737
+extern ssize_t _format_message_dn(unsigned char *buf, size_t size, const_efidp dp);
d5c737
+extern ssize_t _format_media_dn(unsigned char *buf, size_t size, const_efidp dp);
d5c737
+extern ssize_t _format_bios_boot_dn(unsigned char *buf, size_t size, const_efidp dp);
d5c737
 
d5c737
 #define format_helper_2(name, buf, size, off, dp) ({			\
d5c737
 		ssize_t _sz;						\
d5c737
diff --git a/src/export.c b/src/export.c
d5c737
index 5b11ae883cf..6b78412cce1 100644
d5c737
--- a/src/export.c
d5c737
+++ b/src/export.c
d5c737
@@ -35,7 +35,7 @@
d5c737
 struct efi_variable {
d5c737
 	uint64_t attrs;
d5c737
 	efi_guid_t *guid;
d5c737
-	char *name;
d5c737
+	unsigned char *name;
d5c737
 	uint8_t *data;
d5c737
 	size_t data_size;
d5c737
 };
d5c737
@@ -149,7 +149,7 @@ efi_variable_import(uint8_t *data, size_t size, efi_variable_t **var_out)
d5c737
 ssize_t NONNULL(1) PUBLIC
d5c737
 efi_variable_export(efi_variable_t *var, uint8_t *data, size_t size)
d5c737
 {
d5c737
-	size_t name_len = strlen(var->name);
d5c737
+	size_t name_len = strlen((char *)var->name);
d5c737
 
d5c737
 	size_t needed = sizeof (uint32_t)		/* magic */
d5c737
 		      + sizeof (uint32_t)		/* version */
d5c737
@@ -233,13 +233,13 @@ efi_variable_free(efi_variable_t *var, int free_data)
d5c737
 }
d5c737
 
d5c737
 int NONNULL(1, 2) PUBLIC
d5c737
-efi_variable_set_name(efi_variable_t *var, char *name)
d5c737
+efi_variable_set_name(efi_variable_t *var, unsigned char *name)
d5c737
 {
d5c737
 	var->name = name;
d5c737
 	return 0;
d5c737
 }
d5c737
 
d5c737
-char PUBLIC NONNULL(1) *
d5c737
+unsigned char PUBLIC NONNULL(1) *
d5c737
 efi_variable_get_name(efi_variable_t *var)
d5c737
 {
d5c737
 	if (!var->name) {
d5c737
@@ -329,10 +329,10 @@ efi_variable_realize(efi_variable_t *var)
d5c737
 	}
d5c737
 	uint32_t attrs = var->attrs & ATTRS_MASK;
d5c737
 	if (attrs & EFI_VARIABLE_APPEND_WRITE) {
d5c737
-		return efi_append_variable(*var->guid, var->name,
d5c737
+		return efi_append_variable(*var->guid, (char *)var->name,
d5c737
 					var->data, var->data_size, attrs);
d5c737
 	}
d5c737
-	return efi_set_variable(*var->guid, var->name, var->data,
d5c737
+	return efi_set_variable(*var->guid, (char *)var->name, var->data,
d5c737
 				var->data_size, attrs, 0600);
d5c737
 }
d5c737
 
d5c737
diff --git a/src/include/efivar/efivar-dp.h b/src/include/efivar/efivar-dp.h
d5c737
index 57453548701..706d25bdebd 100644
d5c737
--- a/src/include/efivar/efivar-dp.h
d5c737
+++ b/src/include/efivar/efivar-dp.h
d5c737
@@ -1240,10 +1240,12 @@ efidp_is_valid(const_efidp dp, ssize_t limit)
d5c737
 #endif
d5c737
 
d5c737
 /* and now, printing and parsing */
d5c737
-extern ssize_t efidp_parse_device_node(char *path, efidp out, size_t size);
d5c737
-extern ssize_t efidp_parse_device_path(char *path, efidp out, size_t size);
d5c737
-extern ssize_t efidp_format_device_path(char *buf, size_t size, const_efidp dp,
d5c737
-				       ssize_t limit);
d5c737
+extern ssize_t efidp_parse_device_node(unsigned char *path,
d5c737
+				       efidp out, size_t size);
d5c737
+extern ssize_t efidp_parse_device_path(unsigned char *path,
d5c737
+				       efidp out, size_t size);
d5c737
+extern ssize_t efidp_format_device_path(unsigned char *buf, size_t size,
d5c737
+					const_efidp dp, ssize_t limit);
d5c737
 extern ssize_t efidp_make_vendor(uint8_t *buf, ssize_t size, uint8_t type,
d5c737
 				 uint8_t subtype,  efi_guid_t vendor_guid,
d5c737
 				 void *data, size_t data_size);
d5c737
diff --git a/src/include/efivar/efivar.h b/src/include/efivar/efivar.h
d5c737
index caa4adf056c..729b6fe80f7 100644
d5c737
--- a/src/include/efivar/efivar.h
d5c737
+++ b/src/include/efivar/efivar.h
d5c737
@@ -144,9 +144,9 @@ extern efi_variable_t *efi_variable_alloc(void)
d5c737
 			__attribute__((__visibility__ ("default")));
d5c737
 extern void efi_variable_free(efi_variable_t *var, int free_data);
d5c737
 
d5c737
-extern int efi_variable_set_name(efi_variable_t *var, char *name)
d5c737
+extern int efi_variable_set_name(efi_variable_t *var, unsigned char *name)
d5c737
 			__attribute__((__nonnull__ (1, 2)));
d5c737
-extern char *efi_variable_get_name(efi_variable_t *var)
d5c737
+extern unsigned char *efi_variable_get_name(efi_variable_t *var)
d5c737
 			__attribute__((__visibility__ ("default")))
d5c737
 			__attribute__((__nonnull__ (1)));
d5c737
 
d5c737
diff --git a/src/ucs2.h b/src/ucs2.h
d5c737
index 176f9ccac57..478de23b23f 100644
d5c737
--- a/src/ucs2.h
d5c737
+++ b/src/ucs2.h
d5c737
@@ -47,7 +47,7 @@ ucs2size(const void *s, ssize_t limit)
d5c737
 }
d5c737
 
d5c737
 static inline size_t UNUSED NONNULL(1)
d5c737
-utf8len(uint8_t *s, ssize_t limit)
d5c737
+utf8len(const unsigned char *s, ssize_t limit)
d5c737
 {
d5c737
 	ssize_t i, j;
d5c737
 	for (i = 0, j = 0; i < (limit >= 0 ? limit : i+1) && s[i] != '\0';
d5c737
@@ -64,7 +64,7 @@ utf8len(uint8_t *s, ssize_t limit)
d5c737
 }
d5c737
 
d5c737
 static inline size_t UNUSED NONNULL(1)
d5c737
-utf8size(uint8_t *s, ssize_t limit)
d5c737
+utf8size(const unsigned char *s, ssize_t limit)
d5c737
 {
d5c737
 	size_t ret = utf8len(s,limit);
d5c737
 	if (ret < (limit >= 0 ? (size_t)limit : ret+1))
d5c737
@@ -129,7 +129,7 @@ ucs2_to_utf8(const void * const voidchars, ssize_t limit)
d5c737
 }
d5c737
 
d5c737
 static inline ssize_t UNUSED NONNULL(4)
d5c737
-utf8_to_ucs2(void *ucs2void, ssize_t size, int terminate, uint8_t *utf8)
d5c737
+utf8_to_ucs2(void *ucs2void, ssize_t size, int terminate, const unsigned char *utf8)
d5c737
 {
d5c737
 	ssize_t req;
d5c737
 	ssize_t i, j;
d5c737
-- 
d5c737
2.26.2
d5c737