Commit db45e1ea authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

Maintain lower cased file names in the Wine config directory.

parent 80ffa243
...@@ -565,7 +565,7 @@ static BOOL PROFILE_FlushFile(void) ...@@ -565,7 +565,7 @@ static BOOL PROFILE_FlushFile(void)
if (!(unix_name = CurProfile->unix_name) || !(file = fopen(unix_name, "w"))) if (!(unix_name = CurProfile->unix_name) || !(file = fopen(unix_name, "w")))
{ {
int drive = toupperW(CurProfile->dos_name[0]) - 'A'; int drive = toupperW(CurProfile->dos_name[0]) - 'A';
WCHAR *name; WCHAR *name, *name_lwr;
/* Try to create it in $HOME/.wine */ /* Try to create it in $HOME/.wine */
/* FIXME: this will need a more general solution */ /* FIXME: this will need a more general solution */
strcpy( buffer, wine_get_config_dir() ); strcpy( buffer, wine_get_config_dir() );
...@@ -573,8 +573,15 @@ static BOOL PROFILE_FlushFile(void) ...@@ -573,8 +573,15 @@ static BOOL PROFILE_FlushFile(void)
*p++ = '/'; *p++ = '/';
*p = 0; /* make strlen() below happy */ *p = 0; /* make strlen() below happy */
name = strrchrW( CurProfile->dos_name, '\\' ) + 1; name = strrchrW( CurProfile->dos_name, '\\' ) + 1;
WideCharToMultiByte(DRIVE_GetCodepage(drive), 0, name, -1,
/* create a lower cased version of the name */
name_lwr = HeapAlloc(GetProcessHeap(), 0, (strlenW(name) + 1) * sizeof(WCHAR));
strcpyW(name_lwr, name);
strlwrW(name_lwr);
WideCharToMultiByte(DRIVE_GetCodepage(drive), 0, name_lwr, -1,
p, sizeof(buffer) - strlen(buffer), NULL, NULL); p, sizeof(buffer) - strlen(buffer), NULL, NULL);
HeapFree(GetProcessHeap(), 0, name_lwr);
file = fopen( buffer, "w" ); file = fopen( buffer, "w" );
unix_name = buffer; unix_name = buffer;
} }
...@@ -626,7 +633,7 @@ static BOOL PROFILE_Open( LPCWSTR filename ) ...@@ -626,7 +633,7 @@ static BOOL PROFILE_Open( LPCWSTR filename )
DOS_FULL_NAME full_name; DOS_FULL_NAME full_name;
char buffer[MAX_PATHNAME_LEN]; char buffer[MAX_PATHNAME_LEN];
WCHAR *newdos_name; WCHAR *newdos_name;
WCHAR *name; WCHAR *name, *name_lwr;
char *p; char *p;
FILE *file = NULL; FILE *file = NULL;
int i,j; int i,j;
...@@ -717,8 +724,15 @@ static BOOL PROFILE_Open( LPCWSTR filename ) ...@@ -717,8 +724,15 @@ static BOOL PROFILE_Open( LPCWSTR filename )
*p++ = '/'; *p++ = '/';
*p = 0; /* make strlen() below happy */ *p = 0; /* make strlen() below happy */
name = strrchrW( newdos_name, '\\' ) + 1; name = strrchrW( newdos_name, '\\' ) + 1;
WideCharToMultiByte(DRIVE_GetCodepage(full_name.drive), 0, name, -1,
/* create a lower cased version of the name */
name_lwr = HeapAlloc(GetProcessHeap(), 0, (strlenW(name) + 1) * sizeof(WCHAR));
strcpyW(name_lwr, name);
strlwrW(name_lwr);
WideCharToMultiByte(DRIVE_GetCodepage(full_name.drive), 0, name_lwr, -1,
p, sizeof(buffer) - strlen(buffer), NULL, NULL); p, sizeof(buffer) - strlen(buffer), NULL, NULL);
HeapFree(GetProcessHeap(), 0, name_lwr);
if ((file = fopen( buffer, "r" ))) if ((file = fopen( buffer, "r" )))
{ {
TRACE("(%s): found it in %s\n", debugstr_w(filename), buffer ); TRACE("(%s): found it in %s\n", debugstr_w(filename), buffer );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment