1// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009 2// Free Software Foundation 3// 4// This file is part of the GNU ISO C++ Library. This library is free 5// software; you can redistribute it and/or modify it under the 6// terms of the GNU General Public License as published by the 7// Free Software Foundation; either version 3, or (at your option) 8// any later version. 9 10// This library is distributed in the hope that it will be useful, 11// but WITHOUT ANY WARRANTY; without even the implied warranty of 12// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13// GNU General Public License for more details. 14 15// You should have received a copy of the GNU General Public License along 16// with this library; see the file COPYING3. If not see 17// <http://www.gnu.org/licenses/>. 18 19// { dg-require-fileio "" } 20 21#include <cstdio> 22#include <fstream> 23#include <cstring> 24#include <ext/stdio_filebuf.h> 25#include <testsuite_hooks.h> 26 27void test1() 28{ 29 using namespace std; 30 bool test __attribute__((unused)) = true; 31 32 FILE* file = fopen("tmp_10063-1", "w"); 33 putc('0', file); 34 putc('1', file); 35 { 36 __gnu_cxx::stdio_filebuf<char> sbuf(file, ios_base::out); 37 sbuf.sputc('2'); 38 sbuf.sputc('3'); 39 } 40 putc('4', file); 41 fclose(file); 42 43 filebuf fbuf; 44 fbuf.open("tmp_10063-1", ios_base::in); 45 char buf[10]; 46 streamsize n = fbuf.sgetn(buf, sizeof(buf)); 47 fbuf.close(); 48 49 VERIFY(n == 5); 50 VERIFY(!memcmp(buf, "01234", 5)); 51} 52 53int main() 54{ 55 test1(); 56 return 0; 57} 58