re PR libstdc++/14600 (__gnu_cxx::stdio_sync_filebuf should expose internal FILE*)

2004-05-29  Richard B. Kreckel  <Richard.Kreckel@Framatome-ANP.com>
            Benjamin Kosnik  <bkoz@redhat.com>

	PR libstdc++/14600
	* include/ext/stdio_sync_filebuf.h (stdio_sync_filebuf::file): New.
	* include/ext/stdio_filebuf.h (stdio_filebuf::file): New.
	* config/io/basic_file_stdio.cc (__basic_file::file): New.
	* config/io/basic_file_stdio.h: Define.

Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com>

From-SVN: r82419
This commit is contained in:
Richard B. Kreckel 2004-05-29 14:40:59 +00:00 committed by Benjamin Kosnik
parent e73c80ae86
commit 803cb0b5c9
5 changed files with 44 additions and 4 deletions

View file

@ -1,3 +1,12 @@
2004-05-29 Richard B. Kreckel <Richard.Kreckel@Framatome-ANP.com>
Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/14600
* include/ext/stdio_sync_filebuf.h (stdio_sync_filebuf::file): New.
* include/ext/stdio_filebuf.h (stdio_filebuf::file): New.
* config/io/basic_file_stdio.cc (__basic_file::file): New.
* config/io/basic_file_stdio.h: Define.
2004-05-27 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/15675

View file

@ -240,7 +240,11 @@ namespace std
int
__basic_file<char>::fd()
{ return fileno(_M_cfile) ; }
{ return fileno(_M_cfile); }
__c_file*
__basic_file<char>::file()
{ return _M_cfile; }
__basic_file<char>*
__basic_file<char>::close()

View file

@ -81,6 +81,9 @@ namespace std
int
fd();
__c_file*
file();
~__basic_file();
streamsize

View file

@ -1,6 +1,6 @@
// File descriptor layer for filebuf -*- C++ -*-
// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
// Copyright (C) 2002, 2003, 2004 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
@ -62,6 +62,11 @@ namespace __gnu_cxx
typedef std::size_t size_t;
public:
/**
* deferred initialization
*/
stdio_filebuf() : std::basic_filebuf<_CharT, _Traits>() {}
/**
* @param fd An open file descriptor.
* @param mode Same meaning as in a standard filebuf.
@ -103,8 +108,17 @@ namespace __gnu_cxx
* descriptor, so be careful.
*/
int
fd()
{ return this->_M_file.fd(); }
fd() { return this->_M_file.fd(); }
/**
* @return The underlying FILE*.
*
* This function can be used to access the underlying "C" file pointer.
* Note that there is no way for the library to track what you do
* with the file, so be careful.
*/
std::__c_file*
file() { return this->_M_file.file(); }
};
template<typename _CharT, typename _Traits>

View file

@ -71,6 +71,16 @@ namespace __gnu_cxx
: _M_file(__f), _M_unget_buf(traits_type::eof())
{ }
/**
* @return The underlying FILE*.
*
* This function can be used to access the underlying "C" file pointer.
* Note that there is no way for the library to track what you do
* with the file, so be careful.
*/
std::__c_file* const
file() { return this->_M_file; }
protected:
int_type
syncgetc();