[PATCH 6 of 7] (issue36) Add acp_to_wchar based on utf8_to_wchar
Wald Commits
scm-commit at wald.intevation.org
Thu Sep 18 15:47:20 CEST 2014
# HG changeset patch
# User Andre Heinecke <andre.heinecke at intevation.de>
# Date 1411047828 -7200
# Node ID ffdc8cba139a8adf7ddf4caf857c1e2dcbd2098d
# Parent fd7d04bb37cb7af2f42815c8db965849bdef7ecb
(issue36) Add acp_to_wchar based on utf8_to_wchar
diff -r fd7d04bb37cb -r ffdc8cba139a common/strhelp.c
--- a/common/strhelp.c Thu Sep 18 15:43:22 2014 +0200
+++ b/common/strhelp.c Thu Sep 18 15:43:48 2014 +0200
@@ -281,4 +281,29 @@
result[n] = 0;
return result;
}
+
+wchar_t
+*acp_to_wchar (const char *string, size_t len)
+{
+ int n, ilen;
+ wchar_t *result;
+
+ ilen = (int) len;
+ if (ilen < 0)
+ return NULL;
+
+ n = MultiByteToWideChar (CP_ACP, 0, string, ilen, NULL, 0);
+ if (n < 0 || n + 1 < 0)
+ return NULL;
+
+ result = xmalloc ((size_t)(n+1) * sizeof *result);
+ n = MultiByteToWideChar (CP_ACP, 0, string, ilen, result, n);
+ if (n < 0)
+ {
+ xfree (result);
+ return NULL;
+ }
+ result[n] = 0;
+ return result;
+}
#endif
diff -r fd7d04bb37cb -r ffdc8cba139a common/strhelp.h
--- a/common/strhelp.h Thu Sep 18 15:43:22 2014 +0200
+++ b/common/strhelp.h Thu Sep 18 15:43:48 2014 +0200
@@ -132,6 +132,16 @@
**/
wchar_t *utf8_to_wchar (const char *string, size_t len);
+/** @brief convert a local 8 bit (acp) string to utf16 wchar
+ *
+ * @param[in] string acp string. Must be at least len characters long.
+ * @param[in] len number of characters to be converted.
+ *
+ * @returns pointer to a newly allocated wchar array. NULL on error.
+ *
+ **/
+wchar_t *acp_to_wchar (const char *string, size_t len);
+
/** @brief convert a utf16 string to utf8
*
* @param[in] string utf16 string. Must be at least len characters long.
diff -r fd7d04bb37cb -r ffdc8cba139a packaging/desktopshellrun.cpp
--- a/packaging/desktopshellrun.cpp Thu Sep 18 15:43:22 2014 +0200
+++ b/packaging/desktopshellrun.cpp Thu Sep 18 15:43:48 2014 +0200
@@ -273,7 +273,9 @@
goto done;
}
- wbuf = utf8_to_wchar((*stacktop)->text, strlen((*stacktop)->text));
+ /* For unicodensis this has to be utf8 to wchar */
+
+ wbuf = acp_to_wchar((*stacktop)->text, strlen((*stacktop)->text));
if (!wbuf)
{
ERRORPRINTF ("Failed to convert argument to wchar. error = 0x%lx.", hr);
@@ -282,7 +284,7 @@
if ((*stacktop)->next && (*stacktop)->next->text)
{
- params = utf8_to_wchar((*stacktop)->next->text, strlen((*stacktop)->next->text));
+ params = acp_to_wchar((*stacktop)->next->text, strlen((*stacktop)->next->text));
}
if (!shellexecute(shellDispatch, wbuf, params))
More information about the Trustbridge-commits
mailing list