Files return errc::bad_file_descriptor (API Change):

fix #1356

* File functions return errc::bad_file_descriptor
  instead of errc::invalid_argument.

Actions Required:

* Callers checking for errc::invalid_argument from calls to
  file APIs should check for errc::bad_file_descriptor instead.
This commit is contained in:
Vinnie Falco
2018-12-08 06:15:00 -08:00
parent 8262405064
commit 4fec064ad8
5 changed files with 29 additions and 20 deletions

View File

@ -3,6 +3,15 @@ Version 198:
* flat_buffer improvements
* multi_buffer improvements
API Changes:
* Files return errc::bad_file_descriptor
Actions Required:
* Callers checking for errc::invalid_argument from calls to
file APIs should check for errc::bad_file_descriptor instead.
--------------------------------------------------------------------------------
Version 197:

View File

@ -224,7 +224,7 @@ size(error_code& ec) const
{
if(fd_ == -1)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
struct stat st;
@ -244,7 +244,7 @@ pos(error_code& ec) const
{
if(fd_ == -1)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
auto const result = ::lseek(fd_, 0, SEEK_CUR);
@ -264,7 +264,7 @@ seek(std::uint64_t offset, error_code& ec)
{
if(fd_ == -1)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return;
}
auto const result = ::lseek(fd_, offset, SEEK_SET);
@ -283,7 +283,7 @@ read(void* buffer, std::size_t n, error_code& ec) const
{
if(fd_ == -1)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
std::size_t nread = 0;
@ -319,7 +319,7 @@ write(void const* buffer, std::size_t n, error_code& ec)
{
if(fd_ == -1)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
std::size_t nwritten = 0;

View File

@ -122,7 +122,7 @@ size(error_code& ec) const
{
if(! f_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
long pos = std::ftell(f_);
@ -159,7 +159,7 @@ pos(error_code& ec) const
{
if(! f_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
long pos = std::ftell(f_);
@ -179,7 +179,7 @@ seek(std::uint64_t offset, error_code& ec)
{
if(! f_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return;
}
if(offset > (std::numeric_limits<long>::max)())
@ -202,7 +202,7 @@ read(void* buffer, std::size_t n, error_code& ec) const
{
if(! f_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
auto nread = std::fread(buffer, 1, n, f_);
@ -221,7 +221,7 @@ write(void const* buffer, std::size_t n, error_code& ec)
{
if(! f_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
auto nwritten = std::fwrite(buffer, 1, n, f_);

View File

@ -216,7 +216,7 @@ size(error_code& ec) const
{
if(h_ == boost::winapi::INVALID_HANDLE_VALUE_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
boost::winapi::LARGE_INTEGER_ fileSize;
@ -237,7 +237,7 @@ pos(error_code& ec)
{
if(h_ == boost::winapi::INVALID_HANDLE_VALUE_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
boost::winapi::LARGE_INTEGER_ in;
@ -261,7 +261,7 @@ seek(std::uint64_t offset, error_code& ec)
{
if(h_ == boost::winapi::INVALID_HANDLE_VALUE_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return;
}
boost::winapi::LARGE_INTEGER_ in;
@ -283,7 +283,7 @@ read(void* buffer, std::size_t n, error_code& ec)
{
if(h_ == boost::winapi::INVALID_HANDLE_VALUE_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
std::size_t nread = 0;
@ -324,7 +324,7 @@ write(void const* buffer, std::size_t n, error_code& ec)
{
if(h_ == boost::winapi::INVALID_HANDLE_VALUE_)
{
ec = make_error_code(errc::invalid_argument);
ec = make_error_code(errc::bad_file_descriptor);
return 0;
}
std::size_t nwritten = 0;

View File

@ -57,25 +57,25 @@ doTestFile(beast::unit_test::suite& test)
test.BEAST_EXPECT(! f.is_open());
f.size(ec);
test.BEAST_EXPECT(ec == errc::invalid_argument);
test.BEAST_EXPECT(ec == errc::bad_file_descriptor);
ec.assign(0, ec.category());
f.pos(ec);
test.BEAST_EXPECT(ec == errc::invalid_argument);
test.BEAST_EXPECT(ec == errc::bad_file_descriptor);
ec.assign(0, ec.category());
f.seek(0, ec);
test.BEAST_EXPECT(ec == errc::invalid_argument);
test.BEAST_EXPECT(ec == errc::bad_file_descriptor);
ec.assign(0, ec.category());
char tmp[1];
f.read(tmp, 0, ec);
test.BEAST_EXPECT(ec == errc::invalid_argument);
test.BEAST_EXPECT(ec == errc::bad_file_descriptor);
ec.assign(0, ec.category());
f.write(tmp, 0, ec);
test.BEAST_EXPECT(ec == errc::invalid_argument);
test.BEAST_EXPECT(ec == errc::bad_file_descriptor);
ec.assign(0, ec.category());
f.open(temp.string<std::string>().c_str(), file_mode::write, ec);