Right now, Pd on Windows does really badly if there are any non-ASCII characters in the path or filename. It makes it freeze for a while, and sometimes crashes it. These patches fix that.
Pd and Tcl/Tk is UTF-8 internally, and UNIXes all use UTF-8 for filenames
and paths. Windows uses UCS-2 everywhere, which is a 16-bit format. The
only place this affects Pd is reading and writing filenames, and printing
to the console. The POSIX-style functions open() and fopen() exist on
Windows, but only work for ASCII filenames. To support Unicode filenames,
we have to convert the UTF-8 to UCS-2, then use Win32-specific functions.
Since any external that opens files will also be affected the same
way, this patch provides a public API: sys_open()/sys_close(), and
sys_fopen()/sys_fclose(). For non-Win32 platforms, they are just
names that point to the normal POSIX versions. On Win32, they are
special functions to handle UTF-8 to UCS-2 conversion.
I have built and run this on Windows XP, Mac OS X 10.6, and Debian/squeeze amd64. These patches are also included in Pd-extended 0.43.4.