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).
https://discord.com/channels/310192285306454017/1230730290650026055/1230929459574607952
fopen_s
and_wfopen_s
cannot open files already opened by another piece of code.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, sofopen_s
is still used ifWINVER
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).