mirror of
https://github.com/reactos/reactos.git
synced 2026-06-01 08:50:24 +08:00
[KERNEL32_VISTA] Move EnumSystemLocalesEx from locale.c into a separate file
This allows to have it in kernel32_vista
This commit is contained in:
@@ -8,6 +8,7 @@ spec2def(kernel32_vista.dll kernel32_vista.spec ADD_IMPORTLIB)
|
||||
|
||||
list(APPEND SOURCE
|
||||
firmware.c
|
||||
EnumSystemLocalesEx.c
|
||||
GetFileInformationByHandleEx.c
|
||||
GetTickCount64.c
|
||||
GetUserDefaultLocaleName.c
|
||||
|
||||
61
dll/win32/kernel32/kernel32_vista/EnumSystemLocalesEx.c
Normal file
61
dll/win32/kernel32/kernel32_vista/EnumSystemLocalesEx.c
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Win32 Base API
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* PURPOSE: Implementation of GetLocaleInfoEx (taken from wine-locale.c)
|
||||
* COPYRIGHT: Copyright 1995 Martin von Loewis
|
||||
* Copyright 1998 David Lee Lambert
|
||||
* Copyright 2000 Julio César Gázquez
|
||||
* Copyright 2002 Alexandre Julliard for CodeWeavers
|
||||
*/
|
||||
|
||||
#include "k32_vista.h"
|
||||
#include <winuser.h>
|
||||
|
||||
struct enum_locale_ex_data
|
||||
{
|
||||
LOCALE_ENUMPROCEX proc;
|
||||
DWORD flags;
|
||||
LPARAM lparam;
|
||||
};
|
||||
|
||||
static BOOL CALLBACK enum_locale_ex_proc( HMODULE module, LPCWSTR type,
|
||||
LPCWSTR name, WORD lang, LONG_PTR lparam )
|
||||
{
|
||||
struct enum_locale_ex_data *data = (struct enum_locale_ex_data *)lparam;
|
||||
WCHAR buffer[256];
|
||||
DWORD neutral;
|
||||
unsigned int flags;
|
||||
|
||||
GetLocaleInfoW( MAKELCID( lang, SORT_DEFAULT ), LOCALE_SNAME | LOCALE_NOUSEROVERRIDE,
|
||||
buffer, sizeof(buffer) / sizeof(WCHAR) );
|
||||
if (!GetLocaleInfoW( MAKELCID( lang, SORT_DEFAULT ),
|
||||
LOCALE_INEUTRAL | LOCALE_NOUSEROVERRIDE | LOCALE_RETURN_NUMBER,
|
||||
(LPWSTR)&neutral, sizeof(neutral) / sizeof(WCHAR) ))
|
||||
neutral = 0;
|
||||
flags = LOCALE_WINDOWS;
|
||||
flags |= neutral ? LOCALE_NEUTRALDATA : LOCALE_SPECIFICDATA;
|
||||
if (data->flags && !(data->flags & flags)) return TRUE;
|
||||
return data->proc( buffer, flags, data->lparam );
|
||||
}
|
||||
|
||||
/******************************************************************************
|
||||
* EnumSystemLocalesEx (KERNEL32.@)
|
||||
*/
|
||||
BOOL WINAPI EnumSystemLocalesEx( LOCALE_ENUMPROCEX proc, DWORD flags, LPARAM lparam, LPVOID reserved )
|
||||
{
|
||||
struct enum_locale_ex_data data;
|
||||
HMODULE kernel32_handle = GetModuleHandleW(L"kernel32.dll");
|
||||
|
||||
if (reserved)
|
||||
{
|
||||
SetLastError( ERROR_INVALID_PARAMETER );
|
||||
return FALSE;
|
||||
}
|
||||
data.proc = proc;
|
||||
data.flags = flags;
|
||||
data.lparam = lparam;
|
||||
EnumResourceLanguagesW( kernel32_handle, (LPCWSTR)RT_STRING,
|
||||
(LPCWSTR)MAKEINTRESOURCE((LOCALE_SNAME >> 4) + 1),
|
||||
enum_locale_ex_proc, (LONG_PTR)&data );
|
||||
return TRUE;
|
||||
}
|
||||
@@ -31,6 +31,7 @@
|
||||
@ stdcall ApplicationRecoveryInProgress(ptr)
|
||||
@ stdcall CreateSymbolicLinkA(str str long)
|
||||
@ stdcall CreateSymbolicLinkW(wstr wstr long)
|
||||
@ stdcall EnumSystemLocalesEx(ptr long long ptr)
|
||||
@ stdcall GetApplicationRecoveryCallback(ptr ptr ptr ptr ptr)
|
||||
@ stdcall GetApplicationRestart(ptr wstr ptr ptr)
|
||||
@ stdcall GetFileBandwidthReservation(ptr ptr ptr ptr ptr ptr)
|
||||
|
||||
@@ -3011,6 +3011,7 @@ struct enum_locale_ex_data
|
||||
LPARAM lparam;
|
||||
};
|
||||
|
||||
#if 0
|
||||
static BOOL CALLBACK enum_locale_ex_proc( HMODULE module, LPCWSTR type,
|
||||
LPCWSTR name, WORD lang, LONG_PTR lparam )
|
||||
{
|
||||
@@ -3051,7 +3052,7 @@ BOOL WINAPI EnumSystemLocalesEx( LOCALE_ENUMPROCEX proc, DWORD flags, LPARAM lpa
|
||||
enum_locale_ex_proc, (LONG_PTR)&data );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* VerLanguageNameA (KERNEL32.@)
|
||||
|
||||
Reference in New Issue
Block a user