Dead
[official-gcc.git] / gomp-20050608-branch / libstdc++-v3 / testsuite / 27_io / basic_filebuf / imbue / char / 13171-2.cc
blob53998859a8c88fd2a5362e79358faa831f733466
1 // { dg-require-namedlocale "" }
2 // { dg-require-fork "" }
3 // { dg-require-mkfifo "" }
5 // Copyright (C) 2003, 2005 Free Software Foundation, Inc.
6 //
7 // This file is part of the GNU ISO C++ Library. This library is free
8 // software; you can redistribute it and/or modify it under the
9 // terms of the GNU General Public License as published by the
10 // Free Software Foundation; either version 2, or (at your option)
11 // any later version.
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
18 // You should have received a copy of the GNU General Public License along
19 // with this library; see the file COPYING. If not, write to the Free
20 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
21 // USA.
23 // 27.8.1.4 Overridden virtual functions
25 #include <fstream>
26 #include <locale>
28 #include <sys/types.h>
29 #include <sys/stat.h>
31 #include <testsuite_hooks.h>
33 // libstdc++/13171
34 void test01()
36 bool test __attribute__((unused)) = true;
37 using namespace std;
38 using namespace __gnu_test;
40 locale loc_fr(locale("fr_FR"));
41 locale loc_en(locale("en_US"));
43 const char* name = "tmp_fifo_13171-2";
44 unlink(name);
45 mkfifo(name, S_IRWXU);
46 semaphore s1, s2;
48 int child = fork();
49 if (child == 0)
51 filebuf fb;
52 fb.open(name, ios_base::out);
53 fb.sputc('S');
54 fb.pubsync();
55 s1.signal ();
56 s2.wait ();
57 fb.close();
58 exit(0);
61 filebuf fb;
62 fb.pubimbue(loc_fr);
63 fb.open(name, ios_base::in);
64 s1.wait ();
65 VERIFY( fb.is_open() );
66 fb.pubimbue(loc_en);
67 filebuf::int_type c = fb.sgetc();
68 fb.close();
69 VERIFY( c == 'S' );
70 s2.signal ();
73 int main()
75 test01();
76 return 0;