Re: [PATCH v3 1/3] lib/string: introduce ascii2utf16le() helper
From: Richard Leitner <richard.leitner@skidata.com>
Date: 2017-02-08 08:48:23
Also in:
lkml
On 02/06/2017 05:48 PM, Sergei Shtylyov wrote:
Hello! On 02/06/2017 05:03 PM, Richard Leitner wrote:quoted
For USB string descriptors we need to convert ASCII strings to UTF16-LE. Therefore make a simple helper function (based on ascii2desc from drivers/usb/core/hcd.c) for that purpose. Signed-off-by: Richard Leitner <richard.leitner@skidata.com>[...]quoted
diff --git a/lib/string.c b/lib/string.c index ed83562..a113e3e 100644 --- a/lib/string.c +++ b/lib/string.c@@ -952,3 +952,29 @@ char *strreplace(char *s, char old, char new) return s; } EXPORT_SYMBOL(strreplace); + +/** + * ascii2utf16le() - Helper routine for producing UTF-16LE stringdescriptors + * @s: Null-terminated ASCII (actually ISO-8859-1) string + * @buf: Buffer for UTF-16LE string + * @len: Length (in bytes; may be odd) of UTF-16LE buffer. + * + * Return: The number of bytes filled in: 2*strlen(s) or @len, whichever is less + */ +unsigned int ascii2utf16le(char const *s, u8 *buf, unsigned int len) +{ + unsigned int n, t = 2 * strlen(s); + + if (len > t) + len = t; + n = len; + while (n--) { + t = (unsigned char)*s++; + *buf++ = t; + if (!n--) + break; + *buf++ = t >> 8;Isn't it always 0?
As I will remove this function and use utf8s_to_utf16s() instead (as suggested by Alan Stern) IMHO this issue needs no more attention. Nonetheless, thank you for your feedback!
quoted
+ } + return len; +} +EXPORT_SYMBOL(ascii2utf16le);
regards, Richard L