61 lines
2.0 KiB
Diff
61 lines
2.0 KiB
Diff
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Mon, 9 Apr 2012 00:51:37 +0100
|
|
Subject: [PATCH] nls: Avoid ABI change from improvement to utf8s_to_utf16s
|
|
|
|
It's easy to add a temporary wrapper for binary-compatibility.
|
|
---
|
|
fs/nls/nls_base.c | 13 ++++++++++++-
|
|
include/linux/nls.h | 4 +++-
|
|
2 files changed, 15 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
|
|
index 0eb059e..91f145a 100644
|
|
--- a/fs/nls/nls_base.c
|
|
+++ b/fs/nls/nls_base.c
|
|
@@ -129,7 +129,7 @@ static inline void put_utf16(wchar_t *s, unsigned c, enum utf16_endian endian)
|
|
}
|
|
}
|
|
|
|
-int utf8s_to_utf16s(const u8 *s, int len, enum utf16_endian endian,
|
|
+int utf8s_to_utf16s_new(const u8 *s, int len, enum utf16_endian endian,
|
|
wchar_t *pwcs, int maxlen)
|
|
{
|
|
u16 *op;
|
|
@@ -171,6 +171,17 @@ int utf8s_to_utf16s(const u8 *s, int len, enum utf16_endian endian,
|
|
}
|
|
EXPORT_SYMBOL(utf8s_to_utf16s);
|
|
|
|
+/* Binary-compatibility wrapper */
|
|
+#undef utf8s_to_utf16s
|
|
+int utf8s_to_utf16s(const u8 *s, int len, wchar_t *pwcs)
|
|
+{
|
|
+ /* Output length in code units is never longer than input
|
|
+ * length in bytes, so we can trivially set maxlen = len.
|
|
+ */
|
|
+ return utf8s_to_utf16s_new(s, len, UTF16_HOST_ENDIAN, pwcs, len);
|
|
+}
|
|
+EXPORT_SYMBOL(utf8s_to_utf16s);
|
|
+
|
|
static inline unsigned long get_utf16(unsigned c, enum utf16_endian endian)
|
|
{
|
|
switch (endian) {
|
|
diff --git a/include/linux/nls.h b/include/linux/nls.h
|
|
index 5dc635f..6a2a00c 100644
|
|
--- a/include/linux/nls.h
|
|
+++ b/include/linux/nls.h
|
|
@@ -52,8 +52,10 @@ extern struct nls_table *load_nls_default(void);
|
|
|
|
extern int utf8_to_utf32(const u8 *s, int len, unicode_t *pu);
|
|
extern int utf32_to_utf8(unicode_t u, u8 *s, int maxlen);
|
|
-extern int utf8s_to_utf16s(const u8 *s, int len,
|
|
+extern int utf8s_to_utf16s(const u8 *s, int len, wchar_t *pwcs);
|
|
+extern int utf8s_to_utf16s_new(const u8 *s, int len,
|
|
enum utf16_endian endian, wchar_t *pwcs, int maxlen);
|
|
+#define utf8s_to_utf16s utf8s_to_utf16s_new
|
|
extern int utf16s_to_utf8s(const wchar_t *pwcs, int len,
|
|
enum utf16_endian endian, u8 *s, int maxlen);
|
|
|
|
--
|
|
1.7.9.5
|
|
|