non-ASCII filepaths in a C function

Henning Thielemann lemming at
Fri Jul 24 21:52:35 UTC 2015

In my 'soxlib' package I have written a binding to

sox_format_t * sox_open_read(
     char               const * path,
     sox_signalinfo_t   const * signal,
     sox_encodinginfo_t const * encoding,
     char               const * filetype);

I construct the C filepath "path" from a Haskell FilePath using 
Foreign.C.String.withCString. This works for ASCII and non-ASCII 
characters in Linux. However, non-ASCII characters let sox_open_read fail 
on Windows. What is the correct way to convert FilePath to "char *"?

More information about the Libraries mailing list