1 2 // vim:sw=2:ai 3 4 /* 5 * Copyright (C) 2010-2011 DeNA Co.,Ltd.. All rights reserved. 6 * See COPYRIGHT.txt for details. 7 */ 8 9 #ifndef DENA_AUTO_FILE_HPP 10 #define DENA_AUTO_FILE_HPP 11 12 /* 13 #ifndef __WIN__ 14 #include <dirent.h> 15 #endif 16 */ 17 18 #include "util.hpp" 19 20 namespace dena { 21 22 struct auto_file : private noncopyable { auto_filedena::auto_file23 auto_file() : fd(-1) { } ~auto_filedena::auto_file24 ~auto_file() { 25 reset(); 26 } getdena::auto_file27 int get() const { return fd; } closedena::auto_file28 int close() { 29 if (fd < 0) { 30 return 0; 31 } 32 const int r = ::close(fd); 33 fd = -1; 34 return r; 35 } resetdena::auto_file36 void reset(int x = -1) { 37 if (fd >= 0) { 38 this->close(); 39 } 40 fd = x; 41 } 42 private: 43 int fd; 44 }; 45 46 /* 47 struct auto_dir : private noncopyable { 48 auto_dir() : dp(0) { } 49 ~auto_dir() { 50 reset(); 51 } 52 DIR *get() const { return dp; } 53 void reset(DIR *d = 0) { 54 if (dp != 0) { 55 closedir(dp); 56 } 57 dp = d; 58 } 59 private: 60 DIR *dp; 61 }; 62 */ 63 64 }; 65 66 #endif 67 68