LC_ALL
setlocale(LC_ALL, "");
if (category != LC_ALL) {
locname = category == LC_ALL ? "" : "C";
if (category == LC_ALL) {
if (category > LC_ALL || newgl[LC_ALL][0] != '\0') {
if (category == LC_ALL || category == LC_CTYPE)
for (ic = LC_ALL; ic < _LC_LAST; ic++)
for (ic = LC_ALL; ic < _LC_LAST; ic++) {
if ((newgl[ic] = strdup(ic == LC_ALL ? "" :
if (category < LC_ALL || category >= _LC_LAST)
if (category == LC_ALL && strchr(locname, '/') != NULL) {
setlocale(LC_ALL, "");
test_setlocale("C", LC_ALL, NULL); /* check */
test_setlocale("C", LC_ALL, "C"); /* reset */
test_setlocale("C", LC_ALL, "C"); /* reset */
test_setlocale("C/invalid.UTF-8/C/C/C/C", LC_ALL, NULL);
test_setlocale("C", LC_ALL, "C"); /* reset */
test_setlocale("C", LC_ALL, NULL); /* check */
test_setlocale("C/fr_FR.UTF-8/C/C/C/C", LC_ALL, NULL); /* check */
test_setlocale("C", LC_ALL, NULL); /* check */
test_setlocale("C", LC_ALL, "C"); /* reset */
test_setlocale("C", LC_ALL, NULL); /* check */
TEST_R(setlocale, "C/C.UTF-8/C/C/C/C", LC_ALL, NULL);
TEST_R(setlocale, "C", LC_ALL, NULL);
setlocale(LC_ALL, "C.UTF-8");
setlocale(LC_ALL, "C.UTF-8");
(void)setlocale(LC_ALL, "");
(void)setlocale(LC_ALL, "");
(void) setlocale(LC_ALL, buf + 5);
setlocale(LC_ALL, "");
setlocale(LC_ALL, "");
setlocale(LC_ALL, "");
setlocale(LC_ALL, "");
setlocale(LC_ALL, "");
(void)setlocale(LC_ALL, "");
(void)setlocale(LC_ALL, "");
setlocale(LC_ALL, "");