Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mRemoteNG/PuTTYNG.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'utils/decode_utf8_to_wchar.c')
-rw-r--r--utils/decode_utf8_to_wchar.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/utils/decode_utf8_to_wchar.c b/utils/decode_utf8_to_wchar.c
new file mode 100644
index 00000000..97a83218
--- /dev/null
+++ b/utils/decode_utf8_to_wchar.c
@@ -0,0 +1,20 @@
+/*
+ * Decode a single UTF-8 character to the platform's local wchar_t.
+ */
+
+#include "putty.h"
+#include "misc.h"
+
+size_t decode_utf8_to_wchar(const char **utf8, wchar_t *out)
+{
+ size_t outlen = 0;
+ unsigned wc = decode_utf8(utf8);
+ if (sizeof(wchar_t) > 2 || wc < 0x10000) {
+ out[outlen++] = wc;
+ } else {
+ unsigned wcoff = wc - 0x10000;
+ out[outlen++] = 0xD800 | (0x3FF & (wcoff >> 10));
+ out[outlen++] = 0xDC00 | (0x3FF & wcoff);
+ }
+ return outlen;
+}