10063-1.cc 1.4 KB

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