2020-07-15 06:07:34 -03:00
|
|
|
/*[clinic input]
|
|
|
|
preserve
|
|
|
|
[clinic start generated code]*/
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_setlocale__doc__,
|
|
|
|
"setlocale($module, category, locale=<unrepresentable>, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Activates/queries locale processing.");
|
|
|
|
|
|
|
|
#define _LOCALE_SETLOCALE_METHODDEF \
|
2022-05-03 15:25:41 -03:00
|
|
|
{"setlocale", _PyCFunction_CAST(_locale_setlocale), METH_FASTCALL, _locale_setlocale__doc__},
|
2020-07-15 06:07:34 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_setlocale_impl(PyObject *module, int category, const char *locale);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_setlocale(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
int category;
|
|
|
|
const char *locale = NULL;
|
|
|
|
|
|
|
|
if (!_PyArg_CheckPositional("setlocale", nargs, 1, 2)) {
|
|
|
|
goto exit;
|
|
|
|
}
|
2023-08-24 19:51:22 -03:00
|
|
|
category = PyLong_AsInt(args[0]);
|
2020-07-15 06:07:34 -03:00
|
|
|
if (category == -1 && PyErr_Occurred()) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (nargs < 2) {
|
|
|
|
goto skip_optional;
|
|
|
|
}
|
|
|
|
if (args[1] == Py_None) {
|
|
|
|
locale = NULL;
|
|
|
|
}
|
|
|
|
else if (PyUnicode_Check(args[1])) {
|
|
|
|
Py_ssize_t locale_length;
|
|
|
|
locale = PyUnicode_AsUTF8AndSize(args[1], &locale_length);
|
|
|
|
if (locale == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(locale) != (size_t)locale_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
_PyArg_BadArgument("setlocale", "argument 2", "str or None", args[1]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
skip_optional:
|
|
|
|
return_value = _locale_setlocale_impl(module, category, locale);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_localeconv__doc__,
|
|
|
|
"localeconv($module, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Returns numeric and monetary locale-specific parameters.");
|
|
|
|
|
|
|
|
#define _LOCALE_LOCALECONV_METHODDEF \
|
|
|
|
{"localeconv", (PyCFunction)_locale_localeconv, METH_NOARGS, _locale_localeconv__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_localeconv_impl(PyObject *module);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_localeconv(PyObject *module, PyObject *Py_UNUSED(ignored))
|
|
|
|
{
|
|
|
|
return _locale_localeconv_impl(module);
|
|
|
|
}
|
|
|
|
|
|
|
|
#if defined(HAVE_WCSCOLL)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_strcoll__doc__,
|
|
|
|
"strcoll($module, os1, os2, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Compares two strings according to the locale.");
|
|
|
|
|
|
|
|
#define _LOCALE_STRCOLL_METHODDEF \
|
2022-05-03 15:25:41 -03:00
|
|
|
{"strcoll", _PyCFunction_CAST(_locale_strcoll), METH_FASTCALL, _locale_strcoll__doc__},
|
2020-07-15 06:07:34 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_strcoll_impl(PyObject *module, PyObject *os1, PyObject *os2);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_strcoll(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
PyObject *os1;
|
|
|
|
PyObject *os2;
|
|
|
|
|
|
|
|
if (!_PyArg_CheckPositional("strcoll", nargs, 2, 2)) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (!PyUnicode_Check(args[0])) {
|
|
|
|
_PyArg_BadArgument("strcoll", "argument 1", "str", args[0]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
os1 = args[0];
|
|
|
|
if (!PyUnicode_Check(args[1])) {
|
|
|
|
_PyArg_BadArgument("strcoll", "argument 2", "str", args[1]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
os2 = args[1];
|
|
|
|
return_value = _locale_strcoll_impl(module, os1, os2);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_WCSCOLL) */
|
|
|
|
|
|
|
|
#if defined(HAVE_WCSXFRM)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_strxfrm__doc__,
|
|
|
|
"strxfrm($module, string, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return a string that can be used as a key for locale-aware comparisons.");
|
|
|
|
|
|
|
|
#define _LOCALE_STRXFRM_METHODDEF \
|
|
|
|
{"strxfrm", (PyCFunction)_locale_strxfrm, METH_O, _locale_strxfrm__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_strxfrm_impl(PyObject *module, PyObject *str);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_strxfrm(PyObject *module, PyObject *arg)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
PyObject *str;
|
|
|
|
|
|
|
|
if (!PyUnicode_Check(arg)) {
|
|
|
|
_PyArg_BadArgument("strxfrm", "argument", "str", arg);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
str = arg;
|
|
|
|
return_value = _locale_strxfrm_impl(module, str);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_WCSXFRM) */
|
|
|
|
|
|
|
|
#if defined(MS_WINDOWS)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale__getdefaultlocale__doc__,
|
|
|
|
"_getdefaultlocale($module, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n");
|
|
|
|
|
|
|
|
#define _LOCALE__GETDEFAULTLOCALE_METHODDEF \
|
|
|
|
{"_getdefaultlocale", (PyCFunction)_locale__getdefaultlocale, METH_NOARGS, _locale__getdefaultlocale__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale__getdefaultlocale_impl(PyObject *module);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale__getdefaultlocale(PyObject *module, PyObject *Py_UNUSED(ignored))
|
|
|
|
{
|
|
|
|
return _locale__getdefaultlocale_impl(module);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(MS_WINDOWS) */
|
|
|
|
|
|
|
|
#if defined(HAVE_LANGINFO_H)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_nl_langinfo__doc__,
|
|
|
|
"nl_langinfo($module, key, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return the value for the locale information associated with key.");
|
|
|
|
|
|
|
|
#define _LOCALE_NL_LANGINFO_METHODDEF \
|
|
|
|
{"nl_langinfo", (PyCFunction)_locale_nl_langinfo, METH_O, _locale_nl_langinfo__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_nl_langinfo_impl(PyObject *module, int item);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_nl_langinfo(PyObject *module, PyObject *arg)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
int item;
|
|
|
|
|
2023-08-24 19:51:22 -03:00
|
|
|
item = PyLong_AsInt(arg);
|
2020-07-15 06:07:34 -03:00
|
|
|
if (item == -1 && PyErr_Occurred()) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
return_value = _locale_nl_langinfo_impl(module, item);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_LANGINFO_H) */
|
|
|
|
|
|
|
|
#if defined(HAVE_LIBINTL_H)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_gettext__doc__,
|
|
|
|
"gettext($module, msg, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"gettext(msg) -> string\n"
|
|
|
|
"\n"
|
|
|
|
"Return translation of msg.");
|
|
|
|
|
|
|
|
#define _LOCALE_GETTEXT_METHODDEF \
|
|
|
|
{"gettext", (PyCFunction)_locale_gettext, METH_O, _locale_gettext__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_gettext_impl(PyObject *module, const char *in);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_gettext(PyObject *module, PyObject *arg)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
const char *in;
|
|
|
|
|
|
|
|
if (!PyUnicode_Check(arg)) {
|
|
|
|
_PyArg_BadArgument("gettext", "argument", "str", arg);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
Py_ssize_t in_length;
|
|
|
|
in = PyUnicode_AsUTF8AndSize(arg, &in_length);
|
|
|
|
if (in == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(in) != (size_t)in_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
return_value = _locale_gettext_impl(module, in);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_LIBINTL_H) */
|
|
|
|
|
|
|
|
#if defined(HAVE_LIBINTL_H)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_dgettext__doc__,
|
|
|
|
"dgettext($module, domain, msg, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"dgettext(domain, msg) -> string\n"
|
|
|
|
"\n"
|
|
|
|
"Return translation of msg in domain.");
|
|
|
|
|
|
|
|
#define _LOCALE_DGETTEXT_METHODDEF \
|
2022-05-03 15:25:41 -03:00
|
|
|
{"dgettext", _PyCFunction_CAST(_locale_dgettext), METH_FASTCALL, _locale_dgettext__doc__},
|
2020-07-15 06:07:34 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_dgettext_impl(PyObject *module, const char *domain, const char *in);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_dgettext(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
const char *domain;
|
|
|
|
const char *in;
|
|
|
|
|
|
|
|
if (!_PyArg_CheckPositional("dgettext", nargs, 2, 2)) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (args[0] == Py_None) {
|
|
|
|
domain = NULL;
|
|
|
|
}
|
|
|
|
else if (PyUnicode_Check(args[0])) {
|
|
|
|
Py_ssize_t domain_length;
|
|
|
|
domain = PyUnicode_AsUTF8AndSize(args[0], &domain_length);
|
|
|
|
if (domain == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(domain) != (size_t)domain_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
_PyArg_BadArgument("dgettext", "argument 1", "str or None", args[0]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (!PyUnicode_Check(args[1])) {
|
|
|
|
_PyArg_BadArgument("dgettext", "argument 2", "str", args[1]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
Py_ssize_t in_length;
|
|
|
|
in = PyUnicode_AsUTF8AndSize(args[1], &in_length);
|
|
|
|
if (in == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(in) != (size_t)in_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
return_value = _locale_dgettext_impl(module, domain, in);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_LIBINTL_H) */
|
|
|
|
|
|
|
|
#if defined(HAVE_LIBINTL_H)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_dcgettext__doc__,
|
|
|
|
"dcgettext($module, domain, msg, category, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Return translation of msg in domain and category.");
|
|
|
|
|
|
|
|
#define _LOCALE_DCGETTEXT_METHODDEF \
|
2022-05-03 15:25:41 -03:00
|
|
|
{"dcgettext", _PyCFunction_CAST(_locale_dcgettext), METH_FASTCALL, _locale_dcgettext__doc__},
|
2020-07-15 06:07:34 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_dcgettext_impl(PyObject *module, const char *domain,
|
|
|
|
const char *msgid, int category);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_dcgettext(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
const char *domain;
|
|
|
|
const char *msgid;
|
|
|
|
int category;
|
|
|
|
|
|
|
|
if (!_PyArg_CheckPositional("dcgettext", nargs, 3, 3)) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (args[0] == Py_None) {
|
|
|
|
domain = NULL;
|
|
|
|
}
|
|
|
|
else if (PyUnicode_Check(args[0])) {
|
|
|
|
Py_ssize_t domain_length;
|
|
|
|
domain = PyUnicode_AsUTF8AndSize(args[0], &domain_length);
|
|
|
|
if (domain == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(domain) != (size_t)domain_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
_PyArg_BadArgument("dcgettext", "argument 1", "str or None", args[0]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (!PyUnicode_Check(args[1])) {
|
|
|
|
_PyArg_BadArgument("dcgettext", "argument 2", "str", args[1]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
Py_ssize_t msgid_length;
|
|
|
|
msgid = PyUnicode_AsUTF8AndSize(args[1], &msgid_length);
|
|
|
|
if (msgid == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(msgid) != (size_t)msgid_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
2023-08-24 19:51:22 -03:00
|
|
|
category = PyLong_AsInt(args[2]);
|
2020-07-15 06:07:34 -03:00
|
|
|
if (category == -1 && PyErr_Occurred()) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
return_value = _locale_dcgettext_impl(module, domain, msgid, category);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_LIBINTL_H) */
|
|
|
|
|
|
|
|
#if defined(HAVE_LIBINTL_H)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_textdomain__doc__,
|
|
|
|
"textdomain($module, domain, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Set the C library\'s textdmain to domain, returning the new domain.");
|
|
|
|
|
|
|
|
#define _LOCALE_TEXTDOMAIN_METHODDEF \
|
|
|
|
{"textdomain", (PyCFunction)_locale_textdomain, METH_O, _locale_textdomain__doc__},
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_textdomain_impl(PyObject *module, const char *domain);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_textdomain(PyObject *module, PyObject *arg)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
const char *domain;
|
|
|
|
|
|
|
|
if (arg == Py_None) {
|
|
|
|
domain = NULL;
|
|
|
|
}
|
|
|
|
else if (PyUnicode_Check(arg)) {
|
|
|
|
Py_ssize_t domain_length;
|
|
|
|
domain = PyUnicode_AsUTF8AndSize(arg, &domain_length);
|
|
|
|
if (domain == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(domain) != (size_t)domain_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
_PyArg_BadArgument("textdomain", "argument", "str or None", arg);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
return_value = _locale_textdomain_impl(module, domain);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_LIBINTL_H) */
|
|
|
|
|
|
|
|
#if defined(HAVE_LIBINTL_H)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_bindtextdomain__doc__,
|
|
|
|
"bindtextdomain($module, domain, dir, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Bind the C library\'s domain to dir.");
|
|
|
|
|
|
|
|
#define _LOCALE_BINDTEXTDOMAIN_METHODDEF \
|
2022-05-03 15:25:41 -03:00
|
|
|
{"bindtextdomain", _PyCFunction_CAST(_locale_bindtextdomain), METH_FASTCALL, _locale_bindtextdomain__doc__},
|
2020-07-15 06:07:34 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_bindtextdomain_impl(PyObject *module, const char *domain,
|
|
|
|
PyObject *dirname_obj);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_bindtextdomain(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
const char *domain;
|
|
|
|
PyObject *dirname_obj;
|
|
|
|
|
|
|
|
if (!_PyArg_CheckPositional("bindtextdomain", nargs, 2, 2)) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (!PyUnicode_Check(args[0])) {
|
|
|
|
_PyArg_BadArgument("bindtextdomain", "argument 1", "str", args[0]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
Py_ssize_t domain_length;
|
|
|
|
domain = PyUnicode_AsUTF8AndSize(args[0], &domain_length);
|
|
|
|
if (domain == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(domain) != (size_t)domain_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
dirname_obj = args[1];
|
|
|
|
return_value = _locale_bindtextdomain_impl(module, domain, dirname_obj);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_LIBINTL_H) */
|
|
|
|
|
|
|
|
#if defined(HAVE_LIBINTL_H) && defined(HAVE_BIND_TEXTDOMAIN_CODESET)
|
|
|
|
|
|
|
|
PyDoc_STRVAR(_locale_bind_textdomain_codeset__doc__,
|
|
|
|
"bind_textdomain_codeset($module, domain, codeset, /)\n"
|
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Bind the C library\'s domain to codeset.");
|
|
|
|
|
|
|
|
#define _LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF \
|
2022-05-03 15:25:41 -03:00
|
|
|
{"bind_textdomain_codeset", _PyCFunction_CAST(_locale_bind_textdomain_codeset), METH_FASTCALL, _locale_bind_textdomain_codeset__doc__},
|
2020-07-15 06:07:34 -03:00
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_bind_textdomain_codeset_impl(PyObject *module, const char *domain,
|
|
|
|
const char *codeset);
|
|
|
|
|
|
|
|
static PyObject *
|
|
|
|
_locale_bind_textdomain_codeset(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
|
|
{
|
|
|
|
PyObject *return_value = NULL;
|
|
|
|
const char *domain;
|
|
|
|
const char *codeset;
|
|
|
|
|
|
|
|
if (!_PyArg_CheckPositional("bind_textdomain_codeset", nargs, 2, 2)) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (!PyUnicode_Check(args[0])) {
|
|
|
|
_PyArg_BadArgument("bind_textdomain_codeset", "argument 1", "str", args[0]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
Py_ssize_t domain_length;
|
|
|
|
domain = PyUnicode_AsUTF8AndSize(args[0], &domain_length);
|
|
|
|
if (domain == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(domain) != (size_t)domain_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (args[1] == Py_None) {
|
|
|
|
codeset = NULL;
|
|
|
|
}
|
|
|
|
else if (PyUnicode_Check(args[1])) {
|
|
|
|
Py_ssize_t codeset_length;
|
|
|
|
codeset = PyUnicode_AsUTF8AndSize(args[1], &codeset_length);
|
|
|
|
if (codeset == NULL) {
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
if (strlen(codeset) != (size_t)codeset_length) {
|
|
|
|
PyErr_SetString(PyExc_ValueError, "embedded null character");
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
_PyArg_BadArgument("bind_textdomain_codeset", "argument 2", "str or None", args[1]);
|
|
|
|
goto exit;
|
|
|
|
}
|
|
|
|
return_value = _locale_bind_textdomain_codeset_impl(module, domain, codeset);
|
|
|
|
|
|
|
|
exit:
|
|
|
|
return return_value;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif /* defined(HAVE_LIBINTL_H) && defined(HAVE_BIND_TEXTDOMAIN_CODESET) */
|
|
|
|
|
2022-04-08 21:54:54 -03:00
|
|
|
PyDoc_STRVAR(_locale_getencoding__doc__,
|
|
|
|
"getencoding($module, /)\n"
|
2020-10-30 21:32:11 -03:00
|
|
|
"--\n"
|
|
|
|
"\n"
|
|
|
|
"Get the current locale encoding.");
|
|
|
|
|
2022-04-08 21:54:54 -03:00
|
|
|
#define _LOCALE_GETENCODING_METHODDEF \
|
|
|
|
{"getencoding", (PyCFunction)_locale_getencoding, METH_NOARGS, _locale_getencoding__doc__},
|
2020-10-30 21:32:11 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2022-04-08 21:54:54 -03:00
|
|
|
_locale_getencoding_impl(PyObject *module);
|
2020-10-30 21:32:11 -03:00
|
|
|
|
|
|
|
static PyObject *
|
2022-04-08 21:54:54 -03:00
|
|
|
_locale_getencoding(PyObject *module, PyObject *Py_UNUSED(ignored))
|
2020-10-30 21:32:11 -03:00
|
|
|
{
|
2022-04-08 21:54:54 -03:00
|
|
|
return _locale_getencoding_impl(module);
|
2020-10-30 21:32:11 -03:00
|
|
|
}
|
|
|
|
|
2020-07-15 06:07:34 -03:00
|
|
|
#ifndef _LOCALE_STRCOLL_METHODDEF
|
|
|
|
#define _LOCALE_STRCOLL_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_STRCOLL_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE_STRXFRM_METHODDEF
|
|
|
|
#define _LOCALE_STRXFRM_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_STRXFRM_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE__GETDEFAULTLOCALE_METHODDEF
|
|
|
|
#define _LOCALE__GETDEFAULTLOCALE_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE__GETDEFAULTLOCALE_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE_NL_LANGINFO_METHODDEF
|
|
|
|
#define _LOCALE_NL_LANGINFO_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_NL_LANGINFO_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE_GETTEXT_METHODDEF
|
|
|
|
#define _LOCALE_GETTEXT_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_GETTEXT_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE_DGETTEXT_METHODDEF
|
|
|
|
#define _LOCALE_DGETTEXT_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_DGETTEXT_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE_DCGETTEXT_METHODDEF
|
|
|
|
#define _LOCALE_DCGETTEXT_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_DCGETTEXT_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE_TEXTDOMAIN_METHODDEF
|
|
|
|
#define _LOCALE_TEXTDOMAIN_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_TEXTDOMAIN_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE_BINDTEXTDOMAIN_METHODDEF
|
|
|
|
#define _LOCALE_BINDTEXTDOMAIN_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_BINDTEXTDOMAIN_METHODDEF) */
|
|
|
|
|
|
|
|
#ifndef _LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF
|
|
|
|
#define _LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF
|
|
|
|
#endif /* !defined(_LOCALE_BIND_TEXTDOMAIN_CODESET_METHODDEF) */
|
2023-08-31 18:42:34 -03:00
|
|
|
/*[clinic end generated code: output=3abe7fade999eff6 input=a9049054013a1b77]*/
|