MCPcopy Create free account
hub / github.com/LibRaw/LibRaw / create_mapping

Function create_mapping

samples/dcraw_emu.cpp:200–218  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

198};
199
200void create_mapping(struct file_mapping& data, const std::string& fn)
201{
202#ifdef LIBRAW_WIN32_CALLS
203 std::wstring fpath(fn.begin(), fn.end());
204 if ((data.fd = CreateFileW(fpath.c_str(), GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)) == INVALID_HANDLE_VALUE) return;
205 LARGE_INTEGER fs;
206 if (!GetFileSizeEx(data.fd, &fs)) return;
207 data.fsize = fs.QuadPart;
208 if ((data.fd_map = ::CreateFileMapping(data.fd, 0, PAGE_READONLY, fs.HighPart, fs.LowPart, 0)) == INVALID_HANDLE_VALUE) return;
209 data.map = MapViewOfFile(data.fd_map, FILE_MAP_READ, 0, 0, data.fsize);
210#else
211 struct stat stt;
212 if ((data.fd = open(fn.c_str(), O_RDONLY)) < 0) return;
213 if (fstat(data.fd, &stt) != 0) return;
214 data.fsize = stt.st_size;
215 data.map = mmap(0, data.fsize, PROT_READ | PROT_WRITE, MAP_PRIVATE, data.fd, 0);
216 return;
217#endif
218}
219
220void close_mapping(struct file_mapping& data)
221{

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected