From 7894c1e879ba9e6ed413ae8ad0780d2586f348a7 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 27 Jun 2005 18:50:14 +0000 Subject: [PATCH] Moved AFM dirs configuration to a single AFMPath key under HKCU\Software\Wine\Fonts. --- dlls/wineps/type1afm.c | 58 ++++++++++++++++++++++++++++---------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/dlls/wineps/type1afm.c b/dlls/wineps/type1afm.c index 4b26e601178..33795c43a89 100644 --- a/dlls/wineps/type1afm.c +++ b/dlls/wineps/type1afm.c @@ -1172,35 +1172,41 @@ static BOOL ReadAFMDir(LPCSTR dirname) */ BOOL PSDRV_GetType1Metrics(void) { - CHAR name_buf[256], value_buf[256]; - INT i = 0; - HKEY hkey; - DWORD type, name_len, value_len; - - /* @@ Wine registry key: HKLM\Software\Wine\Wine\Config\afmdirs */ - if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, - "Software\\Wine\\Wine\\Config\\afmdirs", - 0, KEY_READ, &hkey) != ERROR_SUCCESS) - return TRUE; + static const WCHAR pathW[] = {'A','F','M','P','a','t','h',0}; + HKEY hkey; + DWORD len; + LPWSTR valueW; + LPSTR valueA, ptr; - name_len = sizeof(name_buf); - value_len = sizeof(value_buf); + /* @@ Wine registry key: HKCU\Software\Wine\Fonts */ + if (RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Fonts", &hkey) != ERROR_SUCCESS) + return TRUE; - while (RegEnumValueA(hkey, i++, name_buf, &name_len, NULL, &type, value_buf, - &value_len) == ERROR_SUCCESS) + if (RegQueryValueExW( hkey, pathW, NULL, NULL, NULL, &len ) == ERROR_SUCCESS) { - value_buf[sizeof(value_buf) - 1] = '\0'; - - if (ReadAFMDir(value_buf) == FALSE) - { - RegCloseKey(hkey); - return FALSE; - } - - /* initialize lengths for new iteration */ - - name_len = sizeof(name_buf); - value_len = sizeof(value_buf); + len += sizeof(WCHAR); + valueW = HeapAlloc( PSDRV_Heap, 0, len ); + if (RegQueryValueExW( hkey, pathW, NULL, NULL, (LPBYTE)valueW, &len ) == ERROR_SUCCESS) + { + len = WideCharToMultiByte( CP_UNIXCP, 0, valueW, -1, NULL, 0, NULL, NULL ); + valueA = HeapAlloc( PSDRV_Heap, 0, len ); + WideCharToMultiByte( CP_UNIXCP, 0, valueW, -1, valueA, len, NULL, NULL ); + TRACE( "got AFM font path %s\n", debugstr_a(valueA) ); + ptr = valueA; + while (ptr) + { + LPSTR next = strchr( ptr, ':' ); + if (next) *next++ = 0; + if (!ReadAFMDir( ptr )) + { + RegCloseKey(hkey); + return FALSE; + } + ptr = next; + } + HeapFree( PSDRV_Heap, 0, valueA ); + } + HeapFree( PSDRV_Heap, 0, valueW ); } RegCloseKey(hkey); -- 2.11.4.GIT