[PATCH] Convert all cases of wchar_t to char16_t

10 views
Skip to first unread message

Tobias Schmidl

unread,
Aug 5, 2022, 7:14:11 AM8/5/22
to efibootg...@googlegroups.com, Tobias Schmidl
We're using actually a uint16_t for BGENV, not a wchar_t, which is 32
bit wide in current libc. Since the env block is the only user, this
should be without side effects.

Signed-off-by: Tobias Schmidl <tobias...@siemens.com>
---
env/env_api.c | 8 ++++----
env/env_api_fat.c | 2 +-
include/env_api.h | 5 +++--
tools/tests/test_ebgenv_api.c | 2 +-
tools/tests/test_ebgenv_api_internal.c | 8 ++++----
5 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/env/env_api.c b/env/env_api.c
index 1fad1d7..6ecd24d 100644
--- a/env/env_api.c
+++ b/env/env_api.c
@@ -26,7 +26,7 @@
* Thus, the needed conversion by truncation function is
* reimplemented here.
*/
-char *str16to8(char *buffer, const wchar_t *src)
+char *str16to8(char *buffer, const char16_t *src)
{
if (!src || !buffer) {
return NULL;
@@ -41,14 +41,14 @@ char *str16to8(char *buffer, const wchar_t *src)
return tmp;
}

-wchar_t *str8to16(wchar_t *buffer, const char *src)
+char16_t *str8to16(char16_t *buffer, const char *src)
{
if (!src || !buffer) {
return NULL;
}
- wchar_t *tmp = buffer;
+ char16_t *tmp = buffer;
while (*src) {
- *buffer = (wchar_t)*src;
+ *buffer = (char16_t)*src;
src++;
buffer++;
}
diff --git a/env/env_api_fat.c b/env/env_api_fat.c
index 1c01a52..a08100b 100644
--- a/env/env_api_fat.c
+++ b/env/env_api_fat.c
@@ -277,7 +277,7 @@ static int bgenv_get_uint(char *buffer, uint64_t *type, void *data,
}

static int bgenv_get_string(char *buffer, uint64_t *type, void *data,
- wchar_t *srcstr)
+ const char16_t *srcstr)
{
str16to8(buffer, srcstr);
if (!data) {
diff --git a/include/env_api.h b/include/env_api.h
index 90a0568..e6b58d4 100644
--- a/include/env_api.h
+++ b/include/env_api.h
@@ -31,6 +31,7 @@
#include <zlib.h>
#include "envdata.h"
#include "ebgenv.h"
+#include <uchar.h>

#ifdef DEBUG
#define printf_debug(fmt, ...) printf(fmt, __VA_ARGS__)
@@ -74,8 +75,8 @@ typedef struct gc_item {

extern void bgenv_be_verbose(bool v);

-extern char *str16to8(char *buffer, const wchar_t *src);
-extern wchar_t *str8to16(wchar_t *buffer, const char *src);
+extern char *str16to8(char *buffer, const char16_t *src);
+extern char16_t *str8to16(char16_t *buffer, const char *src);

extern bool bgenv_init(void);
extern void bgenv_finalize(void);
diff --git a/tools/tests/test_ebgenv_api.c b/tools/tests/test_ebgenv_api.c
index 9623bb7..8efa9d3 100644
--- a/tools/tests/test_ebgenv_api.c
+++ b/tools/tests/test_ebgenv_api.c
@@ -87,7 +87,7 @@ START_TEST(ebgenv_api_ebg_env_create_new)
{
ebgenv_t e;
int ret;
- wchar_t bufferw[10];
+ char16_t bufferw[10];
char buffer[10];
char *kernelfile = "kernel123";
char *kernelparams = "param456";
diff --git a/tools/tests/test_ebgenv_api_internal.c b/tools/tests/test_ebgenv_api_internal.c
index 0d70a7c..1ed1d99 100644
--- a/tools/tests/test_ebgenv_api_internal.c
+++ b/tools/tests/test_ebgenv_api_internal.c
@@ -43,11 +43,11 @@ BG_ENVDATA envdata[ENV_NUM_CONFIG_PARTS];

START_TEST(ebgenv_api_internal_strXtoY)
{
- wchar_t *exp_res = L"This is a test";
- wchar_t bufferw[16];
+ char16_t *exp_res = L"This is a test";
+ char16_t bufferw[16];
char buffer[16];
char *input = "This is a test";
- wchar_t *resw;
+ char16_t *resw;
char *res;

/* Test conversion from ASCII bits to 16 bit encoding
@@ -259,7 +259,7 @@ START_TEST(ebgenv_api_internal_bgenv_get)
BGENV *handle = bgenv_open_latest();
ck_assert(handle != NULL);

- wchar_t buffer[ENV_STRING_LENGTH];
+ char16_t buffer[ENV_STRING_LENGTH];
char *test_strings[] = {
"kernelfile_test123",
"kernelparams_test123",
--
2.36.1

Jan Kiszka

unread,
Aug 10, 2022, 7:46:47 AM8/10/22
to Tobias Schmidl, efibootg...@googlegroups.com
Thanks, applied.

Jan

--
Siemens AG, Technology
Competence Center Embedded Linux
Reply all
Reply to author
Forward
0 new messages