14 int fd = open(path.data(), O_RDONLY);
16 return absl::UnavailableError(
"can't open file");
20 if (fstat(fd, &st) < 0) {
22 return absl::UnavailableError(
"can't stat file");
25 if (st.st_size <= 0) {
27 return absl::InvalidArgumentError(
"file of zero length");
30 const char* data =
static_cast<const char*
>(
31 mmap(
nullptr, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0));
33 if (data == MAP_FAILED) {
35 return absl::UnavailableError(
36 absl::StrCat(
"can't mmap file (", path,
"): ", std::strerror(errno)));
39 return MMapFile(fd, data, st.st_size);