From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Schmid To: gcc-gnats@gcc.gnu.org Subject: libstdc++/3679: Problems with default locale Date: Fri, 13 Jul 2001 10:06:00 -0000 Message-id: <200107131800.UAA21198@snake.iap.physik.tu-darmstadt.de> X-SW-Source: 2001-07/msg00377.html List-Id: >Number: 3679 >Category: libstdc++ >Synopsis: Problems with default locale >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Fri Jul 13 10:06:00 PDT 2001 >Closed-Date: >Last-Modified: >Originator: Peter Schmid >Release: 3.1 20010710 (experimental) >Organization: TU Darmstadt >Environment: System: Linux kiste 2.4.6 #6 Wed Jul 11 02:21:23 CEST 2001 i686 unknown Architecture: i686 GNU ld version 2.11.90.0.23 (with BFD 2.11.90.0.23) SuSE 7.1 host: i686-pc-linux-gnu build: i686-pc-linux-gnu target: i686-pc-linux-gnu configured with: ../gcc/configure --enable-shared --disable-nls --enable-threads=posix --enable-clocale=gnu --enable-languages=c,c++,f77,objc >Description: According to Josuttis "The C++ Standard Library" page 696 -- 697 passing an empty string as the name of the locale has a special meaning. The default locale from the users's environment is used (determined the environment variable LANG on Linux). But that does not work with the current libstdc++ implementation. The value of LANG is ignored and the name of Locale1 in the program tgl is set to the empty string which is wrong. Explicitly importing the German locale as in Locale2 works though. >How-To-Repeat: Source code tgl.C #include #include using namespace std; int main() { locale Locale1(""); cout.imbue(Locale1); cout << Locale1.name() << endl; locale Locale2("de_DE"); cout.imbue(Locale2); cout << Locale2.name() << endl; } Compiling tgl.C g++ -v -o tgl tgl.C -W -Wall Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/specs Configured with: ../gcc/configure --enable-shared --disable-nls --enable-threads=posix --enable-clocale=gnu --enable-languages=c,c++,f77,objc Thread model: posix gcc version 3.1 20010710 (experimental) /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/cc1plus -v -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -W -Wall -D_GNU_SOURCE -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ tgl.C -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -quiet -dumpbase tgl.C -W -Wall -version -o /tmp/ccMPOA3S.s GNU CPP version 3.1 20010710 (experimental) (cpplib) (i386 Linux/ELF) GNU C++ version 3.1 20010710 (experimental) (i686-pc-linux-gnu) compiled by GNU C version 3.1 20010710 (experimental). ignoring nonexistent directory "/usr/local/i686-pc-linux-gnu/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include/g++-v3 /usr/local/include/g++-v3/i686-pc-linux-gnu /usr/local/include/g++-v3/backward /usr/local/include /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include /usr/include End of search list. /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/../../../../i686-pc-linux-gnu/bin/as -V -Qy -o /tmp/cc7kLbiW.o /tmp/ccMPOA3S.s GNU assembler version 2.11.90.0.23 (i686-pc-linux-gnu) using BFD version 2.11.90.0.23 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o tgl /usr/lib/crt1.o /usr/lib/crti.o /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtbegin.o -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1 -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/../../../../i686-pc-linux-gnu/lib -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/../../.. /tmp/cc7kLbiW.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtend.o /usr/lib/crtn.o Running tgl LANG=de_DE ./tgl de_DE >Fix: >Release-Note: >Audit-Trail: >Unformatted: