168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file. 468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#ifndef LIBRARIES_NACL_IO_GETDENTS_HELPER_H_ 668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define LIBRARIES_NACL_IO_GETDENTS_HELPER_H_ 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include <vector> 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "nacl_io/error.h" 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "nacl_io/osdirent.h" 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace nacl_io { 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class GetDentsHelper { 1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public: 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Initialize the helper without any defaults. 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) GetDentsHelper(); 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) GetDentsHelper(ino_t curdir_ino, ino_t parentdir_ino); 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void Reset(); 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void AddDirent(ino_t ino, const char* name, size_t namelen); 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) Error GetDents(size_t offs, dirent* pdir, size_t size, int* out_bytes) const; 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) private: 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void Initialize(); 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::vector<dirent> dirents_; 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ino_t curdir_ino_; 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ino_t parentdir_ino_; 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool init_defaults_; 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}; 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace nacl_io 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#endif // LIBRARIES_NACL_IO_GETDENTS_HELPER_H_ 37