MCPcopy Create free account
hub / github.com/darktable-org/rawspeed / writeFile

Method writeFile

src/librawspeed/io/FileWriter.cpp:41–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39FileWriter::FileWriter(const char *_filename) : mFilename(_filename) {}
40
41void FileWriter::writeFile(Buffer* filemap, uint32_t size) {
42 if (size > filemap->getSize())
43 size = filemap->getSize();
44#if defined(__unix__) || defined(__APPLE__)
45 size_t bytes_written = 0;
46 FILE *file;
47
48 file = fopen(mFilename, "wb");
49 if (file == nullptr)
50 ThrowFIE("Could not open file.");
51
52 const auto* const src = filemap->getData(0, filemap->getSize());
53 bytes_written = fwrite(src, 1, size != 0 ? size : filemap->getSize(), file);
54 fclose(file);
55 if (size != bytes_written) {
56 ThrowFIE("Could not write file.");
57 }
58
59#else // __unix__
60 auto wFileName = widenFileName(mFilename);
61 HANDLE file_h; // File handle
62 file_h =
63 CreateFileW(wFileName.data(), GENERIC_WRITE, FILE_SHARE_WRITE, nullptr,
64 CREATE_ALWAYS, FILE_FLAG_SEQUENTIAL_SCAN, nullptr);
65 if (file_h == INVALID_HANDLE_VALUE) {
66 ThrowFIE("Could not open file.");
67 }
68
69 DWORD bytes_written;
70 if (!WriteFile(file_h, filemap->getData(0, filemap->getSize()),
71 size ? size : filemap->getSize(), &bytes_written, nullptr)) {
72 CloseHandle(file_h);
73 ThrowFIE("Could not read file.");
74 }
75 CloseHandle(file_h);
76
77#endif // __unix__
78}
79
80} // namespace rawspeed

Callers

nothing calls this directly

Calls 4

widenFileNameFunction · 0.85
getSizeMethod · 0.45
getDataMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected