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