mutable get_error_info support

[SVN r55707]
This commit is contained in:
Emil Dotchevski
2009-08-21 22:28:44 +00:00
parent 7b4290bc76
commit fa96125efb
19 changed files with 3910 additions and 3832 deletions

View File

@ -27,27 +27,27 @@ struct file_read_error: virtual file_error { };
boost::shared_ptr<FILE>
open_file( char const * file, char const * mode )
{
if( FILE * f=fopen(file,mode) )
return boost::shared_ptr<FILE>(f,fclose);
else
BOOST_THROW_EXCEPTION(
file_open_error() <<
boost::errinfo_api_function("fopen") <<
boost::errinfo_errno(errno) <<
boost::errinfo_file_name(file) <<
boost::errinfo_file_open_mode(mode) );
}
{
if( FILE * f=fopen(file,mode) )
return boost::shared_ptr<FILE>(f,fclose);
else
BOOST_THROW_EXCEPTION(
file_open_error() <<
boost::errinfo_api_function("fopen") <<
boost::errinfo_errno(errno) <<
boost::errinfo_file_name(file) <<
boost::errinfo_file_open_mode(mode) );
}
size_t
read_file( boost::shared_ptr<FILE> const & f, void * buf, size_t size )
{
size_t nr=fread(buf,1,size,f.get());
if( ferror(f.get()) )
BOOST_THROW_EXCEPTION(
file_read_error() <<
boost::errinfo_api_function("fread") <<
boost::errinfo_errno(errno) <<
boost::errinfo_file_handle(f) );
return nr;
}
{
size_t nr=fread(buf,1,size,f.get());
if( ferror(f.get()) )
BOOST_THROW_EXCEPTION(
file_read_error() <<
boost::errinfo_api_function("fread") <<
boost::errinfo_errno(errno) <<
boost::errinfo_file_handle(f) );
return nr;
}