And fix it for IOCTL as well.

This commit is contained in:
Miran Grča
2025-07-26 14:27:46 +02:00
committed by GitHub
parent 62ba66f4ea
commit cc33d70e09

View File

@@ -315,21 +315,44 @@ ioctl_get_track_info(const void *local, const uint32_t track,
const raw_track_info_t *rti = (const raw_track_info_t *) ioctl->cur_rti; const raw_track_info_t *rti = (const raw_track_info_t *) ioctl->cur_rti;
int ret = 1; int ret = 1;
int trk = -1; int trk = -1;
int next = -1;
if ((track >= 1) && (track < 99)) if ((track >= 1) && (track < 99)) {
for (int i = 0; i < ioctl->blocks_num; i++) for (int i = 0; i < ioctl->blocks_num; i++)
if (rti[i].point == track) { if (rti[i].point == track) {
trk = i; trk = i;
break; break;
} }
if ((track >= 1) && (track < 98))
for (int i = 0; i < ioctl->blocks_num; i++)
if ((rti[i].point == (track + 1)) && (rti[i].session == rti[trk].session)) {
next = i;
break;
}
if ((track >= 1) && (track < 99) && (trk != -1) && (next == -1))
for (int i = 0; i < ioctl->blocks_num; i++)
if ((rti[i].point == 0xa2) && (rti[i].session == rti[trk].session)) {
next = i;
break;
}
if ((track == 0xaa) || (trk == -1)) { if ((track == 0xaa) || (trk == -1)) {
ioctl_log(ioctl->log, "ioctl_get_track_info(%02i)\n", track); ioctl_log(ioctl->log, "ioctl_get_track_info(%02i)\n", track);
ret = 0; ret = 0;
} else { } else {
ti->m = rti[trk].pm; if (end) {
ti->s = rti[trk].ps; if (next != -1) {
ti->f = rti[trk].pf; ti->m = rti[next].pm;
ti->s = rti[next].ps;
ti->f = rti[next].pf;
}
} else {
ti->m = rti[trk].pm;
ti->s = rti[trk].ps;
ti->f = rti[trk].pf;
}
ti->number = rti[trk].point; ti->number = rti[trk].point;
ti->attr = rti[trk].adr_ctl; ti->attr = rti[trk].adr_ctl;