summaryrefslogtreecommitdiffstats
path: root/base/dir_reader_linux.h
diff options
context:
space:
mode:
Diffstat (limited to 'base/dir_reader_linux.h')
-rw-r--r--base/dir_reader_linux.h97
1 files changed, 0 insertions, 97 deletions
diff --git a/base/dir_reader_linux.h b/base/dir_reader_linux.h
deleted file mode 100644
index 7fd534f..0000000
--- a/base/dir_reader_linux.h
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BASE_DIR_READER_LINUX_H_
-#define BASE_DIR_READER_LINUX_H_
-
-#include <errno.h>
-#include <fcntl.h>
-#include <stdint.h>
-#include <sys/syscall.h>
-#include <unistd.h>
-
-#include "base/logging.h"
-#include "base/eintr_wrapper.h"
-
-// See the comments in dir_reader_posix.h about this.
-
-namespace base {
-
-struct linux_dirent {
- uint64_t d_ino;
- int64_t d_off;
- unsigned short d_reclen;
- unsigned char d_type;
- char d_name[0];
-};
-
-class DirReaderLinux {
- public:
- explicit DirReaderLinux(const char* directory_path)
- : fd_(open(directory_path, O_RDONLY | O_DIRECTORY)),
- offset_(0),
- size_(0) {
- }
-
- ~DirReaderLinux() {
- if (fd_ >= 0) {
- if (HANDLE_EINTR(close(fd_)))
- RAW_LOG(ERROR, "Failed to close directory handle");
- }
- }
-
- bool IsValid() const {
- return fd_ >= 0;
- }
-
- // Move to the next entry returning false if the iteration is complete.
- bool Next() {
- if (size_) {
- linux_dirent* dirent = reinterpret_cast<linux_dirent*>(&buf_[offset_]);
- offset_ += dirent->d_reclen;
- }
-
- if (offset_ != size_)
- return true;
-
- const int r = syscall(__NR_getdents64, fd_, buf_, sizeof(buf_));
- if (r == 0)
- return false;
- if (r == -1) {
- DPLOG(FATAL) << "getdents64 returned an error: " << errno;
- return false;
- }
- size_ = r;
- offset_ = 0;
- return true;
- }
-
- const char* name() const {
- if (!size_)
- return NULL;
-
- const linux_dirent* dirent =
- reinterpret_cast<const linux_dirent*>(&buf_[offset_]);
- return dirent->d_name;
- }
-
- int fd() const {
- return fd_;
- }
-
- static bool IsFallback() {
- return false;
- }
-
- private:
- const int fd_;
- unsigned char buf_[512];
- size_t offset_, size_;
-
- DISALLOW_COPY_AND_ASSIGN(DirReaderLinux);
-};
-
-} // namespace base
-
-#endif // BASE_DIR_READER_LINUX_H_