Revert r111321. This doesn't fix a problem.

llvm-svn: 111339
This commit is contained in:
Dan Gohman 2010-08-18 01:34:52 +00:00
parent caa1bf434d
commit 44790e7aa7
1 changed files with 19 additions and 23 deletions

View File

@ -415,32 +415,16 @@ raw_fd_ostream::raw_fd_ostream(const char *Filename, std::string &ErrorInfo,
raw_fd_ostream::~raw_fd_ostream() {
if (FD < 0) return;
if (!ShouldClose) {
flush();
return;
}
bool HadError = has_error();
close();
// If we had a failure closing the stream, there is no way for the client to
// handle it, just eat the failure.
if (!HadError && has_error())
clear_error();
}
void raw_fd_ostream::close() {
assert(ShouldClose);
ShouldClose = false;
flush();
while (::close(FD) != 0)
if (errno != EINTR) {
error_detected();
break;
}
FD = -1;
if (ShouldClose)
while (::close(FD) != 0)
if (errno != EINTR) {
error_detected();
break;
}
}
void raw_fd_ostream::write_impl(const char *Ptr, size_t Size) {
assert(FD >= 0 && "File already closed.");
pos += Size;
@ -477,6 +461,18 @@ void raw_fd_ostream::write_impl(const char *Ptr, size_t Size) {
} while (Size > 0);
}
void raw_fd_ostream::close() {
assert(ShouldClose);
ShouldClose = false;
flush();
while (::close(FD) != 0)
if (errno != EINTR) {
error_detected();
break;
}
FD = -1;
}
uint64_t raw_fd_ostream::seek(uint64_t off) {
flush();
pos = ::lseek(FD, off, SEEK_SET);