Merge "libbase: add Fdopen that takes a unique_fd."

This commit is contained in:
Treehugger Robot 2018-09-05 18:16:46 +00:00 committed by Gerrit Code Review
commit f33d19ff21

View file

@ -22,6 +22,7 @@
#include <sys/socket.h>
#endif
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
@ -199,6 +200,17 @@ inline bool Socketpair(int type, unique_fd_impl<Closer>* left, unique_fd_impl<Cl
return Socketpair(AF_UNIX, type, 0, left, right);
}
// Using fdopen with unique_fd correctly is more annoying than it should be,
// because fdopen doesn't close the file descriptor received upon failure.
inline FILE* Fdopen(unique_fd&& ufd, const char* mode) {
int fd = ufd.release();
FILE* file = fdopen(fd, mode);
if (!file) {
close(fd);
}
return file;
}
#endif // !defined(_WIN32)
} // namespace base