Commit 31ade1eb authored by Alexandre Julliard's avatar Alexandre Julliard

setupapi: Add support for .inf files in utf-8 format.

parent f7b565e2
...@@ -959,10 +959,21 @@ static struct inf_file *parse_file( HANDLE handle, const WCHAR *class, UINT *err ...@@ -959,10 +959,21 @@ static struct inf_file *parse_file( HANDLE handle, const WCHAR *class, UINT *err
if (!RtlIsTextUnicode( buffer, size, NULL )) if (!RtlIsTextUnicode( buffer, size, NULL ))
{ {
WCHAR *new_buff = HeapAlloc( GetProcessHeap(), 0, size * sizeof(WCHAR) ); static const BYTE utf8_bom[3] = { 0xef, 0xbb, 0xbf };
if (new_buff) WCHAR *new_buff;
UINT codepage = CP_ACP;
UINT offset = 0;
if (size > sizeof(utf8_bom) && !memcmp( buffer, utf8_bom, sizeof(utf8_bom) ))
{
codepage = CP_UTF8;
offset = sizeof(utf8_bom);
}
if ((new_buff = HeapAlloc( GetProcessHeap(), 0, size * sizeof(WCHAR) )))
{ {
DWORD len = MultiByteToWideChar( CP_ACP, 0, buffer, size, new_buff, size ); DWORD len = MultiByteToWideChar( codepage, 0, (char *)buffer + offset,
size - offset, new_buff, size );
err = parse_buffer( file, new_buff, new_buff + len, error_line ); err = parse_buffer( file, new_buff, new_buff + len, error_line );
HeapFree( GetProcessHeap(), 0, new_buff ); HeapFree( GetProcessHeap(), 0, new_buff );
} }
......
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