DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

Link: http://www.fltk.org/str.php?L2164
Version: 1.3-current





Link: http://www.fltk.org/str.php?L2164
Version: 1.3-current
Index: Fl_Preferences.cxx
===================================================================
--- Fl_Preferences.cxx  (revision 6693)
+++ Fl_Preferences.cxx  (working copy)
@@ -55,6 +55,10 @@
 #include <windows.h>
 #endif // WIN32
 
+#ifdef __CYGWIN__
+#include <wchar.h>
+#endif
+
 char Fl_Preferences::nameBuffer[128];
 
 
@@ -853,19 +857,23 @@
   }
 
 
-#ifndef __CYGWIN__
-    if (!filename[1] && !filename[0]) {
+  if (!filename[1] && !filename[0]) {
     strcpy(filename, "C:\\FLTK");
-    } else {
-      xchar *b = (xchar*)_wcsdup((xchar*)filename);
-//    filename[fl_unicode2utf(b, wcslen((xchar*)b), filename)] = 0;
-      unsigned len = fl_utf8fromwc(filename, (FL_PATH_MAX-1), b, 
wcslen((xchar*)b));
-      filename[len] = 0;
-      free(b);
-  }
+  } else {
+#if 0
+    xchar *b = (xchar*)_wcsdup((xchar *)filename);
 #else
-  if (!filename[0]) strcpy(filename, "C:\\FLTK");
+    // cygwin does not come with _wcsdup. Use malloc +  wcscpy.
+    // For implementation of wcsdup functionality See
+    // - http://linenum.info/p/glibc/2.7/wcsmbs/wcsdup.c
+    xchar *b = (xchar*) malloc((wcslen((xchar *) filename) + 1) * 
sizeof(xchar));
+    wcscpy(b, (xchar *) filename);
 #endif
+//  filename[fl_unicode2utf(b, wcslen((xchar*)b), filename)] = 0;
+    unsigned len = fl_utf8fromwc(filename, (FL_PATH_MAX-1), b, wcslen(b));
+    filename[len] = 0;
+    free(b);
+  }
   snprintf(filename + strlen(filename), sizeof(filename) - strlen(filename),
            "/%s/%s.prefs", vendor, application);
   for (char *s = filename; *s; s++) if (*s == '\\') *s = '/';
_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs

Reply via email to