On 11/3/2011 4:48 PM, Leon Vanderploeg wrote: > With cygwin 1.7.5, cFileName with a special characters such as ñ (n > with tidle above it) fail be properly extracted from a > WIN32_FIND_DATA structure with findFirstFile (or findNextFile). > > To set up a simple test scenario, I created a file in C:\Testing > named Mañana.docx. I compiled the code at the end of this message > on Cygwin 1.7.9 with GCC version 3.4.4 on Server 2008 32 bit system. > On this system (and on a Windows 7 32 bit machine), it returns:
a) Why are you using native Win32 APIs in a cygwin program? You should be using the POSIX interfaces instead -- see /usr/include/dirent.h. DIR *opendir (const char *); DIR *fdopendir (int); struct dirent *readdir (DIR *); int readdir_r (DIR *, struct dirent *, struct dirent **); void rewinddir (DIR *); int closedir (DIR *); b) What you observe is an artifact of cygwin-1.7's new *support* for i18n. In cygwin-1.5, it just didn't care and passed all the bytes back exactly as found without transliteration. In 1.7, it (correctly) transcodes strings into the current locale -- and your current locale does not appear to support ñ -- or, at least, you haven't told cygwin to use the correct one. (I'm probably thoroughly botching this explanation, but the point is, you need to check your LC_* and LANG env vars, and maybe call setlocale(LC_ALL, "") in your application.) -- Chuck -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple