Package: libc6 Version: 2.3.6.ds1-13etch2 I found that strtoul doesn't accept "i" as a digit of a base 36 number under tr_TR locale.
% cat tst.c #include <stdio.h> #include <locale.h> #include <stdlib.h> #include <errno.h> int main(int argc, char **argv) { unsigned long ret; char *e = NULL; setlocale(LC_ALL, ""); errno = 0; ret = strtoul("i", &e, 36); if (errno != 0) { perror("strtoul"); } printf("%lu [%s]\n", ret, e); return 0; } % gcc -Wall tst.c % LANG=tr_TR ./a.out 0 [i] It returns 0. "i" is not converted. It returns 18 under C locale. % LANG=C ./a.out 18 [] It is caused by Turkish case conversion rule. strtoul(3) describes about locale as follows: | In locales other than the "C" locale, other strings may be accepted. | (For example, the thousands separator of the current locale may be sup- | ported.) I think it is not intentional to reject "i" under tr_TR locale. % dpkg -l|grep libc6 ii libc6 2.3.6.ds1-13etch2 GNU C Library: Shared libraries ii libc6-dev 2.3.6.ds1-13etch2 GNU C Library: Development Libraries and Hea ii libc6-i686 2.3.6.ds1-13etch2 GNU C Library: Shared libraries [i686 optimi -- Tanaka Akira -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]