basic_file_stdio.cc: As an extension...

2006-10-01  Paolo Carlini  <pcarlini@suse.de>

	* config/io/basic_file_stdio.cc: As an extension, and
	consistently with C facilities, allow for in|out|app and
	in|out|app|binary openmodes.
	* testsuite/27_io/basic_filebuf/open/char/4.cc: New.

From-SVN: r117346
This commit is contained in:
Paolo Carlini 2006-10-01 08:27:49 +00:00 committed by Paolo Carlini
parent f53c2bfab1
commit bc8b35b594
3 changed files with 62 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2006-10-01 Paolo Carlini <pcarlini@suse.de>
* config/io/basic_file_stdio.cc: As an extension, and
consistently with C facilities, allow for in|out|app and
in|out|app|binary openmodes.
* testsuite/27_io/basic_filebuf/open/char/4.cc: New.
2006-09-30 Benjamin Kosnik <bkoz@redhat.com>
* include/ext/pb_ds/detail/types_traits.hpp (store_extra_false_type):

View File

@ -95,6 +95,8 @@ namespace
case (in ): return "r";
case (in|out ): return "r+";
case (in|out|trunc ): return "w+";
// Extension to Table 92.
case (in|out |app ): return "a+";
case ( out |binary): return "wb";
case ( out |app|binary): return "ab";
@ -102,6 +104,8 @@ namespace
case (in |binary): return "rb";
case (in|out |binary): return "r+b";
case (in|out|trunc |binary): return "w+b";
// Extension to Table 92.
case (in|out |app|binary): return "a+b";
default: return 0; // invalid
}

View File

@ -0,0 +1,51 @@
// 2006-10-01 Paolo Carlini <pcarlini@suse.de>
// Copyright (C) 2006 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
// USA.
#include <fstream>
#include <testsuite_hooks.h>
// As an extension to Table 92, consistently with the C standards, we also
// allow in|out|app and in|out|app|binary.
void test01()
{
bool test __attribute__((unused)) = true;
const char* name = "tmp_file4";
std::fstream scratch_file;
scratch_file.open(name, std::ios_base::in | std::ios_base::out
| std::ios_base::app);
VERIFY( scratch_file );
VERIFY( scratch_file.is_open() );
scratch_file.close();
scratch_file.open(name, std::ios_base::in | std::ios_base::out
| std::ios_base::app | std::ios_base::binary);
VERIFY( scratch_file );
VERIFY( scratch_file.is_open() );
scratch_file.close();
}
int
main()
{
test01();
return 0;
}