apr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kenneth Falck <ke...@swelcom.fi>
Subject Locale problem with filename handling in Mac OS X
Date Mon, 22 Aug 2005 04:21:30 GMT
Hi,

There seems to be an inconsistency in the way filenames are handled  
by APR under Mac OS X.

The function apr_filepath_encoding() returns  
APR_FILEPATH_ENCODING_LOCALE under UNIX. Under Mac OS X, however,  
filenames must always be passed to the system calls in UTF-8 format.  
This creates problems whenever using a locale with something other  
than UTF-8 as the text encoding (Invalid argument when trying to  
create files).

Changing the locale setting to UTF-8 is not a good solution, because  
it also affects the contents of files. For instance, my locale is set  
to fi_FI.ISO8859-1, allowing me to edit my ISO8859-1 formatted text  
files properly.

The simplest fix to this would look something like this (file_io/unix/ 
filepath.c):

APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style,  
apr_pool_t *p)
{
#ifdef DARWIN
     *style = APR_FILEPATH_ENCODING_UTF8;
#else
     *style = APR_FILEPATH_ENCODING_LOCALE;
#endif
     return APR_SUCCESS;
}


I ran across this problem when using Subversion on Mac OS X to check  
out files with accented letters in their names. After applying the  
above fix, the checkout worked fine. I believe it would be very  
helpful for Mac OS X users to have this work 'out-of-the-box'. It  
would also be correct behaviour, since Mac OS X really uses only  
UTF-8 filenames in system calls and other encodings are invalid.


Mime
View raw message