- FILE* file = 0;
- boost::filesystem::path info_file = _film->info_file (_period);
-
- bool const read = boost::filesystem::exists (info_file);
-
- if (read) {
- file = fopen_boost (info_file, "r+b");
- } else {
- file = fopen_boost (info_file, "wb");
- }
- if (!file) {
- throw OpenFileError (info_file, errno, read);
- }
- dcpomatic_fseek (file, frame_info_position (frame, eyes), SEEK_SET);
- checked_fwrite (&info.offset, sizeof (info.offset), file, info_file);
- checked_fwrite (&info.size, sizeof (info.size), file, info_file);
- checked_fwrite (info.hash.c_str(), info.hash.size(), file, info_file);
- fclose (file);
+ shared_ptr<InfoFileHandle> handle = _film->info_file_handle(_period, false);
+ dcpomatic_fseek (handle->get(), frame_info_position(frame, eyes), SEEK_SET);
+ checked_fwrite (&info.offset, sizeof(info.offset), handle->get(), handle->file());
+ checked_fwrite (&info.size, sizeof (info.size), handle->get(), handle->file());
+ checked_fwrite (info.hash.c_str(), info.hash.size(), handle->get(), handle->file());