X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FFileUtil.h;h=2679f928f1add40886c1e3dfb0b1fe1a23134d08;hb=9b4749fd47c605c27b6973f317d7c4f3a0e101e9;hp=4939803341215fa78816a593ff56e15d3deffb97;hpb=52ba96edd198f7985f0315b034f84c6dd29234c5;p=folly.git diff --git a/folly/FileUtil.h b/folly/FileUtil.h index 49398033..2679f928 100644 --- a/folly/FileUtil.h +++ b/folly/FileUtil.h @@ -17,8 +17,9 @@ #ifndef FOLLY_FILEUTIL_H_ #define FOLLY_FILEUTIL_H_ -#include "folly/Portability.h" -#include "folly/ScopeGuard.h" +#include +#include +#include #include #include @@ -36,7 +37,7 @@ namespace folly { * until all data is written. Note that *Full wrappers weaken the thread * semantics of underlying system calls. */ -int openNoInt(const char* name, int flags, mode_t mode=0644); +int openNoInt(const char* name, int flags, mode_t mode = 0666); int closeNoInt(int fd); int dupNoInt(int fd); int dup2NoInt(int oldfd, int newfd); @@ -122,7 +123,7 @@ bool readFile(const char* file_name, Container& out, "readFile: only containers with byte-sized elements accepted"); assert(file_name); - const auto fd = open(file_name, O_RDONLY); + const auto fd = openNoInt(file_name, O_RDONLY); if (fd == -1) return false; size_t soFar = 0; // amount of bytes successfully read @@ -130,7 +131,7 @@ bool readFile(const char* file_name, Container& out, assert(out.size() >= soFar); // resize better doesn't throw out.resize(soFar); // Ignore errors when closing the file - close(fd); + closeNoInt(fd); }; // Obtain file size: @@ -144,7 +145,7 @@ bool readFile(const char* file_name, Container& out, constexpr size_t initialAlloc = 1024 * 4; out.resize( std::min( - buf.st_size ? buf.st_size + 1 : initialAlloc, + buf.st_size > 0 ? folly::to(buf.st_size + 1) : initialAlloc, num_bytes)); while (soFar < out.size()) {