* libc/locale/locale.c (loadlocale): Recognise the "cjknarrow"
modifier on "C.<charset>" locales too.
This commit is contained in:
parent
5c6904b515
commit
ce386bafb7
@ -1,3 +1,8 @@
|
||||
2010-11-19 Andy Koppe <andy.koppe@gmail.com>
|
||||
|
||||
* libc/locale/locale.c (loadlocale): Recognise the "cjknarrow"
|
||||
modifier on "C.<charset>" locales too.
|
||||
|
||||
2010-11-18 Andy Koppe <andy.koppe@gmail.com>
|
||||
|
||||
* libc/locale/locale.c (loadlocale): Fix width of CJK ambigous
|
||||
|
@ -452,7 +452,7 @@ loadlocale(struct _reent *p, int category)
|
||||
char *locale = NULL;
|
||||
char charset[ENCODING_LEN + 1];
|
||||
unsigned long val;
|
||||
char *end, *c;
|
||||
char *end, *c = NULL;
|
||||
int mbc_max;
|
||||
int (*l_wctomb) (struct _reent *, char *, wchar_t, const char *, mbstate_t *);
|
||||
int (*l_mbtowc) (struct _reent *, wchar_t *, const char *, size_t,
|
||||
@ -507,7 +507,16 @@ restart:
|
||||
sticking to the C locale in terms
|
||||
of sort order, etc. Proposed in
|
||||
the Debian project. */
|
||||
strcpy (charset, locale + 2);
|
||||
{
|
||||
char *chp;
|
||||
|
||||
c = locale + 2;
|
||||
strcpy (charset, c);
|
||||
if ((chp = strchr (charset, '@')))
|
||||
/* Strip off modifier */
|
||||
*chp = '\0';
|
||||
c += strlen (charset);
|
||||
}
|
||||
else /* POSIX style */
|
||||
{
|
||||
c = locale;
|
||||
@ -558,15 +567,15 @@ restart:
|
||||
else
|
||||
/* Invalid string */
|
||||
FAIL;
|
||||
if (c[0] == '@')
|
||||
{
|
||||
/* Modifier */
|
||||
/* Only one modifier is recognized right now. "cjknarrow" is used
|
||||
to modify the behaviour of wcwidth() for East Asian languages.
|
||||
For details see the comment at the end of this function. */
|
||||
if (!strcmp (c + 1, "cjknarrow"))
|
||||
cjknarrow = 1;
|
||||
}
|
||||
}
|
||||
if (c && c[0] == '@')
|
||||
{
|
||||
/* Modifier */
|
||||
/* Only one modifier is recognized right now. "cjknarrow" is used
|
||||
to modify the behaviour of wcwidth() for East Asian languages.
|
||||
For details see the comment at the end of this function. */
|
||||
if (!strcmp (c + 1, "cjknarrow"))
|
||||
cjknarrow = 1;
|
||||
}
|
||||
/* We only support this subset of charsets. */
|
||||
switch (charset[0])
|
||||
|
Loading…
Reference in New Issue
Block a user