summaryrefslogtreecommitdiff
path: root/src/fl_call_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fl_call_main.c')
-rw-r--r--src/fl_call_main.c44
1 files changed, 42 insertions, 2 deletions
diff --git a/src/fl_call_main.c b/src/fl_call_main.c
index 2b61b62e9..c1ed058dd 100644
--- a/src/fl_call_main.c
+++ b/src/fl_call_main.c
@@ -51,6 +51,7 @@
# include <windows.h>
# include <stdio.h>
# include <stdlib.h>
+#include <FL/fl_utf8.H>
# ifdef __MWERKS__
# include <crtl.h>
@@ -63,9 +64,26 @@ extern int main(int, char *[]);
# define __argv _argv
# endif /* BORLAND5 */
+//static int mbcs2utf(const char *s, int l, char *dst, unsigned dstlen)
+static int mbcs2utf(const char *s, int l, char *dst)
+{
+ static xchar *mbwbuf;
+ unsigned dstlen = 0;
+ if (!s) return 0;
+ dstlen = (l * 6) + 6;
+ mbwbuf = (xchar*)malloc(dstlen * sizeof(xchar));
+ l = mbstowcs(mbwbuf, s, l);
+//l = fl_unicode2utf(mbwbuf, l, dst);
+ l = fl_utf8fromwc(dst, dstlen, mbwbuf, l);
+ dst[l] = 0;
+ free(mbwbuf);
+ return l;
+}
+
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow) {
- int rc;
+ int rc, i;
+ char **ar;
# ifdef _DEBUG
/*
@@ -84,8 +102,30 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
freopen("conout$", "w", stderr);
# endif /* _DEBUG */
+ ar = (char**) malloc(sizeof(char*) * (__argc + 1));
+ i = 0;
+ while (i < __argc) {
+ int l;
+ unsigned dstlen;
+ if (__wargv ) {
+ for (l = 0; __wargv[i] && __wargv[i][l]; l++) {}; // is this just wstrlen???
+ dstlen = (l * 5) + 1;
+ ar[i] = (char*) malloc(dstlen);
+// ar[i][fl_unicode2utf(__wargv[i], l, ar[i])] = 0;
+ dstlen = fl_utf8fromwc(ar[i], dstlen, __wargv[i], l);
+ ar[i][dstlen] = 0;
+ } else {
+ for (l = 0; __argv[i] && __argv[i][l]; l++) {};
+ dstlen = (l * 5) + 1;
+ ar[i] = (char*) malloc(dstlen);
+// ar[i][mbcs2utf(__argv[i], l, ar[i], dstlen)] = 0;
+ ar[i][mbcs2utf(__argv[i], l, ar[i])] = 0;
+ }
+ i++;
+ }
+ ar[__argc] = 0;
/* Run the standard main entry point function... */
- rc = main(__argc, __argv);
+ rc = main(__argc, ar);
# ifdef _DEBUG
fclose(stdin);