Updated hardfile code

This commit is contained in:
Dimitris Panokostas 2017-03-06 22:02:31 +01:00
parent c9224b68d3
commit 022aff7331
2 changed files with 1537 additions and 646 deletions

File diff suppressed because it is too large Load diff

View file

@ -481,6 +481,31 @@ int hdf_write_target(struct hardfiledata* hfd, void* buffer, uae_u64 offset, int
return got;
}
int hdf_resize_target(struct hardfiledata *hfd, uae_u64 newsize)
{
if (newsize < hfd->physsize) {
write_log("hdf_resize_target: truncation not implemented\n");
return 0;
}
if (newsize == hfd->physsize) {
return 1;
}
/* Now, newsize must be larger than hfd->physsize, we seek to newsize - 1
* and write a single 0 byte to make the file exactly newsize bytes big. */
if (fseek(hfd->handle->f, newsize - 1, SEEK_SET) != 0) {
write_log("hdf_resize_target: fseek failed errno %d\n", errno);
return 0;
}
if (fwrite("", 1, 1, hfd->handle->f) != 1) {
write_log("hdf_resize_target: failed to write byte at position "
"%lld errno %d\n", newsize - 1, errno);
return 0;
}
write_log("hdf_resize_target: %lld -> %lld\n", hfd->physsize, newsize);
hfd->physsize = newsize;
return 1;
}
static void generatestorageproperty(struct uae_driveinfo *udi, int ignoreduplicates)
{
_tcscpy(udi->vendor_id, _T("UAE"));