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/dup_mb_to_wc.c')
-rw-r--r--utils/dup_mb_to_wc.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/utils/dup_mb_to_wc.c b/utils/dup_mb_to_wc.c
new file mode 100644
index 00000000..c3f17aba
--- /dev/null
+++ b/utils/dup_mb_to_wc.c
@@ -0,0 +1,29 @@
+/*
+ * dup_mb_to_wc: memory-allocating wrapper on mb_to_wc.
+ *
+ * Also dup_mb_to_wc_c: same but you already know the length of the
+ * string.
+ */
+
+#include "putty.h"
+#include "misc.h"
+
+wchar_t *dup_mb_to_wc_c(int codepage, int flags, const char *string, int len)
+{
+ int mult;
+ for (mult = 1 ;; mult++) {
+ wchar_t *ret = snewn(mult*len + 2, wchar_t);
+ int outlen;
+ outlen = mb_to_wc(codepage, flags, string, len, ret, mult*len + 1);
+ if (outlen < mult*len+1) {
+ ret[outlen] = L'\0';
+ return ret;
+ }
+ sfree(ret);
+ }
+}
+
+wchar_t *dup_mb_to_wc(int codepage, int flags, const char *string)
+{
+ return dup_mb_to_wc_c(codepage, flags, string, strlen(string));
+}