Package: libc6 Version: 2.3.6.ds1-13etch2 I found that strtod doesn't accept "INFINITY" under tr_TR locale.
% cat strtod.c #include <stdio.h> #include <ctype.h> #include <locale.h> #include <stdlib.h> #include <errno.h> int main(int argc, char **argv) { int i; double ret; char *e = NULL; setlocale(LC_ALL, ""); errno = 0; ret = strtod(argv[1], &e); if (errno != 0) { perror("strtol"); } printf("%.18f [%s]\n", ret, e); return 0; } % gcc strtod.c % LANG=tr_TR ./a.out INFINITY 0,000000000000000000 [INFINITY] It returns 0.0 and the string is not converted. % LANG=C ./a.out INFINITY inf [] It returns inf consumes "INFINITY" under C locale. It is caused by Turkish case conversion rule. strtod(3) has a description about the case of INFINITY as follows. | An infinity is either ``INF'' or ``INFINITY'', disregarding case. I think it is not intentional to reject "INFINITY" 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]