Cavil-Matcher

 view release on metacpan or  search on metacpan

src/matcher.cc  view on Meta::CPAN


MappedFile::~MappedFile() {
  if (_data && _data != MAP_FAILED) munmap((void*)_data, _size);
  if (_fd >= 0) close(_fd);
}

bool MappedFile::map(const std::string& path) {
  _fd = open(path.c_str(), O_RDONLY);
  if (_fd < 0) return false;
  struct stat st;
  if (fstat(_fd, &st) != 0 || st.st_size <= 0) {
    close(_fd);
    _fd = -1;
    return false;
  }
  void* p = mmap(nullptr, (size_t)st.st_size, PROT_READ, MAP_SHARED, _fd, 0);
  if (p == MAP_FAILED) {
    close(_fd);
    _fd = -1;
    return false;
  }



( run in 1.219 second using v1.01-cache-2.11-cpan-14f38c9f855 )