cdriso: merge from pcsxr r90558
[pcsx_rearmed.git] / libpcsxcore / cdriso.c
index bfa7d76..2c9e692 100644 (file)
@@ -34,6 +34,7 @@
 #include <sys/time.h>
 #include <unistd.h>
 #endif
+#include <errno.h>
 #include <zlib.h>
 
 unsigned int cdrIsoMultidiskCount;
@@ -794,6 +795,8 @@ static int handlepbp(const char *isofile) {
        if (ext == NULL || (strcmp(ext, ".pbp") != 0 && strcmp(ext, ".PBP") != 0))
                return -1;
 
+       fseek(cdHandle, 0, SEEK_SET);
+
        numtracks = 0;
 
        ret = fread(&pbp_hdr, 1, sizeof(pbp_hdr), cdHandle);
@@ -957,6 +960,8 @@ static int handlecbin(const char *isofile) {
        if (ext == NULL || (strcasecmp(ext + 1, ".cbn") != 0 && strcasecmp(ext, ".cbin") != 0))
                return -1;
 
+       fseek(cdHandle, 0, SEEK_SET);
+
        ret = fread(&ciso_hdr, 1, sizeof(ciso_hdr), cdHandle);
        if (ret != sizeof(ciso_hdr)) {
                SysPrintf("failed to read ciso header\n");
@@ -1222,6 +1227,8 @@ static long CALLBACK ISOopen(void) {
 
        cdHandle = fopen(GetIsoFile(), "rb");
        if (cdHandle == NULL) {
+               SysPrintf(_("Could't open '%s' for reading: %s\n"),
+                       GetIsoFile(), strerror(errno));
                return -1;
        }