return (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | (p[3]);
}
-int rdb_checksum (TCHAR *id, uae_u8 *p, int block)
+int rdb_checksum (uae_char *id, uae_u8 *p, int block)
{
uae_u32 sum = 0;
int i, blocksize;
sum += rl (p + i * 4);
sum = -sum;
if (sum) {
- write_log (L"RDB: block %d ('%s') checksum error\n", block, id);
+ TCHAR *s = au (id);
+ write_log (L"RDB: block %d ('%s') checksum error\n", block, s);
+ xfree (s);
return 0;
}
return 1;
}
for (rdblock = 0; rdblock < lastblock; rdblock++) {
hdf_read (hfd, bufrdb, rdblock * hfd->blocksize, hfd->blocksize);
- if (rdb_checksum (L"RDSK", bufrdb, rdblock))
+ if (rdb_checksum ("RDSK", bufrdb, rdblock))
break;
hdf_read (hfd, bufrdb, rdblock * hfd->blocksize, hfd->blocksize);
- if (!memcmp (L"RDSK", bufrdb, 4)) {
+ if (!memcmp ("RDSK", bufrdb, 4)) {
bufrdb[0xdc] = 0;
bufrdb[0xdd] = 0;
bufrdb[0xde] = 0;
}
memset (buf, 0, readblocksize);
hdf_read (hfd, buf, partblock * hfd->blocksize, readblocksize);
- if (!rdb_checksum (L"PART", buf, partblock)) {
+ if (!rdb_checksum ("PART", buf, partblock)) {
err = -2;
goto error;
}
}
memset (buf, 0, readblocksize);
hdf_read (hfd, buf, fileblock * hfd->blocksize, readblocksize);
- if (!rdb_checksum (L"FSHD", buf, fileblock)) {
+ if (!rdb_checksum ("FSHD", buf, fileblock)) {
write_log (L"RDB: checksum error in FSHD block %d\n", fileblock);
goto error;
}
goto error;
memset (buf, 0, readblocksize);
hdf_read (hfd, buf, lsegblock * hfd->blocksize, readblocksize);
- if (!rdb_checksum (L"LSEG", buf, lsegblock))
+ if (!rdb_checksum ("LSEG", buf, lsegblock))
goto error;
lsegblock = rl (buf + 16);
if (lsegblock == pb)