Commit 803cb0b5 by Richard B. Kreckel Committed by Benjamin Kosnik

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
parent e73c80ae
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> 2004-05-27 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/15675 PR libstdc++/15675
......
...@@ -240,7 +240,11 @@ namespace std ...@@ -240,7 +240,11 @@ namespace std
int int
__basic_file<char>::fd() __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>*
__basic_file<char>::close() __basic_file<char>::close()
......
...@@ -81,6 +81,9 @@ namespace std ...@@ -81,6 +81,9 @@ namespace std
int int
fd(); fd();
__c_file*
file();
~__basic_file(); ~__basic_file();
streamsize streamsize
......
// File descriptor layer for filebuf -*- C++ -*- // 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 // 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 // software; you can redistribute it and/or modify it under the
...@@ -63,6 +63,11 @@ namespace __gnu_cxx ...@@ -63,6 +63,11 @@ namespace __gnu_cxx
public: public:
/** /**
* deferred initialization
*/
stdio_filebuf() : std::basic_filebuf<_CharT, _Traits>() {}
/**
* @param fd An open file descriptor. * @param fd An open file descriptor.
* @param mode Same meaning as in a standard filebuf. * @param mode Same meaning as in a standard filebuf.
* @param size Optimal or preferred size of internal buffer, in chars. * @param size Optimal or preferred size of internal buffer, in chars.
...@@ -103,8 +108,17 @@ namespace __gnu_cxx ...@@ -103,8 +108,17 @@ namespace __gnu_cxx
* descriptor, so be careful. * descriptor, so be careful.
*/ */
int int
fd() fd() { return this->_M_file.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> template<typename _CharT, typename _Traits>
......
...@@ -71,6 +71,16 @@ namespace __gnu_cxx ...@@ -71,6 +71,16 @@ namespace __gnu_cxx
: _M_file(__f), _M_unget_buf(traits_type::eof()) : _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: protected:
int_type int_type
syncgetc(); syncgetc();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment