MDS: Do not use fgetws, as it does not behave correctly on Linux.

This commit is contained in:
OBattler
2025-07-24 22:38:36 +02:00
parent ea7f01c793
commit 73cec3ab2a

View File

@@ -1984,14 +1984,22 @@ image_load_mds(cd_image_t *img, const char *mdsfile)
fseek(fp, mds_trk_block.footer_offs + (ff * sizeof(mds_footer_t)), SEEK_SET); fseek(fp, mds_trk_block.footer_offs + (ff * sizeof(mds_footer_t)), SEEK_SET);
fread(&mds_footer, 1, sizeof(mds_footer_t), fp); fread(&mds_footer, 1, sizeof(mds_footer_t), fp);
wchar_t wfn[2048] = { 0 }; uint16_t wfn[2048] = { 0 };
char fn[2048] = { 0 }; char fn[2048] = { 0 };
fseek(fp, mds_footer.fn_offs, SEEK_SET); fseek(fp, mds_footer.fn_offs, SEEK_SET);
if (mds_footer.fn_is_wide) { if (mds_footer.fn_is_wide) {
fgetws(wfn, 256, fp); for (int i = 0; i < 256; i++) {
fread(&wfn[i], 1, 2, fp);
if (wfn[i] == 0x0000)
break;
}
wcstombs(fn, wfn, 256); wcstombs(fn, wfn, 256);
} else } else for (int i = 0; i < 512; i++) {
fgets(fn, 512, fp); fread(&fn[i], 1, 1, fp);
if (fn[i] == 0x00)
break;
}
if (!stricmp(fn, "*.mdf")) { if (!stricmp(fn, "*.mdf")) {
strcpy(fn, mdsfile); strcpy(fn, mdsfile);
fn[strlen(mdsfile) - 3] = 'm'; fn[strlen(mdsfile) - 3] = 'm';