PATCH: fix portability for ext/stdio_filebuf/char/10063-2.cc
Loren James Rittle
rittle@latour.rsch.comm.mot.com
Tue Jan 20 01:43:00 GMT 2004
I wrote last week:
> FAIL: ext/stdio_filebuf/char/10063-2.cc execution test
As committed to mainline.
* testsuite/ext/stdio_filebuf/char/10063-2.cc: Treat unbuffered.
* testsuite/ext/stdio_filebuf/char/10063-3.cc: New test. Like -2 but
use __gnu_cxx::stdio_sync_filebuf<char> instead; allow buffered stream.
Index: libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc,v
retrieving revision 1.2
diff -c -r1.2 10063-2.cc
*** libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc 29 Dec 2003 19:26:16 -0000 1.2
--- libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc 20 Jan 2004 01:21:46 -0000
***************
*** 36,41 ****
--- 36,42 ----
fbuf.close();
FILE* file = fopen("tmp_10063-2", "r");
+ setbuf(file, NULL);
int c = getc(file);
VERIFY(c == '0');
c = getc(file);
Index: libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
===================================================================
RCS file: libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
diff -N libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc 20 Jan 2004 01:25:59 -0000
***************
*** 0 ****
--- 1,61 ----
+ // Copyright (C) 2004 Free Software Foundation
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+ // terms of the GNU General Public License as published by the
+ // Free Software Foundation; either version 2, or (at your option)
+ // any later version.
+
+ // This library is distributed in the hope that it will be useful,
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ // GNU General Public License for more details.
+
+ // You should have received a copy of the GNU General Public License along
+ // with this library; see the file COPYING. If not, write to the Free
+ // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ // USA.
+
+ // The ARM simulator does not provide support for "fstat", which
+ // causes "sbumpc" to return an incorrect value.
+ // { dg-do run { xfail arm-none-elf } }
+
+ #include <cstdio>
+ #include <fstream>
+ #include <ext/stdio_sync_filebuf.h>
+ #include <testsuite_hooks.h>
+
+ void test3()
+ {
+ using namespace std;
+ bool test __attribute__((unused)) = true;
+
+ filebuf fbuf;
+ fbuf.open("tmp_10063-3", ios_base::out | ios_base::trunc);
+ fbuf.sputn("01234", 5);
+ fbuf.close();
+
+ FILE* file = fopen("tmp_10063-3", "r");
+ int c = getc(file);
+ VERIFY(c == '0');
+ c = getc(file);
+ VERIFY(c == '1');
+ {
+ __gnu_cxx::stdio_sync_filebuf<char> sbuf(file);
+ c = sbuf.sbumpc();
+ VERIFY(c == '2');
+ c = sbuf.sbumpc();
+ VERIFY(c == '3');
+ c = sbuf.sbumpc();
+ VERIFY(c == '4');
+ c = sbuf.sgetc();
+ VERIFY(c == EOF);
+ }
+ fclose(file);
+ }
+
+ int main()
+ {
+ test3();
+ return 0;
+ }
More information about the Libstdc++
mailing list