summaryrefslogtreecommitdiffstats
path: root/base/directory_watcher_inotify.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/directory_watcher_inotify.cc')
-rw-r--r--base/directory_watcher_inotify.cc24
1 files changed, 9 insertions, 15 deletions
diff --git a/base/directory_watcher_inotify.cc b/base/directory_watcher_inotify.cc
index a17e1e4..86e7bd9 100644
--- a/base/directory_watcher_inotify.cc
+++ b/base/directory_watcher_inotify.cc
@@ -16,6 +16,7 @@
#include <utility>
#include <vector>
+#include "base/eintr_wrapper.h"
#include "base/file_path.h"
#include "base/hash_tables.h"
#include "base/lock.h"
@@ -100,11 +101,10 @@ class InotifyReaderTask : public Task {
FD_SET(shutdown_fd_, &rfds);
// Wait until some inotify events are available.
- int select_result = select(std::max(inotify_fd_, shutdown_fd_) + 1,
- &rfds, NULL, NULL, NULL);
+ int select_result =
+ HANDLE_EINTR(select(std::max(inotify_fd_, shutdown_fd_) + 1,
+ &rfds, NULL, NULL, NULL));
if (select_result < 0) {
- if (errno == EINTR)
- continue;
DLOG(WARNING) << "select failed: " << strerror(errno);
return;
}
@@ -114,7 +114,8 @@ class InotifyReaderTask : public Task {
// Adjust buffer size to current event queue size.
int buffer_size;
- int ioctl_result = ioctl(inotify_fd_, FIONREAD, &buffer_size);
+ int ioctl_result = HANDLE_EINTR(ioctl(inotify_fd_, FIONREAD,
+ &buffer_size));
if (ioctl_result != 0) {
DLOG(WARNING) << "ioctl failed: " << strerror(errno);
@@ -123,10 +124,8 @@ class InotifyReaderTask : public Task {
std::vector<char> buffer(buffer_size);
- ssize_t bytes_read;
- do {
- bytes_read = read(inotify_fd_, &buffer[0], buffer_size);
- } while (bytes_read < 0 && errno == EINTR);
+ ssize_t bytes_read = HANDLE_EINTR(read(inotify_fd_, &buffer[0],
+ buffer_size));
if (bytes_read < 0) {
DLOG(WARNING) << "read from inotify fd failed: " << strerror(errno);
@@ -188,12 +187,7 @@ InotifyReader::~InotifyReader() {
if (valid_) {
// Write to the self-pipe so that the select call in InotifyReaderTask
// returns.
- ssize_t bytes_written;
- do {
- bytes_written = write(shutdown_pipe_[1], "", 1);
- if (bytes_written == 0)
- continue;
- } while (bytes_written == -1 && errno == EINTR);
+ HANDLE_EINTR(write(shutdown_pipe_[1], "", 1));
thread_.Stop();
}
if (inotify_fd_ >= 0)