Merge pull request #21 from phaseIV/master
[pcsx_rearmed.git] / libpcsxcore / cdriso.c
index bfa7d76..46ee020 100644 (file)
 #include "ppf.h"
 
 #ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
 #include <process.h>
 #include <windows.h>
 #define strcasecmp _stricmp
+#define usleep(x) (Sleep((x) / 1000))
 #else
 #include <pthread.h>
 #include <sys/time.h>
 #include <unistd.h>
 #endif
+#include <errno.h>
 #include <zlib.h>
 
 unsigned int cdrIsoMultidiskCount;
@@ -220,7 +223,9 @@ static void *playthread(void *param)
                        do {
                                ret = SPU_playCDDAchannel((short *)sndbuffer, s);
                                if (ret == 0x7761)
+            {
                                        usleep(6 * 1000);
+            }
                        } while (ret == 0x7761 && playing); // rearmed_wait
                }
 
@@ -231,7 +236,9 @@ static void *playthread(void *param)
                        // HACK: stop feeding data while emu is paused
                        extern int stop;
                        while (stop && playing)
+         {
                                usleep(10000);
+         }
 
                        now = GetTickCount();
                        osleep = t - now;
@@ -551,9 +558,9 @@ static int parsecue(const char *isofile) {
                        pregapOffset = -1; // mark to fill track start_offset
                }
                else if (!strcmp(token, "FILE")) {
-                       t = sscanf(linebuf, " FILE \"%256[^\"]\"", tmpb);
+                       t = sscanf(linebuf, " FILE \"%255[^\"]\"", tmpb);
                        if (t != 1)
-                               sscanf(linebuf, " FILE %256s", tmpb);
+                               sscanf(linebuf, " FILE %255s", tmpb);
 
                        // absolute path?
                        ti[numtracks + 1].handle = fopen(tmpb, "rb");
@@ -794,6 +801,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 +966,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 +1233,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;
        }