From 2c5d1d7cd914ec8ebf76c8a59d0889ebf5b538cd Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Mon, 28 Mar 2016 12:15:36 -0700 Subject: [PATCH] Add operator int() to unique_fd. Change-Id: I7512559be7befbb8772d5529e06550267a2f1543 --- base/include/android-base/unique_fd.h | 1 + bootstat/boot_event_record_store_test.cpp | 4 ++-- libmemunreachable/ProcessMappings.cpp | 5 ++--- libmemunreachable/ThreadCapture.cpp | 7 +++---- libmemunreachable/tests/ThreadCapture_test.cpp | 2 -- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/base/include/android-base/unique_fd.h b/base/include/android-base/unique_fd.h index dfaac9d93..8bc49ce2e 100644 --- a/base/include/android-base/unique_fd.h +++ b/base/include/android-base/unique_fd.h @@ -64,6 +64,7 @@ class unique_fd final { } int get() const { return value_; } + operator int() const { return get(); } int release() __attribute__((warn_unused_result)) { int ret = value_; diff --git a/bootstat/boot_event_record_store_test.cpp b/bootstat/boot_event_record_store_test.cpp index b7dd9ba8c..01c2cc105 100644 --- a/bootstat/boot_event_record_store_test.cpp +++ b/bootstat/boot_event_record_store_test.cpp @@ -41,7 +41,7 @@ namespace { // the value of the record. bool CreateEmptyBootEventRecord(const std::string& record_path, int32_t value) { android::base::unique_fd record_fd(creat(record_path.c_str(), S_IRUSR | S_IWUSR)); - if (record_fd.get() == -1) { + if (record_fd == -1) { return false; } @@ -49,7 +49,7 @@ bool CreateEmptyBootEventRecord(const std::string& record_path, int32_t value) { // ensure the validity of the file mtime value, i.e., to check that the record // file mtime values are not changed once set. // TODO(jhawkins): Remove this block. - if (!android::base::WriteStringToFd(std::to_string(value), record_fd.get())) { + if (!android::base::WriteStringToFd(std::to_string(value), record_fd)) { return false; } diff --git a/libmemunreachable/ProcessMappings.cpp b/libmemunreachable/ProcessMappings.cpp index 7cca7c15d..57b232128 100644 --- a/libmemunreachable/ProcessMappings.cpp +++ b/libmemunreachable/ProcessMappings.cpp @@ -30,11 +30,10 @@ bool ProcessMappings(pid_t pid, allocator::vector& mappings) { char map_buffer[1024]; snprintf(map_buffer, sizeof(map_buffer), "/proc/%d/maps", pid); - int fd = open(map_buffer, O_RDONLY); - if (fd < 0) { + android::base::unique_fd fd(open(map_buffer, O_RDONLY)); + if (fd == -1) { return false; } - android::base::unique_fd fd_guard{fd}; LineBuffer line_buf(fd, map_buffer, sizeof(map_buffer)); char* line; diff --git a/libmemunreachable/ThreadCapture.cpp b/libmemunreachable/ThreadCapture.cpp index e8a8392cc..9155c2928 100644 --- a/libmemunreachable/ThreadCapture.cpp +++ b/libmemunreachable/ThreadCapture.cpp @@ -108,12 +108,11 @@ bool ThreadCaptureImpl::ListThreads(TidList& tids) { strlcat(path, pid_str, sizeof(path)); strlcat(path, "/task", sizeof(path)); - int fd = open(path, O_CLOEXEC | O_DIRECTORY | O_RDONLY); - if (fd < 0) { + android::base::unique_fd fd(open(path, O_CLOEXEC | O_DIRECTORY | O_RDONLY)); + if (fd == -1) { ALOGE("failed to open %s: %s", path, strerror(errno)); return false; } - android::base::unique_fd fd_guard{fd}; struct linux_dirent64 { uint64_t d_ino; @@ -125,7 +124,7 @@ bool ThreadCaptureImpl::ListThreads(TidList& tids) { char dirent_buf[4096]; ssize_t nread; do { - nread = syscall(SYS_getdents64, fd, dirent_buf, sizeof(dirent_buf)); + nread = syscall(SYS_getdents64, fd.get(), dirent_buf, sizeof(dirent_buf)); if (nread < 0) { ALOGE("failed to get directory entries from %s: %s", path, strerror(errno)); return false; diff --git a/libmemunreachable/tests/ThreadCapture_test.cpp b/libmemunreachable/tests/ThreadCapture_test.cpp index cefe94e6a..41ed84ee0 100644 --- a/libmemunreachable/tests/ThreadCapture_test.cpp +++ b/libmemunreachable/tests/ThreadCapture_test.cpp @@ -28,8 +28,6 @@ #include -#include - #include "Allocator.h" #include "ScopedDisableMalloc.h" #include "ScopedPipe.h"