]> Git Repo - J-u-boot.git/blobdiff - include/charset.h
Merge tag 'v2025.01-rc6' into next
[J-u-boot.git] / include / charset.h
index a911160f192ed95b41e7ad949401ee035f00080e..348bad5883adf5ca5e79acb373f05da197e83135 100644 (file)
 
 #define MAX_UTF8_PER_UTF16 3
 
-/**
+/*
  * codepage_437 - Unicode to codepage 437 translation table
  */
-extern const u16 codepage_437[128];
+extern const u16 codepage_437[160];
 
 /**
  * console_read_unicode() - read Unicode code point from console
@@ -173,6 +173,18 @@ s32 utf_to_lower(const s32 code);
  */
 s32 utf_to_upper(const s32 code);
 
+/**
+ * u16_strcasecmp() - compare two u16 strings case insensitively
+ *
+ * @s1:                first string to compare
+ * @s2:                second string to compare
+ * Return:     0  if the first n u16 are the same in s1 and s2
+ *             < 0 if the first different u16 in s1 is less than the
+ *             corresponding u16 in s2
+ *             > 0 if the first different u16 in s1 is greater than the
+ */
+int u16_strcasecmp(const u16 *s1, const u16 *s2);
+
 /**
  * u16_strncmp() - compare two u16 string
  *
@@ -200,18 +212,6 @@ int u16_strncmp(const u16 *s1, const u16 *s2, size_t n);
  */
 #define u16_strcmp(s1, s2)     u16_strncmp((s1), (s2), SIZE_MAX)
 
-/**
- * u16_strlen - count non-zero words
- *
- * This function matches wsclen() if the -fshort-wchar compiler flag is set.
- * In the EFI context we explicitly need a function handling u16 strings.
- *
- * @in:                        null terminated u16 string
- * Return:             number of non-zero words.
- *                     This is not the number of utf-16 letters!
- */
-size_t u16_strlen(const void *in);
-
 /**
  * u16_strsize() - count size of u16 string in bytes including the null
  *                character
@@ -236,6 +236,20 @@ size_t u16_strsize(const void *in);
  */
 size_t u16_strnlen(const u16 *in, size_t count);
 
+/**
+ * u16_strlen - count non-zero words
+ *
+ * This function matches wsclen() if the -fshort-wchar compiler flag is set.
+ * In the EFI context we explicitly need a function handling u16 strings.
+ *
+ * @in:                        null terminated u16 string
+ * Return:             number of non-zero words.
+ *                     This is not the number of utf-16 letters!
+ */
+size_t u16_strlen(const void *in);
+
+#define u16_strlen(in) u16_strnlen(in, SIZE_MAX)
+
 /**
  * u16_strcpy() - copy u16 string
  *
@@ -259,6 +273,20 @@ u16 *u16_strcpy(u16 *dest, const u16 *src);
  */
 u16 *u16_strdup(const void *src);
 
+/**
+ * u16_strlcat() - Append a length-limited, %NUL-terminated string to another
+ *
+ * Append the source string @src to the destination string @dest, overwriting
+ * null word at the end of @dest adding  a terminating null word.
+ *
+ * @dest:              zero terminated u16 destination string
+ * @src:               zero terminated u16 source string
+ * @count:             size of buffer in u16 words including taling 0x0000
+ * Return:             required size including trailing 0x0000 in u16 words
+ *                     If return value >= count, truncation occurred.
+ */
+size_t u16_strlcat(u16 *dest, const u16 *src, size_t count);
+
 /**
  * utf16_to_utf8() - Convert an utf16 string to utf8
  *
@@ -296,11 +324,21 @@ int utf_to_cp(s32 *c, const u16 *codepage);
 int utf8_to_cp437_stream(u8 c, char *buffer);
 
 /**
- * utf8_to_utf32_stream() - convert UTF-8 stream to UTF-32
+ * utf8_to_utf32_stream() - convert UTF-8 byte stream to Unicode code points
+ *
+ * The function is called for each byte @c in a UTF-8 stream. The byte is
+ * appended to the temporary storage @buffer until the UTF-8 stream in
+ * @buffer describes a Unicode code point.
+ *
+ * When a new code point has been decoded it is returned and buffer[0] is
+ * set to '\0', otherwise the return value is 0.
+ *
+ * The buffer must be at least 5 characters long. Before the first function
+ * invocation buffer[0] must be set to '\0'."
  *
  * @c:         next UTF-8 character to convert
  * @buffer:    buffer, at least 5 characters
- * Return:     next codepage 437 character or 0
+ * Return:     Unicode code point or 0
  */
 int utf8_to_utf32_stream(u8 c, char *buffer);
 
This page took 0.026113 seconds and 4 git commands to generate.