#include "memmap.h"
#include "ppu.h"
#include "sdd1.h"
-#include "display.h"
static int S9xCompareSDD1IndexEntries (const void *p1, const void *p2)
{
if (strlen (index) && strlen (data)) {
FILE *fs = fopen (index, "rb");
- int len = 0;
+ size_t len = 0;
if (fs) {
// Index is stored as a sequence of entries, each entry being
len = ftell (fs);
rewind (fs);
Memory.SDD1Index = (uint8 *) malloc (len);
- fread (Memory.SDD1Index, 1, len, fs);
+ if (fread (Memory.SDD1Index, 1, len, fs) < len) {
+ fprintf(stderr, "Failed to fully read SDD1 index file %s\n",
+ data);
+ }
fclose (fs);
Memory.SDD1Entries = len / 12;
} else {
len = ftell (fs);
rewind (fs);
Memory.SDD1Data = (uint8 *) malloc (len);
- fread (Memory.SDD1Data, 1, len, fs);
+ if (fread (Memory.SDD1Data, 1, len, fs) < len) {
+ fprintf(stderr, "Failed to fully read SDD1 data file %s\n",
+ data);
+ }
fclose (fs);
}
printf("SDD1: data pack: %s\n", PathBasename(data));
qsort(Memory.SDD1Index, Memory.SDD1Entries, 12,
S9xCompareSDD1IndexEntries);
- printf("SDD1: Pack loaded succesfully\n", data);
+ printf("SDD1: Pack loaded succesfully\n");
} else {
fprintf(stderr, "SDD1: SDD1 data pack not found in '%s'\n",
packdir);
- fprintf(stderr, "SDD1: Check if sdd1gfx files exist\n",
- packdir);
- printf("SDD1: Failed to load pack\n", data);
+ fprintf(stderr, "SDD1: Check if sdd1gfx files exist\n");
+ printf("SDD1: Failed to load pack\n");
}
}
S9xCompareSDD1LoggedDataEntries);
const char * sdd1_dat_file = S9xGetFilename(FILE_SDD1_DAT);
- FILE *fs = fopen (sdd1_dat_file, "wb");
+ FILE *fs = fopen(sdd1_dat_file, "wb");
if (fs)
{
- fwrite (Memory.SDD1LoggedData, 8,
- Memory.SDD1LoggedDataCount, fs);
- fclose (fs);
-#if defined(__linux)
- chown (sdd1_dat_file, getuid (), getgid ());
-#endif
+ size_t c = fwrite(Memory.SDD1LoggedData, 8,
+ Memory.SDD1LoggedDataCount, fs);
+ if (c < Memory.SDD1LoggedDataCount) {
+ fprintf(stderr, "Failed to write sdd1 log data\n");
+ }
+ fclose(fs);
}
Memory.SDD1LoggedDataCountPrev = Memory.SDD1LoggedDataCount;
}
if (fs)
{
- int c = fread (Memory.SDD1LoggedData, 8,
- MEMMAP_MAX_SDD1_LOGGED_ENTRIES, fs);
+ size_t c = fread (Memory.SDD1LoggedData, 8,
+ MEMMAP_MAX_SDD1_LOGGED_ENTRIES, fs);
- if (c != EOF)
+ if (c > 0)
Memory.SDD1LoggedDataCount = Memory.SDD1LoggedDataCountPrev = c;
fclose (fs);
}