aboutsummaryrefslogtreecommitdiff
path: root/c/common.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'c/common.cpp')
-rw-r--r--c/common.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/c/common.cpp b/c/common.cpp
new file mode 100644
index 0000000..63adb53
--- /dev/null
+++ b/c/common.cpp
@@ -0,0 +1,29 @@
+#include <windows.h>
+#include <SWI-Prolog.h>
+
+#include "resource.h"
+#include "defs.h"
+
+/* Convert normal string to TSTR using given codepage. */
+TCHAR *
+TszFromSz(const char *sz, int iCp)
+{
+ TCHAR *tsz;
+
+#ifdef UNICODE
+ int cbMultiByte, cchWideChar;
+
+ cbMultiByte = strlen(sz)+1;
+ cchWideChar = MultiByteToWideChar(iCp, 0, sz, cbMultiByte, NULL, 0);
+ tsz = (TCHAR *)malloc(cchWideChar*sizeof(WCHAR));
+ if (!tsz) return NULL;
+ if (!MultiByteToWideChar(iCp, 0, sz, cbMultiByte, tsz, cchWideChar))
+ return NULL;
+#else
+ tsz = malloc(strlen(sz)+1);
+ if (!tsz) return NULL;
+ strcpy(tsz, sz);
+#endif
+
+ return tsz;
+}