diff --git a/base/include/android-base/unique_fd.h b/base/include/android-base/unique_fd.h index a39245baf..6e11b4ee7 100644 --- a/base/include/android-base/unique_fd.h +++ b/base/include/android-base/unique_fd.h @@ -92,6 +92,8 @@ class unique_fd_impl final { explicit unique_fd_impl(int fd) { reset(fd); } ~unique_fd_impl() { reset(); } + unique_fd_impl(const unique_fd_impl&) = delete; + void operator=(const unique_fd_impl&) = delete; unique_fd_impl(unique_fd_impl&& other) noexcept { reset(other.release()); } unique_fd_impl& operator=(unique_fd_impl&& s) noexcept { int fd = s.fd_; @@ -118,6 +120,8 @@ class unique_fd_impl final { // Catch bogus error checks (i.e.: "!fd" instead of "fd != -1"). bool operator!() const = delete; + bool ok() const { return get() != -1; } + int release() __attribute__((warn_unused_result)) { tag(fd_, this, nullptr); int ret = fd_; @@ -167,9 +171,6 @@ class unique_fd_impl final { static auto close(int fd, void*) -> decltype(T::Close(fd), void()) { T::Close(fd); } - - unique_fd_impl(const unique_fd_impl&); - void operator=(const unique_fd_impl&); }; using unique_fd = unique_fd_impl;