rcheevos icon indicating copy to clipboard operation
rcheevos copied to clipboard

allow shared file opening when using secure CRT functions

Open Jamiras opened this issue 1 year ago • 0 comments

https://discord.com/channels/310192285306454017/1230730290650026055/1230929459574607952

fopen_s and _wfopen_s cannot open files already opened by another piece of code.

The fopen_s and _wfopen_s functions can't open a file for sharing. If you need to share the file, use _fsopen or _wfsopen with the appropriate sharing mode constant

This switches them out for _fsopen and _wfsopen, which also don't generate the secure CRT warning and support opening files already open by another piece of code. These are Windows only, so fopen_s is still used if WINVER is not defined, but the likelihood of that happening and __STDC_WANT_SECURE_LIB__ being defined is minimal.

The need for opening files in shared mode stems from the blueMSX core holding a write lock on a dsk file so it can potentially modify it. The core should not be modifying the original dsk file. Instead it should be creating a copy to modify (see https://github.com/libretro/blueMSX-libretro/issues/134).

Jamiras avatar Apr 19 '24 18:04 Jamiras