8000 bpo-42658: Using LCMapStringEx in ntpath.normcase by aisk · Pull Request #32010 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

bpo-42658: Using LCMapStringEx in ntpath.normcase #32010

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 17 commits into from
Jun 6, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add _winapi.LCMapStringEx
  • Loading branch information
aisk committed Jun 4, 2022
commit 060cd714f798d94fc694e8ee9fc52fdc84430d24
54 changes: 54 additions & 0 deletions Modules/_winapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1512,6 +1512,29 @@ _winapi_PeekNamedPipe_impl(PyObject *module, HANDLE handle, int size)
}
}

/*[clinic input]
_winapi.LCMapStringEx

locale: LPCWSTR
flags: DWORD
src: LPCWSTR

[clinic start generated code]*/

static PyObject *
_winapi_LCMapStringEx_impl(PyObject *module, LPCWSTR locale, DWORD flags,
LPCWSTR src)
/*[clinic end generated code: output=cf4713d80e2b47c9 input=9fe26f95d5ab0001]*/
{

int dest_size = LCMapStringEx(locale, flags, src, wcslen(src), NULL, 0, NULL, NULL, 0);
wchar_t* dest = PyMem_NEW(wchar_t, dest_size);
LCMapStringEx(locale, flags, src, wcslen(src), dest, dest_size, NULL, NULL, 0);
PyObject *ret = PyUnicode_FromWideChar(dest, dest_size);
PyMem_DEL(dest);
return ret;
}

/*[clinic input]
_winapi.ReadFile

Expand Down Expand Up @@ -2023,6 +2046,7 @@ static PyMethodDef winapi_functions[] = {
_WINAPI_OPENFILEMAPPING_METHODDEF
_WINAPI_OPENPROCESS_METHODDEF
_WINAPI_PEEKNAMEDPIPE_METHODDEF
_WINAPI_LCMAPSTRINGEX_METHODDEF
_WINAPI_READFILE_METHODDEF
_WINAPI_SETNAMEDPIPEHANDLESTATE_METHODDEF
_WINAPI_TERMINATEPROCESS_METHODDEF
Expand Down Expand Up @@ -2160,6 +2184,36 @@ static int winapi_exec(PyObject *m)
WINAPI_CONSTANT(F_DWORD, FILE_TYPE_PIPE);
WINAPI_CONSTANT(F_DWORD, FILE_TYPE_REMOTE);

WINAPI_CONSTANT("u", LOCALE_NAME_INVARIANT);
WINAPI_CONSTANT(F_DWORD, LOCALE_NAME_MAX_LENGTH);
WINAPI_CONSTANT("u", LOCALE_NAME_SYSTEM_DEFAULT);
WINAPI_CONSTANT("u", LOCALE_NAME_USER_DEFAULT);

WINAPI_CONSTANT(F_DWORD, LCMAP_BYTEREV);
WINAPI_CONSTANT(F_DWORD, LCMAP_FULLWIDTH);
WINAPI_CONSTANT(F_DWORD, LCMAP_HALFWIDTH);
WINAPI_CONSTANT(F_DWORD, LCMAP_HIRAGANA);
WINAPI_CONSTANT(F_DWORD, LCMAP_KATAKANA);
WINAPI_CONSTANT(F_DWORD, LCMAP_LINGUISTIC_CASING);
WINAPI_CONSTANT(F_DWORD, LCMAP_LOWERCASE);
WINAPI_CONSTANT(F_DWORD, LCMAP_HASH);
WINAPI_CONSTANT(F_DWORD, LCMAP_SIMPLIFIED_CHINESE);
WINAPI_CONSTANT(F_DWORD, LCMAP_SORTHANDLE);
WINAPI_CONSTANT(F_DWORD, LCMAP_SORTKEY);
WINAPI_CONSTANT(F_DWORD, LCMAP_TITLECASE);
WINAPI_CONSTANT(F_DWORD, LCMAP_TRADITIONAL_CHINESE);
WINAPI_CONSTANT(F_DWORD, LCMAP_UPPERCASE);
WINAPI_CONSTANT(F_DWORD, NORM_IGNORENONSPACE);
WINAPI_CONSTANT(F_DWORD, NORM_IGNORESYMBOLS);
WINAPI_CONSTANT(F_DWORD, LINGUISTIC_IGNORECASE);
WINAPI_CONSTANT(F_DWORD, LINGUISTIC_IGNOREDIACRITIC);
WINAPI_CONSTANT(F_DWORD, NORM_IGNORECASE);
WINAPI_CONSTANT(F_DWORD, NORM_IGNOREKANATYPE);
WINAPI_CONSTANT(F_DWORD, NORM_IGNOREWIDTH);
WINAPI_CONSTANT(F_DWORD, NORM_LINGUISTIC_CASING);
WINAPI_CONSTANT(F_DWORD, SORT_DIGITSASNUMBERS);
WINAPI_CONSTANT(F_DWORD, SORT_STRINGSORT);

WINAPI_CONSTANT("i", NULL);

return 0;
Expand Down
41 changes: 41 additions & 0 deletions Modules/clinic/_winapi.c.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0