Change loadlocale to fill a __locale_t given as parameter

Don't use global variables.  This allows to call loadlocale from
the yet to be created newlocale().

Rename _thr_locale_t to __locale_t (these locales are not restricted
to threads so the name is misleading).

Along these lines, fix _set_ctype to take a __locale_t as parameter.

Signed-off by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen
2016-07-21 20:49:42 +02:00
parent d16a56306d
commit 1498c79db8
12 changed files with 87 additions and 88 deletions

View File

@@ -19,7 +19,7 @@ extern const char __ctype_cp[22][128 + 256]; /* Newlib */
extern const char __ctype_iso[15][128 + 256]; /* Newlib */
void
__set_ctype (struct _reent *reent, const char *charset)
__set_ctype (struct __locale_t *loc, const char *charset)
{
int idx;
char *ctype_ptr = NULL;
@@ -63,8 +63,8 @@ __set_ctype (struct _reent *reent, const char *charset)
}
ctype_ptr = (char *) _ctype_b;
}
if (reent)
__get_locale_r (reent)->ctype_ptr = ctype_ptr + 127;
if (loc)
loc->ctype_ptr = ctype_ptr + 127;
else
__ctype_ptr__ = ctype_ptr + 127;
}