notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cdriso: prefer .toc over .cue
[pcsx_rearmed.git]
/
libpcsxcore
/
cdriso.c
diff --git
a/libpcsxcore/cdriso.c
b/libpcsxcore/cdriso.c
index
90c9d85
..
36ff405
100644
(file)
--- a/
libpcsxcore/cdriso.c
+++ b/
libpcsxcore/cdriso.c
@@
-327,6
+327,14
@@
static int parsetoc(const char *isofile) {
return -1;
}
}
return -1;
}
}
+ // check if it's really a TOC named as a .cue
+ fgets(linebuf, sizeof(linebuf), fi);
+ token = strtok(tmp, " ");
+ if (strncmp(token, "CD", 2) != 0 && strcmp(token, "CATALOG") != 0) {
+ fclose(fi);
+ return -1;
+ }
+ fseek(fi, 0, SEEK_SET);
}
memset(&ti, 0, sizeof(ti));
}
memset(&ti, 0, sizeof(ti));
@@
-470,10
+478,12
@@
static int parsecue(const char *isofile) {
// build a path for files referenced in .cue
strncpy(filepath, cuename, sizeof(filepath));
// build a path for files referenced in .cue
strncpy(filepath, cuename, sizeof(filepath));
- tmp = strrchr(filepath, '/') + 1;
- if (tmp == NULL)
- tmp = strrchr(filepath, '\\') + 1;
+ tmp = strrchr(filepath, '/');
if (tmp == NULL)
if (tmp == NULL)
+ tmp = strrchr(filepath, '\\');
+ if (tmp != NULL)
+ tmp++;
+ else
tmp = filepath;
*tmp = 0;
filepath[sizeof(filepath) - 1] = 0;
tmp = filepath;
*tmp = 0;
filepath[sizeof(filepath) - 1] = 0;
@@
-1225,10
+1235,7
@@
static long CALLBACK ISOopen(void) {
CDR_getBuffer = ISOgetBuffer;
cdimg_read_func = cdread_normal;
CDR_getBuffer = ISOgetBuffer;
cdimg_read_func = cdread_normal;
- if (parsecue(GetIsoFile()) == 0) {
- SysPrintf("[+cue]");
- }
- else if (parsetoc(GetIsoFile()) == 0) {
+ if (parsetoc(GetIsoFile()) == 0) {
SysPrintf("[+toc]");
}
else if (parseccd(GetIsoFile()) == 0) {
SysPrintf("[+toc]");
}
else if (parseccd(GetIsoFile()) == 0) {
@@
-1237,6
+1244,9
@@
static long CALLBACK ISOopen(void) {
else if (parsemds(GetIsoFile()) == 0) {
SysPrintf("[+mds]");
}
else if (parsemds(GetIsoFile()) == 0) {
SysPrintf("[+mds]");
}
+ else if (parsecue(GetIsoFile()) == 0) {
+ SysPrintf("[+cue]");
+ }
if (handlepbp(GetIsoFile()) == 0) {
SysPrintf("[pbp]");
CDR_getBuffer = ISOgetBuffer_compr;
if (handlepbp(GetIsoFile()) == 0) {
SysPrintf("[pbp]");
CDR_getBuffer = ISOgetBuffer_compr;
@@
-1314,8
+1324,12
@@
static long CALLBACK ISOclose(void) {
}
}
numtracks = 0;
}
}
numtracks = 0;
+ ti[1].type = 0;
UnloadSBI();
UnloadSBI();
+ memset(cdbuffer, 0, sizeof(cdbuffer));
+ CDR_getBuffer = ISOgetBuffer;
+
return 0;
}
return 0;
}
@@
-1398,6
+1412,7
@@
static void DecodeRawSubData(void) {
// uses bcd format
static long CALLBACK ISOreadTrack(unsigned char *time) {
int sector = MSF2SECT(btoi(time[0]), btoi(time[1]), btoi(time[2]));
// uses bcd format
static long CALLBACK ISOreadTrack(unsigned char *time) {
int sector = MSF2SECT(btoi(time[0]), btoi(time[1]), btoi(time[2]));
+ long ret;
if (cdHandle == NULL) {
return -1;
if (cdHandle == NULL) {
return -1;
@@
-1412,7
+1427,9
@@
static long CALLBACK ISOreadTrack(unsigned char *time) {
}
}
}
}
- cdimg_read_func(cdHandle, 0, cdbuffer, sector);
+ ret = cdimg_read_func(cdHandle, 0, cdbuffer, sector);
+ if (ret < 0)
+ return -1;
if (subHandle != NULL) {
fseek(subHandle, sector * SUB_FRAMESIZE, SEEK_SET);
if (subHandle != NULL) {
fseek(subHandle, sector * SUB_FRAMESIZE, SEEK_SET);