#ifndef FOLLY_FILEUTIL_H_
#define FOLLY_FILEUTIL_H_
-#include "folly/Portability.h"
-#include "folly/ScopeGuard.h"
+#include <folly/Conv.h>
+#include <folly/Portability.h>
+#include <folly/ScopeGuard.h>
#include <cassert>
#include <limits>
* 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);
"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
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:
constexpr size_t initialAlloc = 1024 * 4;
out.resize(
std::min(
- buf.st_size ? buf.st_size + 1 : initialAlloc,
+ buf.st_size > 0 ? folly::to<size_t>(buf.st_size + 1) : initialAlloc,
num_bytes));
while (soFar < out.size()) {