fstream.tcc (filebuf::close()): Fix close for input streams.
authorBenjamin Kosnik <bkoz@redhat.com>
Sat, 26 Jan 2002 01:55:09 +0000 (01:55 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Sat, 26 Jan 2002 01:55:09 +0000 (01:55 +0000)
2002-01-25  Benjamin Kosnik  <bkoz@redhat.com>

* include/bits/fstream.tcc (filebuf::close()): Fix close for input
streams.
(filebuf::_M_really_overflow): Match indeterminate and sync calls.
* testsuite/27_io/filebuf.cc: Compile only.
* testsuite/27_io/filebuf_members.cc: Move tests to here.
* testsuite/27_io/filebuf_virtuals.cc: And here.
Revert sungetc, sync changes for expected values.
* testsuite/27_io/filebuf-*: Move to...
* testsuite/27_io/filebuf_virtuals-*: ...here.
* testsuite/27_io/istream.cc: Compile only, activate.
* testsuite/27_io/ostream.cc: Same.
* testsuite/27_io/iostream.cc: New.
* testsuite/27_io/iostream_members.cc: New.

From-SVN: r49236

17 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/fstream.tcc
libstdc++-v3/testsuite/27_io/filebuf-1.tst [deleted file]
libstdc++-v3/testsuite/27_io/filebuf-1.txt [deleted file]
libstdc++-v3/testsuite/27_io/filebuf-2.tst [deleted file]
libstdc++-v3/testsuite/27_io/filebuf-3.tst [deleted file]
libstdc++-v3/testsuite/27_io/filebuf.cc
libstdc++-v3/testsuite/27_io/filebuf_members.cc
libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.tst [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.txt [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/filebuf_virtuals-2.tst [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/filebuf_virtuals-3.tst [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc
libstdc++-v3/testsuite/27_io/iostream.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/iostream_members.cc [new file with mode: 0644]
libstdc++-v3/testsuite/27_io/istream.cc
libstdc++-v3/testsuite/27_io/ostream.cc

index b300a62845b96ff8e54b5a3bd4f28d2fcf4e60e4..47e43bdbf473e0bbd864c98a76f95ef92030a217 100644 (file)
@@ -1,3 +1,19 @@
+2002-01-25  Benjamin Kosnik  <bkoz@redhat.com>
+
+       * include/bits/fstream.tcc (filebuf::close()): Fix close for input
+       streams.
+       (filebuf::_M_really_overflow): Match indeterminate and sync calls.
+       * testsuite/27_io/filebuf.cc: Compile only.
+       * testsuite/27_io/filebuf_members.cc: Move tests to here.
+       * testsuite/27_io/filebuf_virtuals.cc: And here.
+       Revert sungetc, sync changes for expected values.
+       * testsuite/27_io/filebuf-*: Move to...
+       * testsuite/27_io/filebuf_virtuals-*: ...here.
+       * testsuite/27_io/istream.cc: Compile only, activate.
+       * testsuite/27_io/ostream.cc: Same.
+       * testsuite/27_io/iostream.cc: New.
+       * testsuite/27_io/iostream_members.cc: New.
+
 2002-01-25  David Billinghurst <David.Billinghurst@riotinto.com>
 
        * testsuite/thread/pthread1.cc: Enable on cygwin.
index 1e29e5d17c818524a2569656153ff9ec4ef75fe1..420516bb50173b3d285a3a9277c1d5b55c70d4d6 100644 (file)
@@ -1,6 +1,7 @@
 // File based streams -*- C++ -*-
 
-// Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
+// Free Software Foundation, Inc.
 //
 // 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
@@ -181,31 +182,31 @@ namespace std
       __filebuf_type *__ret = NULL;
       if (this->is_open())
        {
+         const int_type __eof = traits_type::eof();
          bool __testput = _M_out_cur && _M_out_beg < _M_out_end;
-         if (__testput
-             && _M_really_overflow(traits_type::eof()) != traits_type::eof())
-           {
-             // NB: Do this here so that re-opened filebufs will be cool...
-             _M_mode = ios_base::openmode(0);
-             _M_destroy_internal_buffer();
-             
-             _M_pback_destroy();
-             if (_M_pback)
-               {
-                 delete [] _M_pback;
-                 _M_pback = NULL;
-               }
+         if (__testput && _M_really_overflow(__eof) == __eof)
+           return __ret;
 
+         // NB: Do this here so that re-opened filebufs will be cool...
+         _M_mode = ios_base::openmode(0);
+         _M_destroy_internal_buffer();
+         
+         _M_pback_destroy();
+         if (_M_pback)
+           {
+             delete [] _M_pback;
+             _M_pback = NULL;
+           }
+         
 #if 0
          // XXX not done
          if (_M_last_overflowed)
            {
              _M_output_unshift();
-             _M_really_overflow(traits_type::eof());
+             _M_really_overflow(__eof);
            }
 #endif
-             __ret = this;
-           }
+         __ret = this;
        }
 
       // Can actually allocate this file as part of an open and never
@@ -429,11 +430,11 @@ namespace std
 
          // NB: Need this so that external byte sequence reflects
          // internal buffer.
-         if (__len == __plen)
-           _M_set_indeterminate();
-
-         if (!_M_file->sync())
-           __ret = traits_type::not_eof(__c);
+         if (__len == __plen && !_M_file->sync())
+           {
+             _M_set_indeterminate();
+             __ret = traits_type::not_eof(__c);
+           }
 #else
          // Part one: Allocate temporary conversion buffer on
          // stack. Convert internal buffer plus __c (ie,
@@ -609,3 +610,8 @@ namespace std
 #endif // _CPP_BITS_FSTREAM_TCC
 
 
+
+
+
+
+
diff --git a/libstdc++-v3/testsuite/27_io/filebuf-1.tst b/libstdc++-v3/testsuite/27_io/filebuf-1.tst
deleted file mode 100644 (file)
index cb3c57f..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-// 990117 bkoz
-// test functionality of basic_filebuf for char_type == char
-// this is a data file for 27filebuf.cc
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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.
-
-/mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme
-/mnt/cdrom/sarah_vaughan/sarah_vaughan.speaklow
-
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_01_the_way_i_feel
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_02_seduction_kidnap
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_03_just_a_ny_poem
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_04_butterflies_i_remem
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_05_luxury_poem
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_06_my_house
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_07_the_women_gather
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_08_the_life_i_led
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_09_when_i_die
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_10_revolutionary_dreams
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_11_winter_poem
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_12_a_certain_peace_i_nap
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_13_poem_for_a_lady_whose
-
-/mnt/cdrom/marley-songs_of_freedom/disk_1/
-/mnt/cdrom/marley-songs_of_freedom/disk_2/
-/mnt/cdrom/marley-songs_of_freedom/disk_4/
-
-/mnt/cdrom/marley-songs_of_freedom/disk_1/back out
-/mnt/cdrom/marley-songs_of_freedom/disk_1/bend down low
-/mnt/cdrom/marley-songs_of_freedom/disk_1/bus dem shut (pyaka)
-/mnt/cdrom/marley-songs_of_freedom/disk_1/caution
-/mnt/cdrom/marley-songs_of_freedom/disk_1/do it twice
-/mnt/cdrom/marley-songs_of_freedom/disk_1/don't rock the boat
-/mnt/cdrom/marley-songs_of_freedom/disk_1/duppy conqueror
-/mnt/cdrom/marley-songs_of_freedom/disk_1/hammer
-/mnt/cdrom/marley-songs_of_freedom/disk_1/hypocrites
-/mnt/cdrom/marley-songs_of_freedom/disk_1/i'm still waiting
-/mnt/cdrom/marley-songs_of_freedom/disk_1/judge not
-/mnt/cdrom/marley-songs_of_freedom/disk_1/mellow mood
-/mnt/cdrom/marley-songs_of_freedom/disk_1/mr brown
-/mnt/cdrom/marley-songs_of_freedom/disk_1/nice time
-/mnt/cdrom/marley-songs_of_freedom/disk_1/one cup of coffee
-/mnt/cdrom/marley-songs_of_freedom/disk_1/one love_people get ready
-/mnt/cdrom/marley-songs_of_freedom/disk_1/put it on
-/mnt/cdrom/marley-songs_of_freedom/disk_1/simmer down
-/mnt/cdrom/marley-songs_of_freedom/disk_1/small axe
-/mnt/cdrom/marley-songs_of_freedom/disk_1/soul rebel
-/mnt/cdrom/marley-songs_of_freedom/disk_1/soul shake down party
-/mnt/cdrom/marley-songs_of_freedom/disk_1/stir it up (original)
-/mnt/cdrom/marley-songs_of_freedom/disk_1/sun is shining
-/mnt/cdrom/marley-songs_of_freedom/disk_1/thank you lord (original)
-/mnt/cdrom/marley-songs_of_freedom/disk_2/acoustic medley
-/mnt/cdrom/marley-songs_of_freedom/disk_2/burnin' and lootin'
-/mnt/cdrom/marley-songs_of_freedom/disk_2/concrete jungle
-/mnt/cdrom/marley-songs_of_freedom/disk_2/craven choke puppy
-/mnt/cdrom/marley-songs_of_freedom/disk_2/get up stand up
-/mnt/cdrom/marley-songs_of_freedom/disk_2/guava jelly
-/mnt/cdrom/marley-songs_of_freedom/disk_2/high tide or low tide
-/mnt/cdrom/marley-songs_of_freedom/disk_2/i shot the sheriff
-/mnt/cdrom/marley-songs_of_freedom/disk_2/i'm hurting inside
-/mnt/cdrom/marley-songs_of_freedom/disk_2/iron lion zion
-/mnt/cdrom/marley-songs_of_freedom/disk_2/lick samba
-/mnt/cdrom/marley-songs_of_freedom/disk_2/lively up yourself
-/mnt/cdrom/marley-songs_of_freedom/disk_2/natty dread
-/mnt/cdrom/marley-songs_of_freedom/disk_2/no more trouble
-/mnt/cdrom/marley-songs_of_freedom/disk_2/rastaman chant
-/mnt/cdrom/marley-songs_of_freedom/disk_2/screw face
-/mnt/cdrom/marley-songs_of_freedom/disk_2/slave driver
-/mnt/cdrom/marley-songs_of_freedom/disk_2/trenchtown rock
-/mnt/cdrom/marley-songs_of_freedom/disk_4/africa unite
-/mnt/cdrom/marley-songs_of_freedom/disk_4/babylon system
-/mnt/cdrom/marley-songs_of_freedom/disk_4/bad card
-/mnt/cdrom/marley-songs_of_freedom/disk_4/coming in from the cold (12
-/mnt/cdrom/marley-songs_of_freedom/disk_4/could you be loved (12  mix
-/mnt/cdrom/marley-songs_of_freedom/disk_4/forever loving jah
-/mnt/cdrom/marley-songs_of_freedom/disk_4/give thanks and praise
-/mnt/cdrom/marley-songs_of_freedom/disk_4/one drop
-/mnt/cdrom/marley-songs_of_freedom/disk_4/one dub
-/mnt/cdrom/marley-songs_of_freedom/disk_4/rastaman live up
-/mnt/cdrom/marley-songs_of_freedom/disk_4/real situation
-/mnt/cdrom/marley-songs_of_freedom/disk_4/redemption song (live in pi
-/mnt/cdrom/marley-songs_of_freedom/disk_4/ride natty ride (12  mix)
-/mnt/cdrom/marley-songs_of_freedom/disk_4/so much trouble in the worl
-/mnt/cdrom/marley-songs_of_freedom/disk_4/survival
-/mnt/cdrom/marley-songs_of_freedom/disk_4/why should i (previously un
-/mnt/cdrom/marley-songs_of_freedom/disk_4/zimbabwe
-
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_01_pandemonium
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_02_sync_disjecta
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_03_object_unknown
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_04_it's_nice_not
-/mnt/cdrom/dj_spooky_rid-2dim_warefare/djspooky_05_dialectical_tra
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_06_post-human_soph
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_07_quilombo_ex
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_08_rekonstruction
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_09_scientifik
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_10_a_conversation
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_11_peace_in_zaire
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_13_degree_zero
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_14_roman_planeta
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_15_bass_digitalis
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_16_polyphony_of
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_17_riddim_warfare
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_18_the_nerd
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_20_theme_of_the
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_21_twilight_fugue
-
-/mnt/cdrom/stuff_smith_mosaic/disk3/01_desert_sands
-/mnt/cdrom/stuff_smith_mosaic/disk3/02_soft_winds
-/mnt/cdrom/stuff_smith_mosaic/disk3/03_time_and_again
-/mnt/cdrom/stuff_smith_mosaic/disk3/04_it_don't_mean_a_thing
-/mnt/cdrom/stuff_smith_mosaic/disk3/05_in_a_mellotone
-/mnt/cdrom/stuff_smith_mosaic/disk3/06_i_know_that_you_know
-/mnt/cdrom/stuff_smith_mosaic/disk3/07_heat_wave
-/mnt/cdrom/stuff_smith_mosaic/disk3/08_things_ain't_what_they_used_to_be
-/mnt/cdrom/stuff_smith_mosaic/disk3/09_body_and_soul
-
-So I take a break, wander down to the park to stand, then lean into
-the concrete railing demarking the beginnings of space, oceanic
-space. I watch the waves break, and form, and ease back out to sea and
-wrap my arms around myself and hug tightly because it's early in the
-morning and windy, and the sun is late getting out of bed today, which
-is good because if there was brilliant light illuminating all the
-beauty around me I would be shocked, stunned, forced to retreat back
-into my cabana in a daze, blinded by hummingbirds and callilillies and
-un-named red, yellow, and blue flowers. Green envelopes me, waves
-sooth me. I can see the wind flip the top of the waves seaward, right
-before they break. The sea seems so calm from my perch above the fray
-that I wonder if maybe there is just some part of the deepest, most
-abstract ocean where there is a large creature who happily chews
-plankton and wags its tail in gentle, adulating waves that spread and
-move and gracefully glide thousands of miles, to crash upon a beach,
-one after the other, politely waiting for a turn to dance with the
-seashore.
-
-I know: it is what the Mexican schoolchildren call "la vibora de la
-mer," the serpent of the sea.
-
-
-
-
-
diff --git a/libstdc++-v3/testsuite/27_io/filebuf-1.txt b/libstdc++-v3/testsuite/27_io/filebuf-1.txt
deleted file mode 100644 (file)
index cb3c57f..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-// 990117 bkoz
-// test functionality of basic_filebuf for char_type == char
-// this is a data file for 27filebuf.cc
-
-// Copyright (C) 1997-1999 Cygnus Solutions
-//
-// 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.
-
-/mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme
-/mnt/cdrom/sarah_vaughan/sarah_vaughan.speaklow
-
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_01_the_way_i_feel
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_02_seduction_kidnap
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_03_just_a_ny_poem
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_04_butterflies_i_remem
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_05_luxury_poem
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_06_my_house
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_07_the_women_gather
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_08_the_life_i_led
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_09_when_i_die
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_10_revolutionary_dreams
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_11_winter_poem
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_12_a_certain_peace_i_nap
-/mnt/cdrom/nikkigiovanni_thewayifeel/ng_13_poem_for_a_lady_whose
-
-/mnt/cdrom/marley-songs_of_freedom/disk_1/
-/mnt/cdrom/marley-songs_of_freedom/disk_2/
-/mnt/cdrom/marley-songs_of_freedom/disk_4/
-
-/mnt/cdrom/marley-songs_of_freedom/disk_1/back out
-/mnt/cdrom/marley-songs_of_freedom/disk_1/bend down low
-/mnt/cdrom/marley-songs_of_freedom/disk_1/bus dem shut (pyaka)
-/mnt/cdrom/marley-songs_of_freedom/disk_1/caution
-/mnt/cdrom/marley-songs_of_freedom/disk_1/do it twice
-/mnt/cdrom/marley-songs_of_freedom/disk_1/don't rock the boat
-/mnt/cdrom/marley-songs_of_freedom/disk_1/duppy conqueror
-/mnt/cdrom/marley-songs_of_freedom/disk_1/hammer
-/mnt/cdrom/marley-songs_of_freedom/disk_1/hypocrites
-/mnt/cdrom/marley-songs_of_freedom/disk_1/i'm still waiting
-/mnt/cdrom/marley-songs_of_freedom/disk_1/judge not
-/mnt/cdrom/marley-songs_of_freedom/disk_1/mellow mood
-/mnt/cdrom/marley-songs_of_freedom/disk_1/mr brown
-/mnt/cdrom/marley-songs_of_freedom/disk_1/nice time
-/mnt/cdrom/marley-songs_of_freedom/disk_1/one cup of coffee
-/mnt/cdrom/marley-songs_of_freedom/disk_1/one love_people get ready
-/mnt/cdrom/marley-songs_of_freedom/disk_1/put it on
-/mnt/cdrom/marley-songs_of_freedom/disk_1/simmer down
-/mnt/cdrom/marley-songs_of_freedom/disk_1/small axe
-/mnt/cdrom/marley-songs_of_freedom/disk_1/soul rebel
-/mnt/cdrom/marley-songs_of_freedom/disk_1/soul shake down party
-/mnt/cdrom/marley-songs_of_freedom/disk_1/stir it up (original)
-/mnt/cdrom/marley-songs_of_freedom/disk_1/sun is shining
-/mnt/cdrom/marley-songs_of_freedom/disk_1/thank you lord (original)
-/mnt/cdrom/marley-songs_of_freedom/disk_2/acoustic medley
-/mnt/cdrom/marley-songs_of_freedom/disk_2/burnin' and lootin'
-/mnt/cdrom/marley-songs_of_freedom/disk_2/concrete jungle
-/mnt/cdrom/marley-songs_of_freedom/disk_2/craven choke puppy
-/mnt/cdrom/marley-songs_of_freedom/disk_2/get up stand up
-/mnt/cdrom/marley-songs_of_freedom/disk_2/guava jelly
-/mnt/cdrom/marley-songs_of_freedom/disk_2/high tide or low tide
-/mnt/cdrom/marley-songs_of_freedom/disk_2/i shot the sheriff
-/mnt/cdrom/marley-songs_of_freedom/disk_2/i'm hurting inside
-/mnt/cdrom/marley-songs_of_freedom/disk_2/iron lion zion
-/mnt/cdrom/marley-songs_of_freedom/disk_2/lick samba
-/mnt/cdrom/marley-songs_of_freedom/disk_2/lively up yourself
-/mnt/cdrom/marley-songs_of_freedom/disk_2/natty dread
-/mnt/cdrom/marley-songs_of_freedom/disk_2/no more trouble
-/mnt/cdrom/marley-songs_of_freedom/disk_2/rastaman chant
-/mnt/cdrom/marley-songs_of_freedom/disk_2/screw face
-/mnt/cdrom/marley-songs_of_freedom/disk_2/slave driver
-/mnt/cdrom/marley-songs_of_freedom/disk_2/trenchtown rock
-/mnt/cdrom/marley-songs_of_freedom/disk_4/africa unite
-/mnt/cdrom/marley-songs_of_freedom/disk_4/babylon system
-/mnt/cdrom/marley-songs_of_freedom/disk_4/bad card
-/mnt/cdrom/marley-songs_of_freedom/disk_4/coming in from the cold (12
-/mnt/cdrom/marley-songs_of_freedom/disk_4/could you be loved (12  mix
-/mnt/cdrom/marley-songs_of_freedom/disk_4/forever loving jah
-/mnt/cdrom/marley-songs_of_freedom/disk_4/give thanks and praise
-/mnt/cdrom/marley-songs_of_freedom/disk_4/one drop
-/mnt/cdrom/marley-songs_of_freedom/disk_4/one dub
-/mnt/cdrom/marley-songs_of_freedom/disk_4/rastaman live up
-/mnt/cdrom/marley-songs_of_freedom/disk_4/real situation
-/mnt/cdrom/marley-songs_of_freedom/disk_4/redemption song (live in pi
-/mnt/cdrom/marley-songs_of_freedom/disk_4/ride natty ride (12  mix)
-/mnt/cdrom/marley-songs_of_freedom/disk_4/so much trouble in the worl
-/mnt/cdrom/marley-songs_of_freedom/disk_4/survival
-/mnt/cdrom/marley-songs_of_freedom/disk_4/why should i (previously un
-/mnt/cdrom/marley-songs_of_freedom/disk_4/zimbabwe
-
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_01_pandemonium
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_02_sync_disjecta
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_03_object_unknown
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_04_it's_nice_not
-/mnt/cdrom/dj_spooky_rid-2dim_warefare/djspooky_05_dialectical_tra
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_06_post-human_soph
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_07_quilombo_ex
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_08_rekonstruction
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_09_scientifik
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_10_a_conversation
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_11_peace_in_zaire
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_13_degree_zero
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_14_roman_planeta
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_15_bass_digitalis
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_16_polyphony_of
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_17_riddim_warfare
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_18_the_nerd
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_20_theme_of_the
-/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_21_twilight_fugue
-
-/mnt/cdrom/stuff_smith_mosaic/disk3/01_desert_sands
-/mnt/cdrom/stuff_smith_mosaic/disk3/02_soft_winds
-/mnt/cdrom/stuff_smith_mosaic/disk3/03_time_and_again
-/mnt/cdrom/stuff_smith_mosaic/disk3/04_it_don't_mean_a_thing
-/mnt/cdrom/stuff_smith_mosaic/disk3/05_in_a_mellotone
-/mnt/cdrom/stuff_smith_mosaic/disk3/06_i_know_that_you_know
-/mnt/cdrom/stuff_smith_mosaic/disk3/07_heat_wave
-/mnt/cdrom/stuff_smith_mosaic/disk3/08_things_ain't_what_they_used_to_be
-/mnt/cdrom/stuff_smith_mosaic/disk3/09_body_and_soul
-
-So I take a break, wander down to the park to stand, then lean into
-the concrete railing demarking the beginnings of space, oceanic
-space. I watch the waves break, and form, and ease back out to sea and
-wrap my arms around myself and hug tightly because it's early in the
-morning and windy, and the sun is late getting out of bed today, which
-is good because if there was brilliant light illuminating all the
-beauty around me I would be shocked, stunned, forced to retreat back
-into my cabana in a daze, blinded by hummingbirds and callilillies and
-un-named red, yellow, and blue flowers. Green envelopes me, waves
-sooth me. I can see the wind flip the top of the waves seaward, right
-before they break. The sea seems so calm from my perch above the fray
-that I wonder if maybe there is just some part of the deepest, most
-abstract ocean where there is a large creature who happily chews
-plankton and wags its tail in gentle, adulating waves that spread and
-move and gracefully glide thousands of miles, to crash upon a beach,
-one after the other, politely waiting for a turn to dance with the
-seashore.
-
-I know: it is what the Mexican schoolchildren call "la vibora de la
-mer," the serpent of the sea.
-
-
-
-
-
diff --git a/libstdc++-v3/testsuite/27_io/filebuf-2.tst b/libstdc++-v3/testsuite/27_io/filebuf-2.tst
deleted file mode 100644 (file)
index f25bba4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-ac23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZracadabras23456789:;<
\ No newline at end of file
diff --git a/libstdc++-v3/testsuite/27_io/filebuf-3.tst b/libstdc++-v3/testsuite/27_io/filebuf-3.tst
deleted file mode 100644 (file)
index 0a81f51..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-bd2
-456x
-9m;uva?@ABCDEFGHIJKLMNOPQRSTUVWXYZracadabras, i wanna 
-because because
-because. . .
-of the wonderful things he does!!
-ok
\ No newline at end of file
index ce2beb0c25c6c6365eac4a56bca18218d5f96ac5..558d196f9fb359de9dc8a8522b397a55cb102f62 100644 (file)
@@ -1,6 +1,7 @@
-// 990117 bkoz test functionality of basic_filebuf for char_type == char
+// 1999-01-17 bkoz test functionality of basic_filebuf for char_type == char
 
-// Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 
+// Free Software Foundation, Inc.
 //
 // 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
 // NB: this test assumes that _M_buf_size == 40, and not the usual
 // buffer_size length of BUFSIZ (8192), so that overflow/underflow can be
 // simulated a bit more readily.
-// NRB (Nota Really Bene): setting it to 40 breaks the test, as intended.
-
-// @require@ %-*.tst %-*.txt
-// @diff@ %-*.tst %*.txt
-
-const int buffer_size = 8192;
-//const int buffer_size = 40;
 
 #include <fstream>
-#include <iostream>
 #include <testsuite_hooks.h>
 
-const char carray_01[] = "santa cruz or sandiego?";
-const char carray_02[] = "memphis, new orleans, and savanah";
-const char name_01[] = "filebuf-1.txt"; // file with data in it
-const char name_02[] = "filebuf-2.txt"; // empty file, need to create
-const char name_03[] = "filebuf-3.txt"; // empty file, need to create
-
-class derived_filebuf: public std::filebuf
-{
- public:
-  void
-  set_size(int_type __size) { _M_buf_size_opt = __size; }
-};
-
-derived_filebuf fb_01; // in 
-derived_filebuf fb_02; // out
-derived_filebuf fb_03; // in | out
-
-
-// initialize filebufs to be the same size regardless of platform
-void test00()
-{
-  fb_01.set_size(buffer_size);
-  fb_02.set_size(buffer_size);
-  fb_03.set_size(buffer_size);
-}
-
-
-// test the filebuf/stringbuf locale settings
-bool test01() {
-  std::locale loc_tmp;
-  loc_tmp = fb_01.getloc();
-  fb_01.pubimbue(loc_tmp); //This should initialize _M_init to true
-  fb_01.getloc(); //This should just return _M_locale
-
-  return true;
-}
-
-
-// test member functions functions
-bool test02() {
-  bool                         test = true;
-
-  // bool is_open()
-  VERIFY( !fb_01.is_open() );
-  VERIFY( !fb_02.is_open() );
-  VERIFY( !fb_03.is_open() );
-
-  // filebuf_type* open(const char* __s, ios_base::openmode __mode)
-  fb_01.open(name_01, std::ios_base::in | std::ios_base::ate);
-  fb_02.open(name_02, std::ios_base::in | std::ios_base::out | std::ios_base::trunc);
-  // Try to open two different files without closing the first:
-  // Should keep the old file attached, and disregard attempt to overthrow.
-  fb_02.open(name_03, std::ios_base::in | std::ios_base::out);
-  fb_03.open(name_03, std::ios_base::out | std::ios_base::trunc);
-  VERIFY( fb_01.is_open() );
-  VERIFY( fb_02.is_open() );
-  VERIFY( fb_03.is_open() );
-
-  // filebuf_type* close()
-  fb_01.close();
-  fb_02.close();
-  fb_03.close();
-  VERIFY( !fb_01.is_open() );
-  VERIFY( !fb_02.is_open() );
-  VERIFY( !fb_03.is_open() );
-
-#ifdef DEBUG_ASSERT
-  assert(test);
-#endif
-
-  return test;
-}
-
-
-// test overloaded virtual functions
-bool test03() {
-  typedef std::filebuf::int_type       int_type;
-  typedef std::filebuf::traits_type    traits_type;
-  typedef std::filebuf::pos_type       pos_type;
-  typedef std::filebuf::off_type       off_type;
-  typedef size_t                       size_type;
-
-  bool                                         test = true;
-  std::filebuf                                 f_tmp;
-  std::streamsize                      strmsz_1, strmsz_2;
-  std::streamoff                       strmof_1, strmof_2;
-  int                                  i = 0, j = 0, k = 0;
-
-  // GET
-  // int showmanyc()
-  // returns an estimate of the numbers of chars in the seq, or -1.
-  // if __retval > 0, then calls to underflow won't return
-  // traits_type::eof() till at least __retval chars. 
-  // if __retval == -1, then calls to underflow or uflow will fail.
-  // NB overriding def if it can determine more chars can be read from 
-  // the input sequence.
-
-  // int in_avail()
-  // if a read position is available, return _M_in_end - _M_in_cur.
-  // else return showmanyc.
-  strmof_1 = fb_01.in_avail();
-  strmof_2 = fb_02.in_avail();
-  VERIFY( strmof_1 == -1 );
-  VERIFY( strmof_1 == strmof_2 ); //fail because not open
-  strmof_1 = fb_03.in_avail();
-  VERIFY( strmof_1 == strmof_2 );
-  fb_01.open(name_01, std::ios_base::in);
-  fb_02.open(name_02, std::ios_base::out | std::ios_base::trunc);
-  fb_03.open(name_03, std::ios_base::out | std::ios_base::in | std::ios_base::trunc); 
-  strmof_1 = fb_01.in_avail();
-  strmof_2 = fb_02.in_avail();
-  VERIFY( strmof_1 != strmof_2 );
-  VERIFY( strmof_1 >= 0 );
-  VERIFY( strmof_2 == -1 );  // empty file
-  strmof_1 = fb_03.in_avail(); 
-  VERIFY( strmof_1  == 0 ); // empty file
-
-  // int_type sbumpc()
-  // if read_cur not avail returns uflow(), else return *read_cur & increment
-  int_type c1 = fb_01.sbumpc();
-  int_type c2 = fb_02.sbumpc();
-  VERIFY( c1 != c2 );
-  VERIFY( c1 == '/' );
-  VERIFY( c2 == -1 );
-  int_type c3 = fb_01.sbumpc();
-  int_type c4 = fb_02.sbumpc();
-  VERIFY( c3 != c4 );
-  VERIFY( c1 == c3 ); // fluke, both happen to be '/'
-  VERIFY( c2 == c4 );
-  int_type c5 = fb_03.sbumpc();
-  VERIFY( c5 == traits_type::eof() );
-  // XXX should do some kind of test to make sure that internal
-  // buffers point ot the same thing, to check consistancy.
-
-  // int_type sgetc()
-  // if read_cur not avail, return uflow(), else return *read_cur  
-  int_type c6 = fb_01.sgetc();
-  int_type c7 = fb_02.sgetc();
-  VERIFY( c6 != c3 );
-  VERIFY( c7 == c4 ); // both -1
-  int_type c8 = fb_01.sgetc();
-  int_type c9 = fb_02.sgetc();
-  VERIFY( c6 == c8 );
-  VERIFY( c7 == c9 );
-  c5 = fb_03.sgetc();
-  VERIFY( c5 == traits_type::eof() );
-
-  // int_type snextc()
-  // calls sbumpc and if sbumpc != eof, return sgetc
-  c6 = fb_01.snextc();
-  c7 = fb_02.snextc();
-  VERIFY( c6 != c8 );
-  VERIFY( c7 == c9 ); // -1
-  VERIFY( c6 == '9' );
-  c6 = fb_01.snextc();
-  c7 = fb_02.snextc();
-  VERIFY( c6 != c8 );
-  VERIFY( c7 == c9 ); // -1
-  VERIFY( c6 == '9' );
-  c5 = fb_03.snextc();
-  VERIFY( c5 == traits_type::eof() );
-
-  // streamsize sgetn(char_type *s, streamsize n)
-  // streamsize xsgetn(char_type *s, streamsize n)
-  // assign up to n chars to s from input sequence, indexing in_cur as
-  // approp and returning the number of chars assigned
-  strmsz_1 = fb_01.in_avail();
-  strmsz_2 = fb_02.in_avail();
-  test = strmsz_1 != strmsz_2;
-  char carray1[13] = "";
-  strmsz_1 = fb_01.sgetn(carray1, 10);
-  char carray2[buffer_size] = "";
-  strmsz_2 = fb_02.sgetn(carray2, 10);
-  VERIFY( strmsz_1 != strmsz_2 );
-  VERIFY( strmsz_1 == 10 );
-  VERIFY( strmsz_2 == 0 );
-  c1 = fb_01.sgetc();
-  c2 = fb_02.sgetc();
-  VERIFY( c1 == '\n' );  
-  VERIFY( c7 == c2 ); // n != i
-  strmsz_1 = fb_03.sgetn(carray1, 10);
-  VERIFY( !strmsz_1 ); //zero
-  strmsz_1 = fb_01.in_avail();
-  strmsz_2 = fb_01.sgetn(carray2, strmsz_1 + 5);
-  VERIFY( strmsz_1 == strmsz_2 - 5 ); 
-  c4 = fb_01.sgetc(); // buffer should have underflowed from above.
-  VERIFY( c4 == 'i' );
-  strmsz_1 = fb_01.in_avail();
-  VERIFY( strmsz_1 > 0 );
-  strmsz_2 = fb_01.sgetn(carray2, strmsz_1 + 5);
-  VERIFY( strmsz_1 == strmsz_2 ); //at the end of the actual file 
-  strmsz_1 = fb_02.in_avail();
-  strmsz_2 = fb_02.sgetn(carray2, strmsz_1 + 5);
-  VERIFY( strmsz_1 == -1 );
-  VERIFY( strmsz_2 == 0 );
-  c4 = fb_02.sgetc(); // should be EOF
-  VERIFY( c4 == traits_type::eof() );
-
-  // PUT
-  // int_type sputc(char_type c)
-  // if out_cur not avail, return overflow(traits_type::to_int_type(c)) 
-  // else, stores c at out_cur,
-  // increments out_cur, and returns c as int_type
-  // strmsz_1 = fb_03.in_avail();  // XXX valid for in|out??
-  c1 = fb_02.sputc('a'); 
-  c2 = fb_03.sputc('b'); 
-  VERIFY( c1 != c2 );
-  c1 = fb_02.sputc('c'); 
-  c2 = fb_03.sputc('d'); 
-  VERIFY( c1 != c2 );
-  // strmsz_2 = fb_03.in_avail();
-  // VERIFY( strmsz_1 != strmsz_2 );
-  for (int i = 50; i <= 90; ++i) 
-    c2 = fb_02.sputc(char(i));
-  // 27filebuf-2.txt == ac23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX
-  // fb_02._M_out_cur = '2'
-  strmsz_1 = fb_03.in_avail();
-  for (int i = 50; i <= 90; ++i) 
-    c2 = fb_03.sputc(char(i));
-  strmsz_2 = fb_03.in_avail();
-  // VERIFY( strmsz_1 != strmsz_2 );
-  // VERIFY( strmsz_1 > 0 );
-  // VERIFY( strmsz_2 > 0 );
-  // 27filebuf-2.txt == bd23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX
-  // fb_02._M_out_cur = '2'
-  c3 = fb_01.sputc('a'); // should be EOF because this is read-only
-  VERIFY( c3 == traits_type::eof() );
-
-  // streamsize sputn(const char_typs* s, streamsize n)
-  // write up to n chars to out_cur from s, returning number assigned
-  // NB *sputn will happily put '\0' into your stream if you give it a chance*
-  strmsz_1 = fb_03.sputn("racadabras", 10);//"abracadabras or what?"
-  VERIFY( strmsz_1 == 10 );
-  strmsz_2 = fb_03.sputn(", i wanna reach out and", 10);
-  VERIFY( strmsz_2 == 10 );
-  VERIFY( strmsz_1 == strmsz_2 ); 
-  // fb_03._M_out_beg = "YZracadabras, i wanna FGHIJKLMNOPQRSTUVW"
-  // fb_03._M_out_cur = "FGHIJKLMNOPQRSTUVW"
-  strmsz_1 = fb_02.sputn("racadabras", 10);
-  VERIFY( strmsz_1 == 10 );  
-  // fb_02._M_out_beg = "YZracadabras<=>?@ABCDEFGHIJKLMNOPQRSTUVW"
-  // fb_02._M_out_cur = "<=>?@ABCDEFGHIJKLMNOPQRSTUVW"
-  strmsz_1 = fb_01.sputn("racadabra", 10);
-  VERIFY( strmsz_1 == 0 );  
-
-  // PUTBACK
-  // int_type pbfail(int_type c)
-  // called when gptr() null, gptr() == eback(), or traits::eq(*gptr, c) false
-  // "pending sequence" is:
-  //   1) everything as defined in underflow
-  //   2) + if (traits::eq_int_type(c, traits::eof()), then input
-  //   sequence is backed up one char before the pending sequence is
-  //   determined.
-  //   3) + if (not 2) then c is prepended. Left unspecified is
-  //   whether the input sequence is backedup or modified in any way
-  // returns traits::eof() for failure, unspecified other value for success
-
-  // int_type sputbackc(char_type c)
-  // if in_cur not avail || ! traits::eq(c, gptr() [-1]), return pbfail
-  // otherwise decrements in_cur and returns *gptr()
-  c1 = fb_03.sgetc(); // -1
-  c2 = fb_03.sputbackc('z');
-  strmsz_2 = fb_03.in_avail();
-  c3 = fb_03.sgetc();
-  VERIFY( c3 == c2 );
-  VERIFY( c1 != c3 );
-  VERIFY( 1 == strmsz_2 );
-  //test for _in_cur == _in_beg
-  // fb_03._M_out_beg = "bd23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZracada" etc
-  fb_03.pubseekoff(10, std::ios_base::beg, 
-                  std::ios_base::in | std::ios_base::out);
-  fb_03.sputc('m');
-  strmsz_1 = fb_03.in_avail(); 
-  c1 = fb_03.sgetc(); 
-  fb_03.snextc();
-  c2 = fb_03.sputbackc('z');  
-  strmsz_2 = fb_03.in_avail(); 
-  c3 = fb_03.sgetc();  
-  VERIFY( c1 != c2 );
-  VERIFY( c3 == c2 );
-  VERIFY( c1 != c3 );
-  VERIFY( c2 == 'z' );
-  //  VERIFY( strmsz_1 == strmsz_2 );
-  // test for replacing char with identical one
-  fb_03.snextc();
-  fb_03.sputc('u');
-  fb_03.sputc('v');
-  fb_03.sputc('a');
-  strmsz_1 = fb_03.in_avail();
-  c2 = fb_03.sputbackc('a');
-  strmsz_2 = fb_03.in_avail();
-  c3 = fb_03.sgetc();
-  VERIFY( c3 == c2 );
-  VERIFY( strmsz_1 + 1 == strmsz_2 );
-  //test for ios_base::out
-  c1 = fb_02.sgetc(); // undefined
-  c2 = fb_02.sputbackc('a');
-  VERIFY( c1 == c2 );
-  VERIFY( c1 == -1 );
-
-  // int_type sungetc()
-  // if in_cur not avail, return pbackfail(), else decrement and
-  // return to_int_type(*gptr())
-  // fb_03._M_out_beg = "uvaacadabras, i wannaZ[\\]^_`abcdefghijkl"
-  // fb_03._M_out_cur = "aacadabras, i wannaZ[\\]^_`abcdefghijkl"
-  strmsz_1 = fb_03.in_avail();
-  c2 = fb_03.sungetc(); // delete the 'a'
-  strmsz_2 = fb_03.in_avail();
-  VERIFY( c2 == 'v' ); //  VERIFY( c2 != traits_type::eof() );
-  VERIFY( strmsz_1 + 1 == strmsz_2 );
-  //test for _in_cur == _in_beg
-  for (int i = 50; i < 32 + 29; ++i)
-    fb_02.sputc(char(i));
-  fb_02.pubseekoff(0, std::ios_base::beg, std::ios_base::out);
-  c1 = fb_02.sgetc(); 
-  strmsz_1 = fb_02.in_avail();
-  c2 = fb_02.sungetc();
-  c3 = fb_02.sgetc();
-  strmsz_2 = fb_02.in_avail();
-  VERIFY( c1 != c2 );
-  VERIFY( c2 == c3 );
-  VERIFY( c1 == traits_type::eof() );
-  VERIFY( strmsz_1 != strmsz_2 );
-  //test for _in_cur == _in_end
-  fb_03.pubseekoff(0, std::ios_base::end);
-  strmsz_1 = fb_03.in_avail(); // -1 cuz at the end
-  c1 = fb_03.sgetc(); 
-  c2 = fb_03.sungetc();
-  strmsz_2 = fb_03.in_avail(); // 1
-  c3 = fb_03.sgetc();
-  VERIFY( c1 != c2 );
-  // VERIFY( c2 == c3 || c2 == traits_type::not_eof(int(c3)) );
-  VERIFY( strmsz_2 != strmsz_1 );
-  VERIFY( strmsz_2 == 1 );
-  //test for ios_base::out
-
-  // BUFFER MANAGEMENT & POSITIONING
-  // int sync()
-  // if a put area exists, overflow. 
-  // if a get area exists, do something undefined. (like, nothing)
-  strmsz_1 = fb_01.in_avail(); 
-  fb_01.pubsync();
-  strmsz_2 = fb_01.in_avail();
-  VERIFY( strmsz_2 == strmsz_1 );
-  strmsz_1 = fb_02.in_avail(); 
-  fb_02.pubsync();             
-  // 27filebuf-2.txt == 53 bytes after this.
-  strmsz_2 = fb_02.in_avail();
-  VERIFY( strmsz_2 == 1 );
-  VERIFY( strmsz_2 == strmsz_1 );
-  strmsz_1 = fb_03.in_avail(); 
-  fb_03.pubsync();
-  // 27filebuf-3.txt 
-  // bd23456789mzuva?@ABCDEFGHIJKLMNOPQRSTUVWXYZracadabras, i wannaz 
-  // 63 bytes.
-  strmsz_2 = fb_03.in_avail();
-  VERIFY( strmsz_1 == 1 );
-  // VERIFY( strmsz_2 == 1 );
-
-  // setbuf
-  // pubsetbuf(char_type* s, streamsize n)
-  fb_01.pubsetbuf(0,0);
-  fb_02.pubsetbuf(0,0);
-  fb_03.pubsetbuf(0,0);
-  // Need to test unbuffered output, which means calling this on some
-  // things that have just been opened.
-
-
-  // seekoff
-  // pubseekoff(off_type off, ios_base::seekdir way, ios_base::openmode which)
-  // alters the stream position to off
-  pos_type pt_1(off_type(-1));
-  pos_type pt_2(off_type(0));
-  off_type off_1 = 0;
-  off_type off_2 = 0;
-  //IN|OUT
-  // 27filebuf-3.txt = bd23456789:;<=>?...
-  //beg
-  strmsz_1 = fb_03.in_avail(); 
-  pt_1 = fb_03.pubseekoff(2, std::ios_base::beg);
-  strmsz_2 = fb_03.in_avail(); 
-  off_1 = pt_1;
-  VERIFY( off_1 > 0 );
-  c1 = fb_03.snextc(); //current in pointer +1
-  VERIFY( c1 == '3' );
-  c2 = fb_03.sputc('\n');  //current in pointer +1
-  c3 = fb_03.sgetc();
-  VERIFY( c2 != c3 ); 
-  VERIFY( c3 == '4' );
-  fb_03.pubsync(); 
-  c1 = fb_03.sgetc();
-  VERIFY( c1 == c3 );
-  //cur
-  // 27filebuf-3.txt = bd2\n456789:;<=>?...
-  pt_2 = fb_03.pubseekoff(2, std::ios_base::cur);
-  off_2 = pt_2;
-  VERIFY( (off_2 == (off_1 + 2 + 1 + 1)) );
-  c1 = fb_03.snextc(); //current in pointer +1
-  VERIFY( c1 == '7' );
-  c2 = fb_03.sputc('x');  //test current out pointer
-  c3 = fb_03.sputc('\n');
-  c1 = fb_03.sgetc();
-  fb_03.pubsync(); 
-  c3 = fb_03.sgetc();
-  VERIFY( c1 == c3 );
-  //end
-  // 27filebuf-3.txt = "bd2\n456x\n9" 
-  pt_2 = fb_03.pubseekoff(0, std::ios_base::end, 
-                         std::ios_base::in|std::ios_base::out);
-  off_1 = pt_2;
-  VERIFY( off_1 > off_2 ); //weak, but don't know exactly where it ends
-  c3 = fb_03.sputc('\n');
-  strmsz_1 = fb_03.sputn("because because because. . .", 28);  
-  VERIFY( strmsz_1 == 28 );
-  c1 = fb_03.sungetc();
-  fb_03.pubsync(); 
-  c3 = fb_03.sgetc();
-  VERIFY( c1 == c3 );
-  // IN
-  // OUT
-
-
-  // seekpos
-  // pubseekpos(pos_type sp, ios_base::openmode)
-  // alters the stream position to sp
-  //IN|OUT
-  //beg
-  pt_1 = fb_03.pubseekoff(78, std::ios_base::beg);
-  off_1 = pt_1;
-  VERIFY( off_1 > 0 );
-  c1 = fb_03.snextc();                 //current in pointer +1
-  VERIFY( c1 == ' ' );
-  c2 = fb_03.sputc('\n');      //test current out pointer
-  c3 = fb_03.sgetc();
-  fb_03.pubsync();             //resets pointers
-  pt_2 = fb_03.pubseekpos(pt_1);
-  off_2 = pt_2;
-  VERIFY( off_1 == off_2 );
-  c3 = fb_03.snextc();                 //current in pointer +1
-  VERIFY( c2 == c3 );
-  pt_1 = fb_03.pubseekoff(0, std::ios_base::end);
-  off_1 = pt_1;
-  VERIFY( off_1 > off_2 );
-  fb_03.sputn("\nof the wonderful things he does!!\nok", 37);
-  fb_03.pubsync();
-
-  // IN
-  // OUT
-
-  // VIRTUALS (indirectly tested)
-  // underflow
-  // if read position avail, returns *gptr()
-
-  // pbackfail(int_type c)
-  // put c back into input sequence
-
-  // overflow
-  // appends c to output seq
-
-  // NB Have to close these suckers. . .
-  // filebuf_type* close()
-  fb_01.close();
-  fb_02.close();
-  fb_03.close();
-  VERIFY( !fb_01.is_open() );
-  VERIFY( !fb_02.is_open() );
-  VERIFY( !fb_03.is_open() );
-
-#ifdef DEBUG_ASSERT
-  assert(test);
-#endif
-
-  return test;
-}
-
-bool test04()
-{
-  using namespace std;
-  typedef istream::int_type    int_type;
-
-  bool test = true;
-  ifstream ifs(name_02);
-  char buffer[] = "xxxxxxxxxx";
-  int_type len1 = ifs.rdbuf()->sgetn(buffer, sizeof(buffer));
-  VERIFY( len1 == sizeof(buffer) );
-  VERIFY( buffer[0] == 'a' );
-
-#ifdef DEBUG_ASSERT
-  assert(test);
-#endif
-  return test;
-}
+// { dg-do compile }
 
 // test05
 // libstdc++/1886
 // should be able to instantiate basic_filebuf for non-standard types.
 template class std::basic_filebuf<short, std::char_traits<short> >;
 
-// test06
-// libstdc++/2020
-// should be able to use custom char_type
-class gnu_char_type
+int main() 
 {
-  unsigned long character;
-public:
-  // operator ==
-  bool
-  operator==(const gnu_char_type& __lhs) 
-  { return character == __lhs.character; }
+  return 0;
+}
 
-  // operator <
-  bool
-  operator<(const gnu_char_type& __lhs) 
-  { return character < __lhs.character; }
 
-  // default ctor
-  gnu_char_type() { }
 
-  // to_char_type
-  gnu_char_type(const unsigned long& __l) : character(__l) { } 
+// more surf!!!
+
 
-  // to_int_type
-  operator unsigned long() const { return character; }
-};
 
-bool test06()
-{
-  bool test = true;
-  typedef std::basic_filebuf<gnu_char_type> gnu_filebuf;
-  
-  try
-    { gnu_filebuf obj; }
-  catch(std::exception& obj)
-    { 
-      test = false; 
-      VERIFY( test );
-    }
-  return test;
-}
 
-// libstdc++/3647
-void test07()
-{
-  // Should not block.
-  std::cout << std::cin.rdbuf()->in_avail() << std::endl;
-}
 
-int main() 
-{
-  test00();
-  test01();
-  test02();
-  test03();
-  test04();
 
-  test06();
-  test07();
-  return 0;
-}
 
 
 
-// more surf!!!
index ab4a60f30944ccf3491f6a4dcd689b66fd8d521f..66c5a15f25220cc5c5238d476413798c52baea2a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 //
 // 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
 #include <sys/stat.h>
 #include <testsuite_hooks.h>
 
-// verify that std::filebuf doesn't close files that it didn't open
+const char name_01[] = "filebuf_members-1.tst";
+const char name_02[] = "filebuf_members-1.txt";
+
+// Test member functions.
+void test_01() 
+{
+  bool                         test = true;
+  const char* name_03 = "filebuf_members-3"; // empty file, need to create
+
+  std::filebuf fb_01; // in 
+  std::filebuf fb_02; // out
+  std::filebuf fb_03; // in | out
+
+  // bool is_open()
+  VERIFY( !fb_01.is_open() );
+  VERIFY( !fb_02.is_open() );
+  VERIFY( !fb_03.is_open() );
+
+  // filebuf_type* open(const char* __s, ios_base::openmode __mode)
+  fb_01.open(name_01, std::ios_base::in | std::ios_base::ate);
+  fb_02.open(name_02, std::ios_base::in | std::ios_base::out 
+            | std::ios_base::trunc);
+  // Try to open two different files without closing the first:
+  // Should keep the old file attached, and disregard attempt to overthrow.
+  fb_02.open(name_03, std::ios_base::in | std::ios_base::out);
+  fb_03.open(name_03, std::ios_base::out | std::ios_base::trunc);
+  VERIFY( fb_01.is_open() );
+  VERIFY( fb_02.is_open() );
+  VERIFY( fb_03.is_open() );
+
+  // filebuf_type* close()
+  fb_01.close();
+  fb_02.close();
+  fb_03.close();
+  VERIFY( !fb_01.is_open() );
+  VERIFY( !fb_02.is_open() );
+  VERIFY( !fb_03.is_open() );
+}
+
+// Verify that std::filebuf doesn't close files that it didn't open
 // when using the following std::filebuf ctor:
 //
 //      std::filebuf(__c_file_type*  __f,
 //                   ios_base::openmode __mode,
 //                   int_type  __s);
 //
-// thanks to "George T. Talbot" <george@moberg.com> for uncovering
+// Thanks to "George T. Talbot" <george@moberg.com> for uncovering
 // this bug/situation. 
-
-const char name_01[] = "filebuf_members-1.tst";
-const char name_02[] = "filebuf_members-1.txt";
-
-int
-test_01()
+void test_02()
 {
   bool test = true;
   int close_num;
@@ -72,17 +106,9 @@ test_01()
   }
   close_num = fclose(f);
   VERIFY( close_num == 0 );
-
-  
-#ifdef DEBUG_ASSERT
-  assert(test);
-#endif
-
-  return test;
 }
 
-int
-test_02()
+void test_03()
 {
   bool test = true;
   int first_fd = ::open(name_01, O_RDONLY);
@@ -93,19 +119,13 @@ test_02()
 
   int second_fd = fb.fd();
 
-  test = first_fd == second_fd;
-
-#ifdef DEBUG_ASSERT
-  assert(test);
-#endif
-
-  return test;
+  VERIFY( first_fd == second_fd );
 }
 
 // libstdc++/2913, libstdc++/4879
 // John Fardo  <jfardo@laurelnetworks.com>, Brad Garcia <garsh@attbi.com>
 void
-test_03()
+test_04()
 {
   signal(SIGPIPE, SIG_IGN);
   
@@ -159,7 +179,9 @@ main()
 {
   test_01();
   test_02();
-
   test_03();
+  test_04();
   return 0;
 }
+
+
diff --git a/libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.tst b/libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.tst
new file mode 100644 (file)
index 0000000..cb3c57f
--- /dev/null
@@ -0,0 +1,158 @@
+// 990117 bkoz
+// test functionality of basic_filebuf for char_type == char
+// this is a data file for 27filebuf.cc
+
+// Copyright (C) 1997-1999 Cygnus Solutions
+//
+// 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.
+
+/mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme
+/mnt/cdrom/sarah_vaughan/sarah_vaughan.speaklow
+
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_01_the_way_i_feel
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_02_seduction_kidnap
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_03_just_a_ny_poem
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_04_butterflies_i_remem
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_05_luxury_poem
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_06_my_house
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_07_the_women_gather
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_08_the_life_i_led
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_09_when_i_die
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_10_revolutionary_dreams
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_11_winter_poem
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_12_a_certain_peace_i_nap
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_13_poem_for_a_lady_whose
+
+/mnt/cdrom/marley-songs_of_freedom/disk_1/
+/mnt/cdrom/marley-songs_of_freedom/disk_2/
+/mnt/cdrom/marley-songs_of_freedom/disk_4/
+
+/mnt/cdrom/marley-songs_of_freedom/disk_1/back out
+/mnt/cdrom/marley-songs_of_freedom/disk_1/bend down low
+/mnt/cdrom/marley-songs_of_freedom/disk_1/bus dem shut (pyaka)
+/mnt/cdrom/marley-songs_of_freedom/disk_1/caution
+/mnt/cdrom/marley-songs_of_freedom/disk_1/do it twice
+/mnt/cdrom/marley-songs_of_freedom/disk_1/don't rock the boat
+/mnt/cdrom/marley-songs_of_freedom/disk_1/duppy conqueror
+/mnt/cdrom/marley-songs_of_freedom/disk_1/hammer
+/mnt/cdrom/marley-songs_of_freedom/disk_1/hypocrites
+/mnt/cdrom/marley-songs_of_freedom/disk_1/i'm still waiting
+/mnt/cdrom/marley-songs_of_freedom/disk_1/judge not
+/mnt/cdrom/marley-songs_of_freedom/disk_1/mellow mood
+/mnt/cdrom/marley-songs_of_freedom/disk_1/mr brown
+/mnt/cdrom/marley-songs_of_freedom/disk_1/nice time
+/mnt/cdrom/marley-songs_of_freedom/disk_1/one cup of coffee
+/mnt/cdrom/marley-songs_of_freedom/disk_1/one love_people get ready
+/mnt/cdrom/marley-songs_of_freedom/disk_1/put it on
+/mnt/cdrom/marley-songs_of_freedom/disk_1/simmer down
+/mnt/cdrom/marley-songs_of_freedom/disk_1/small axe
+/mnt/cdrom/marley-songs_of_freedom/disk_1/soul rebel
+/mnt/cdrom/marley-songs_of_freedom/disk_1/soul shake down party
+/mnt/cdrom/marley-songs_of_freedom/disk_1/stir it up (original)
+/mnt/cdrom/marley-songs_of_freedom/disk_1/sun is shining
+/mnt/cdrom/marley-songs_of_freedom/disk_1/thank you lord (original)
+/mnt/cdrom/marley-songs_of_freedom/disk_2/acoustic medley
+/mnt/cdrom/marley-songs_of_freedom/disk_2/burnin' and lootin'
+/mnt/cdrom/marley-songs_of_freedom/disk_2/concrete jungle
+/mnt/cdrom/marley-songs_of_freedom/disk_2/craven choke puppy
+/mnt/cdrom/marley-songs_of_freedom/disk_2/get up stand up
+/mnt/cdrom/marley-songs_of_freedom/disk_2/guava jelly
+/mnt/cdrom/marley-songs_of_freedom/disk_2/high tide or low tide
+/mnt/cdrom/marley-songs_of_freedom/disk_2/i shot the sheriff
+/mnt/cdrom/marley-songs_of_freedom/disk_2/i'm hurting inside
+/mnt/cdrom/marley-songs_of_freedom/disk_2/iron lion zion
+/mnt/cdrom/marley-songs_of_freedom/disk_2/lick samba
+/mnt/cdrom/marley-songs_of_freedom/disk_2/lively up yourself
+/mnt/cdrom/marley-songs_of_freedom/disk_2/natty dread
+/mnt/cdrom/marley-songs_of_freedom/disk_2/no more trouble
+/mnt/cdrom/marley-songs_of_freedom/disk_2/rastaman chant
+/mnt/cdrom/marley-songs_of_freedom/disk_2/screw face
+/mnt/cdrom/marley-songs_of_freedom/disk_2/slave driver
+/mnt/cdrom/marley-songs_of_freedom/disk_2/trenchtown rock
+/mnt/cdrom/marley-songs_of_freedom/disk_4/africa unite
+/mnt/cdrom/marley-songs_of_freedom/disk_4/babylon system
+/mnt/cdrom/marley-songs_of_freedom/disk_4/bad card
+/mnt/cdrom/marley-songs_of_freedom/disk_4/coming in from the cold (12
+/mnt/cdrom/marley-songs_of_freedom/disk_4/could you be loved (12  mix
+/mnt/cdrom/marley-songs_of_freedom/disk_4/forever loving jah
+/mnt/cdrom/marley-songs_of_freedom/disk_4/give thanks and praise
+/mnt/cdrom/marley-songs_of_freedom/disk_4/one drop
+/mnt/cdrom/marley-songs_of_freedom/disk_4/one dub
+/mnt/cdrom/marley-songs_of_freedom/disk_4/rastaman live up
+/mnt/cdrom/marley-songs_of_freedom/disk_4/real situation
+/mnt/cdrom/marley-songs_of_freedom/disk_4/redemption song (live in pi
+/mnt/cdrom/marley-songs_of_freedom/disk_4/ride natty ride (12  mix)
+/mnt/cdrom/marley-songs_of_freedom/disk_4/so much trouble in the worl
+/mnt/cdrom/marley-songs_of_freedom/disk_4/survival
+/mnt/cdrom/marley-songs_of_freedom/disk_4/why should i (previously un
+/mnt/cdrom/marley-songs_of_freedom/disk_4/zimbabwe
+
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_01_pandemonium
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_02_sync_disjecta
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_03_object_unknown
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_04_it's_nice_not
+/mnt/cdrom/dj_spooky_rid-2dim_warefare/djspooky_05_dialectical_tra
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_06_post-human_soph
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_07_quilombo_ex
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_08_rekonstruction
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_09_scientifik
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_10_a_conversation
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_11_peace_in_zaire
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_13_degree_zero
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_14_roman_planeta
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_15_bass_digitalis
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_16_polyphony_of
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_17_riddim_warfare
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_18_the_nerd
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_20_theme_of_the
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_21_twilight_fugue
+
+/mnt/cdrom/stuff_smith_mosaic/disk3/01_desert_sands
+/mnt/cdrom/stuff_smith_mosaic/disk3/02_soft_winds
+/mnt/cdrom/stuff_smith_mosaic/disk3/03_time_and_again
+/mnt/cdrom/stuff_smith_mosaic/disk3/04_it_don't_mean_a_thing
+/mnt/cdrom/stuff_smith_mosaic/disk3/05_in_a_mellotone
+/mnt/cdrom/stuff_smith_mosaic/disk3/06_i_know_that_you_know
+/mnt/cdrom/stuff_smith_mosaic/disk3/07_heat_wave
+/mnt/cdrom/stuff_smith_mosaic/disk3/08_things_ain't_what_they_used_to_be
+/mnt/cdrom/stuff_smith_mosaic/disk3/09_body_and_soul
+
+So I take a break, wander down to the park to stand, then lean into
+the concrete railing demarking the beginnings of space, oceanic
+space. I watch the waves break, and form, and ease back out to sea and
+wrap my arms around myself and hug tightly because it's early in the
+morning and windy, and the sun is late getting out of bed today, which
+is good because if there was brilliant light illuminating all the
+beauty around me I would be shocked, stunned, forced to retreat back
+into my cabana in a daze, blinded by hummingbirds and callilillies and
+un-named red, yellow, and blue flowers. Green envelopes me, waves
+sooth me. I can see the wind flip the top of the waves seaward, right
+before they break. The sea seems so calm from my perch above the fray
+that I wonder if maybe there is just some part of the deepest, most
+abstract ocean where there is a large creature who happily chews
+plankton and wags its tail in gentle, adulating waves that spread and
+move and gracefully glide thousands of miles, to crash upon a beach,
+one after the other, politely waiting for a turn to dance with the
+seashore.
+
+I know: it is what the Mexican schoolchildren call "la vibora de la
+mer," the serpent of the sea.
+
+
+
+
+
diff --git a/libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.txt b/libstdc++-v3/testsuite/27_io/filebuf_virtuals-1.txt
new file mode 100644 (file)
index 0000000..cb3c57f
--- /dev/null
@@ -0,0 +1,158 @@
+// 990117 bkoz
+// test functionality of basic_filebuf for char_type == char
+// this is a data file for 27filebuf.cc
+
+// Copyright (C) 1997-1999 Cygnus Solutions
+//
+// 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.
+
+/mnt/cdrom/sarah_vaughan/sarah_vaughan.allofme
+/mnt/cdrom/sarah_vaughan/sarah_vaughan.speaklow
+
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_01_the_way_i_feel
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_02_seduction_kidnap
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_03_just_a_ny_poem
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_04_butterflies_i_remem
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_05_luxury_poem
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_06_my_house
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_07_the_women_gather
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_08_the_life_i_led
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_09_when_i_die
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_10_revolutionary_dreams
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_11_winter_poem
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_12_a_certain_peace_i_nap
+/mnt/cdrom/nikkigiovanni_thewayifeel/ng_13_poem_for_a_lady_whose
+
+/mnt/cdrom/marley-songs_of_freedom/disk_1/
+/mnt/cdrom/marley-songs_of_freedom/disk_2/
+/mnt/cdrom/marley-songs_of_freedom/disk_4/
+
+/mnt/cdrom/marley-songs_of_freedom/disk_1/back out
+/mnt/cdrom/marley-songs_of_freedom/disk_1/bend down low
+/mnt/cdrom/marley-songs_of_freedom/disk_1/bus dem shut (pyaka)
+/mnt/cdrom/marley-songs_of_freedom/disk_1/caution
+/mnt/cdrom/marley-songs_of_freedom/disk_1/do it twice
+/mnt/cdrom/marley-songs_of_freedom/disk_1/don't rock the boat
+/mnt/cdrom/marley-songs_of_freedom/disk_1/duppy conqueror
+/mnt/cdrom/marley-songs_of_freedom/disk_1/hammer
+/mnt/cdrom/marley-songs_of_freedom/disk_1/hypocrites
+/mnt/cdrom/marley-songs_of_freedom/disk_1/i'm still waiting
+/mnt/cdrom/marley-songs_of_freedom/disk_1/judge not
+/mnt/cdrom/marley-songs_of_freedom/disk_1/mellow mood
+/mnt/cdrom/marley-songs_of_freedom/disk_1/mr brown
+/mnt/cdrom/marley-songs_of_freedom/disk_1/nice time
+/mnt/cdrom/marley-songs_of_freedom/disk_1/one cup of coffee
+/mnt/cdrom/marley-songs_of_freedom/disk_1/one love_people get ready
+/mnt/cdrom/marley-songs_of_freedom/disk_1/put it on
+/mnt/cdrom/marley-songs_of_freedom/disk_1/simmer down
+/mnt/cdrom/marley-songs_of_freedom/disk_1/small axe
+/mnt/cdrom/marley-songs_of_freedom/disk_1/soul rebel
+/mnt/cdrom/marley-songs_of_freedom/disk_1/soul shake down party
+/mnt/cdrom/marley-songs_of_freedom/disk_1/stir it up (original)
+/mnt/cdrom/marley-songs_of_freedom/disk_1/sun is shining
+/mnt/cdrom/marley-songs_of_freedom/disk_1/thank you lord (original)
+/mnt/cdrom/marley-songs_of_freedom/disk_2/acoustic medley
+/mnt/cdrom/marley-songs_of_freedom/disk_2/burnin' and lootin'
+/mnt/cdrom/marley-songs_of_freedom/disk_2/concrete jungle
+/mnt/cdrom/marley-songs_of_freedom/disk_2/craven choke puppy
+/mnt/cdrom/marley-songs_of_freedom/disk_2/get up stand up
+/mnt/cdrom/marley-songs_of_freedom/disk_2/guava jelly
+/mnt/cdrom/marley-songs_of_freedom/disk_2/high tide or low tide
+/mnt/cdrom/marley-songs_of_freedom/disk_2/i shot the sheriff
+/mnt/cdrom/marley-songs_of_freedom/disk_2/i'm hurting inside
+/mnt/cdrom/marley-songs_of_freedom/disk_2/iron lion zion
+/mnt/cdrom/marley-songs_of_freedom/disk_2/lick samba
+/mnt/cdrom/marley-songs_of_freedom/disk_2/lively up yourself
+/mnt/cdrom/marley-songs_of_freedom/disk_2/natty dread
+/mnt/cdrom/marley-songs_of_freedom/disk_2/no more trouble
+/mnt/cdrom/marley-songs_of_freedom/disk_2/rastaman chant
+/mnt/cdrom/marley-songs_of_freedom/disk_2/screw face
+/mnt/cdrom/marley-songs_of_freedom/disk_2/slave driver
+/mnt/cdrom/marley-songs_of_freedom/disk_2/trenchtown rock
+/mnt/cdrom/marley-songs_of_freedom/disk_4/africa unite
+/mnt/cdrom/marley-songs_of_freedom/disk_4/babylon system
+/mnt/cdrom/marley-songs_of_freedom/disk_4/bad card
+/mnt/cdrom/marley-songs_of_freedom/disk_4/coming in from the cold (12
+/mnt/cdrom/marley-songs_of_freedom/disk_4/could you be loved (12  mix
+/mnt/cdrom/marley-songs_of_freedom/disk_4/forever loving jah
+/mnt/cdrom/marley-songs_of_freedom/disk_4/give thanks and praise
+/mnt/cdrom/marley-songs_of_freedom/disk_4/one drop
+/mnt/cdrom/marley-songs_of_freedom/disk_4/one dub
+/mnt/cdrom/marley-songs_of_freedom/disk_4/rastaman live up
+/mnt/cdrom/marley-songs_of_freedom/disk_4/real situation
+/mnt/cdrom/marley-songs_of_freedom/disk_4/redemption song (live in pi
+/mnt/cdrom/marley-songs_of_freedom/disk_4/ride natty ride (12  mix)
+/mnt/cdrom/marley-songs_of_freedom/disk_4/so much trouble in the worl
+/mnt/cdrom/marley-songs_of_freedom/disk_4/survival
+/mnt/cdrom/marley-songs_of_freedom/disk_4/why should i (previously un
+/mnt/cdrom/marley-songs_of_freedom/disk_4/zimbabwe
+
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_01_pandemonium
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_02_sync_disjecta
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_03_object_unknown
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_04_it's_nice_not
+/mnt/cdrom/dj_spooky_rid-2dim_warefare/djspooky_05_dialectical_tra
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_06_post-human_soph
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_07_quilombo_ex
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_08_rekonstruction
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_09_scientifik
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_10_a_conversation
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_11_peace_in_zaire
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_13_degree_zero
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_14_roman_planeta
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_15_bass_digitalis
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_16_polyphony_of
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_17_riddim_warfare
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_18_the_nerd
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_20_theme_of_the
+/mnt/cdrom/dj_spooky_riddim_warefare/djspooky_21_twilight_fugue
+
+/mnt/cdrom/stuff_smith_mosaic/disk3/01_desert_sands
+/mnt/cdrom/stuff_smith_mosaic/disk3/02_soft_winds
+/mnt/cdrom/stuff_smith_mosaic/disk3/03_time_and_again
+/mnt/cdrom/stuff_smith_mosaic/disk3/04_it_don't_mean_a_thing
+/mnt/cdrom/stuff_smith_mosaic/disk3/05_in_a_mellotone
+/mnt/cdrom/stuff_smith_mosaic/disk3/06_i_know_that_you_know
+/mnt/cdrom/stuff_smith_mosaic/disk3/07_heat_wave
+/mnt/cdrom/stuff_smith_mosaic/disk3/08_things_ain't_what_they_used_to_be
+/mnt/cdrom/stuff_smith_mosaic/disk3/09_body_and_soul
+
+So I take a break, wander down to the park to stand, then lean into
+the concrete railing demarking the beginnings of space, oceanic
+space. I watch the waves break, and form, and ease back out to sea and
+wrap my arms around myself and hug tightly because it's early in the
+morning and windy, and the sun is late getting out of bed today, which
+is good because if there was brilliant light illuminating all the
+beauty around me I would be shocked, stunned, forced to retreat back
+into my cabana in a daze, blinded by hummingbirds and callilillies and
+un-named red, yellow, and blue flowers. Green envelopes me, waves
+sooth me. I can see the wind flip the top of the waves seaward, right
+before they break. The sea seems so calm from my perch above the fray
+that I wonder if maybe there is just some part of the deepest, most
+abstract ocean where there is a large creature who happily chews
+plankton and wags its tail in gentle, adulating waves that spread and
+move and gracefully glide thousands of miles, to crash upon a beach,
+one after the other, politely waiting for a turn to dance with the
+seashore.
+
+I know: it is what the Mexican schoolchildren call "la vibora de la
+mer," the serpent of the sea.
+
+
+
+
+
diff --git a/libstdc++-v3/testsuite/27_io/filebuf_virtuals-2.tst b/libstdc++-v3/testsuite/27_io/filebuf_virtuals-2.tst
new file mode 100644 (file)
index 0000000..f25bba4
--- /dev/null
@@ -0,0 +1 @@
+ac23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZracadabras23456789:;<
\ No newline at end of file
diff --git a/libstdc++-v3/testsuite/27_io/filebuf_virtuals-3.tst b/libstdc++-v3/testsuite/27_io/filebuf_virtuals-3.tst
new file mode 100644 (file)
index 0000000..0a81f51
--- /dev/null
@@ -0,0 +1,7 @@
+bd2
+456x
+9m;uva?@ABCDEFGHIJKLMNOPQRSTUVWXYZracadabras, i wanna 
+because because
+because. . .
+of the wonderful things he does!!
+ok
\ No newline at end of file
index 0d782641d9506a332210ebf4471b87b4fbee0b22..778dd861a923ca27ab1e2c0ca6bf7354f5cefb4d 100644 (file)
@@ -1,6 +1,6 @@
 // 2001-05-21 Benjamin Kosnik  <bkoz@redhat.com>
 
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
 //
 // 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
@@ -23,6 +23,9 @@
 #include <fstream>
 #include <testsuite_hooks.h>
 
+// @require@ %-*.tst %-*.txt
+// @diff@ %-*.tst %*.txt
+
 void test01()
 {
   using namespace std;
@@ -54,9 +57,511 @@ void test02()
   VERIFY( std::strncmp(strlit, buf, strlitsize) == 0 );
 }
 
+
+// NB: This test assumes that _M_buf_size == 40, and not the usual
+// buffer_size length of BUFSIZ (8192), so that overflow/underflow can be
+// simulated a bit more readily.
+// NRB (Nota Really Bene): setting it to 40 breaks the test, as intended.
+const int buffer_size = 8192;
+//const int buffer_size = 40;
+
+const char carray_01[] = "santa cruz or sandiego?";
+const char carray_02[] = "memphis, new orleans, and savanah";
+const char name_01[] = "filebuf_virtuals-1.txt"; // file with data in it
+const char name_02[] = "filebuf_virtuals-2.txt"; // empty file, need to create
+const char name_03[] = "filebuf_virtuals-3.txt"; // empty file, need to create
+
+
+class derived_filebuf: public std::filebuf
+{
+ public:
+  void
+  set_size(int_type __size) { _M_buf_size_opt = __size; }
+};
+
+derived_filebuf fb_01; // in 
+derived_filebuf fb_02; // out
+derived_filebuf fb_03; // in | out
+
+
+// Initialize filebufs to be the same size regardless of platform.
+void test03()
+{
+  fb_01.set_size(buffer_size);
+  fb_02.set_size(buffer_size);
+  fb_03.set_size(buffer_size);
+}
+
+
+// Test the filebuf/stringbuf locale settings.
+void test04() 
+{
+  std::locale loc_tmp;
+  loc_tmp = fb_01.getloc();
+  fb_01.pubimbue(loc_tmp); //This should initialize _M_init to true
+  fb_01.getloc(); //This should just return _M_locale
+}
+
+// Test overloaded virtual functions.
+void test05() 
+{
+  typedef std::filebuf::int_type       int_type;
+  typedef std::filebuf::traits_type    traits_type;
+  typedef std::filebuf::pos_type       pos_type;
+  typedef std::filebuf::off_type       off_type;
+  typedef size_t                       size_type;
+
+  bool                                         test = true;
+  std::filebuf                                 f_tmp;
+  std::streamsize                      strmsz_1, strmsz_2;
+  std::streamoff                       strmof_1, strmof_2;
+  int                                  i = 0, j = 0, k = 0;
+
+  // GET
+  // int showmanyc()
+  // returns an estimate of the numbers of chars in the seq, or -1.
+  // if __retval > 0, then calls to underflow won't return
+  // traits_type::eof() till at least __retval chars. 
+  // if __retval == -1, then calls to underflow or uflow will fail.
+  // NB overriding def if it can determine more chars can be read from 
+  // the input sequence.
+
+  // int in_avail()
+  // if a read position is available, return _M_in_end - _M_in_cur.
+  // else return showmanyc.
+  strmof_1 = fb_01.in_avail();
+  strmof_2 = fb_02.in_avail();
+  VERIFY( strmof_1 == -1 );
+  VERIFY( strmof_1 == strmof_2 ); //fail because not open
+  strmof_1 = fb_03.in_avail();
+  VERIFY( strmof_1 == strmof_2 );
+  fb_01.open(name_01, std::ios_base::in);
+  fb_02.open(name_02, std::ios_base::out | std::ios_base::trunc);
+  fb_03.open(name_03, std::ios_base::out | std::ios_base::in | std::ios_base::trunc); 
+  strmof_1 = fb_01.in_avail();
+  strmof_2 = fb_02.in_avail();
+  VERIFY( strmof_1 != strmof_2 );
+  VERIFY( strmof_1 >= 0 );
+  VERIFY( strmof_2 == -1 );  // empty file
+  strmof_1 = fb_03.in_avail(); 
+  VERIFY( strmof_1  == 0 ); // empty file
+
+  // int_type sbumpc()
+  // if read_cur not avail returns uflow(), else return *read_cur & increment
+  int_type c1 = fb_01.sbumpc();
+  int_type c2 = fb_02.sbumpc();
+  VERIFY( c1 != c2 );
+  VERIFY( c1 == '/' );
+  VERIFY( c2 == -1 );
+  int_type c3 = fb_01.sbumpc();
+  int_type c4 = fb_02.sbumpc();
+  VERIFY( c3 != c4 );
+  VERIFY( c1 == c3 ); // fluke, both happen to be '/'
+  VERIFY( c2 == c4 );
+  int_type c5 = fb_03.sbumpc();
+  VERIFY( c5 == traits_type::eof() );
+  // XXX should do some kind of test to make sure that internal
+  // buffers point ot the same thing, to check consistancy.
+
+  // int_type sgetc()
+  // if read_cur not avail, return uflow(), else return *read_cur  
+  int_type c6 = fb_01.sgetc();
+  int_type c7 = fb_02.sgetc();
+  VERIFY( c6 != c3 );
+  VERIFY( c7 == c4 ); // both -1
+  int_type c8 = fb_01.sgetc();
+  int_type c9 = fb_02.sgetc();
+  VERIFY( c6 == c8 );
+  VERIFY( c7 == c9 );
+  c5 = fb_03.sgetc();
+  VERIFY( c5 == traits_type::eof() );
+
+  // int_type snextc()
+  // calls sbumpc and if sbumpc != eof, return sgetc
+  c6 = fb_01.snextc();
+  c7 = fb_02.snextc();
+  VERIFY( c6 != c8 );
+  VERIFY( c7 == c9 ); // -1
+  VERIFY( c6 == '9' );
+  c6 = fb_01.snextc();
+  c7 = fb_02.snextc();
+  VERIFY( c6 != c8 );
+  VERIFY( c7 == c9 ); // -1
+  VERIFY( c6 == '9' );
+  c5 = fb_03.snextc();
+  VERIFY( c5 == traits_type::eof() );
+
+  // streamsize sgetn(char_type *s, streamsize n)
+  // streamsize xsgetn(char_type *s, streamsize n)
+  // assign up to n chars to s from input sequence, indexing in_cur as
+  // approp and returning the number of chars assigned
+  strmsz_1 = fb_01.in_avail();
+  strmsz_2 = fb_02.in_avail();
+  test = strmsz_1 != strmsz_2;
+  char carray1[13] = "";
+  strmsz_1 = fb_01.sgetn(carray1, 10);
+  char carray2[buffer_size] = "";
+  strmsz_2 = fb_02.sgetn(carray2, 10);
+  VERIFY( strmsz_1 != strmsz_2 );
+  VERIFY( strmsz_1 == 10 );
+  VERIFY( strmsz_2 == 0 );
+  c1 = fb_01.sgetc();
+  c2 = fb_02.sgetc();
+  VERIFY( c1 == '\n' );  
+  VERIFY( c7 == c2 ); // n != i
+  strmsz_1 = fb_03.sgetn(carray1, 10);
+  VERIFY( !strmsz_1 ); //zero
+  strmsz_1 = fb_01.in_avail();
+  strmsz_2 = fb_01.sgetn(carray2, strmsz_1 + 5);
+  VERIFY( strmsz_1 == strmsz_2 - 5 ); 
+  c4 = fb_01.sgetc(); // buffer should have underflowed from above.
+  VERIFY( c4 == 'i' );
+  strmsz_1 = fb_01.in_avail();
+  VERIFY( strmsz_1 > 0 );
+  strmsz_2 = fb_01.sgetn(carray2, strmsz_1 + 5);
+  VERIFY( strmsz_1 == strmsz_2 ); //at the end of the actual file 
+  strmsz_1 = fb_02.in_avail();
+  strmsz_2 = fb_02.sgetn(carray2, strmsz_1 + 5);
+  VERIFY( strmsz_1 == -1 );
+  VERIFY( strmsz_2 == 0 );
+  c4 = fb_02.sgetc(); // should be EOF
+  VERIFY( c4 == traits_type::eof() );
+
+  // PUT
+  // int_type sputc(char_type c)
+  // if out_cur not avail, return overflow(traits_type::to_int_type(c)) 
+  // else, stores c at out_cur,
+  // increments out_cur, and returns c as int_type
+  // strmsz_1 = fb_03.in_avail();  // XXX valid for in|out??
+  c1 = fb_02.sputc('a'); 
+  c2 = fb_03.sputc('b'); 
+  VERIFY( c1 != c2 );
+  c1 = fb_02.sputc('c'); 
+  c2 = fb_03.sputc('d'); 
+  VERIFY( c1 != c2 );
+  // strmsz_2 = fb_03.in_avail();
+  // VERIFY( strmsz_1 != strmsz_2 );
+  for (int i = 50; i <= 90; ++i) 
+    c2 = fb_02.sputc(char(i));
+  // 27filebuf-2.txt == ac23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX
+  // fb_02._M_out_cur = '2'
+  strmsz_1 = fb_03.in_avail();
+  for (int i = 50; i <= 90; ++i) 
+    c2 = fb_03.sputc(char(i));
+  strmsz_2 = fb_03.in_avail();
+  // VERIFY( strmsz_1 != strmsz_2 );
+  // VERIFY( strmsz_1 > 0 );
+  // VERIFY( strmsz_2 > 0 );
+  // 27filebuf-2.txt == bd23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX
+  // fb_02._M_out_cur = '2'
+  c3 = fb_01.sputc('a'); // should be EOF because this is read-only
+  VERIFY( c3 == traits_type::eof() );
+
+  // streamsize sputn(const char_typs* s, streamsize n)
+  // write up to n chars to out_cur from s, returning number assigned
+  // NB *sputn will happily put '\0' into your stream if you give it a chance*
+  strmsz_1 = fb_03.sputn("racadabras", 10);//"abracadabras or what?"
+  VERIFY( strmsz_1 == 10 );
+  strmsz_2 = fb_03.sputn(", i wanna reach out and", 10);
+  VERIFY( strmsz_2 == 10 );
+  VERIFY( strmsz_1 == strmsz_2 ); 
+  // fb_03._M_out_beg = "YZracadabras, i wanna FGHIJKLMNOPQRSTUVW"
+  // fb_03._M_out_cur = "FGHIJKLMNOPQRSTUVW"
+  strmsz_1 = fb_02.sputn("racadabras", 10);
+  VERIFY( strmsz_1 == 10 );  
+  // fb_02._M_out_beg = "YZracadabras<=>?@ABCDEFGHIJKLMNOPQRSTUVW"
+  // fb_02._M_out_cur = "<=>?@ABCDEFGHIJKLMNOPQRSTUVW"
+  strmsz_1 = fb_01.sputn("racadabra", 10);
+  VERIFY( strmsz_1 == 0 );  
+
+  // PUTBACK
+  // int_type pbfail(int_type c)
+  // called when gptr() null, gptr() == eback(), or traits::eq(*gptr, c) false
+  // "pending sequence" is:
+  //   1) everything as defined in underflow
+  //   2) + if (traits::eq_int_type(c, traits::eof()), then input
+  //   sequence is backed up one char before the pending sequence is
+  //   determined.
+  //   3) + if (not 2) then c is prepended. Left unspecified is
+  //   whether the input sequence is backedup or modified in any way
+  // returns traits::eof() for failure, unspecified other value for success
+
+  // int_type sputbackc(char_type c)
+  // if in_cur not avail || ! traits::eq(c, gptr() [-1]), return pbfail
+  // otherwise decrements in_cur and returns *gptr()
+  c1 = fb_03.sgetc(); // -1
+  c2 = fb_03.sputbackc('z');
+  strmsz_2 = fb_03.in_avail();
+  c3 = fb_03.sgetc();
+  VERIFY( c3 == c2 );
+  VERIFY( c1 != c3 );
+  VERIFY( 1 == strmsz_2 );
+  //test for _in_cur == _in_beg
+  // fb_03._M_out_beg = "bd23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZracada" etc
+  fb_03.pubseekoff(10, std::ios_base::beg, 
+                  std::ios_base::in | std::ios_base::out);
+  fb_03.sputc('m');
+  strmsz_1 = fb_03.in_avail(); 
+  c1 = fb_03.sgetc(); 
+  fb_03.snextc();
+  c2 = fb_03.sputbackc('z');  
+  strmsz_2 = fb_03.in_avail(); 
+  c3 = fb_03.sgetc();  
+  VERIFY( c1 != c2 );
+  VERIFY( c3 == c2 );
+  VERIFY( c1 != c3 );
+  VERIFY( c2 == 'z' );
+  //  VERIFY( strmsz_1 == strmsz_2 );
+  // test for replacing char with identical one
+  fb_03.snextc();
+  fb_03.sputc('u');
+  fb_03.sputc('v');
+  fb_03.sputc('a');
+  strmsz_1 = fb_03.in_avail();
+  c2 = fb_03.sputbackc('a');
+  strmsz_2 = fb_03.in_avail();
+  c3 = fb_03.sgetc();
+  VERIFY( c3 == c2 );
+  VERIFY( strmsz_1 + 1 == strmsz_2 );
+  //test for ios_base::out
+  c1 = fb_02.sgetc(); // undefined
+  c2 = fb_02.sputbackc('a');
+  VERIFY( c1 == c2 );
+  VERIFY( c1 == -1 );
+
+  // int_type sungetc()
+  // if in_cur not avail, return pbackfail(), else decrement and
+  // return to_int_type(*gptr())
+  // fb_03._M_out_beg = "uvaacadabras, i wannaZ[\\]^_`abcdefghijkl"
+  // fb_03._M_out_cur = "aacadabras, i wannaZ[\\]^_`abcdefghijkl"
+  strmsz_1 = fb_03.in_avail();
+  c2 = fb_03.sungetc(); // delete the 'a'
+  strmsz_2 = fb_03.in_avail();
+  VERIFY( c2 == 'v' ); //  VERIFY( c2 != traits_type::eof() );
+  VERIFY( strmsz_1 + 1 == strmsz_2 );
+  //test for _in_cur == _in_beg
+  for (int i = 50; i < 32 + 29; ++i)
+    fb_02.sputc(char(i));
+  fb_02.pubseekoff(0, std::ios_base::beg, std::ios_base::out);
+  c1 = fb_02.sgetc(); 
+  strmsz_1 = fb_02.in_avail();
+  c2 = fb_02.sungetc();
+  c3 = fb_02.sgetc();
+  strmsz_2 = fb_02.in_avail();
+  VERIFY( c1 == c2 );
+  VERIFY( c2 == c3 );
+  VERIFY( c1 == traits_type::eof() );
+  VERIFY( strmsz_1 == strmsz_2 );
+  //test for _in_cur == _in_end
+  fb_03.pubseekoff(0, std::ios_base::end);
+  strmsz_1 = fb_03.in_avail(); // -1 cuz at the end
+  c1 = fb_03.sgetc(); 
+  c2 = fb_03.sungetc();
+  strmsz_2 = fb_03.in_avail(); // 1
+  c3 = fb_03.sgetc();
+  VERIFY( c1 != c2 );
+  // VERIFY( c2 == c3 || c2 == traits_type::not_eof(int(c3)) );
+  VERIFY( strmsz_2 != strmsz_1 );
+  VERIFY( strmsz_2 == 1 );
+  //test for ios_base::out
+
+  // BUFFER MANAGEMENT & POSITIONING
+  // int sync()
+  // if a put area exists, overflow. 
+  // if a get area exists, do something undefined. (like, nothing)
+  strmsz_1 = fb_01.in_avail(); 
+  fb_01.pubsync();
+  strmsz_2 = fb_01.in_avail();
+  VERIFY( strmsz_2 == strmsz_1 );
+  strmsz_1 = fb_02.in_avail(); 
+  fb_02.pubsync();             
+  // 27filebuf-2.txt == 53 bytes after this.
+  strmsz_2 = fb_02.in_avail();
+  VERIFY( strmsz_2 == -1 );
+  VERIFY( strmsz_2 == strmsz_1 );
+  strmsz_1 = fb_03.in_avail(); 
+  fb_03.pubsync();
+  // 27filebuf-3.txt 
+  // bd23456789mzuva?@ABCDEFGHIJKLMNOPQRSTUVWXYZracadabras, i wannaz 
+  // 63 bytes.
+  strmsz_2 = fb_03.in_avail();
+  VERIFY( strmsz_1 == 1 );
+  // VERIFY( strmsz_2 == 1 );
+
+  // setbuf
+  // pubsetbuf(char_type* s, streamsize n)
+  fb_01.pubsetbuf(0,0);
+  fb_02.pubsetbuf(0,0);
+  fb_03.pubsetbuf(0,0);
+  // Need to test unbuffered output, which means calling this on some
+  // things that have just been opened.
+
+
+  // seekoff
+  // pubseekoff(off_type off, ios_base::seekdir way, ios_base::openmode which)
+  // alters the stream position to off
+  pos_type pt_1(off_type(-1));
+  pos_type pt_2(off_type(0));
+  off_type off_1 = 0;
+  off_type off_2 = 0;
+  //IN|OUT
+  // 27filebuf-3.txt = bd23456789:;<=>?...
+  //beg
+  strmsz_1 = fb_03.in_avail(); 
+  pt_1 = fb_03.pubseekoff(2, std::ios_base::beg);
+  strmsz_2 = fb_03.in_avail(); 
+  off_1 = pt_1;
+  VERIFY( off_1 > 0 );
+  c1 = fb_03.snextc(); //current in pointer +1
+  VERIFY( c1 == '3' );
+  c2 = fb_03.sputc('\n');  //current in pointer +1
+  c3 = fb_03.sgetc();
+  VERIFY( c2 != c3 ); 
+  VERIFY( c3 == '4' );
+  fb_03.pubsync(); 
+  c1 = fb_03.sgetc();
+  VERIFY( c1 == c3 );
+  //cur
+  // 27filebuf-3.txt = bd2\n456789:;<=>?...
+  pt_2 = fb_03.pubseekoff(2, std::ios_base::cur);
+  off_2 = pt_2;
+  VERIFY( (off_2 == (off_1 + 2 + 1 + 1)) );
+  c1 = fb_03.snextc(); //current in pointer +1
+  VERIFY( c1 == '7' );
+  c2 = fb_03.sputc('x');  //test current out pointer
+  c3 = fb_03.sputc('\n');
+  c1 = fb_03.sgetc();
+  fb_03.pubsync(); 
+  c3 = fb_03.sgetc();
+  VERIFY( c1 == c3 );
+  //end
+  // 27filebuf-3.txt = "bd2\n456x\n9" 
+  pt_2 = fb_03.pubseekoff(0, std::ios_base::end, 
+                         std::ios_base::in|std::ios_base::out);
+  off_1 = pt_2;
+  VERIFY( off_1 > off_2 ); //weak, but don't know exactly where it ends
+  c3 = fb_03.sputc('\n');
+  strmsz_1 = fb_03.sputn("because because because. . .", 28);  
+  VERIFY( strmsz_1 == 28 );
+  c1 = fb_03.sungetc();
+  fb_03.pubsync(); 
+  c3 = fb_03.sgetc();
+  VERIFY( c1 == c3 );
+  // IN
+  // OUT
+
+
+  // seekpos
+  // pubseekpos(pos_type sp, ios_base::openmode)
+  // alters the stream position to sp
+  //IN|OUT
+  //beg
+  pt_1 = fb_03.pubseekoff(78, std::ios_base::beg);
+  off_1 = pt_1;
+  VERIFY( off_1 > 0 );
+  c1 = fb_03.snextc();                 //current in pointer +1
+  VERIFY( c1 == ' ' );
+  c2 = fb_03.sputc('\n');      //test current out pointer
+  c3 = fb_03.sgetc();
+  fb_03.pubsync();             //resets pointers
+  pt_2 = fb_03.pubseekpos(pt_1);
+  off_2 = pt_2;
+  VERIFY( off_1 == off_2 );
+  c3 = fb_03.snextc();                 //current in pointer +1
+  VERIFY( c2 == c3 );
+  pt_1 = fb_03.pubseekoff(0, std::ios_base::end);
+  off_1 = pt_1;
+  VERIFY( off_1 > off_2 );
+  fb_03.sputn("\nof the wonderful things he does!!\nok", 37);
+  fb_03.pubsync();
+
+  // IN
+  // OUT
+
+  // VIRTUALS (indirectly tested)
+  // underflow
+  // if read position avail, returns *gptr()
+
+  // pbackfail(int_type c)
+  // put c back into input sequence
+
+  // overflow
+  // appends c to output seq
+
+  // NB Have to close these suckers. . .
+  // filebuf_type* close()
+  fb_01.close();
+  fb_02.close();
+  fb_03.close();
+  VERIFY( !fb_01.is_open() );
+  VERIFY( !fb_02.is_open() );
+  VERIFY( !fb_03.is_open() );
+}
+
+void test06()
+{
+  using namespace std;
+  typedef istream::int_type    int_type;
+
+  bool test = true;
+  ifstream ifs(name_02);
+  char buffer[] = "xxxxxxxxxx";
+  int_type len1 = ifs.rdbuf()->sgetn(buffer, sizeof(buffer));
+  VERIFY( len1 == sizeof(buffer) );
+  VERIFY( buffer[0] == 'a' );
+}
+
+// test06
+// libstdc++/2020
+// should be able to use custom char_type
+class gnu_char_type
+{
+  unsigned long character;
+public:
+  // operator ==
+  bool
+  operator==(const gnu_char_type& __lhs) 
+  { return character == __lhs.character; }
+
+  // operator <
+  bool
+  operator<(const gnu_char_type& __lhs) 
+  { return character < __lhs.character; }
+
+  // default ctor
+  gnu_char_type() { }
+
+  // to_char_type
+  gnu_char_type(const unsigned long& __l) : character(__l) { } 
+
+  // to_int_type
+  operator unsigned long() const { return character; }
+};
+
+void test07()
+{
+  bool test = true;
+  typedef std::basic_filebuf<gnu_char_type> gnu_filebuf;
+  
+  try
+    { gnu_filebuf obj; }
+  catch(std::exception& obj)
+    { 
+      test = false; 
+      VERIFY( test );
+    }
+}
+
 main() 
 {
   test01();
   test02();
+  
+  test03();
+  test04();
+  test05();
+  test06();
+  test07();
+
   return 0;
 }
diff --git a/libstdc++-v3/testsuite/27_io/iostream.cc b/libstdc++-v3/testsuite/27_io/iostream.cc
new file mode 100644 (file)
index 0000000..26849ac
--- /dev/null
@@ -0,0 +1,47 @@
+// 2002-01-08 bkoz
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+//
+// 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.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+// 27.6.1.5 - Template class basic_iostream
+// NB: This file is for testing iostream with NO OTHER INCLUDES.
+
+// { dg-do compile }
+
+#include <istream>
+
+namespace test 
+{
+  using namespace std;
+  typedef short type_t;
+  template class basic_iostream<type_t, char_traits<type_t> >;
+} // test
+
+int main() 
+{
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/27_io/iostream_members.cc b/libstdc++-v3/testsuite/27_io/iostream_members.cc
new file mode 100644 (file)
index 0000000..4cdcc82
--- /dev/null
@@ -0,0 +1,46 @@
+// 2002-01-08 bkoz
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+//
+// 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.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction.  Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License.  This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+// 27.6.1.5 - Template class basic_iostream
+// NB: This file is for testing iostream with NO OTHER INCLUDES.
+
+#include <iostream>
+
+// libstdc++/3647
+void test07()
+{
+  // Should not block.
+  std::cout << std::cin.rdbuf()->in_avail() << std::endl;
+}
+
+int main() 
+{
+  test07();
+  return 0;
+}
index c43aebdeb23f7108408354b22d75cf9cc3ec41a3..ef88a39f727e00004799d1f9ffb5f0b5ea988af1 100644 (file)
@@ -1,6 +1,6 @@
 // 1999-09-20 bkoz
 
-// Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+// Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 //
 // 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
 
 #include <istream>
 
-namespace test {
-#if 0
-  // XXX Should work, but doesn't.
+// { dg-do compile }
+
+namespace test 
+{
   using namespace std;
   typedef short type_t;
   template class basic_istream<type_t, char_traits<type_t> >;
-
-  template
-    const ctype<type_t>& 
-    use_facet<ctype<type_t> >(const locale&);
-
-  typedef istreambuf_iterator<type_t, char_traits<type_t> > traits_t;
-  template 
-    const num_get<type_t, traits_t>& 
-    use_facet<num_get<type_t, traits_t> >(const locale&);
-#endif
-
 } // test
 
-int main() {
+int main() 
+{
   return 0;
 }
index df77421aeaa7d882c0d1d358bfb30ff7d53373a7..cbc4a6739c2b8f47f43bef8be605ec9df17f27d2 100644 (file)
@@ -1,6 +1,6 @@
 // 1999-09-20 bkoz
 
-// Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+// Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 //
 // 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
 
 #include <ostream>
 
-namespace test {
-#if 0
-  // XXX Should work, but doesn't.
+// { dg-do compile }
+
+namespace test 
+{
   using namespace std;
   typedef short type_t;
   template class basic_ostream<type_t, char_traits<type_t> >;
-#endif
-
 } // test
 
-int main() {
+int main() 
+{
   return 0;
 }