Package: libc6 Version: 2.10.1-3 Severity: normal With a ja_JP.UTF8 locale defined, the program foo.c below prints
E3 80 87 00 E4 B8 80 00 E4 BA 8C 00 where I expected the 00 null bytes to be semi-colons, separating the symbols for the alt digits, per POSIX http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap07.html#tag_07_03_05_02 which says The value consists of semicolon-separated symbols. (Semi-colon is also the separator in the locale definition file, but that's a separate thing. That chapter of the spec has separate sections for the file format and the subsequent C-language access.) I believe the same problem is present in nl_langinfo(ERA). The spec is "Era description segments are separated by semicolons", but the libc code ends up giving '\0' separators.
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <langinfo.h> int main (void) { char *s; int i; const char *locale = "ja_JP.UTF8"; if (setlocale (LC_ALL, locale) == NULL) { printf ("no locale %s\n", locale); exit (1); } s = nl_langinfo (ALT_DIGITS); /* printf ("ALT_DIGITS `%s'\n", s); */ for (i = 0; i < 12; i++) { printf (" %02X", (int) (unsigned char) s[i]); } printf ("\n"); return 0; }
-- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: i386 (i586) Kernel: Linux 2.6.30-1-486 Locale: LANG=en_AU, LC_CTYPE=en_AU (charmap=ISO-8859-1) Shell: /bin/sh linked to /bin/dash Versions of packages libc6 depends on: ii libc-bin 2.10.1-3 GNU C Library: Binaries ii libgcc1 1:4.4.2-3 GCC support library Versions of packages libc6 recommends: pn libc6-i686 <none> (no description available) Versions of packages libc6 suggests: ii debconf [debconf-2.0] 1.5.28 Debian configuration management sy ii glibc-doc 2.10.1-5 GNU C Library: Documentation ii locales 2.10.1-5 GNU C Library: National Language ( -- debconf information: * glibc/upgrade: true glibc/disable-screensaver: glibc/restart-failed: * glibc/restart-services: rsync openbsd-inetd exim4 cron atd